В настоящее время я отлаживаю свою грамматику в ANTLRworks и уменьшила ее гораздо больше, чем это разумно:
grammar DebugInternalGrammar;
RULE_STRING :
'"' (
('\\' .) |
(~ (
'\\' |
'"'
))
)* '"'
;
Который, при тестировании в интерпретаторе против String
"L"
просто дает
MismatchedTokenException (76! = 34)
То, что работает, соответствует ""
, также уменьшая грамматику до:
grammar DebugInternalGrammar;
RULE_STRING :
'"' (
(~ (
'\\' |
'"'
))
)* '"'
;
соответствует "L"
(я предполагаю, что это означает, что дерево анализа в ANTLRworks показывает <epsilon>
как лист).
Что здесь не так? Это не та часть грамматики, которая раньше вызывала у меня проблемы, поэтому я ломаю голову над тем, в чем может быть проблема и что ANTLRworks пытается мне сказать.