ANTLR4:处于Lexer模式时,Lexer返回单个令牌

ANTLR4:处于Lexer模式时,Lexer返回单个令牌,antlr4,Antlr4,我正在尝试使用具有以下词法语法的ANTLR4的词法器模式: STRING: '"' -> pushMode(STRING_MODE); mode STRING_MODE; STRING_CONTENTS: ~('"'|'\n'|'\r')+ -> type(STRING); END_STRING: '"' -> type(STRING), popMode; STRING_UNMATCHED: . -> type(UNMATCHED); 是否有方法为模式中捕获的所有字符

我正在尝试使用具有以下词法语法的ANTLR4的词法器模式:

STRING: '"' -> pushMode(STRING_MODE);
mode STRING_MODE;
STRING_CONTENTS: ~('"'|'\n'|'\r')+ -> type(STRING);
END_STRING: '"' -> type(STRING), popMode;
STRING_UNMATCHED: . -> type(UNMATCHED);
  • 是否有方法为模式中捕获的所有字符(包括导致进入模式的字符)返回字符串类型的单个标记
  • 模式什么时候结束
我知道我也可以这样写字符串标记:

STRING: '"' (~["\n\r]|'\\"')* '"';
1)
more
属性将把匹配的文本累积到非
more
属性规则发出的第一个标记中

用于:

将与
字符串
字符串内容
规则匹配的文本前置到
结束字符串
规则的文本,从而生成包含字符串全文的
字符串
类型的标记

2) mode语句的“end”由

  • 语法分析器规则
  • 另一种模式语句
  • 片段规则
  • EOF
1)
more
属性将匹配文本累积到非
more
属性规则发出的第一个标记中

用于:

将与
字符串
字符串内容
规则匹配的文本前置到
结束字符串
规则的文本,从而生成包含字符串全文的
字符串
类型的标记

2) mode语句的“end”由

  • 语法分析器规则
  • 另一种模式语句
  • 片段规则
  • EOF

不知道“更多”属性。不知道“更多”属性。
STRING: '"' -> more, pushMode(STRING_MODE);

mode STRING_MODE;
    STRING_CONTENTS: ~('"'|'\n'|'\r')+ -> more ;
    END_STRING: '"' -> type(STRING), popMode;