From: <fwi...@us...> - 2009-01-05 17:59:09
|
Revision: 5851 http://jython.svn.sourceforge.net/jython/?rev=5851&view=rev Author: fwierzbicki Date: 2009-01-05 17:59:06 +0000 (Mon, 05 Jan 2009) Log Message: ----------- Just enough to get ast.arguments constructor calls passing. Modified Paths: -------------- branches/jy3k/grammar/Python.g branches/jy3k/src/org/python/antlr/GrammarActions.java Modified: branches/jy3k/grammar/Python.g =================================================================== --- branches/jy3k/grammar/Python.g 2009-01-05 13:51:12 UTC (rev 5850) +++ branches/jy3k/grammar/Python.g 2009-01-05 17:59:06 UTC (rev 5851) @@ -84,6 +84,7 @@ import org.python.antlr.ParseException; import org.python.antlr.PythonTree; import org.python.antlr.ast.alias; +import org.python.antlr.ast.arg; import org.python.antlr.ast.arguments; import org.python.antlr.ast.Assert; import org.python.antlr.ast.Assign; @@ -447,7 +448,7 @@ parameters returns [arguments args] : LPAREN (varargslist {$args = $varargslist.args;} - | { $args = new arguments($parameters.start, new ArrayList<expr>(), null, null, new ArrayList<expr>()); + | { $args = new arguments($parameters.start, new ArrayList<arg>(), null, null, new ArrayList<arg>(), null, null, new ArrayList<expr>(), new ArrayList<expr>()); } ) RPAREN @@ -486,7 +487,7 @@ } | STAR starargs=tfpdef[expr_contextType.Param] (COMMA DOUBLESTAR kwargs=tfpdef[expr_contextType.Param])? { - $args = actions.makeArgumentsType($typedargslist.start, $d, $starargs.tree.tree, $kwargs.tree, defaults); + $args = actions.makeArgumentsType($typedargslist.start, $d, $starargs.tree, $kwargs.tree, defaults); } | DOUBLESTAR kwargs=tfpdef[expr_contextType.Param] { @@ -1310,7 +1311,7 @@ { arguments a = $varargslist.args; if (a == null) { - a = new arguments($LAMBDA, new ArrayList<expr>(), null, null, new ArrayList<expr>()); + a = new arguments($LAMBDA, new ArrayList<arg>(), null, null, new ArrayList<arg>(), null, null, new ArrayList<expr>(), new ArrayList<expr>()); } etype = new Lambda($LAMBDA, a, actions.castExpr($test.tree)); } Modified: branches/jy3k/src/org/python/antlr/GrammarActions.java =================================================================== --- branches/jy3k/src/org/python/antlr/GrammarActions.java 2009-01-05 13:51:12 UTC (rev 5850) +++ branches/jy3k/src/org/python/antlr/GrammarActions.java 2009-01-05 17:59:06 UTC (rev 5851) @@ -10,6 +10,7 @@ import org.python.core.PyString; import org.python.core.PyUnicode; import org.python.antlr.ast.alias; +import org.python.antlr.ast.arg; import org.python.antlr.ast.arguments; import org.python.antlr.ast.boolopType; import org.python.antlr.ast.cmpopType; @@ -150,7 +151,20 @@ } return result; } - + + List<arg> castArgs(List args) { + List<arg> result = new ArrayList<arg>(); + if (args != null) { + for (int i=start; i<args.size(); i++) { + Object o = args.get(i); + if (o instanceof arg) { + result.add((arg)o); + } + } + } + return result; + } + List<stmt> makeElse(List elseSuite, PythonTree elif) { if (elseSuite != null) { return castStmts(elseSuite); @@ -250,7 +264,7 @@ if (args != null) { a = args; } else { - a = new arguments(t, new ArrayList<expr>(), null, null, new ArrayList<expr>()); + a = new arguments(t, new ArrayList<arg>(), null, null, new ArrayList<arg>(), null, null, new ArrayList<expr>(), new ArrayList<expr>()); } List<stmt> s = castStmts(funcStatements); List<expr> d = castExprs(decorators); @@ -292,10 +306,10 @@ } } - arguments makeArgumentsType(Token t, List params, Token snameToken, - Token knameToken, List defaults) { + arguments makeArgumentsType(Token t, List params, PythonTree snameToken, + PythonTree knameToken, List defaults) { - List<expr> p = castExprs(params); + List<arg> p = castArgs(params); List<expr> d = castExprs(defaults); String s; String k; @@ -309,7 +323,7 @@ } else { k = cantBeNone(knameToken); } - return new arguments(t, p, s, k, d); + return new arguments(t, p, s, null, new ArrayList<arg>(), k, null, d, new ArrayList<expr>()); } List<expr> extractArgs(List args) { @@ -591,10 +605,11 @@ return t.getText(); } - void cantBeNone(PythonTree e) { + String cantBeNone(PythonTree e) { if (e.getText().equals("None")) { errorHandler.error("can't be None", e); } + return e.getText(); } void checkAssign(expr e) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |