XText. Проверка ключей в списках ключей-значений - PullRequest
0 голосов
/ 05 ноября 2019

Я очень новичок в XText. Поэтому, пожалуйста, прости меня, если я использую неправильную терминологию.

В нашем коде есть грамматика XText, описывающая список ключей-значений.

KeyValues:
    {KeyValues}
    ('version' KeyValuesVersion=VERSION ';')?
    KeyValues+=KeyValue*;

KeyValue:
    name=ID '=' value=STRING ('[' speechs+=Speech (',' speechs+=Speech)* ']')? ('short=' short=STRING)?  ';'
;

Speech:
    value=STRING
;

terminal VERSION returns ecore::EString:
    ('0'..'9')+ '.' ('0'..'9')+ '.' ('0'..'9')+
;

@Override
terminal ID:
    ('a'..'z'|'A'..'Z'|'_'|'-'|'.') ('a'..'z'|'A'..'Z'|'_'|'-'|'0'..'9'|'.')*   
;

Почти все работает, как ожидалось.

Однако есть одна проблема, которую я не знаю, как ее решить.

В случае, если ключ содержит символы, которые не соответствуют регулярному выражению идентификатора (например, 1key = "value"), мы простосм "отсутствует EOF в '1' (org.eclipse.xtext.diagnostics.Diagnostic.Syntax)" .

Есть ли возможность перехватить этот EOF-ошибка и так, чтобы выдать сообщение типа «Ключ недействителен, он может содержать только следующие символы ...»?

Заранее спасибо.

...