Hi Richard, The answer is to use 2 lexer rules instead of one, and change the parser rule. It is generally not a good idea to mark whitespace as hidden (as you have done), and also use whitespace in your lexer rules. Here is what I would try:
grammar testing; start : ( DOLLAR? INT CENTS? | NEW_LINE )+ ; fragment DIGIT : '0'..'9'; DOLLAR : '$'; CENTS : '.' DIGIT DIGIT; INT : DIGIT+ (',' DIGIT+)*; NEW_LINE : ('\r'?'\n'); WS : (SPACE |'\t'|'\u000C') {$channel=HIDDEN;}; fragment SPACE : ' '; - Justin On 2/15/2011 6:05 AM, Richard Druce wrote: > Hi, > > I'm sure this question has been answered before but I'm not sure how > to phrase it well enough to find it in the archives. > > I want to match to inputs an INT such as ' 170 \n' > and an AMOUNT such as ' $ 170.00 ' (unfortunately there is > occasionally a space before the amount) > > The following grammar works for ' $ 170.00 ' but not for ' 170 ' it > sees the space and tries to match the AMOUNT and the output > 'mismatched character ' ' expecting '.' ' is provided. Reading > through the antlr reference book, it looks like there are a number of > ways to possibly handle this but I'm not sure how best to approach it. > > grammar testing; > > start : > (AMOUNT > | INT > | NEW_LINE)+; > > fragment DIGIT : '0'..'9'; > > AMOUNT : '$'? SPACE? DIGIT+ (','DIGIT+)? '.' DIGIT DIGIT; > > INT : DIGIT+ (','DIGIT+)?; > > NEW_LINE > : ('\r'?'\n'); > > WS : (SPACE |'\t'|'\u000C') > {$channel=HIDDEN;}; > > fragment SPACE > : ' '; > > Thanks, > > Richard > -- > m: +44 753 489 2926 > > List: http://www.antlr.org/mailman/listinfo/antlr-interest > Unsubscribe: > http://www.antlr.org/mailman/options/antlr-interest/your-email-address 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 il-antlr-inter...@googlegroups.com. To unsubscribe from this group, send email to il-antlr-interest+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/il-antlr-interest?hl=en.