Análisis de la interpolación de cadenas en ANTLR

Estoy trabajando en un simple DSL de manipulación de cadenas para propósitos internos, y me gustaría que el lenguaje sea compatible con la interpolación de cadenas como se usa en Ruby.

Por ejemplo:

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

Estoy intentando implementar mi analizador en ANTLRv3, pero no tengo mucha experiencia con el uso de ANTLR, así que no estoy seguro de cómo implementar esta función. Hasta ahora, he especificado mis literales de cadena en el lexer, pero en este caso obviamente necesitaré manejar el contenido de interpolación en el analizador.

Mi gramática literal de cadena actual se ve así:

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

Mover la cadena de control literal en el analizador parece hacer que todo lo demás deje de funcionar como debería. Las búsquedas web cursivas no dieron ninguna información. ¿Alguna sugerencia sobre cómo empezar con esto?

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

Mover la cadena de control literal en el analizador parece hacer que todo lo demás deje de funcionar como debería. Las búsquedas web cursivas no dieron ninguna información. ¿Alguna sugerencia sobre cómo empezar con esto?

Respuestas a la pregunta(1)

Su respuesta a la pregunta