* net/loveruby/cflat/parser/Parser.jj: expr0 -> expr1, expr1 -> expr2, ...

git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3756 1b9489fe-b721-0410-924e-b54b9192deb8
This commit is contained in:
Minero Aoki 2007-12-24 17:09:37 +00:00
parent b8936df200
commit bda63ace95
2 changed files with 34 additions and 29 deletions

View File

@ -1,3 +1,8 @@
Tue Dec 25 02:09:35 2007 Minero Aoki <aamine@loveruby.net>
* net/loveruby/cflat/parser/Parser.jj: expr0 -> expr1, expr1 ->
expr2, ...
Mon Dec 24 18:04:08 2007 Minero Aoki <aamine@loveruby.net>
* net/loveruby/cflat/parser/Parser.jj: use better identifier.

View File

@ -873,7 +873,7 @@ Node expr():
throw new Error("fatal: " + ex.getMessage());
}
}
| n=expr9()
| n=expr10()
{
return n;
}
@ -914,20 +914,29 @@ Class opassign_op(): {}
)
}
Node expr9():
Node expr10():
{ Node c, t, e; }
{
c=expr8() ["?" t=expr9() ":" e=expr9()
c=expr9() ["?" t=expr10() ":" e=expr10()
{ return new CondExprNode(labelPool, c, t, e); }]
{
return c;
}
}
Node expr9():
{ Node l, r; }
{
l=expr8() ["||" r=expr9() { return new LogicalOrNode(labelPool, l, r); }]
{
return l;
}
}
Node expr8():
{ Node l, r; }
{
l=expr7() ["||" r=expr8() { return new LogicalOrNode(labelPool, l, r); }]
l=expr7() ["&&" r=expr8() { return new LogicalAndNode(labelPool, l, r); }]
{
return l;
}
@ -936,7 +945,12 @@ Node expr8():
Node expr7():
{ Node l, r; }
{
l=expr6() ["&&" r=expr7() { return new LogicalAndNode(labelPool, l, r); }]
l=expr6() [( ">" r=expr7() { return new GtNode(l, r); }
| "<" r=expr7() { return new LtNode(l, r); }
| ">=" r=expr7() { return new GtEqNode(l, r); }
| "<=" r=expr7() { return new LtEqNode(l, r); }
| "==" r=expr7() { return new EqNode(l, r); }
| "!=" r=expr7() { return new NotEqNode(l, r); } )]
{
return l;
}
@ -945,12 +959,7 @@ Node expr7():
Node expr6():
{ Node l, r; }
{
l=expr5() [( ">" r=expr6() { return new GtNode(l, r); }
| "<" r=expr6() { return new LtNode(l, r); }
| ">=" r=expr6() { return new GtEqNode(l, r); }
| "<=" r=expr6() { return new LtEqNode(l, r); }
| "==" r=expr6() { return new EqNode(l, r); }
| "!=" r=expr6() { return new NotEqNode(l, r); } )]
l=expr5() ["|" r=expr6() { return new BitwiseOrNode(l, r); }]
{
return l;
}
@ -959,7 +968,7 @@ Node expr6():
Node expr5():
{ Node l, r; }
{
l=expr4() ["|" r=expr5() { return new BitwiseOrNode(l, r); }]
l=expr4() ["^" r=expr5() { return new BitwiseXorNode(l, r); }]
{
return l;
}
@ -968,7 +977,7 @@ Node expr5():
Node expr4():
{ Node l, r; }
{
l=expr3() ["^" r=expr4() { return new BitwiseXorNode(l, r); }]
l=expr3() ["&" r=expr4() { return new BitwiseAndNode(l, r); }]
{
return l;
}
@ -977,7 +986,8 @@ Node expr4():
Node expr3():
{ Node l, r; }
{
l=expr2() ["&" r=expr3() { return new BitwiseAndNode(l, r); }]
l=expr2() [( ">>" r=expr3() { return new RShiftNode(l, r); }
| "<<" r=expr3() { return new LShiftNode(l, r); } )]
{
return l;
}
@ -986,8 +996,8 @@ Node expr3():
Node expr2():
{ Node l, r; }
{
l=expr1() [( ">>" r=expr2() { return new RShiftNode(l, r); }
| "<<" r=expr2() { return new LShiftNode(l, r); } )]
l=expr1() [( "+" r=expr2() { return new PlusNode(l, r); }
| "-" r=expr2() { return new MinusNode(l, r); } )]
{
return l;
}
@ -996,19 +1006,9 @@ Node expr2():
Node expr1():
{ Node l, r; }
{
l=expr0() [( "+" r=expr1() { return new PlusNode(l, r); }
| "-" r=expr1() { return new MinusNode(l, r); } )]
{
return l;
}
}
Node expr0():
{ Node l, r; }
{
l=term() [( "*" r=expr0() { return new MulNode(l, r); }
| "/" r=expr0() { return new DivNode(l, r); }
| "%" r=expr0() { return new ModNode(l, r); } )]
l=term() [( "*" r=expr1() { return new MulNode(l, r); }
| "/" r=expr1() { return new DivNode(l, r); }
| "%" r=expr1() { return new ModNode(l, r); } )]
{
return l;
}