Не удается создать дополнительный префикс токена - PullRequest
0 голосов
/ 03 апреля 2020

Я построил это для распознавания запроса, подобного этому FILTER METHOD=="GET" STATUS=="200" RETURN"*". Теперь мне нужно изменить его, чтобы иметь возможность распознавать это: FILTER METHOD=="GET" STATUS=="200" RETURN"*" и FILTER METHOD==GET STATUS==200 RETURN*. Поэтому необязательно, если есть кавычки или нет, но все токены должны иметь одинаковый шаблон (кавычки или нет). Это работает во всех комбинациях с или без кавычек, но это не так, как это должно быть. Я перепробовал много возможностей, но не повезло ...

request: 'FILTER' expr* 'RETURN' num;
expr: KEY OP value;
value: ((STRING|NUM)+);
num: NUM;

NUM: (('0'..'9')+|'*');
KEY: ('IP' | 'DATETIME' | 'METHOD' | 'VERSION' | 'STATUS');
OP: ('!=' | '==');
STRING: ((('a'..'z'|'A'..'Z')+|':'|'/'|'.')+);
WHITESPACE: ((' '|'\\t')+) -> skip;
EOL: ('\\n') -> skip;
ESC: ('"') -> skip;

Есть идеи, как это сделать без частого изменения грамматики?

...