Mercurial Hosting > luan
comparison src/luan/interp/LuaParser.java @ 8:8896068e0a4b
finish operators
git-svn-id: https://luan-java.googlecode.com/svn/trunk@9 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Wed, 21 Nov 2012 06:57:09 +0000 |
parents | bca8fc5d928b |
children | 600676034a1a |
comparison
equal
deleted
inserted
replaced
7:bca8fc5d928b | 8:8896068e0a4b |
---|---|
36 ); | 36 ); |
37 } | 37 } |
38 | 38 |
39 Rule RelExpr() { | 39 Rule RelExpr() { |
40 return Sequence( | 40 return Sequence( |
41 ConcatExpr(), | |
42 ZeroOrMore( | |
43 FirstOf( | |
44 Sequence( "==", Spaces(), ConcatExpr(), push( new EqExpr((Expr)pop(1),(Expr)pop()) ) ), | |
45 Sequence( "~=", Spaces(), ConcatExpr(), push( new NotExpr(new EqExpr((Expr)pop(1),(Expr)pop())) ) ), | |
46 Sequence( "<=", Spaces(), ConcatExpr(), push( new LeExpr((Expr)pop(1),(Expr)pop()) ) ), | |
47 Sequence( ">=", Spaces(), ConcatExpr(), push( new LeExpr((Expr)pop(),(Expr)pop()) ) ), | |
48 Sequence( "<", Spaces(), ConcatExpr(), push( new LtExpr((Expr)pop(1),(Expr)pop()) ) ), | |
49 Sequence( ">", Spaces(), ConcatExpr(), push( new LtExpr((Expr)pop(),(Expr)pop()) ) ) | |
50 ) | |
51 ) | |
52 ); | |
53 } | |
54 | |
55 Rule ConcatExpr() { | |
56 return Sequence( | |
41 SumExpr(), | 57 SumExpr(), |
42 ZeroOrMore( | 58 Optional( "..", Spaces(), ConcatExpr(), push( new ConcatExpr((Expr)pop(1),(Expr)pop()) ) ) |
43 FirstOf( | |
44 Sequence( "==", Spaces(), SumExpr(), push( new EqExpr((Expr)pop(1),(Expr)pop()) ) ), | |
45 Sequence( "~=", Spaces(), SumExpr(), push( new NotExpr(new EqExpr((Expr)pop(1),(Expr)pop())) ) ) | |
46 ) | |
47 ) | |
48 ); | 59 ); |
49 } | 60 } |
50 | 61 |
51 Rule SumExpr() { | 62 Rule SumExpr() { |
52 return Sequence( | 63 return Sequence( |
73 ); | 84 ); |
74 } | 85 } |
75 | 86 |
76 Rule UnaryExpr() { | 87 Rule UnaryExpr() { |
77 return FirstOf( | 88 return FirstOf( |
78 Sequence( '#', Spaces(), SingleExpr(), push( new LenExpr((Expr)pop()) ) ), | 89 Sequence( '#', Spaces(), PowExpr(), push( new LenExpr((Expr)pop()) ) ), |
79 Sequence( '-', Spaces(), SingleExpr(), push( new UnmExpr((Expr)pop()) ) ), | 90 Sequence( '-', Spaces(), PowExpr(), push( new UnmExpr((Expr)pop()) ) ), |
80 Sequence( "not", Spaces(), SingleExpr(), push( new NotExpr((Expr)pop()) ) ), | 91 Sequence( "not", Spaces(), PowExpr(), push( new NotExpr((Expr)pop()) ) ), |
81 SingleExpr() | 92 PowExpr() |
93 ); | |
94 } | |
95 | |
96 Rule PowExpr() { | |
97 return Sequence( | |
98 SingleExpr(), | |
99 Optional( '^', Spaces(), PowExpr(), push( new PowExpr((Expr)pop(1),(Expr)pop()) ) ) | |
82 ); | 100 ); |
83 } | 101 } |
84 | 102 |
85 Rule SingleExpr() { | 103 Rule SingleExpr() { |
86 return FirstOf( | 104 return FirstOf( |