我正在尝试为类似于胡子的模板语言编写ANTLR4解析器。这使用散布在普通文本文件中的{{...}}
标记。如果模板需要在OPEN_TAG {
旁边包含并发出{{
,则词法分析器/解析器可能存在问题。我相信应该有一种方法来编写解析器:
This is a left brace {{{tag logic}} and here are two left braces {{{tag logic}}{
转换为
This is a left brace { and here are two left braces {{
或者:
{{
匹配
除{
以外的任何内容,将前导{
吸收到前一个TEXT中
图案?{{
提供转义序列的方法?谢谢!
答案 0 :(得分:0)
使用模式处理词法分析器中的标签。
LBrace : '{' ;
RBrace : '}' ;
TOpenTag : '{{' -> pushMode(tagLogic) ;
mode tagLogic ;
TLBrace : '{' -> type(LBrace) ;
TRBrace : '}' -> type(RBrace) ;
TCloseTag : '}}' -> popMode ;
TLogic : [a-zA-Z0-9]+ ;
TWs : [ \t\r\n]+ -> skip ;