parsing - Antlr4 lexer predicate needed? -


I try to parse this part of the text

 : 20: test : 254: Apte: 21: Rest ...  

: 20: and : 21: are special tags, because those lines Let's start : 254: should be the 'normal' text, because it does not start on a new line.

I should have the result

  (20, 'test: 254: \ naapje') (21, 'left')  

Lines are either eliminated by either \ r \ n or \ n

I tried to ignore the white space from the beginning, but then I match the '254:' tag. So I have to do something that uses white space information.

What I want to be able to do is something like this:

  laser grammar MT9740_lexer; InTagNewLine: '\ r \ n' ~ ':'; ReadNewLine: '\ r \ n';  

But the first will consume: How can I still make these tokens? Or is there a clever approach?

I understand that you are searching for some laser rules to match the beginning of a line, this Likers rule You should notify: 20: or: 21: appearing only at the beginning of a line

  SOL: {getCharPositionInLine () == 0}? ':' [0- 9] + ':';  

The rules of your parser can then search the SOL token before parsing the remaining line.


Comments