antlr - "fragment"在ANTLR中是什么意思?

标签 antlr

ANTLR 中的片段是什么意思?

我已经看到了这两条规则:

fragment DIGIT : '0'..'9';

DIGIT : '0'..'9';

有什么区别?

最佳答案

片段有点类似于内联函数:它使语法更具可读性且更易于维护。

片段永远不会被视为 token ,它仅用于简化语法。

考虑:

NUMBER: DIGITS | OCTAL_DIGITS | HEX_DIGITS;
fragment DIGITS: '1'..'9' '0'..'9'*;
fragment OCTAL_DIGITS: '0' '0'..'7'+;
fragment HEX_DIGITS: '0x' ('0'..'9' | 'a'..'f' | 'A'..'F')+;

在此示例中,匹配 NUMBER 将始终向词法分析器返回一个 NUMBER,无论它是否匹配“1234”、“0xab12”或“0777”。

See item 3

关于antlr - "fragment"在ANTLR中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6487593/

相关文章:

java - ANTLR 与期望 ID 的输入不匹配

c - 如何使用ANTLR生成的语法文件?

Antlr4 - 隐式定义

java - 如何在 Antlr4 中为零参数函数编写语法

antlr - ANTLR 3 中 wikitext-to-HTML 的工作示例

antlr - 在ANTLR中,如何指定特定的重复次数?

c - 如何输出使用 ANTLR 构建的 AST?

java - 使用 ANTLR 将标记映射回 Java 源代码中的位置

java - 采用 "not"但不采用 "not like"的词法分析器

c# - 我的 ANTLR 解析器(不是词法分析器)如何触发词法 "include"(不是 AST 拼接)?