Interpolacja ciągu znaków w ANTLR

Pracuję nad prostą manipulacją ciągiem DSL do celów wewnętrznych i chciałbym, aby język obsługiwał interpolację łańcuchów, tak jak jest to używane w Ruby.

Na przykład:

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

Próbuję zaimplementować mój parser w ANTLRv3, ale jestem dość niedoświadczony w używaniu ANTLR, więc nie jestem pewien, jak zaimplementować tę funkcję. Do tej pory określiłem moje literały łańcuchowe w lekserze, ale w tym przypadku oczywiście będę musiał obsługiwać zawartość interpolacji w parserze.

Moja bieżąca gramatyka literału wygląda następująco:

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

Przeniesienie obsługi literału łańcuchowego do parsera sprawia, że ​​wszystko inne przestaje działać tak, jak powinno. Wyszukiwania kursorów internetowych nie dały żadnych informacji. Wszelkie sugestie dotyczące tego, jak zacząć?

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

Przeniesienie obsługi literału łańcuchowego do parsera sprawia, że ​​wszystko inne przestaje działać tak, jak powinno. Wyszukiwania kursorów internetowych nie dały żadnych informacji. Wszelkie sugestie dotyczące tego, jak zacząć?

questionAnswers(1)

yourAnswerToTheQuestion