我尝试解析这段文字
:20: test :254:
aapje
:21: rest
...
:20:
和:21:
是特殊标记,因为它们会启动该行。 :254:
应为“正常”文字,因为它不会在换行符上开始。
我希望结果是
(20, 'test :254: \naapje')
(21, 'rest')
使用\r\n
或'\ n'
我开始试图忽略空格,但我也匹配':254:'标签。所以我必须创建一些使用空白信息的东西。
我希望能做的是这样的事情:
lexer grammar MT9740_lexer;
InTagNewLine : '\r\n' ~':';
ReadNewLine :'\r\n' ;
但第一个会消耗:
我怎样才能生成这些令牌?或者有一种聪明的方法吗?
答案 0 :(得分:1)
我的理解是你正在寻找一些与行首相匹配的词法规则。此词法分析器规则应标记您的:20:或:21:仅出现在一行的开头
SOL : {getCharPositionInLine() == 0}? ':' [0-9]+ ':' ;
然后,您的解析器规则可以在解析剩余的行之前查找此SOL令牌。