英文:
Can a fragment use another fragment in ANTLR4
问题
当我在ANTLR4中使用一个片段时,可以使用另一个片段吗?
例如,我想定义一个名为NUM_FRAGMENT
的片段,它使用其他片段:
fragment DIGIT: [1-9];
fragment ZERO: [0];
fragment NUM_FRAGMENT: ZERO | DIGIT | [0-9];
在ANTLR4中是否允许上面的示例?
英文:
When I use a fragment in ANTLR4, can I use another fragment?
For example, I want to define a fragment NUM_FRAGMENT
which uses other fragments:
fragment DIGIT: [1-9];
fragment ZERO: [0];
fragment NUM_FRAGMENT: ZERO | DIGIT | [0-9];
Is the example above allowed in ANTLR4?
答案1
得分: 2
是的,片段可以使用其他片段。
在你的示例中 fragment NUM_FRAGMENT: ZERO | DIGIT | [0-9];
,你可以写成 fragment NUM_FRAGMENT: ZERO | DIGIT;
。
请注意,规则的命名不完全正确:DIGIT
暗示它匹配任何数字(从0到9)。而 NUM_FRAGMENT
暗示它匹配一个数字,应该匹配一个或多个数字。
我会这样写规则:
fragment NON_ZERO : [1-9];
fragment ZERO : '0';
fragment DIGIT : ZERO | NON_ZERO;
fragment NUM : DIGIT+;
英文:
Yes, fragments can use other fragments.
In your example fragment NUM_FRAGMENT: ZERO | DIGIT | [0-9];
, you can write fragment NUM_FRAGMENT: ZERO | DIGIT;
.
Note that the naming of the rules is not entirely correct: DIGIT
suggests it matches any digit (from 0 to 9). And NUM_FRAGMENT
suggests it matches a number which should match one or more digits.
I'd write the rules like this:
fragment NON_ZERO : [1-9];
fragment ZERO : '0';
fragment DIGIT : ZERO | NON_ZERO;
fragment NUM : DIGIT+;
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论