Thomas Dill wrote:

Hi there.

 

I got the following Problem:

 

In the syntax, I want to parse, a comment line starts with “-*” and ends at the end of the line. It’s possible that an asterisk can appear in a “text”.

 

I can’t find a solution. Below there’s what I tried (and many other things)… Can somebody help me?

You need to eat the comment in your lexer and ignore it in the parser (unless it is predictable and you want to preserve it).

COMMENT : '-*' (~(NLCHARS))* NEWLINE ;

fragment NLCHARS
: '\n' | '\r' | '\u2028'| '\u2029' ;

NEWLINE : NLCHARS+ ;

However, your grammar only defines these tokens so the set ~(COMMENT_START|NEWLINE) would not have anything to work with any way. Start by eating the comments in the lexer though.

You should download the example grammar set and read through them, they will help you a lot.

Jim

 

Example:

 

TABLE FILE CAR

PRINT * -* prtints all fields

BY MODEL

END

 

ANTLR Code:

grammar FexParser;

options {k=3; backtrack=true; memoize=true;}

 

report    :    (comment | text | NEWLINE)+ ;

 

comment   :    (COMMENT_START ~(NEWLINE))* ;

text      :    (~(COMMENT_START | NEWLINE))+;

 

fragment COMMENT_START

          :    '-*';

 

WS        :    ('\t' | '\v' | '\f' | ' ' | '\u00A0')     {$channel = HIDDEN;};

NEWLINE   :    '\n' | '\r' | '\u2028'| '\u2029'    ;

 

Best regards,

Tom


List: http://www.antlr.org/mailman/listinfo/antlr-interest Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "il-antlr-interest" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [email protected]
For more options, visit this group at http://groups.google.com/group/il-antlr-interest?hl=en
-~----------~----~----~----~------~----~------~--~---



List: http://www.antlr.org/mailman/listinfo/antlr-interest
Unsubscribe: 
http://www.antlr.org/mailman/options/antlr-interest/your-email-address

Reply via email to