考虑以下简化语法:
ID : ('a'..'z') ('a'..'z')*;
TYPE : 'int' '[' ']' |
'boolean' |
'int';
现在,如果我将 boolean 写为输入,则可以将其解析为 ID 或 TYPE 。我希望它被解析为 TYPE - 如何?
答案 0 :(得分:1)
将TYPE
放在 ID
之前:
TYPE : 'int' '[' ']'
| 'boolean'
| 'int'
;
ID : ('a'..'z') ('a'..'z')*
;
ANTLR的词法分析器规则如下:
由于这些规则,"boolean"
被标记为TYPE
,而"booleans"
将被标记为ID
1
1 "booleans"
未标记为两个令牌:TYPE
("boolean"
)和ID
( "s"
))