From: <fwi...@us...> - 2011-03-29 01:57:54
|
Revision: 7273 http://jython.svn.sourceforge.net/jython/?rev=7273&view=rev Author: fwierzbicki Date: 2011-03-29 01:57:47 +0000 (Tue, 29 Mar 2011) Log Message: ----------- Fix the rest of the easier rewrite rules. Modified Paths: -------------- trunk/jython/grammar/Python.g Modified: trunk/jython/grammar/Python.g =================================================================== --- trunk/jython/grammar/Python.g 2011-03-28 04:17:37 UTC (rev 7272) +++ trunk/jython/grammar/Python.g 2011-03-29 01:57:47 UTC (rev 7273) @@ -698,13 +698,26 @@ //print_stmt: 'print' ( [ test (',' test)* [','] ] | // '>>' test [ (',' test)+ [','] ] ) print_stmt +@init { + stmt stype = null; +} + +@after { + $print_stmt.tree = stype; +} : PRINT (t1=printlist - -> ^(PRINT<Print>[$PRINT, null, actions.castExprs($t1.elts), $t1.newline]) + { + stype = new Print($PRINT, null, actions.castExprs($t1.elts), $t1.newline); + } | RIGHTSHIFT t2=printlist2 - -> ^(PRINT<Print>[$PRINT, actions.castExpr($t2.elts.get(0)), actions.castExprs($t2.elts, 1), $t2.newline]) + { + stype = new Print($PRINT, actions.castExpr($t2.elts.get(0)), actions.castExprs($t2.elts, 1), $t2.newline); + } | - -> ^(PRINT<Print>[$PRINT, null, new ArrayList<expr>(), true]) + { + stype = new Print($PRINT, null, new ArrayList<expr>(), true); + } ) ; @@ -748,17 +761,32 @@ } ; - //del_stmt: 'del' exprlist del_stmt +@init { + stmt stype = null; +} +@after { + $del_stmt.tree = stype; +} : DELETE del_list - -> ^(DELETE<Delete>[$DELETE, $del_list.etypes]) + { + stype = new Delete($DELETE, $del_list.etypes); + } ; //pass_stmt: 'pass' pass_stmt +@init { + stmt stype = null; +} +@after { + $pass_stmt.tree = stype; +} : PASS - -> ^(PASS<Pass>[$PASS]) + { + stype = new Pass($PASS); + } ; //flow_stmt: break_stmt | continue_stmt | return_stmt | raise_stmt | yield_stmt @@ -772,42 +800,82 @@ //break_stmt: 'break' break_stmt +@init { + stmt stype = null; +} +@after { + $break_stmt.tree = stype; +} : BREAK - -> ^(BREAK<Break>[$BREAK]) + { + stype = new Break($BREAK); + } ; //continue_stmt: 'continue' continue_stmt +@init { + stmt stype = null; +} +@after { + $continue_stmt.tree = stype; +} : CONTINUE { if (!$suite.isEmpty() && $suite::continueIllegal) { errorHandler.error("'continue' not supported inside 'finally' clause", new PythonTree($continue_stmt.start)); } + stype = new Continue($CONTINUE); } - -> ^(CONTINUE<Continue>[$CONTINUE]) ; //return_stmt: 'return' [testlist] return_stmt +@init { + stmt stype = null; +} +@after { + $return_stmt.tree = stype; +} : RETURN (testlist[expr_contextType.Load] - -> ^(RETURN<Return>[$RETURN, actions.castExpr($testlist.tree)]) + { + stype = new Return($RETURN, actions.castExpr($testlist.tree)); + } | - -> ^(RETURN<Return>[$RETURN, null]) + { + stype = new Return($RETURN, null); + } ) ; //yield_stmt: yield_expr yield_stmt +@init { + stmt stype = null; +} +@after { + $yield_stmt.tree = stype; +} : yield_expr - -> ^(YIELD<Expr>[$yield_expr.start, actions.castExpr($yield_expr.tree)]) + { + stype = new Expr($yield_expr.start, actions.castExpr($yield_expr.tree)); + } ; //raise_stmt: 'raise' [test [',' test [',' test]]] raise_stmt +@init { + stmt stype = null; +} +@after { + $raise_stmt.tree = stype; +} : RAISE (t1=test[expr_contextType.Load] (COMMA t2=test[expr_contextType.Load] (COMMA t3=test[expr_contextType.Load])?)?)? - -> ^(RAISE<Raise>[$RAISE, actions.castExpr($t1.tree), actions.castExpr($t2.tree), actions.castExpr($t3.tree)]) + { + stype = new Raise($RAISE, actions.castExpr($t1.tree), actions.castExpr($t2.tree), actions.castExpr($t3.tree)); + } ; //import_stmt: import_name | import_from @@ -818,8 +886,16 @@ //import_name: 'import' dotted_as_names import_name +@init { + stmt stype = null; +} +@after { + $import_name.tree = stype; +} : IMPORT dotted_as_names - -> ^(IMPORT<Import>[$IMPORT, $dotted_as_names.atypes]) + { + stype = new Import($IMPORT, $dotted_as_names.atypes); + } ; //import_from: ('from' ('.'* dotted_name | '.'+) @@ -915,8 +991,16 @@ //assert_stmt: 'assert' test [',' test] assert_stmt +@init { + stmt stype = null; +} +@after { + $assert_stmt.tree = stype; +} : ASSERT t1=test[expr_contextType.Load] (COMMA t2=test[expr_contextType.Load])? - -> ^(ASSERT<Assert>[$ASSERT, actions.castExpr($t1.tree), actions.castExpr($t2.tree)]) + { + stype = new Assert($ASSERT, actions.castExpr($t1.tree), actions.castExpr($t2.tree)); + } ; //compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | funcdef | classdef @@ -929,12 +1013,19 @@ | (decorators? DEF) => funcdef | classdef ; - //if_stmt: 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite] if_stmt +@init { + stmt stype = null; +} +@after { + $if_stmt.tree = stype; +} : IF test[expr_contextType.Load] COLON ifsuite=suite[false] elif_clause? - -> ^(IF<If>[$IF, actions.castExpr($test.tree), actions.castStmts($ifsuite.stypes), - actions.makeElse($elif_clause.stypes, $elif_clause.tree)]) + { + stype = new If($IF, actions.castExpr($test.tree), actions.castStmts($ifsuite.stypes), + actions.makeElse($elif_clause.stypes, $elif_clause.tree)); + } ; //not in CPython's Grammar file @@ -1041,9 +1132,17 @@ //except_clause: 'except' [test [('as' | ',') test]] except_clause +@init { + excepthandler extype = null; +} +@after { + $except_clause.tree = extype; +} : EXCEPT (t1=test[expr_contextType.Load] ((COMMA | AS) t2=test[expr_contextType.Store])?)? COLON suite[!$suite.isEmpty() && $suite::continueIllegal] - -> ^(EXCEPT<ExceptHandler>[$EXCEPT, actions.castExpr($t1.tree), actions.castExpr($t2.tree), - actions.castStmts($suite.stypes)]) + { + extype = new ExceptHandler($EXCEPT, actions.castExpr($t1.tree), actions.castExpr($t2.tree), + actions.castStmts($suite.stypes)); + } ; //suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |