0

假设我想用 ANTLR4 解析一个点:

grammar Point;
point : '(' INT ',' INT ')';
INT : [0-9]+;

如果我可以将第一个 INT 命名为x,将第二个命名为y. 有什么方法可以命名它们,以便我可以在代码中更优雅地访问它们?

谢谢

4

1 回答 1

1

您可以使用标签:

point : '(' x=INT ',' y=INT ')';

这适用于令牌,但对于解析器规则,如果在解析期间抛出异常,则可能不会设置标签。换句话说,避免以下情况:

point
  : '('
    x=INT // this is fine
    ','
    y=id  // avoid: y might not be set if an exception occurs while parsing `id`
    ')';
于 2013-10-30T20:52:20.990 回答