Определить терминал с именем 'message' для обработки "\n", кошмар.
Я использую определение, так называемое
message : '"'.* '"';
то, что представляет каждую мелочь внутри "" - это сообщение, терминалы, оно хорошо работает с "lkjaldjfa kajf", что-то общее, но когда я встретил "\ n", это превращается в кошмар - который вызывает бесконечный цикл, съедая мою память.
Я не знаю почему.. спасибо
1 ответ
... это превращается в кошмар - который вызывает бесконечный цикл, съедает мою память.
Трудно комментировать это, не имея возможности воспроизвести это.
Однако правило парсера:
message : '"' .* '"';
соответствует токену '"'
за которым следует ноль или более других токенов, заканчивающихся токеном '"'
,
Если у вас нет очень веской причины оставить это правило синтаксического анализатора (о котором я бы хотел услышать), измените его на правило лексера:
Message : '"' .* '"';
который соответствует характеру '"'
за которым следует ноль или более других символов, заканчивающихся символом '"'
,
Также см.: Практическое различие между правилами синтаксического анализатора и правилами лексера в ANTLR?