当我从 Antlr 3 升级到 Antlr 4 时,我删除了语法中的所有句法谓词。但是当我更改它时,我收到了标题中提到的错误。
这是更改后的代码
NUMBER
:(
'0'..'9' ('.' '0'..'9'+)?
| '.' '0'..'9'+
)
(
E
(
M { $type = EMS; }
| X { $type = EXS; }
)
| P
(
X
| T
| C
)
{ $type = LENGTH; }
| C M { $type = LENGTH; }
| M
(
M { $type = LENGTH; }
| S { $type = TIME; }
)
| I N { $type = LENGTH; }
| D E G { $type = ANGLE; }
| R A D { $type = ANGLE; }
| S { $type = TIME; }
| K? H Z { $type = FREQ; }
| IDENT { $type = DIMENSION; }
| '%' { $type = PERCENTAGE; }
| // Just a number
)
;
这是我得到的错误。
我看到了这个问题的答案here
。但我无法理解它的含义。请给我一些指导。
编辑:
语法中出现相同的错误。
fragment INVALID :;
STRING : '\'' ( ~('\n'|'\r'|'\f'|'\'') )*
(
'\''
| { $type = INVALID; }
)
| '"' ( ~('\n'|'\r'|'\f'|'"') )*
(
'"'
| { $type = INVALID; }
)
;
我无法将其更改为 ANTLR 4。此代码中有什么新内容?请给我一个快速解决这个问题。