Разбор интерполяции строк в ANTLR

Я работаю над простым DSL-манипулированием строками для внутренних целей и хотел бы, чтобы язык поддерживал интерполяцию строк, как это используется в Ruby.

Например:

name = "Bob"
msg = "Hello ${name}!"
print(msg)   # prints "Hello Bob!"

Я пытаюсь реализовать свой анализатор в ANTLRv3, но я довольно неопытен с использованием ANTLR, поэтому я не уверен, как реализовать эту функцию. До сих пор я указывал свои строковые литералы в лексере, но в этом случае мне, очевидно, потребуется обработать содержимое интерполяции в синтаксическом анализаторе.

Моя текущая строковая литеральная грамматика выглядит так:

STRINGLITERAL : '"' ( StringEscapeSeq | ~( '\\' | '"' | '\r' | '\n' ) )* '"' ;
fragment StringEscapeSeq : '\\' ( 't' | 'n' | 'r' | '"' | '\\' | '

Перемещение обработки строкового литерала в парсер, кажется, заставляет все остальное перестать работать как следует. Беглый поиск в интернете не дал никакой информации. Любые предложения относительно того, как начать на этом?

| ('0'..'9')) ;

Перемещение обработки строкового литерала в парсер, кажется, заставляет все остальное перестать работать как следует. Беглый поиск в интернете не дал никакой информации. Любые предложения относительно того, как начать на этом?

Ответы на вопрос(1)

Ваш ответ на вопрос