[antlr-interest] distinguish "3 + 4" from "3 +4"
Bart Kiers
bkiers at gmail.com
Wed Oct 5 04:43:59 PDT 2011
Hi Andreas,
I think it's a bad idea to "glue" a '+' (or '-') to a NUMBER token. If I
were you, I'd resolve that in a unary-parser rule:
expression
: add
;
add
: multiplication (('+' | '-') multiplication)*
;
multiplication
: unary (('*' | '/') unary)*
;
unary
: '+' atom
| '-' atom
| atom
;
atom
: NUMBER
| '(' expression ')'
;
The grammar above would handle expressions like:
+ 1 + -5
^ ^
| |
+-----+---- unary '+' and '-'
Regards,
Bart.
On Wed, Oct 5, 2011 at 1:14 PM, Andreas Liebig <liebigandreas at yahoo.com>wrote:
> Hello,
> I am not very experienced with ANTLR, and I would like to ask for some
> ideas how to solve this task:
>
> I have to distinguish input streams like
> "3 + 4" (parsed as three tokens NUMBER PLUS NUMBER) from
> "3 +4" (parsed as NUMBER NUMBER, because the + is part of the number +4).
>
> I would like to ignore whitespace in general using the "$channel=HIDDEN;"
> syntax. But only in this situation whitespace does matter.
> Can you guide me to a good explanation of a possible solution?
>
> Thanks
> Andreas
>
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe:
> http://www.antlr.org/mailman/options/antlr-interest/your-email-address
>
More information about the antlr-interest
mailing list