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 に変更できませんでした。このコードの新機能は何ですか? これを早急に解決してください。