[antlr-interest] holy crap; got java expressions working
Michael Bedward
michael.bedward at gmail.com
Thu Feb 24 18:53:43 PST 2011
You're just showing off now :)
Michael
On 25 February 2011 13:42, Terence Parr <parrt at cs.usfca.edu> wrote:
> did a quick trial of java expression. i'll be damned if it doesn't seem to work. sample input/output pairs below.
>
> Ter
> --------------
>
> e : '('! e ')'!
> | 'this'
> | 'super'
> | INT
> | ID
> | type '.'^ 'class'
> | e '.'^ ID
> | e '.'^ 'this'
> | e '.'^ 'super' '('^ expressionList? ')'!
> | e '.'^ 'new'^ ID '('! expressionList? ')'!
> | 'new'^ type ( '(' expressionList? ')'! | (options {k=1;}:'[' e ']'!)+)
> | e '['^ e ']'!
> | '('^ type ')'! e
> | e ('++'^ | '--'^)
> | e '('^ expressionList? ')'!
> | ('+'^|'-'^|'++'^|'--'^) e
> | ('~'^|'!'^) e
> | e ('*'^|'/'^|'%'^) e
> | e ('+'^|'-'^) e
> | e ('<' '<' | '>' '>' '>' | '>' '>') e
> | e ('<='^ | '>='^ | '>'^ | '<'^) e
> | e 'instanceof'^ e
> | e ('=='^ | '!='^) e
> | e '&'^ e
> | e '^'<assoc=right>^ e
> | e '|'^ e
> | e '&&'^ e
> | e '||'^ e
> // | e '?' e ':' e
> | e ('='<assoc=right>^
> |'+='<assoc=right>^
> |'-='<assoc=right>^
> |'*='<assoc=right>^
> |'/='<assoc=right>^
> |'&='<assoc=right>^
> |'|='<assoc=right>^
> |'^='<assoc=right>^
> |'>>='<assoc=right>^
> |'>>>='<assoc=right>^
> |'<<='<assoc=right>^
> |'<<<='<assoc=right>^
> |'%='<assoc=right>^) e
> ;
> expressionList
> : e (','! e)*
> ;
> type: ID
> | ID '['^ ']'!
> | 'int'
> | 'int' '['^ ']'!
> ;
>
> -------------
>
> a -> a
> 1 -> 1
> a+1 -> (+ a 1)
> a*1 -> (* a 1)
> a.b -> (. a b)
> a-b+c -> (+ (- a b) c)
> a+b*c -> (+ a (* b c))
> a.b+1 -> (+ (. a b) 1)
> -a -> (- a)
> -a+b -> (+ (- a) b)
> -a.b -> (- (. a b))
> a^b^c -> (^ a (^ b c))
> a=b=c -> (= a (= b c))
> a=b=c+d.e -> (= a (= b (+ c (. d e))))
> a|b&c -> (| a (& b c))
> (a|b)&c -> (& (| a b) c)
> (T)x -> (( T x)
> new A().b -> (. (new A () b)
> (T)t.f() -> (( (( T (. t f)))
> a.f(x)==T.c -> (== (( (. a f) x) (. T c))
> a.f().g(x,1) -> (( (. (( (. a f)) g) x 1)
> new T[((n-1) * x) + 1] -> (new T [ (+ (* (- n 1) x) 1))
>
>
> 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