antlr - ANTLR4 中一个片段可以使用另一个片段吗

标签 antlr antlr4

当我在ANTLR4中使用一个片段时,我可以使用另一个片段吗?

例如,我想定义一个使用其他片段的片段NUM_FRAGMENT:

fragment DIGIT: [1-9];
fragment ZERO: [0];  
fragment NUM_FRAGMENT: ZERO | DIGIT | [0-9];

ANTLR4 允许上面的示例吗?

最佳答案

是的,片段可以使用其他片段。

在您的示例中片段 NUM_FRAGMENT: ZERO |数字 | [0-9];,你可以写fragment NUM_FRAGMENT: ZERO |数字;

请注意,规则的命名并不完全正确:DIGIT 建议它匹配任何数字(从 0 到 9)。 NUM_FRAGMENT 建议它匹配一个应该匹配一位或多位数字的数字。

我会这样写规则:

fragment NON_ZERO : [1-9];
fragment ZERO     : '0';  
fragment DIGIT    : ZERO | NON_ZERO;
fragment NUM      : DIGIT+;

关于antlr - ANTLR4 中一个片段可以使用另一个片段吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75467609/

相关文章:

Antlr4 语言翻译 - 将模板逻辑与访问者类分开?

ANTLR 4.5 - 不匹配的输入 'x' 期待 'x'

ANTLR4 书,计算器练习

c++ - 如何打包使用 Antlr 生成的解析器

java - ANTLR 通配符运算符不消耗预期输入

gradle - 在gradle中使用包声明生成ANTLR4语法文件

antlr4:在创建解析树时忽略多余的标记

java - ANTLR 不匹配输入错误

antlr - Antlr 3.2重写规则

linux - 在 Linux 上运行 ANTLRworks2