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ąć?