|
From: <fwi...@us...> - 2011-03-28 01:33:39
|
Revision: 7271
http://jython.svn.sourceforge.net/jython/?rev=7271&view=rev
Author: fwierzbicki
Date: 2011-03-28 01:33:33 +0000 (Mon, 28 Mar 2011)
Log Message:
-----------
Merge relevant grammar fixes from trunk.
Modified Paths:
--------------
branches/Release_2_5maint/jython/grammar/Python.g
Modified: branches/Release_2_5maint/jython/grammar/Python.g
===================================================================
--- branches/Release_2_5maint/jython/grammar/Python.g 2011-03-28 01:33:05 UTC (rev 7270)
+++ branches/Release_2_5maint/jython/grammar/Python.g 2011-03-28 01:33:33 UTC (rev 7271)
@@ -205,15 +205,14 @@
* a = [3,
* 4]
*/
+int implicitLineJoiningLevel = 0;
+int startPos=-1;
//For use in partial parsing.
public boolean eofWhileNested = false;
public boolean partial = false;
public boolean single = false;
-int implicitLineJoiningLevel = 0;
-int startPos=-1;
-
//If you want to use another error recovery mechanism change this
//and the same one in the parser.
private ErrorHandler errorHandler;
@@ -268,6 +267,8 @@
}
}
+//START OF PARSER RULES
+
//single_input: NEWLINE | simple_stmt | compound_stmt NEWLINE
single_input
@init {
@@ -319,8 +320,9 @@
: (NEWLINE
| stmt
{
- if ($stmt.stypes != null)
- {stypes.addAll($stmt.stypes);}
+ if ($stmt.stypes != null) {
+ stypes.addAll($stmt.stypes);
+ }
}
)* EOF
{
@@ -447,8 +449,13 @@
//funcdef: [decorators] 'def' NAME parameters ':' suite
funcdef
-@init { stmt stype = null; }
-@after { $funcdef.tree = stype; }
+@init {
+ stmt stype = null;
+}
+
+@after {
+ $funcdef.tree = stype;
+}
: decorators? DEF NAME parameters COLON suite[false]
{
Token t = $DEF;
@@ -606,12 +613,16 @@
| (testlist[null] ASSIGN) => lhs=testlist[expr_contextType.Store]
(
| ((at=ASSIGN t+=testlist[expr_contextType.Store])+
- -> ^(ASSIGN<Assign>[$lhs.start, actions.makeAssignTargets(actions.castExpr($lhs.tree), $t),
- actions.makeAssignValue($t)])
+ {
+ stype = new Assign($lhs.tree, actions.makeAssignTargets(
+ actions.castExpr($lhs.tree), $t), actions.makeAssignValue($t));
+ }
)
| ((ay=ASSIGN y2+=yield_expr)+
- -> ^(ASSIGN<Assign>[$lhs.start, actions.makeAssignTargets(actions.castExpr($lhs.tree), $y2),
- actions.makeAssignValue($y2)])
+ {
+ stype = new Assign($lhs.start, actions.makeAssignTargets(
+ actions.castExpr($lhs.tree), $y2), actions.makeAssignValue($y2));
+ }
)
)
| lhs=testlist[expr_contextType.Load]
@@ -626,29 +637,53 @@
augassign
returns [operatorType op]
: PLUSEQUAL
- {$op = operatorType.Add;}
+ {
+ $op = operatorType.Add;
+ }
| MINUSEQUAL
- {$op = operatorType.Sub;}
+ {
+ $op = operatorType.Sub;
+ }
| STAREQUAL
- {$op = operatorType.Mult;}
+ {
+ $op = operatorType.Mult;
+ }
| SLASHEQUAL
- {$op = operatorType.Div;}
+ {
+ $op = operatorType.Div;
+ }
| PERCENTEQUAL
- {$op = operatorType.Mod;}
+ {
+ $op = operatorType.Mod;
+ }
| AMPEREQUAL
- {$op = operatorType.BitAnd;}
+ {
+ $op = operatorType.BitAnd;
+ }
| VBAREQUAL
- {$op = operatorType.BitOr;}
+ {
+ $op = operatorType.BitOr;
+ }
| CIRCUMFLEXEQUAL
- {$op = operatorType.BitXor;}
+ {
+ $op = operatorType.BitXor;
+ }
| LEFTSHIFTEQUAL
- {$op = operatorType.LShift;}
+ {
+ $op = operatorType.LShift;
+ }
| RIGHTSHIFTEQUAL
- {$op = operatorType.RShift;}
+ {
+ $op = operatorType.RShift;
+ }
| DOUBLESTAREQUAL
- {$op = operatorType.Pow;}
+ {
+ $op = operatorType.Pow;
+ }
| DOUBLESLASHEQUAL
- {$op = operatorType.FloorDiv;}
+ {
+ $op = operatorType.FloorDiv;
+ }
;
//print_stmt: 'print' ( [ test (',' test)* [','] ] |
@@ -991,6 +1026,7 @@
: (AS | NAME) expr[expr_contextType.Store]
{
$etype = actions.castExpr($expr.tree);
+ actions.checkAssign($etype);
}
;
@@ -1085,7 +1121,10 @@
[expr_contextType ctype] returns [Token leftTok]
: NOT nt=not_test[ctype]
-> ^(NOT<UnaryOp>[$NOT, unaryopType.Not, actions.castExpr($nt.tree)])
- | comparison[ctype] {$leftTok = $comparison.leftTok;}
+ | comparison[ctype]
+ {
+ $leftTok = $comparison.leftTok;
+ }
;
//comparison: expr (comp_op expr)*
@@ -1116,30 +1155,51 @@
comp_op
returns [cmpopType op]
: LESS
- {$op = cmpopType.Lt;}
+ {
+ $op = cmpopType.Lt;
+ }
| GREATER
- {$op = cmpopType.Gt;}
+ {
+ $op = cmpopType.Gt;
+ }
| EQUAL
- {$op = cmpopType.Eq;}
+ {
+ $op = cmpopType.Eq;
+ }
| GREATEREQUAL
- {$op = cmpopType.GtE;}
+ {
+ $op = cmpopType.GtE;
+ }
| LESSEQUAL
- {$op = cmpopType.LtE;}
+ {
+ $op = cmpopType.LtE;
+ }
| ALT_NOTEQUAL
- {$op = cmpopType.NotEq;}
+ {
+ $op = cmpopType.NotEq;
+ }
| NOTEQUAL
- {$op = cmpopType.NotEq;}
+ {
+ $op = cmpopType.NotEq;
+ }
| IN
- {$op = cmpopType.In;}
+ {
+ $op = cmpopType.In;
+ }
| NOT IN
- {$op = cmpopType.NotIn;}
+ {
+ $op = cmpopType.NotIn;
+ }
| IS
- {$op = cmpopType.Is;}
+ {
+ $op = cmpopType.Is;
+ }
| IS NOT
- {$op = cmpopType.IsNot;}
+ {
+ $op = cmpopType.IsNot;
+ }
;
-
//expr: xor_expr ('|' xor_expr)*
expr
[expr_contextType ect] returns [Token leftTok]
@@ -1242,9 +1302,13 @@
shift_op
returns [operatorType op]
: LEFTSHIFT
- {$op = operatorType.LShift;}
+ {
+ $op = operatorType.LShift;
+ }
| RIGHTSHIFT
- {$op = operatorType.RShift;}
+ {
+ $op = operatorType.RShift;
+ }
;
//arith_expr: term (('+'|'-') term)*
@@ -1287,9 +1351,13 @@
arith_op
returns [operatorType op]
: PLUS
- {$op = operatorType.Add;}
+ {
+ $op = operatorType.Add;
+ }
| MINUS
- {$op = operatorType.Sub;}
+ {
+ $op = operatorType.Sub;
+ }
;
//term: factor (('*'|'/'|'%'|'//') factor)*
@@ -1323,14 +1391,22 @@
term_op
returns [operatorType op]
- :STAR
- {$op = operatorType.Mult;}
- |SLASH
- {$op = operatorType.Div;}
- |PERCENT
- {$op = operatorType.Mod;}
- |DOUBLESLASH
- {$op = operatorType.FloorDiv;}
+ : STAR
+ {
+ $op = operatorType.Mult;
+ }
+ | SLASH
+ {
+ $op = operatorType.Div;
+ }
+ | PERCENT
+ {
+ $op = operatorType.Mod;
+ }
+ | DOUBLESLASH
+ {
+ $op = operatorType.FloorDiv;
+ }
;
//factor: ('+'|'-'|'~') factor | power
@@ -1340,11 +1416,17 @@
$factor.tree = $etype;
}
: PLUS p=factor
- {$etype = new UnaryOp($PLUS, unaryopType.UAdd, $p.etype);}
+ {
+ $etype = new UnaryOp($PLUS, unaryopType.UAdd, $p.etype);
+ }
| MINUS m=factor
- {$etype = actions.negate($MINUS, $m.etype);}
+ {
+ $etype = actions.negate($MINUS, $m.etype);
+ }
| TILDE t=factor
- {$etype = new UnaryOp($TILDE, unaryopType.Invert, $t.etype);}
+ {
+ $etype = new UnaryOp($TILDE, unaryopType.Invert, $t.etype);
+ }
| power
{
$etype = actions.castExpr($power.tree);
@@ -1399,7 +1481,10 @@
// NAME | NUMBER | STRING+)
atom
returns [Token lparen = null]
- : LPAREN {$lparen = $LPAREN;}
+ : LPAREN
+ {
+ $lparen = $LPAREN;
+ }
( yield_expr
-> yield_expr
| testlist_gexp
@@ -1475,8 +1560,7 @@
}
: t+=test[$expr::ctype]
( ((options {k=2;}: c1=COMMA t+=test[$expr::ctype])* (c2=COMMA)?
- -> { $c1 != null || $c2 != null }?
- ^(COMMA<Tuple>[$testlist_gexp.start, actions.castExprs($t), $expr::ctype])
+ -> { $c1 != null || $c2 != null }? ^(COMMA<Tuple>[$testlist_gexp.start, actions.castExprs($t), $expr::ctype])
-> test
)
| (gen_for[gens]
@@ -1665,11 +1749,11 @@
| STAR s=test[expr_contextType.Load] (COMMA DOUBLESTAR k=test[expr_contextType.Load])?
{
$starargs=actions.castExpr($s.tree);
- $kwargs=actions.castExpr($k.tree);
+ $kwargs=actions.castExpr($k.tree);
}
| DOUBLESTAR k=test[expr_contextType.Load]
{
- $kwargs=actions.castExpr($k.tree);
+ $kwargs=actions.castExpr($k.tree);
}
;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|