У меня есть список терминалов в моей грамматике Xtext
, как я могу проверить, что они работают, и что нет конфликтов токенов?Xtext: Как проверить xtext lexer?
Например следующие выводы:
terminal COMMA: ',';
terminal QUESTION: '?';
terminal IDENTIFIER: ('a'..'z'| 'A'..'Z')+;
terminal LENGTH: 'LENGTH' | 'l' | 'len';
terminal SEMICOLON: ';' ;
Я хочу, чтобы убедиться, что, например IDENTIFIER
и LENGTH
не конфликтуют друг с другом, так LENGTH
или Len дает фишку LENGTH
и не IDENTIFIER
. (что неверно в грамматике выше, если предположить, что определенные маркеры будут приоритетными)
@Sebastien Zarnekow да, это нормально для конфликтов, но как насчет более общего тестового примера, где говорят, что я набираю «HelloWorld», и я хочу получить токен идентификатора. Тест будет проходить, если Test («HelloWorld») == Tokens.ID еще не сработает, чтобы я удостоверился, что ive обработал все нужные мне токены. Например, в Antlrworks я вижу маркеры и удостоверяюсь, что это то, что я хочу, чтобы они были после синтаксического анализа. – Har
Я обновил ответ ссылкой на xtext-utils. –
спасибо :) testTerminal (...) в xtext-utils - это то, что им нужно. – Har