在我的语言中,语句以换行符结尾,但我希望通过插入反斜杠-换行符将语句格式化为多行.
"This is a statement."
"This is also \
a statement."
我想不出如何跳过反斜杠--换行符.显然,ESC_NEWLINE不被识别,但我不知道如何修复它.感谢您的帮助.
词法分析器有
SKIP_TOKENS : (WS | ESC_NEWLINE) -> skip;
ESC_NEWLINE : '\\'NEW_LINE;
NEWLINE : NEW_LINE;
COMMENT : '//' ~('\n'|'\r')* ;
ID : (LETTER|'_') (LETTER|DIGIT|'_')* ;
STRING : '"' ( ~('\\'|'"') )* '"' ;
fragment LETTER : ('a'..'z' | 'A'..'Z') ;
fragment DIGIT : ('0' | NON_ZERO_DIGIT);
fragment NON_ZERO_DIGIT : [1-9] ;
fragment NEW_LINE : \r?\n ;
fragment WS : [ \t]+;
解析器是
script: line* EOF;
line: COMMENT NEWLINE
| statement COMMENT? NEWLINE;
statement: STRING | ID;