2015-06-12 1 views
0

моего DSL грамматик выглядеть (отображаются только необходимая часть)Быстрого исправление для правил терминала в XText

assemblerProgram: // standard way of defining model 
content += CommandLine+ 
; 

CommandLine: 
ControlInstructions | Pointaddress ; 

Pointaddress: 
name = POINTINGADD 

terminal POINTINGADD:('_')('a'..'z'|'A'..'Z')? ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*; 

где POINTINGADD является терминальным правилом, которое говорит, что имя должно начинается с «_».

Теперь я хочу реализовать быстрое исправление для этого правила терминала. Является ли это возможным? и на каком пути я должен следовать?

благодарит заранее.

+0

За исключением отсутствующей полуколонии в строке 8 Я не вижу проблемы, которую необходимо устранить? – JensG

+0

что я точно хочу, всякий раз, когда я ввожу слово без подчеркивания, он должен предоставить быстрое исправление с тем же именем, начинающимся с подчеркивания – Mohsin

+0

А, это один. Понимаю. – JensG

ответ

0

Если вы хотите реализовать «семантический» quickfix (то есть тот, который работает на модели, а не на тексте), вероятно, лучше иметь более мягкую грамматику, которая принимает имена без главного подчеркивания, а затем создает подтверждение, которое жалуется на это, и присваивает конкретный код ошибки, который, наконец, может быть использован для запуска quickfix.

В качестве альтернативы, при работе с синтаксическими ошибками, действительно, в документации рекомендуется использовать ISyntaxErrorMessageProvider, но я еще не использовал этот подход.

+0

Я реализовал первую технику и ее работу. второй метод выглядит громоздким, поэтому я не применял это. Большое спасибо. – Mohsin