Написание специального лексера Xtext / ANTLR без файла грамматики

Я пишу плагин Eclipse / Xtext для CoffeeScript, и я понял, что мне, вероятно, придется написать лексер для него вручную. Парсер CoffeeScript также использует рукописный лексер для обработки отступов и других уловок в грамматике.

Xtext генерирует класс, расширяющий org.eclipse.xtext.parser.antlr.Lexer , который, в свою очередь, расширяет org.antlr.runtime.Lexer . Так что, полагаю, мне придется его продлить.Я вижу два способа сделать это

  • Override mTokens () . Это делается с помощью сгенерированного кода, меняющего внутреннее состояние.
  • Переопределить nextToken () , что кажется естественным подходом, но тогда мне придется отслеживать внутреннее состояние.

Я не смог найти ни одного примера, как написать даже простой лексер для ANTLR без файла грамматики. Так что самым простым ответом будет указатель на один.

Ответ на Xtext: грамматика для языка со значительными / семантическими пробелами относится к todotext , который решает проблему отступов путем изменения токенов в базовом входном потоке. Я не хочу идти по этому пути, потому что было бы сложно справиться с другими трюками грамматики coffeescript.

ОБНОВЛЕНИЕ:

Тем временем я понял, что мой вопрос частично связан с Xtext.

9
задан Community 23 May 2017 в 10:29
поделиться