ANTLR如何区分terminal和regex
考虑以下简化语法:ANTLR如何区分terminal和regex,antlr,Antlr,考虑以下简化语法: ID : ('a'..'z') ('a'..'z')*; TYPE : 'int' '[' ']' | 'boolean' | 'int'; 现在,如果我写布尔值作为输入,它可以被解析为ID或TYPE。我希望它被解析为TYPE-how?将TYPE放在ID之前: TYPE : 'int' '[' ']' | 'boolean' | 'int' ; ID : ('a'..'z') ('a'
ID : ('a'..'z') ('a'..'z')*;
TYPE : 'int' '[' ']' |
'boolean' |
'int';
现在,如果我写布尔值作为输入,它可以被解析为ID或TYPE。我希望它被解析为TYPE-how?将TYPE
放在ID
之前:
TYPE : 'int' '[' ']'
| 'boolean'
| 'int'
;
ID : ('a'..'z') ('a'..'z')*
;
ANTLR的lexer规则的工作原理如下:
“boolean”
标记为类型
,而“boolean”
标记为ID
1
1
“booleans”
没有标记为两个标记:类型
(“boolean”
)和标识
(“s”
)将类型
放在标识
之前:
TYPE : 'int' '[' ']'
| 'boolean'
| 'int'
;
ID : ('a'..'z') ('a'..'z')*
;
ANTLR的lexer规则的工作原理如下:
“boolean”
标记为类型
,而“boolean”
标记为ID
1
1
“booleans”
未标记为两个标记:类型(“boolean”
)和ID(“s”
)