2009-12-10 4 views
0

Я пытаюсь написать правило соответствия строк в ANTLRWorks, и мне нужно сопоставить либо экранированные кавычки, либо любой символ без кавычек. Я могу сопоставить экранированные кавычки, но у меня возникли проблемы с другой частью: ~'\'' | ~'\"' в конечном итоге будет соответствовать всем, и ~'\'\"', кажется, игнорируется генератором грамматики (по крайней мере, на визуальном дисплее). Какая последовательность символов получит меня, что я хочу?Как исключить более одного символа в правило?

ответ

1

попробовать что-то вроде этого:

StringLiteral 
    : '"' (EscapeSequence | StringChar)* '"' 
    ; 

EscapeSequence 
    : '\\' ('"' | '\\') 
    ; 

StringChar 
    : ~('"' | '\\') 
    ; 
+0

Я заканчивал тем, что с не жадным потреблением anychar, но это должно сделать красиво, чтобы ответить на этот вопрос. – RCIX

Смежные вопросы