From: <fwi...@us...> - 2008-08-26 15:05:24
|
Revision: 5250 http://jython.svn.sourceforge.net/jython/?rev=5250&view=rev Author: fwierzbicki Date: 2008-08-26 15:05:19 +0000 (Tue, 26 Aug 2008) Log Message: ----------- Moved makeSliceType code to GrammarActions. Modified Paths: -------------- branches/nowalker/grammar/Python.g branches/nowalker/src/org/python/antlr/GrammarActions.java Modified: branches/nowalker/grammar/Python.g =================================================================== --- branches/nowalker/grammar/Python.g 2008-08-26 12:21:42 UTC (rev 5249) +++ branches/nowalker/grammar/Python.g 2008-08-26 15:05:19 UTC (rev 5250) @@ -1274,7 +1274,6 @@ ; //subscriptlist: subscript (',' subscript)* [','] -//FIXME: tuples not always created when commas are present. subscriptlist[Token begin] returns [exprType etype] @init { exprType etype = null; @@ -1284,40 +1283,7 @@ } : sub+=subscript (options {greedy=true;}:c1=COMMA sub+=subscript)* (c2=COMMA)? { - boolean isTuple = false; - if ($c1 != null || $c2 != null) { - isTuple = true; - } - sliceType s = null; - List sltypes = $sub; - boolean extslice = false; - - if (isTuple) { - sliceType[] st; - List etypes = new ArrayList(); - for (Object o : sltypes) { - if (o instanceof Index) { - Index i = (Index)o; - etypes.add(i.value); - } else { - extslice = true; - break; - } - } - if (!extslice) { - exprType[] es = (exprType[])etypes.toArray(new exprType[etypes.size()]); - exprType t = new Tuple($begin, es, expr_contextType.Load); - s = new Index($begin, t); - } - } else if (sltypes.size() == 1) { - s = (sliceType)sltypes.get(0); - } else if (sltypes.size() != 0) { - extslice = true; - } - if (extslice) { - sliceType[] st = (sliceType[])sltypes.toArray(new sliceType[sltypes.size()]); - s = new ExtSlice($begin, st); - } + sliceType s = actions.makeSliceType($begin, $c1, $c2, $sub); etype = new Subscript($begin, null, s, $expr::ctype); } ; Modified: branches/nowalker/src/org/python/antlr/GrammarActions.java =================================================================== --- branches/nowalker/src/org/python/antlr/GrammarActions.java 2008-08-26 12:21:42 UTC (rev 5249) +++ branches/nowalker/src/org/python/antlr/GrammarActions.java 2008-08-26 15:05:19 UTC (rev 5250) @@ -706,4 +706,42 @@ } return current; } + + sliceType makeSliceType(Token begin, Token c1, Token c2, List sltypes) { + boolean isTuple = false; + if (c1 != null || c2 != null) { + isTuple = true; + } + sliceType s = null; + boolean extslice = false; + + if (isTuple) { + sliceType[] st; + List etypes = new ArrayList(); + for (Object o : sltypes) { + if (o instanceof Index) { + Index i = (Index)o; + etypes.add(i.value); + } else { + extslice = true; + break; + } + } + if (!extslice) { + exprType[] es = (exprType[])etypes.toArray(new exprType[etypes.size()]); + exprType t = new Tuple(begin, es, expr_contextType.Load); + s = new Index(begin, t); + } + } else if (sltypes.size() == 1) { + s = (sliceType)sltypes.get(0); + } else if (sltypes.size() != 0) { + extslice = true; + } + if (extslice) { + sliceType[] st = (sliceType[])sltypes.toArray(new sliceType[sltypes.size()]); + s = new ExtSlice(begin, st); + } + return s; + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |