Parsing Antlr符号-需要示例

Parsing Antlr符号-需要示例,parsing,token,antlr,symbols,Parsing,Token,Antlr,Symbols,我正在研究一个使用Antlr并定义了许多语法的代码库。我看到了下面的用法,但不清楚它们的实际含义 标记{1,2} 我看不出有一两个定义 符号->和^ 这样做的目的是什么?我在lexer和解析器规则中都看到了这些 符号[] 这在以下情况中使用 标记{SET} 身份证: 令牌1:。。集合[$ID] 这是什么意思?示例将非常有用。这些项目看起来好像来自ANTLR3语法。第一部分可能是标记部分(注意复数形式),如下所示: tokens { ONE, TWO } 它定义了许多“虚拟”

我正在研究一个使用Antlr并定义了许多语法的代码库。我看到了下面的用法,但不清楚它们的实际含义

  • 标记{1,2}
    • 我看不出有一两个定义
  • 符号->和^
    • 这样做的目的是什么?我在lexer和解析器规则中都看到了这些
  • 符号[]
    • 这在以下情况中使用
    标记{SET}

    身份证:

    令牌1:。。集合[$ID]


    这是什么意思?示例将非常有用。

    这些项目看起来好像来自ANTLR3语法。第一部分可能是标记部分(注意复数形式),如下所示:

    tokens {
      ONE,
      TWO
    }
    
    它定义了许多“虚拟”令牌。这些被称为“虚拟”,因为它们没有要匹配的输入,通常用于树重写(例如,根据某些条件更改标记类型,例如谓词的结果)

    生成AST时,符号
    ->
    ^
    用于树重写(ANTLR4 btw不再支持,因为它根本不生成AST,而是生成解析树)
    ^
    表示根节点,它使解析器在活动规则中创建当前标记的树,并使用标记的标记作为该树的根<代码>->允许更进一步地重写结果(不同的顺序、添加虚拟令牌、省略令牌等)

    问题的最后一部分演示了令牌操纵的使用。此语法导致解析器创建一个新的令牌集,其中包含来自匹配ID令牌的所有值(类型除外,但例如源位置、通道等)。所以它也是重写机制的一部分

    更新
    ANTLR3主页仍然存在,并且有一个带有一些文档的Wiki:(或通过)。

    这些项目看起来好像来自ANTLR3语法。第一部分可能是标记部分(注意复数形式),如下所示:

    tokens {
      ONE,
      TWO
    }
    
    它定义了许多“虚拟”令牌。这些被称为“虚拟”,因为它们没有要匹配的输入,通常用于树重写(例如,根据某些条件更改标记类型,例如谓词的结果)

    生成AST时,符号
    ->
    ^
    用于树重写(ANTLR4 btw不再支持,因为它根本不生成AST,而是生成解析树)
    ^
    表示根节点,它使解析器在活动规则中创建当前标记的树,并使用标记的标记作为该树的根<代码>->允许更进一步地重写结果(不同的顺序、添加虚拟令牌、省略令牌等)

    问题的最后一部分演示了令牌操纵的使用。此语法导致解析器创建一个新的令牌集,其中包含来自匹配ID令牌的所有值(类型除外,但例如源位置、通道等)。所以它也是重写机制的一部分

    更新
    ANTLR3主页仍然存在,并且有一个带有一些文档的Wiki:(或通过)。

    @MikeThanks。这在一定程度上是有帮助的,但是你能给我举一些例子来描述这些吗。示例将使事情变得更好。所有这些都在权威的ANTLR3指南中描述。这是所有认真使用ANTLR3(顺便说一句,ANTLR4也是如此)的人的最终参考。据我所知,没有一个简明的总结能描述所有这些。通常你会学习其他语法,从例子中学习。我给我的答案添加了一个链接。@MikeThanks。这在一定程度上是有帮助的,但是你能给我举一些例子来描述这些吗。示例将使事情变得更好。所有这些都在权威的ANTLR3指南中描述。这是所有认真使用ANTLR3(顺便说一句,ANTLR4也是如此)的人的最终参考。据我所知,没有一个简明的总结能描述所有这些。通常你会学习其他语法,从例子中学习。我给我的答案添加了一个链接。