You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Julian Hyde (JIRA)" <ji...@apache.org> on 2017/05/15 15:12:04 UTC

[jira] [Commented] (CALCITE-1788) Simplify handling of position in the parser

    [ https://issues.apache.org/jira/browse/CALCITE-1788?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16010677#comment-16010677 ] 

Julian Hyde commented on CALCITE-1788:
--------------------------------------

Please review https://github.com/julianhyde/calcite/tree/1788-parser. It's a big change, but I significant improvement, I think.

> Simplify handling of position in the parser
> -------------------------------------------
>
>                 Key: CALCITE-1788
>                 URL: https://issues.apache.org/jira/browse/CALCITE-1788
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: Julian Hyde
>            Assignee: Julian Hyde
>
> Simplify handling of position in the parser by adding a class Span that keeps track of the tokens that have contributed to the current non-terminal.
> Some patterns:
> * {{final Span s;}} declaration of a Span at the top of a production
> * {{s = span();}}  initializes {{s}} to a Span that includes the token we just saw; very often occurs immediately after the first token in the production
> * {{s.end(this);}} adds the most recent token to span {{s}} and evaluates to a {{SqlParserPosition}} that spans from beginning to end; commonly used when making a call to a function
> * {{s.add(node);}} adds a SqlNode's parser position to a span
> * {{s.addAll(nodeList);}} adds several SqlNodes' parser positions to a span
> * {{s = Span.of();}} initializes s to an empty Span, not even including the most recent token; rarely used



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)