Interpolação de string de análise em ANTLR
Estou trabalhando em uma DSL de manipulação de strings simples para propósitos internos, e gostaria que a linguagem suportasse a interpolação de strings como é usada em Ruby.
Por exemplo:
name = "Bob"
msg = "Hello ${name}!"
print(msg) # prints "Hello Bob!"
Eu estou tentando implementar meu analisador em ANTLRv3, mas eu sou muito inexperiente com o uso de ANTLR, portanto, não tenho certeza de como implementar esse recurso. Até agora, eu especifiquei meus literais de string no lexer, mas neste caso, obviamente, precisarei lidar com o conteúdo de interpolação no analisador.
Minha gramática atual de string literal é assim:
STRINGLITERAL : '"' ( StringEscapeSeq | ~( '\\' | '"' | '\r' | '\n' ) )* '"' ;
fragment StringEscapeSeq : '\\' ( 't' | 'n' | 'r' | '"' | '\\' | 'Mover a manipulação literal de string para o analisador parece fazer com que todo o resto pare de funcionar como deveria. Pesquisas web curiosas não produziram nenhuma informação. Alguma sugestão de como começar isso?
| ('0'..'9')) ;
Mover a manipulação literal de string para o analisador parece fazer com que todo o resto pare de funcionar como deveria. Pesquisas web curiosas não produziram nenhuma informação. Alguma sugestão de como começar isso?