From: <fwi...@us...> - 2009-01-11 14:49:47
|
Revision: 5919 http://jython.svn.sourceforge.net/jython/?rev=5919&view=rev Author: fwierzbicki Date: 2009-01-11 14:49:43 +0000 (Sun, 11 Jan 2009) Log Message: ----------- refinements to funcdef args. 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-11 10:35:10 UTC (rev 5918) +++ branches/jy3k/grammar/Python.g 2009-01-11 14:49:43 UTC (rev 5919) @@ -461,7 +461,7 @@ ; //not in CPython's Grammar file -tdefparameter[List defaults] returns [arg atype] +tdefparameter[List defaults, boolean defaultToNone] returns [arg atype] @after { $tdefparameter.tree = $atype; } @@ -470,6 +470,9 @@ $atype = actions.castArg($tfpdef.tree); if ($ASSIGN != null) { defaults.add($test.tree); + } else if (defaultToNone) { + //XXX: is this the right way to add None? + defaults.add(null); } else if (!defaults.isEmpty()) { throw new ParseException("non-default argument follows default argument", $tfpdef.tree); } @@ -484,10 +487,10 @@ List defaults = new ArrayList(); List kw_defaults = new ArrayList(); } - : d+=tdefparameter[defaults] (options {greedy=true;}:COMMA d+=tdefparameter[defaults])* + : d+=tdefparameter[defaults, false] (options {greedy=true;}:COMMA d+=tdefparameter[defaults, false])* (COMMA - (STAR (starargs=tfpdef[expr_contextType.Param])? (COMMA k+=tdefparameter[kw_defaults])* - (COMMA tdefparameter[defaults])* (COMMA DOUBLESTAR kwargs=tfpdef[expr_contextType.Param])? + (STAR (starargs=tfpdef[expr_contextType.Param])? (COMMA k+=tdefparameter[kw_defaults, true])* + (COMMA DOUBLESTAR kwargs=tfpdef[expr_contextType.Param])? | DOUBLESTAR kwargs=tfpdef[expr_contextType.Param] )? )? @@ -501,7 +504,7 @@ defaults, kw_defaults); } - | STAR starargs=tfpdef[expr_contextType.Param] (COMMA DOUBLESTAR kwargs=tfpdef[expr_contextType.Param])? + | STAR (starargs=tfpdef[expr_contextType.Param])? (COMMA DOUBLESTAR kwargs=tfpdef[expr_contextType.Param])? { $args = actions.makeArgumentsType( $typedargslist.start, Modified: branches/jy3k/src/org/python/antlr/GrammarActions.java =================================================================== --- branches/jy3k/src/org/python/antlr/GrammarActions.java 2009-01-11 10:35:10 UTC (rev 5918) +++ branches/jy3k/src/org/python/antlr/GrammarActions.java 2009-01-11 14:49:43 UTC (rev 5919) @@ -136,7 +136,11 @@ result.add((expr)o); } else if (o instanceof PythonParser.test_return) { result.add((expr)((PythonParser.test_return)o).tree); + } else if (o == null) { + //Should we really add null? This is mainly here for kw_defaults + result.add(null); } + //XXX: throw exception if we get here? } } return result; @@ -307,10 +311,10 @@ Token t, List args, arg vararg, - List kwonlyargs, //* + List kwonlyargs, arg kwarg, List defaults, - List kw_defaults //* + List kw_defaults ) { List<arg> p = castArgs(args); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |