From: <fwi...@us...> - 2008-11-17 21:48:55
|
Revision: 5586 http://jython.svn.sourceforge.net/jython/?rev=5586&view=rev Author: fwierzbicki Date: 2008-11-17 21:48:50 +0000 (Mon, 17 Nov 2008) Log Message: ----------- First pass at converting all arrays in ast/* to Lists. Checking in without running asdl_antlr.py for clarity of changes. Modified Paths: -------------- branches/astwrite/ast/asdl_antlr.py branches/astwrite/grammar/Python.g branches/astwrite/src/org/python/antlr/GrammarActions.java branches/astwrite/src/org/python/compiler/ArgListCompiler.java branches/astwrite/src/org/python/compiler/CodeCompiler.java branches/astwrite/src/org/python/compiler/Future.java branches/astwrite/src/org/python/compiler/Module.java branches/astwrite/src/org/python/compiler/ProxyMaker.java branches/astwrite/src/org/python/compiler/ScopesCompiler.java Modified: branches/astwrite/ast/asdl_antlr.py =================================================================== --- branches/astwrite/ast/asdl_antlr.py 2008-11-17 21:20:25 UTC (rev 5585) +++ branches/astwrite/ast/asdl_antlr.py 2008-11-17 21:48:50 UTC (rev 5586) @@ -292,16 +292,16 @@ for f in fields: self.emit("this.%s = %s;" % (f.name, f.name), depth+1) fparg = self.fieldDef(f) - #if field.typedef and field.typedef.simple: + not_simple = True if f.typedef is not None and f.typedef.simple: not_simple = False #For now ignoring String -- will want to revisit - if not_simple and not fparg.startswith("String"): + if not_simple and fparg.find("String") == -1: if f.seq: self.emit("if (%s != null) {" % f.name, depth+1); - self.emit("for(int i%(name)s=0;i%(name)s<%(name)s.length;i%(name)s++) {" % {"name":f.name}, depth+2) - self.emit("addChild(%s[i%s]);" % (f.name, f.name), depth+3) + self.emit("for(PythonTree t : %(name)s) {" % {"name":f.name}, depth+2) + self.emit("addChild(t);", depth+3) self.emit("}", depth+2) self.emit("}", depth+1) elif str(f.type) == "expr": @@ -386,10 +386,10 @@ continue if f.seq: self.emit('if (%s != null) {' % f.name, depth+1) - self.emit('for (int i = 0; i < %s.length; i++) {' % f.name, + self.emit('for (PythonTree t : %s) {' % f.name, depth+2) - self.emit('if (%s[i] != null)' % f.name, depth+3) - self.emit('%s[i].accept(visitor);' % f.name, depth+4) + self.emit('if (t != null)', depth+3) + self.emit('t.accept(visitor);', depth+4) self.emit('}', depth+2) self.emit('}', depth+1) else: @@ -415,8 +415,9 @@ jtype = str(field.type) jtype = self.bltinnames.get(jtype, jtype + 'Type') name = field.name - seq = field.seq and "[]" or "" - return "%(jtype)s%(seq)s %(name)s" % locals() + if field.seq: + return "java.util.List<%(jtype)s> %(name)s" % locals() + return "%(jtype)s %(name)s" % locals() class VisitorVisitor(EmitVisitor): def __init__(self, dir): Modified: branches/astwrite/grammar/Python.g =================================================================== --- branches/astwrite/grammar/Python.g 2008-11-17 21:20:25 UTC (rev 5585) +++ branches/astwrite/grammar/Python.g 2008-11-17 21:48:50 UTC (rev 5586) @@ -277,7 +277,7 @@ $single_input.tree = mtype; } : NEWLINE* EOF { - mtype = new Interactive($single_input.start, new stmtType[0]); + mtype = new Interactive($single_input.start, new ArrayList<stmtType>()); } | simple_stmt NEWLINE* EOF { mtype = new Interactive($single_input.start, actions.castStmts($simple_stmt.stypes)); @@ -424,7 +424,7 @@ parameters returns [argumentsType args] : LPAREN (varargslist {$args = $varargslist.args;} - | { $args = new argumentsType($parameters.start, new exprType[0], null, null, new exprType[0]); + | { $args = new argumentsType($parameters.start, new ArrayList<exprType>(), null, null, new ArrayList<exprType>()); } ) RPAREN @@ -597,7 +597,7 @@ | RIGHTSHIFT t2=printlist2 -> ^(PRINT<Print>[$PRINT, actions.castExpr($t2.elts.get(0)), actions.castExprs($t2.elts, 1), $t2.newline]) | - -> ^(PRINT<Print>[$PRINT, null, new exprType[0\], false]) + -> ^(PRINT<Print>[$PRINT, null, new ArrayList<exprType>(), false]) ) ; @@ -730,10 +730,10 @@ ; //import_as_names: import_as_name (',' import_as_name)* [','] -import_as_names returns [aliasType[\] atypes] +import_as_names returns [List<aliasType> atypes] : n+=import_as_name (COMMA! n+=import_as_name)* { - $atypes = (aliasType[])$n.toArray(new aliasType[$n.size()]); + $atypes = $n; } ; @@ -762,10 +762,10 @@ ; //dotted_as_names: dotted_as_name (',' dotted_as_name)* -dotted_as_names returns [aliasType[\] atypes] +dotted_as_names returns [List<aliasType> atypes] : d+=dotted_as_name (COMMA! d+=dotted_as_name)* { - $atypes = (aliasType[])$d.toArray(new aliasType[$d.size()]); + $atypes = $d; } ; @@ -828,7 +828,7 @@ (e2=elif_clause[$iftest] -> ^(ELIF<If>[$iftest, actions.castExpr($test.tree), actions.castStmts($suite.stypes), actions.makeElse($e2.stypes, $e2.tree)]) | - -> ^(ELIF<If>[$iftest, actions.castExpr($test.tree), actions.castStmts($suite.stypes), new stmtType[0\]]) + -> ^(ELIF<If>[$iftest, actions.castExpr($test.tree), actions.castStmts($suite.stypes), new ArrayList<stmtType>()]) ) ; @@ -1223,14 +1223,14 @@ | testlist_gexp -> testlist_gexp | - -> ^(LPAREN<Tuple>[$LPAREN, new exprType[0\], $expr::ctype]) + -> ^(LPAREN<Tuple>[$LPAREN, new ArrayList<exprType>(), $expr::ctype]) ) RPAREN | LBRACK (listmaker[$LBRACK] -> listmaker | - -> ^(LBRACK<org.python.antlr.ast.List>[$LBRACK, new exprType[0\], $expr::ctype]) + -> ^(LBRACK<org.python.antlr.ast.List>[$LBRACK, new ArrayList<exprType>(), $expr::ctype]) ) RBRACK | LCURLY @@ -1238,7 +1238,7 @@ -> ^(LCURLY<Dict>[$LCURLY, actions.castExprs($dictmaker.keys), actions.castExprs($dictmaker.values)]) | - -> ^(LCURLY<Dict>[$LCURLY, new exprType[0\], new exprType[0\]]) + -> ^(LCURLY<Dict>[$LCURLY, new ArrayList<exprType>(), new ArrayList<exprType>()]) ) RCURLY | lb=BACKQUOTE testlist[expr_contextType.Load] rb=BACKQUOTE @@ -1270,8 +1270,7 @@ (list_for[gens] { Collections.reverse(gens); - comprehensionType[] c = - (comprehensionType[])gens.toArray(new comprehensionType[gens.size()]); + List<comprehensionType> c = gens; etype = new ListComp($listmaker.start, actions.castExpr($t.get(0)), c); } | (options {greedy=true;}:COMMA t+=test[$expr::ctype])* @@ -1301,7 +1300,7 @@ | (gen_for[gens] { Collections.reverse(gens); - comprehensionType[] c = (comprehensionType[])gens.toArray(new comprehensionType[gens.size()]); + List<comprehensionType> c = gens; exprType e = actions.castExpr($t.get(0)); if (e instanceof Context) { ((Context)e).setContext(expr_contextType.Load); @@ -1324,7 +1323,7 @@ { argumentsType a = $varargslist.args; if (a == null) { - a = new argumentsType($LAMBDA, new exprType[0], null, null, new exprType[0]); + a = new argumentsType($LAMBDA, new ArrayList<exprType>(), null, null, new ArrayList<exprType>()); } etype = new Lambda($LAMBDA, a, actions.castExpr($test.tree)); } @@ -1337,7 +1336,7 @@ -> ^(LPAREN<Call>[$begin, actions.castExpr($tree), actions.castExprs($arglist.args), actions.makeKeywords($arglist.keywords), $arglist.starargs, $arglist.kwargs]) | - -> ^(LPAREN<Call>[$begin, actions.castExpr($tree), new exprType[0\], new keywordType[0\], null, null]) + -> ^(LPAREN<Call>[$begin, actions.castExpr($tree), new ArrayList<exprType>(), new ArrayList<keywordType>(), null, null]) ) RPAREN | LBRACK subscriptlist[$begin] RBRACK @@ -1405,7 +1404,7 @@ //not in CPython's Grammar file //Needed as an exprlist that does not produce tuples for del_stmt. -del_list returns [exprType[\] etypes] +del_list returns [List<exprType> etypes] : e+=expr[expr_contextType.Del] (options {k=2;}: COMMA e+=expr[expr_contextType.Del])* (COMMA)? { $etypes = actions.makeDeleteList($e); @@ -1490,7 +1489,10 @@ : t1=test[expr_contextType.Load] ((ASSIGN t2=test[expr_contextType.Load]) { - $kws.add(new exprType[]{actions.castExpr($t1.tree), actions.castExpr($t2.tree)}); + List<exprType> exprs = new ArrayList<exprType>(); + exprs.add(actions.castExpr($t1.tree)); + exprs.add(actions.castExpr($t2.tree)); + $kws.add(exprs); } | gen_for[$gens] { @@ -1499,7 +1501,7 @@ } $genarg = true; Collections.reverse($gens); - comprehensionType[] c = (comprehensionType[])$gens.toArray(new comprehensionType[$gens.size()]); + List<comprehensionType> c = $gens; arguments.add(new GeneratorExp($t1.start, actions.castExpr($t1.tree), c)); } | { @@ -1523,11 +1525,9 @@ list_for [List gens] : FOR exprlist[expr_contextType.Store] IN testlist[expr_contextType.Load] (list_iter[gens])? { - exprType[] e; + List<exprType> e = new ArrayList<exprType>(); if ($list_iter.etype != null) { - e = new exprType[]{$list_iter.etype}; - } else { - e = new exprType[0]; + e.add($list_iter.etype); } gens.add(new comprehensionType($FOR, $exprlist.etype, actions.castExpr($testlist.tree), e)); } @@ -1554,11 +1554,9 @@ gen_for [List gens] : FOR exprlist[expr_contextType.Store] IN or_test[expr_contextType.Load] gen_iter[gens]? { - exprType[] e; + List<exprType> e = new ArrayList<exprType>(); if ($gen_iter.etype != null) { - e = new exprType[]{$gen_iter.etype}; - } else { - e = new exprType[0]; + e.add($gen_iter.etype); } gens.add(new comprehensionType($FOR, $exprlist.etype, actions.castExpr($or_test.tree), e)); } Modified: branches/astwrite/src/org/python/antlr/GrammarActions.java =================================================================== --- branches/astwrite/src/org/python/antlr/GrammarActions.java 2008-11-17 21:20:25 UTC (rev 5585) +++ branches/astwrite/src/org/python/antlr/GrammarActions.java 2008-11-17 21:48:50 UTC (rev 5586) @@ -118,33 +118,36 @@ return lev.size(); } - aliasType[] makeStarAlias(Token t) { - return new aliasType[]{new aliasType(t, "*", null)}; + List<aliasType> makeStarAlias(Token t) { + List<aliasType> result = new ArrayList<aliasType>(); + result.add(new aliasType(t, "*", null)); + return result; } - aliasType[] makeAliases(aliasType[] atypes) { + List<aliasType> makeAliases(List<aliasType> atypes) { if (atypes == null) { - return new aliasType[0]; + return new ArrayList<aliasType>(); } return atypes; } - exprType[] makeBases(exprType etype) { + List<exprType> makeBases(exprType etype) { + List<exprType> result = new ArrayList<exprType>(); if (etype != null) { if (etype instanceof Tuple) { return ((Tuple)etype).elts; } - return new exprType[]{etype}; + result.add(etype); } - return new exprType[0]; + return result; } - String[] makeNames(List names) { + List<String> makeNames(List names) { List<String> s = new ArrayList<String>(); for(int i=0;i<names.size();i++) { s.add(((Token)names.get(i)).getText()); } - return s.toArray(new String[s.size()]); + return s; } void errorGenExpNotSoleArg(PythonTree t) { @@ -162,13 +165,13 @@ } - exprType[] castExprs(List exprs) { + List<exprType> castExprs(List exprs) { return castExprs(exprs, 0); } - exprType[] castExprs(List exprs, int start) { + List<exprType> castExprs(List exprs, int start) { + List<exprType> result = new ArrayList<exprType>(); if (exprs != null) { - List<exprType> result = new ArrayList<exprType>(); for (int i=start; i<exprs.size(); i++) { Object o = exprs.get(i); if (o instanceof exprType) { @@ -177,18 +180,19 @@ result.add((exprType)((PythonParser.test_return)o).tree); } } - return result.toArray(new exprType[result.size()]); } - return new exprType[0]; + return result; } - stmtType[] makeElse(List elseSuite, PythonTree elif) { + List<stmtType> makeElse(List elseSuite, PythonTree elif) { if (elseSuite != null) { return castStmts(elseSuite); } else if (elif == null) { - return new stmtType[0]; + return new ArrayList<stmtType>(); } - return new stmtType[]{(stmtType)elif}; + List <stmtType> s = new ArrayList<stmtType>(); + s.add((stmtType)elif); + return s; } stmtType castStmt(Object o) { @@ -202,19 +206,22 @@ return null; } - stmtType[] castStmts(PythonTree t) { - return new stmtType[]{(stmtType)t}; + List<stmtType> castStmts(PythonTree t) { + stmtType s = (stmtType)t; + List<stmtType> stmts = new ArrayList<stmtType>(); + stmts.add(s); + return stmts; } - stmtType[] castStmts(List stmts) { + List<stmtType> castStmts(List stmts) { if (stmts != null) { List<stmtType> result = new ArrayList<stmtType>(); for (Object o:stmts) { result.add(castStmt(o)); } - return (stmtType[])result.toArray(new stmtType[result.size()]); + return result; } - return new stmtType[0]; + return new ArrayList<stmtType>(); } exprType makeDottedAttr(Token nameToken, List attrs) { @@ -231,8 +238,8 @@ if (test == null) { return errorHandler.errorStmt(new PythonTree(t)); } - stmtType[] o = castStmts(orelse); - stmtType[] b = castStmts(body); + List<stmtType> o = castStmts(orelse); + List<stmtType> b = castStmts(body); return new While(t, test, b, o); } @@ -242,27 +249,28 @@ } cantBeNone(target); - stmtType[] o = castStmts(orelse); - stmtType[] b = castStmts(body); + List<stmtType> o = castStmts(orelse); + List<stmtType> b = castStmts(body); return new For(t, target, iter, b, o); } stmtType makeTryExcept(Token t, List body, List handlers, List orelse, List finBody) { - stmtType[] b = castStmts(body); - excepthandlerType[] e = (excepthandlerType[])handlers.toArray(new excepthandlerType[handlers.size()]); - stmtType[] o = castStmts(orelse); + List<stmtType> b = castStmts(body); + List<excepthandlerType> e = handlers; + List<stmtType> o = castStmts(orelse); stmtType te = new TryExcept(t, b, e, o); if (finBody == null) { return te; } - stmtType[] f = castStmts(finBody); - stmtType[] mainBody = new stmtType[]{te}; + List<stmtType> f = castStmts(finBody); + List<stmtType> mainBody = new ArrayList<stmtType>(); + mainBody.add(te); return new TryFinally(t, mainBody, f); } TryFinally makeTryFinally(Token t, List body, List finBody) { - stmtType[] b = castStmts(body); - stmtType[] f = castStmts(finBody); + List<stmtType> b = castStmts(body); + List<stmtType> f = castStmts(finBody); return new TryFinally(t, b, f); } @@ -275,21 +283,21 @@ if (args != null) { a = args; } else { - a = new argumentsType(t, new exprType[0], null, null, new exprType[0]); + a = new argumentsType(t, new ArrayList<exprType>(), null, null, new ArrayList<exprType>()); } - stmtType[] s = castStmts(funcStatements); - exprType[] d = castExprs(decorators); + List<stmtType> s = castStmts(funcStatements); + List<exprType> d = castExprs(decorators); return new FunctionDef(t, nameToken.getText(), a, s, d); } - exprType[] makeAssignTargets(exprType lhs, List rhs) { - exprType[] e = new exprType[rhs.size()]; + List<exprType> makeAssignTargets(exprType lhs, List rhs) { + List<exprType> e = new ArrayList<exprType>(); checkAssign(lhs); - e[0] = lhs; + e.add(lhs); for(int i=0;i<rhs.size() - 1;i++) { exprType r = castExpr(rhs.get(i)); checkAssign(r); - e[i + 1] = r; + e.add(r); } return e; } @@ -320,8 +328,8 @@ argumentsType makeArgumentsType(Token t, List params, Token snameToken, Token knameToken, List defaults) { - exprType[] p = castExprs(params); - exprType[] d = castExprs(defaults); + List<exprType> p = castExprs(params); + List<exprType> d = castExprs(defaults); String s; String k; if (snameToken == null) { @@ -337,26 +345,25 @@ return new argumentsType(t, p, s, k, d); } - exprType[] extractArgs(List args) { + List<exprType> extractArgs(List args) { return castExprs(args); } - keywordType[] makeKeywords(List args) { + List<keywordType> makeKeywords(List args) { List<keywordType> k = new ArrayList<keywordType>(); if (args != null) { for(int i=0;i<args.size();i++) { - exprType[] e = (exprType[])args.get(i); - checkAssign(e[0]); - if (e[0] instanceof Name) { - Name arg = (Name)e[0]; - k.add(new keywordType(arg, arg.id, e[1])); + List e = (List)args.get(i); + checkAssign(castExpr(e.get(0))); + if (e.get(0) instanceof Name) { + Name arg = (Name)e.get(0); + k.add(new keywordType(arg, arg.id, castExpr(e.get(1)))); } else { - errorHandler.error("keyword must be a name", e[0]); + errorHandler.error("keyword must be a name", (PythonTree)e.get(0)); } } - return k.toArray(new keywordType[k.size()]); } - return new keywordType[0]; + return k; } Object makeFloat(Token t) { @@ -488,7 +495,7 @@ //FROM Walker: modType makeMod(PythonTree t, List stmts) { - stmtType[] s = castStmts(stmts); + List<stmtType> s = castStmts(stmts); return new Module(t, s); } @@ -497,7 +504,7 @@ } modType makeInteractive(PythonTree t, List stmts) { - stmtType[] s = castStmts(stmts); + List<stmtType> s = castStmts(stmts); return new Interactive(t, s); } @@ -506,29 +513,30 @@ return errorHandler.errorStmt(t); } cantBeNone(nameToken); - exprType[] b = castExprs(bases); - stmtType[] s = castStmts(body); - exprType[] d = castExprs(decorators); + List<exprType> b = castExprs(bases); + List<stmtType> s = castStmts(body); + List<exprType> d = castExprs(decorators); return new ClassDef(t, nameToken.getText(), b, s, d); } stmtType makeTryExcept(PythonTree t, List body, List handlers, List orelse, List finBody) { - stmtType[] b = castStmts(body); - excepthandlerType[] e = (excepthandlerType[])handlers.toArray(new excepthandlerType[handlers.size()]); - stmtType[] o = castStmts(orelse); + List<stmtType> b = castStmts(body); + List<excepthandlerType> e = handlers; + List<stmtType> o = castStmts(orelse); stmtType te = new TryExcept(t, b, e, o); if (finBody == null) { return te; } - stmtType[] f = castStmts(finBody); - stmtType[] mainBody = new stmtType[]{te}; + List<stmtType> f = castStmts(finBody); + List<stmtType> mainBody = new ArrayList<stmtType>(); + mainBody.add(te); return new TryFinally(t, mainBody, f); } TryFinally makeTryFinally(PythonTree t, List body, List finBody) { - stmtType[] b = castStmts(body); - stmtType[] f = castStmts(finBody); + List<stmtType> b = castStmts(body); + List<stmtType> f = castStmts(finBody); return new TryFinally(t, b, f); } @@ -536,8 +544,8 @@ if (test == null) { return errorHandler.errorStmt(t); } - stmtType[] o = castStmts(orelse); - stmtType[] b = castStmts(body); + List<stmtType> o = castStmts(orelse); + List<stmtType> b = castStmts(body); return new If(t, test, b, o); } @@ -545,8 +553,8 @@ if (test == null) { return errorHandler.errorStmt(t); } - stmtType[] o = castStmts(orelse); - stmtType[] b = castStmts(body); + List<stmtType> o = castStmts(orelse); + List<stmtType> b = castStmts(body); return new While(t, test, b, o); } @@ -555,8 +563,8 @@ return errorHandler.errorStmt(t); } cantBeNone(target); - stmtType[] o = castStmts(orelse); - stmtType[] b = castStmts(body); + List<stmtType> o = castStmts(orelse); + List<stmtType> b = castStmts(body); return new For(t, target, iter, b, o); } @@ -568,8 +576,8 @@ if (func == null) { return errorHandler.errorExpr(new PythonTree(t)); } - keywordType[] k = makeKeywords(keywords); - exprType[] a = castExprs(args); + List<keywordType> k = makeKeywords(keywords); + List<exprType> a = castExprs(args); return new Call(t, func, a, k, starargs, kwargs); } @@ -645,27 +653,27 @@ errorHandler.error("can't assign to conditional expression", e); } else if (e instanceof Tuple) { //XXX: performance problem? Any way to do this better? - exprType[] elts = ((Tuple)e).elts; - if (elts.length == 0) { + List<exprType> elts = ((Tuple)e).elts; + if (elts.size() == 0) { errorHandler.error("can't assign to ()", e); } - for (int i=0;i<elts.length;i++) { - checkAssign(elts[i]); + for (int i=0;i<elts.size();i++) { + checkAssign(elts.get(i)); } } else if (e instanceof org.python.antlr.ast.List) { //XXX: performance problem? Any way to do this better? - exprType[] elts = ((org.python.antlr.ast.List)e).elts; - for (int i=0;i<elts.length;i++) { - checkAssign(elts[i]); + List<exprType> elts = ((org.python.antlr.ast.List)e).elts; + for (int i=0;i<elts.size();i++) { + checkAssign(elts.get(i)); } } } - exprType[] makeDeleteList(List e) { - exprType[] exprs = castExprs(e); - for(int i=0;i<exprs.length;i++) { - if (exprs[i] instanceof Call) { - errorHandler.error("can't delete function call", exprs[i]); + List<exprType> makeDeleteList(List e) { + List<exprType> exprs = castExprs(e); + for(exprType expr : exprs) { + if (expr instanceof Call) { + errorHandler.error("can't delete function call", expr); } } return exprs; @@ -706,15 +714,14 @@ } } - cmpopType[] makeCmpOps(List cmps) { + List<cmpopType> makeCmpOps(List cmps) { + List<cmpopType> result = new ArrayList<cmpopType>(); if (cmps != null) { - List<cmpopType> result = new ArrayList<cmpopType>(); for (Object o: cmps) { result.add((cmpopType)o); } - return result.toArray(new cmpopType[result.size()]); } - return new cmpopType[0]; + return result; } BoolOp makeBoolOp(PythonTree left, boolopType op, List right) { @@ -743,15 +750,14 @@ return current; } - sliceType[] castSlices(List slices) { + List<sliceType> castSlices(List slices) { + List<sliceType> result = new ArrayList<sliceType>(); if (slices != null) { - List<sliceType> result = new ArrayList<sliceType>(); for (Object o:slices) { result.add(castSlice(o)); } - return (sliceType[])result.toArray(new sliceType[result.size()]); } - return new sliceType[0]; + return result; } sliceType castSlice(Object o) { @@ -770,7 +776,7 @@ boolean extslice = false; if (isTuple) { - sliceType[] st; + List<sliceType> st; List etypes = new ArrayList(); for (Object o : sltypes) { if (o instanceof Index) { @@ -782,7 +788,7 @@ } } if (!extslice) { - exprType[] es = (exprType[])etypes.toArray(new exprType[etypes.size()]); + List<exprType> es = etypes; exprType t = new Tuple(begin, es, expr_contextType.Load); s = new Index(begin, t); } @@ -792,7 +798,7 @@ extslice = true; } if (extslice) { - sliceType[] st = castSlices(sltypes);//.toArray(new sliceType[sltypes.size()]); + List<sliceType> st = castSlices(sltypes);//.toArray(new sliceType[sltypes.size()]); s = new ExtSlice(begin, st); } return s; Modified: branches/astwrite/src/org/python/compiler/ArgListCompiler.java =================================================================== --- branches/astwrite/src/org/python/compiler/ArgListCompiler.java 2008-11-17 21:20:25 UTC (rev 5585) +++ branches/astwrite/src/org/python/compiler/ArgListCompiler.java 2008-11-17 21:48:50 UTC (rev 5586) @@ -2,7 +2,8 @@ package org.python.compiler; -import java.util.Vector; +import java.util.ArrayList; +import java.util.List; import org.python.antlr.ParseException; import org.python.antlr.Visitor; @@ -18,64 +19,66 @@ public class ArgListCompiler extends Visitor { public boolean arglist, keywordlist; - public exprType[] defaults; - public Vector names; - public Vector fpnames; - public Vector init_code; + public List<exprType> defaults; + public List<String> names; + public List<String> fpnames; + public List<stmtType> init_code; public ArgListCompiler() { arglist = keywordlist = false; defaults = null; - names = new Vector(); - fpnames = new Vector(); - init_code = new Vector(); + names = new ArrayList<String>(); + fpnames = new ArrayList<String>(); + init_code = new ArrayList<stmtType>(); } public void reset() { arglist = keywordlist = false; defaults = null; - names.removeAllElements(); - init_code.removeAllElements(); + names.clear(); + init_code.clear(); } public void appendInitCode(Suite node) { - int n = node.body.length; - stmtType[] newtree = new stmtType[init_code.size() + n]; - init_code.copyInto(newtree); - System.arraycopy(node.body, 0, newtree, init_code.size(), n); + int n = node.body.size(); + List<stmtType> newtree = new ArrayList<stmtType>(); + newtree.addAll(init_code); + newtree.addAll(node.body); node.body = newtree; } - public exprType[] getDefaults() { + public List<exprType> getDefaults() { return defaults; } public void visitArgs(argumentsType args) throws Exception { - for (int i = 0; i < args.args.length; i++) { - String name = (String) visit(args.args[i]); - names.addElement(name); - if (args.args[i] instanceof Tuple) { - Assign ass = new Assign(args.args[i], - new exprType[] { args.args[i] }, - new Name(args.args[i], name, expr_contextType.Load)); - init_code.addElement(ass); + for (int i = 0; i < args.args.size(); i++) { + String name = (String) visit(args.args.get(i)); + names.add(name); + if (args.args.get(i) instanceof Tuple) { + List<exprType> targets = new ArrayList<exprType>(); + targets.add(args.args.get(i)); + Assign ass = new Assign(args.args.get(i), + targets, + new Name(args.args.get(i), name, expr_contextType.Load)); + init_code.add(ass); } } if (args.vararg != null) { arglist = true; - names.addElement(args.vararg); + names.add(args.vararg); } if (args.kwarg != null) { keywordlist = true; - names.addElement(args.kwarg); + names.add(args.kwarg); } defaults = args.defaults; - for (int i = 0; i < defaults.length; i++) { - if (defaults[i] == null) + for (int i = 0; i < defaults.size(); i++) { + if (defaults.get(i) == null) throw new ParseException( "non-default argument follows default argument", - args.args[args.args.length - defaults.length + i]); + args.args.get(args.args.size() - defaults.size() + i)); } } @@ -90,19 +93,19 @@ throw new ParseException("duplicate argument name found: " + node.id, node); } - fpnames.addElement(node.id); + fpnames.add(node.id); return node.id; } @Override public Object visitTuple(Tuple node) throws Exception { StringBuffer name = new StringBuffer("("); - int n = node.elts.length; + int n = node.elts.size(); for (int i = 0; i < n-1; i++) { - name.append(visit(node.elts[i])); + name.append(visit(node.elts.get(i))); name.append(", "); } - name.append(visit(node.elts[n - 1])); + name.append(visit(node.elts.get(n - 1))); name.append(")"); return name.toString(); } Modified: branches/astwrite/src/org/python/compiler/CodeCompiler.java =================================================================== --- branches/astwrite/src/org/python/compiler/CodeCompiler.java 2008-11-17 21:20:25 UTC (rev 5585) +++ branches/astwrite/src/org/python/compiler/CodeCompiler.java 2008-11-17 21:48:50 UTC (rev 5586) @@ -4,6 +4,8 @@ import java.io.IOException; import java.util.Hashtable; +import java.util.ArrayList; +import java.util.Collection; import java.util.Map; import java.util.Stack; import java.util.Vector; @@ -60,6 +62,7 @@ import org.python.antlr.ast.While; import org.python.antlr.ast.With; import org.python.antlr.ast.Yield; +import org.python.antlr.ast.aliasType; import org.python.antlr.ast.cmpopType; import org.python.antlr.ast.comprehensionType; import org.python.antlr.ast.excepthandlerType; @@ -294,13 +297,13 @@ public Object visitModule(org.python.antlr.ast.Module suite) throws Exception { - if (suite.body.length > 0 && - suite.body[0] instanceof Expr && - ((Expr)suite.body[0]).value instanceof Str) + if (suite.body.size() > 0 && + suite.body.get(0) instanceof Expr && + ((Expr)suite.body.get(0)).value instanceof Str) { loadFrame(); code.ldc("__doc__"); - visit(((Expr) suite.body[0]).value); + visit(((Expr) suite.body.get(0)).value); code.invokevirtual("org/python/core/PyFrame", "setglobal", "(" +$str + $pyObj + ")V"); } if (module.setFile) { @@ -322,13 +325,13 @@ return visitReturn(new Return(node, node.body), true); } - public int makeArray(PythonTree[] nodes) throws Exception { + public int makeArray(java.util.List<? extends PythonTree> nodes) throws Exception { int n; if (nodes == null) n = 0; else - n = nodes.length; + n = nodes.size(); int array = code.getLocal("[Lorg/python/core/PyObject;"); if (n == 0) { @@ -340,7 +343,7 @@ code.astore(array); for(int i=0; i<n; i++) { - visit(nodes[i]); + visit(nodes.get(i)); code.aload(array); code.swap(); code.iconst(i); @@ -351,11 +354,11 @@ return array; } - public void getDocString(stmtType[] suite) throws Exception { - if (suite.length > 0 && suite[0] instanceof Expr && - ((Expr) suite[0]).value instanceof Str) + public void getDocString(java.util.List<stmtType> suite) throws Exception { + if (suite.size() > 0 && suite.get(0) instanceof Expr && + ((Expr) suite.get(0)).value instanceof Str) { - visit(((Expr) suite[0]).value); + visit(((Expr) suite.get(0)).value); } else { code.aconst_null(); } @@ -426,11 +429,13 @@ return null; } - private void doDecorators(stmtType node, exprType[] decs, String name) throws Exception { - if (decs.length > 0) { + private void doDecorators(stmtType node, java.util.List<exprType> decs, String name) throws Exception { + if (decs.size() > 0) { exprType currentExpr = new Name(node, name, expr_contextType.Load); - for (int i=decs.length - 1;i > -1;i--) { - currentExpr = new Call(node, decs[i], new exprType[]{currentExpr}, new keywordType[0], null, null); + for (int i=decs.size() - 1;i > -1;i--) { + java.util.List args = new ArrayList(); + args.add(currentExpr); + currentExpr = new Call(node, decs.get(i), args, new ArrayList<keywordType>(), null, null); } visit(currentExpr); set(new Name(node, name, expr_contextType.Store)); @@ -454,8 +459,8 @@ public Object visitAssign(Assign node) throws Exception { setline(node); visit(node.value); - if (node.targets.length == 1) { - set(node.targets[0]); + if (node.targets.size() == 1) { + set(node.targets.get(0)); } else { int tmp = storeTop(); for (exprType target : node.targets) { @@ -475,7 +480,7 @@ visit(node.dest); tmp = storeTop(); } - if (node.values == null || node.values.length == 0) { + if (node.values == null || node.values.size() == 0) { if (node.dest != null) { code.aload(tmp); code.invokestatic("org/python/core/Py", "printlnv", "(" + $pyObj + ")V"); @@ -483,18 +488,18 @@ code.invokestatic("org/python/core/Py", "println", "()V"); } } else { - for (int i = 0; i < node.values.length; i++) { + for (int i = 0; i < node.values.size(); i++) { if (node.dest != null) { code.aload(tmp); - visit(node.values[i]); - if (node.nl && i == node.values.length - 1) { + visit(node.values.get(i)); + if (node.nl && i == node.values.size() - 1) { code.invokestatic("org/python/core/Py", "println", "(" + $pyObj + $pyObj + ")V"); } else { code.invokestatic("org/python/core/Py", "printComma", "(" + $pyObj + $pyObj + ")V"); } } else { - visit(node.values[i]); - if (node.nl && i == node.values.length - 1) { + visit(node.values.get(i)); + if (node.nl && i == node.values.size() - 1) { code.invokestatic("org/python/core/Py", "println", "(" + $pyObj + ")V"); } else { code.invokestatic("org/python/core/Py", "printComma", "(" + $pyObj + ")V"); @@ -786,16 +791,16 @@ @Override public Object visitImport(Import node) throws Exception { setline(node); - for (int i = 0; i < node.names.length; i++) { + for (aliasType alias : node.names) { String asname = null; - if (node.names[i].asname != null) { - String name = node.names[i].name; - asname = node.names[i].asname; + if (alias.asname != null) { + String name = alias.name; + asname = alias.asname; code.ldc(name); loadFrame(); code.invokestatic("org/python/core/imp", "importOneAs", "(" + $str + $pyFrame + ")" + $pyObj); } else { - String name = node.names[i].name; + String name = alias.name; asname = name; if (asname.indexOf('.') > 0) asname = asname.substring(0, asname.indexOf('.')); @@ -803,7 +808,7 @@ loadFrame(); code.invokestatic("org/python/core/imp", "importOne", "(" + $str + $pyFrame + ")" + $pyObj); } - set(new Name(node.names[i], asname, expr_contextType.Store)); + set(new Name(alias, asname, expr_contextType.Store)); } return null; } @@ -814,8 +819,10 @@ Future.checkFromFuture(node); // future stmt support setline(node); code.ldc(node.module); - //Note: parser does not allow node.names.length == 0 - if (node.names.length == 1 && node.names[0].name.equals("*")) { + java.util.List<aliasType> names = node.names; + if (names == null || names.size() == 0) { + throw new ParseException("Internel parser error", node); + } else if (names.size() == 1 && names.get(0).name.equals("*")) { if (node.level > 0) { throw new ParseException("'import *' not allowed with 'from .'", node); } @@ -839,15 +846,15 @@ loadFrame(); code.invokestatic("org/python/core/imp", "importAll", "(" + $str + $pyFrame + ")V"); } else { - String[] fromNames = new String[node.names.length]; - String[] asnames = new String[node.names.length]; - for (int i = 0; i < node.names.length; i++) { - fromNames[i] = node.names[i].name; - asnames[i] = node.names[i].asname; - if (asnames[i] == null) - asnames[i] = fromNames[i]; + java.util.List<String> fromNames = new ArrayList<String>();//[names.size()]; + java.util.List<String> asnames = new ArrayList<String>();//[names.size()]; + for (int i = 0; i < names.size(); i++) { + fromNames.add(names.get(i).name); + asnames.add(names.get(i).asname); + if (asnames.get(i) == null) + asnames.set(i, fromNames.get(i)); } - int strArray = makeStrings(code, fromNames, fromNames.length); + int strArray = makeStrings(code, fromNames); code.aload(strArray); code.freeLocal(strArray); @@ -864,11 +871,11 @@ } code.invokestatic("org/python/core/imp", "importFrom", "(" + $str + $strArr + $pyFrame + "I" + ")" + $pyObjArr); int tmp = storeTop(); - for (int i = 0; i < node.names.length; i++) { + for (int i = 0; i < names.size(); i++) { code.aload(tmp); code.iconst(i); code.aaload(); - set(new Name(node.names[i], asnames[i], expr_contextType.Store)); + set(new Name(names.get(i), asnames.get(i), expr_contextType.Store)); } code.freeLocal(tmp); } @@ -1122,8 +1129,8 @@ TryExcept node, int index) throws Exception { - for (int i = 0; i < node.handlers.length; i++) { - excepthandlerType handler = node.handlers[i]; + for (int i = 0; i < node.handlers.size(); i++) { + excepthandlerType handler = node.handlers.get(i); //setline(name); Label end_of_self = new Label(); @@ -1135,7 +1142,7 @@ code.invokestatic("org/python/core/Py", "matchException", "(" + $pyExc + $pyObj + ")Z"); code.ifeq(end_of_self); } else { - if (i != node.handlers.length-1) { + if (i != node.handlers.size()-1) { throw new ParseException( "default 'except:' must be last", handler); } @@ -1312,10 +1319,9 @@ return suite(node.body); } - public Object suite(stmtType[] stmts) throws Exception { - int n = stmts.length; - for(int i = 0; i < n; i++) { - Object exit = visit(stmts[i]); + public Object suite(java.util.List<stmtType> stmts) throws Exception { + for(stmtType s: stmts) { + Object exit = visit(s); if (exit != null) return Exit; } @@ -1325,8 +1331,8 @@ @Override public Object visitBoolOp(BoolOp node) throws Exception { Label end = new Label(); - visit(node.values[0]); - for (int i = 1; i < node.values.length; i++) { + visit(node.values.get(0)); + for (int i = 1; i < node.values.size(); i++) { code.dup(); code.invokevirtual("org/python/core/PyObject", "__nonzero__", "()Z"); switch (node.op) { @@ -1338,7 +1344,7 @@ break; } code.pop(); - visit(node.values[i]); + visit(node.values.get(i)); } code.label(end); return null; @@ -1354,24 +1360,24 @@ visit(node.left); code.astore(last); - int n = node.ops.length; + int n = node.ops.size(); for(int i = 0; i < n - 1; i++) { - visit(node.comparators[i]); + visit(node.comparators.get(i)); code.aload(last); code.swap(); code.dup(); code.astore(last); - visitCmpop(node.ops[i]); + visitCmpop(node.ops.get(i)); code.dup(); code.astore(result); code.invokevirtual("org/python/core/PyObject", "__nonzero__", "()Z"); code.ifeq(end); } - visit(node.comparators[n-1]); + visit(node.comparators.get(n-1)); code.aload(last); code.swap(); - visitCmpop(node.ops[n-1]); + visitCmpop(node.ops.get(n-1)); if (n > 1) { code.astore(result); @@ -1488,23 +1494,32 @@ } - public static int makeStrings(Code c, String[] names, int n) + public static int makeStrings(Code c, Collection<String> names) throws IOException { - c.iconst(n); + int n = 0; + if (names != null) { + c.iconst(names.size()); + } else { + c.iconst_0(); + } c.anewarray("java/lang/String"); int strings = c.getLocal("[Ljava/lang/String;"); c.astore(strings); - for (int i=0; i<n; i++) { - c.aload(strings); - c.iconst(i); - c.ldc(names[i]); - c.aastore(); + if (names != null) { + int i = 0; + for (String name : names) { + c.aload(strings); + c.iconst(i); + c.ldc(name); + c.aastore(); + i++; + } } return strings; } - public Object invokeNoKeywords(Attribute node, PythonTree[] values) + public Object invokeNoKeywords(Attribute node, java.util.List<exprType> values) throws Exception { String name = getName(node.attr); @@ -1512,34 +1527,34 @@ code.ldc(name); code.invokevirtual("org/python/core/PyObject", "__getattr__", "(" + $str + ")" + $pyObj); - switch (values.length) { + switch (values.size()) { case 0: stackConsume(); // target code.invokevirtual("org/python/core/PyObject", "__call__", "()" + $pyObj); break; case 1: - visit(values[0]); + visit(values.get(0)); stackConsume(); // target code.invokevirtual("org/python/core/PyObject", "__call__", "(" + $pyObj + ")" + $pyObj); break; case 2: - visit(values[0]); stackProduce(); - visit(values[1]); + visit(values.get(0)); stackProduce(); + visit(values.get(1)); stackConsume(2); // target + arguments code.invokevirtual("org/python/core/PyObject", "__call__", "(" + $pyObj + $pyObj + ")" + $pyObj); break; case 3: - visit(values[0]); stackProduce(); - visit(values[1]); stackProduce(); - visit(values[2]); + visit(values.get(0)); stackProduce(); + visit(values.get(1)); stackProduce(); + visit(values.get(2)); stackConsume(3); // target + arguments code.invokevirtual("org/python/core/PyObject", "__call__", "(" + $pyObj + $pyObj + $pyObj + ")" + $pyObj); break; case 4: - visit(values[0]); stackProduce(); - visit(values[1]); stackProduce(); - visit(values[2]); stackProduce(); - visit(values[3]); + visit(values.get(0)); stackProduce(); + visit(values.get(1)); stackProduce(); + visit(values.get(2)); stackProduce(); + visit(values.get(3)); stackConsume(4); // target + arguments code.invokevirtual("org/python/core/PyObject", "__call__", "(" + $pyObj + $pyObj + $pyObj + $pyObj + ")" + $pyObj); break; @@ -1557,17 +1572,17 @@ @Override public Object visitCall(Call node) throws Exception { - String[] keys = new String[node.keywords.length]; - exprType[] values = new exprType[node.args.length + keys.length]; - for (int i = 0; i < node.args.length; i++) { - values[i] = node.args[i]; + java.util.List<String> keys = new ArrayList<String>();//[node.keywords.size()]; + java.util.List<exprType> values = new ArrayList<exprType>();//[node.args.size() + keys.size()]; + for (int i = 0; i < node.args.size(); i++) { + values.add(node.args.get(i)); } - for (int i = 0; i < node.keywords.length; i++) { - keys[i] = node.keywords[i].arg; - values[node.args.length + i] = node.keywords[i].value; + for (int i = 0; i < node.keywords.size(); i++) { + keys.add(node.keywords.get(i).arg); + values.add(node.keywords.get(i).value); } - if ((node.keywords == null || node.keywords.length == 0)&& node.starargs == null && + if ((node.keywords == null || node.keywords.size() == 0)&& node.starargs == null && node.kwargs == null && node.func instanceof Attribute) { return invokeNoKeywords((Attribute) node.func, values); @@ -1577,7 +1592,7 @@ if (node.starargs != null || node.kwargs != null) { int argArray = makeArray(values); - int strArray = makeStrings(code, keys, keys.length); + int strArray = makeStrings(code, keys); if (node.starargs == null) code.aconst_null(); else @@ -1599,9 +1614,9 @@ stackConsume(3); // target + starargs + kwargs code.invokevirtual("org/python/core/PyObject", "_callextra", "(" + $pyObjArr + $strArr + $pyObj + $pyObj + ")" + $pyObj); - } else if (keys.length > 0) { + } else if (keys.size() > 0) { int argArray = makeArray(values); - int strArray = makeStrings(code, keys, keys.length); + int strArray = makeStrings(code, keys); code.aload(argArray); code.aload(strArray); code.freeLocal(argArray); @@ -1609,34 +1624,34 @@ stackConsume(); // target code.invokevirtual("org/python/core/PyObject", "__call__", "(" + $pyObjArr + $strArr + ")" + $pyObj); } else { - switch (values.length) { + switch (values.size()) { case 0: stackConsume(); // target code.invokevirtual("org/python/core/PyObject", "__call__", "()" + $pyObj); break; case 1: - visit(values[0]); + visit(values.get(0)); stackConsume(); // target code.invokevirtual("org/python/core/PyObject", "__call__", "(" + $pyObj + ")" + $pyObj); break; case 2: - visit(values[0]); stackProduce(); - visit(values[1]); + visit(values.get(0)); stackProduce(); + visit(values.get(1)); stackConsume(2); // target + arguments code.invokevirtual("org/python/core/PyObject", "__call__", "(" + $pyObj + $pyObj + ")" + $pyObj); break; case 3: - visit(values[0]); stackProduce(); - visit(values[1]); stackProduce(); - visit(values[2]); + visit(values.get(0)); stackProduce(); + visit(values.get(1)); stackProduce(); + visit(values.get(2)); stackConsume(3); // target + arguments code.invokevirtual("org/python/core/PyObject", "__call__", "(" + $pyObj + $pyObj + $pyObj + ")" + $pyObj); break; case 4: - visit(values[0]); stackProduce(); - visit(values[1]); stackProduce(); - visit(values[2]); stackProduce(); - visit(values[3]); + visit(values.get(0)); stackProduce(); + visit(values.get(1)); stackProduce(); + visit(values.get(2)); stackProduce(); + visit(values.get(3)); stackConsume(4); // target + arguments code.invokevirtual("org/python/core/PyObject", "__call__", "(" + $pyObj + $pyObj + $pyObj + $pyObj + ")" + $pyObj); break; @@ -1789,28 +1804,28 @@ return null; } - public Object seqSet(exprType[] nodes) throws Exception { + public Object seqSet(java.util.List<exprType> nodes) throws Exception { code.aload(temporary); - code.iconst(nodes.length); + code.iconst(nodes.size()); code.invokestatic("org/python/core/Py", "unpackSequence", "(" + $pyObj + "I)" + $pyObjArr); int tmp = code.getLocal("[org/python/core/PyObject"); code.astore(tmp); - for (int i = 0; i < nodes.length; i++) { + for (int i = 0; i < nodes.size(); i++) { code.aload(tmp); code.iconst(i); code.aaload(); - set(nodes[i]); + set(nodes.get(i)); } code.freeLocal(tmp); return null; } - public Object seqDel(exprType[] nodes) throws Exception { - for (int i = 0; i < nodes.length; i++) { - visit(nodes[i]); + public Object seqDel(java.util.List<exprType> nodes) throws Exception { + for (exprType e: nodes) { + visit(e); } return null; } @@ -1866,29 +1881,37 @@ set(new Name(node, tmp_append, expr_contextType.Store)); + java.util.List<exprType> args = new ArrayList<exprType>(); + args.add(node.elt); stmtType n = new Expr(node, new Call(node, new Name(node, tmp_append, expr_contextType.Load), - new exprType[] { node.elt }, - new keywordType[0], null, null)); + args, + new ArrayList<keywordType>(), null, null)); - for (int i = node.generators.length - 1; i >= 0; i--) { - comprehensionType lc = node.generators[i]; - for (int j = lc.ifs.length - 1; j >= 0; j--) { - n = new If(lc.ifs[j], lc.ifs[j], new stmtType[] { n }, new stmtType[0]); + for (int i = node.generators.size() - 1; i >= 0; i--) { + comprehensionType lc = node.generators.get(i); + for (int j = lc.ifs.size() - 1; j >= 0; j--) { + java.util.List<stmtType> body = new ArrayList<stmtType>(); + body.add(n); + n = new If(lc.ifs.get(j), lc.ifs.get(j), body, new ArrayList<stmtType>()); } - n = new For(lc, lc.target, lc.iter, new stmtType[] { n }, new stmtType[0]); + java.util.List<stmtType> body = new ArrayList<stmtType>(); + body.add(n); + n = new For(lc, lc.target, lc.iter, body, new ArrayList<stmtType>()); } visit(n); - visit(new Delete(n, new exprType[] { new Name(n, tmp_append, expr_contextType.Del) })); + java.util.List<exprType> targets = new ArrayList<exprType>(); + targets.add(new Name(n, tmp_append, expr_contextType.Del)); + visit(new Delete(n, targets)); return null; } @Override public Object visitDict(Dict node) throws Exception { - PythonTree[] elts = new PythonTree[node.keys.length * 2]; - for (int i = 0; i < node.keys.length; i++) { - elts[i * 2] = node.keys[i]; - elts[i * 2 + 1] = node.values[i]; + java.util.List<PythonTree> elts = new ArrayList<PythonTree>(); + for (int i = 0; i < node.keys.size(); i++) { + elts.add(node.keys.get(i)); + elts.add(node.values.get(i)); } int content = makeArray(elts); @@ -1912,8 +1935,9 @@ String name = "<lambda>"; //Add a return node onto the outside of suite; - modType retSuite = new Suite(node, new stmtType[] { - new Return(node, node.body) }); + java.util.List<stmtType> bod = new ArrayList<stmtType>(); + bod.add(new Return(node, node.body)); + modType retSuite = new Suite(node, bod); setline(node); @@ -2172,7 +2196,7 @@ ScopeInfo scope = module.getScopeInfo(node); - int emptyArray = makeArray(new exprType[0]); + int emptyArray = makeArray(new ArrayList<exprType>()); code.aload(emptyArray); code.freeLocal(emptyArray); @@ -2182,20 +2206,26 @@ stmtType n = new Expr(node, new Yield(node, node.elt)); exprType iter = null; - for (int i = node.generators.length - 1; i >= 0; i--) { - comprehensionType comp = node.generators[i]; - for (int j = comp.ifs.length - 1; j >= 0; j--) { - n = new If(comp.ifs[j], comp.ifs[j], new stmtType[] { n }, new stmtType[0]); + for (int i = node.generators.size() - 1; i >= 0; i--) { + comprehensionType comp = node.generators.get(i); + for (int j = comp.ifs.size() - 1; j >= 0; j--) { + java.util.List<stmtType> bod = new ArrayList<stmtType>(); + bod.add(n); + n = new If(comp.ifs.get(j), comp.ifs.get(j), bod, new ArrayList<stmtType>()); } + java.util.List<stmtType> bod = new ArrayList<stmtType>(); + bod.add(n); if (i != 0) { - n = new For(comp, comp.target, comp.iter, new stmtType[] { n }, new stmtType[0]); + n = new For(comp, comp.target, comp.iter, bod, new ArrayList<stmtType>()); } else { - n = new For(comp, comp.target, new Name(node, bound_exp, expr_contextType.Load), new stmtType[] { n }, new stmtType[0]); + n = new For(comp, comp.target, new Name(node, bound_exp, expr_contextType.Load), bod, new ArrayList<stmtType>()); iter = comp.iter; } } - module.PyCode(new Suite(node, new stmtType[]{n}), tmp_append, true, + java.util.List<stmtType> bod = new ArrayList<stmtType>(); + bod.add(n); + module.PyCode(new Suite(node, bod), tmp_append, true, className, false, false, node.getLine(), scope, cflags).get(code); @@ -2214,7 +2244,9 @@ code.invokevirtual("org/python/core/PyObject", "__iter__", "()Lorg/python/core/PyObject;"); code.invokevirtual("org/python/core/PyObject", "__call__", "(" + $pyObj + ")" + $pyObj); - visit(new Delete(n, new exprType[] { new Name(n, tmp_append, expr_contextType.Del) })); + java.util.List<exprType> targets = new ArrayList<exprType>(); + targets.add(new Name(n, tmp_append, expr_contextType.Del)); + visit(new Delete(n, targets)); return null; } Modified: branches/astwrite/src/org/python/compiler/Future.java =================================================================== --- branches/astwrite/src/org/python/compiler/Future.java 2008-11-17 21:20:25 UTC (rev 5585) +++ branches/astwrite/src/org/python/compiler/Future.java 2008-11-17 21:48:50 UTC (rev 5586) @@ -2,10 +2,17 @@ package org.python.compiler; -import org.python.antlr.*; -import org.python.antlr.ast.*; +import org.python.antlr.ParseException; +import org.python.antlr.ast.ImportFrom; +import org.python.antlr.ast.Expr; +import org.python.antlr.ast.Interactive; import org.python.antlr.ast.Module; +import org.python.antlr.ast.Str; +import org.python.antlr.ast.modType; +import org.python.antlr.ast.stmtType; +import java.util.List; + public class Future { private boolean division = false; @@ -17,13 +24,13 @@ private boolean check(ImportFrom cand) throws Exception { if (!cand.module.equals(FUTURE)) return false; - int n = cand.names.length; + int n = cand.names.size(); if (n == 0) { throw new ParseException( "future statement does not support import *",cand); } for (int i = 0; i < n; i++) { - String feature = cand.names[i].name; + String feature = cand.names.get(i).name; // *known* features if (feature.equals("nested_scopes")) { continue; @@ -63,11 +70,11 @@ division = cflags.division; } int beg = 0; - stmtType[] suite = null; + List<stmtType> suite = null; if (node instanceof Module) { suite = ((Module) node).body; - if (suite.length > 0 && suite[0] instanceof Expr && - ((Expr) suite[0]).value instanceof Str) { + if (suite.size() > 0 && suite.get(0) instanceof Expr && + ((Expr) suite.get(0)).value instanceof Str) { beg++; } } else if (node instanceof Interactive) { @@ -76,8 +83,8 @@ return; } - for (int i = beg; i < suite.length; i++) { - ... [truncated message content] |
From: <fwi...@us...> - 2008-11-18 20:21:23
|
Revision: 5592 http://jython.svn.sourceforge.net/jython/?rev=5592&view=rev Author: fwierzbicki Date: 2008-11-18 20:21:20 +0000 (Tue, 18 Nov 2008) Log Message: ----------- Changes all field access on ast nodes to get/set access. One unfortunate wrinkle: getType() is actually part of Antlr's Tree interface, so for the moment I have changed the two "type" fields (Raise and excepthandler) to excepttype. Modified Paths: -------------- branches/astwrite/ast/Python.asdl branches/astwrite/ast/asdl_antlr.py branches/astwrite/grammar/Python.g branches/astwrite/src/org/python/antlr/GrammarActions.java branches/astwrite/src/org/python/antlr/ast/Assert.java branches/astwrite/src/org/python/antlr/ast/Assign.java branches/astwrite/src/org/python/antlr/ast/Attribute.java branches/astwrite/src/org/python/antlr/ast/AugAssign.java branches/astwrite/src/org/python/antlr/ast/BinOp.java branches/astwrite/src/org/python/antlr/ast/BoolOp.java branches/astwrite/src/org/python/antlr/ast/Call.java branches/astwrite/src/org/python/antlr/ast/ClassDef.java branches/astwrite/src/org/python/antlr/ast/Compare.java branches/astwrite/src/org/python/antlr/ast/Delete.java branches/astwrite/src/org/python/antlr/ast/Dict.java branches/astwrite/src/org/python/antlr/ast/Exec.java branches/astwrite/src/org/python/antlr/ast/Expr.java branches/astwrite/src/org/python/antlr/ast/Expression.java branches/astwrite/src/org/python/antlr/ast/ExtSlice.java branches/astwrite/src/org/python/antlr/ast/For.java branches/astwrite/src/org/python/antlr/ast/FunctionDef.java branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java branches/astwrite/src/org/python/antlr/ast/Global.java branches/astwrite/src/org/python/antlr/ast/If.java branches/astwrite/src/org/python/antlr/ast/IfExp.java branches/astwrite/src/org/python/antlr/ast/Import.java branches/astwrite/src/org/python/antlr/ast/ImportFrom.java branches/astwrite/src/org/python/antlr/ast/Index.java branches/astwrite/src/org/python/antlr/ast/Interactive.java branches/astwrite/src/org/python/antlr/ast/Lambda.java branches/astwrite/src/org/python/antlr/ast/List.java branches/astwrite/src/org/python/antlr/ast/ListComp.java branches/astwrite/src/org/python/antlr/ast/Module.java branches/astwrite/src/org/python/antlr/ast/Name.java branches/astwrite/src/org/python/antlr/ast/Num.java branches/astwrite/src/org/python/antlr/ast/Print.java branches/astwrite/src/org/python/antlr/ast/Raise.java branches/astwrite/src/org/python/antlr/ast/Repr.java branches/astwrite/src/org/python/antlr/ast/Return.java branches/astwrite/src/org/python/antlr/ast/Slice.java branches/astwrite/src/org/python/antlr/ast/Str.java branches/astwrite/src/org/python/antlr/ast/Subscript.java branches/astwrite/src/org/python/antlr/ast/Suite.java branches/astwrite/src/org/python/antlr/ast/TryExcept.java branches/astwrite/src/org/python/antlr/ast/TryFinally.java branches/astwrite/src/org/python/antlr/ast/Tuple.java branches/astwrite/src/org/python/antlr/ast/UnaryOp.java branches/astwrite/src/org/python/antlr/ast/While.java branches/astwrite/src/org/python/antlr/ast/With.java branches/astwrite/src/org/python/antlr/ast/Yield.java branches/astwrite/src/org/python/antlr/ast/aliasType.java branches/astwrite/src/org/python/antlr/ast/argumentsType.java branches/astwrite/src/org/python/antlr/ast/comprehensionType.java branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java branches/astwrite/src/org/python/antlr/ast/keywordType.java branches/astwrite/src/org/python/compiler/ArgListCompiler.java branches/astwrite/src/org/python/compiler/CodeCompiler.java branches/astwrite/src/org/python/compiler/Future.java branches/astwrite/src/org/python/compiler/ScopesCompiler.java Modified: branches/astwrite/ast/Python.asdl =================================================================== --- branches/astwrite/ast/Python.asdl 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/ast/Python.asdl 2008-11-18 20:21:20 UTC (rev 5592) @@ -29,7 +29,7 @@ | With(expr context_expr, expr? optional_vars, stmt* body) -- 'type' is a bad name - | Raise(expr? type, expr? inst, expr? tback) + | Raise(expr? excepttype, expr? inst, expr? tback) | TryExcept(stmt* body, excepthandler* handlers, stmt* orelse) | TryFinally(stmt* body, stmt* finalbody) | Assert(expr test, expr? msg) @@ -102,7 +102,7 @@ -- TODO(jhylton): Figure out if there is a better way to handle -- lineno and col_offset fields, particularly when -- ast is exposed to Python. - excepthandler = (expr? type, expr? name, stmt* body, int lineno, + excepthandler = (expr? excepttype, expr? name, stmt* body, int lineno, int col_offset) arguments = (expr* args, identifier? vararg, Modified: branches/astwrite/ast/asdl_antlr.py =================================================================== --- branches/astwrite/ast/asdl_antlr.py 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/ast/asdl_antlr.py 2008-11-18 20:21:20 UTC (rev 5592) @@ -399,7 +399,16 @@ self.emit("", 0) def visitField(self, field, depth): - self.emit("public %s;" % self.fieldDef(field), depth) + self.emit("private %s;" % self.fieldDef(field), depth) + self.emit("public %s get%s() {" % (self.javaType(field), + str(field.name).capitalize()), depth) + self.emit("return %s;" % field.name, depth+1) + self.emit("}", depth) + self.emit("public void set%s(%s) {" % (str(field.name).capitalize(), + self.fieldDef(field)), depth) + self.emit("this.%s = %s;" % (field.name, field.name), depth+1) + self.emit("}", depth) + self.emit("", 0) bltinnames = { 'int' : 'int', Modified: branches/astwrite/grammar/Python.g =================================================================== --- branches/astwrite/grammar/Python.g 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/grammar/Python.g 2008-11-18 20:21:20 UTC (rev 5592) @@ -1189,16 +1189,16 @@ } if (o instanceof Call) { Call c = (Call)o; - c.func = $etype; + c.setFunc($etype); $etype = c; } else if (o instanceof Subscript) { Subscript c = (Subscript)o; - c.value = $etype; + c.setValue($etype); $etype = c; } else if (o instanceof Attribute) { Attribute c = (Attribute)o; c.setCharStartIndex($etype.getCharStartIndex()); - c.value = $etype; + c.setValue($etype); $etype = c; } } Modified: branches/astwrite/src/org/python/antlr/GrammarActions.java =================================================================== --- branches/astwrite/src/org/python/antlr/GrammarActions.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/GrammarActions.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -135,7 +135,7 @@ List<exprType> result = new ArrayList<exprType>(); if (etype != null) { if (etype instanceof Tuple) { - return ((Tuple)etype).elts; + return ((Tuple)etype).getElts(); } result.add(etype); } @@ -314,10 +314,10 @@ } if (tree instanceof GeneratorExp) { GeneratorExp g = (GeneratorExp)tree; - recurseSetContext(g.elt, context); + recurseSetContext(g.getElt(), context); } else if (tree instanceof ListComp) { ListComp lc = (ListComp)tree; - recurseSetContext(lc.elt, context); + recurseSetContext(lc.getElt(), context); } else if (!(tree instanceof ListComp)) { for (int i=0; i<tree.getChildCount(); i++) { recurseSetContext(tree.getChild(i), context); @@ -357,7 +357,7 @@ checkAssign(castExpr(e.get(0))); if (e.get(0) instanceof Name) { Name arg = (Name)e.get(0); - k.add(new keywordType(arg, arg.id, castExpr(e.get(1)))); + k.add(new keywordType(arg, arg.getId(), castExpr(e.get(1)))); } else { errorHandler.error("keyword must be a name", (PythonTree)e.get(0)); } @@ -588,28 +588,28 @@ exprType negate(PythonTree t, exprType o) { if (o instanceof Num) { Num num = (Num)o; - if (num.n instanceof PyInteger) { - int v = ((PyInteger)num.n).getValue(); + if (num.getN() instanceof PyInteger) { + int v = ((PyInteger)num.getN()).getValue(); if (v > 0) { - num.n = new PyInteger(-v); + num.setN(new PyInteger(-v)); return num; } - } else if (num.n instanceof PyLong) { - BigInteger v = ((PyLong)num.n).getValue(); + } else if (num.getN() instanceof PyLong) { + BigInteger v = ((PyLong)num.getN()).getValue(); if (v.compareTo(BigInteger.ZERO) == 1) { - num.n = new PyLong(v.negate()); + num.setN(new PyLong(v.negate())); return num; } - } else if (num.n instanceof PyFloat) { - double v = ((PyFloat)num.n).getValue(); + } else if (num.getN() instanceof PyFloat) { + double v = ((PyFloat)num.getN()).getValue(); if (v > 0) { - num.n = new PyFloat(-v); + num.setN(new PyFloat(-v)); return num; } - } else if (num.n instanceof PyComplex) { - double v = ((PyComplex)num.n).imag; + } else if (num.getN() instanceof PyComplex) { + double v = ((PyComplex)num.getN()).imag; if (v > 0) { - num.n = new PyComplex(0,-v); + num.setN(new PyComplex(0,-v)); return num; } } @@ -631,7 +631,7 @@ } void checkAssign(exprType e) { - if (e instanceof Name && ((Name)e).id.equals("None")) { + if (e instanceof Name && ((Name)e).getId().equals("None")) { errorHandler.error("assignment to None", e); } else if (e instanceof GeneratorExp) { errorHandler.error("can't assign to generator expression", e); @@ -653,7 +653,7 @@ errorHandler.error("can't assign to conditional expression", e); } else if (e instanceof Tuple) { //XXX: performance problem? Any way to do this better? - List<exprType> elts = ((Tuple)e).elts; + List<exprType> elts = ((Tuple)e).getElts(); if (elts.size() == 0) { errorHandler.error("can't assign to ()", e); } @@ -662,7 +662,7 @@ } } else if (e instanceof org.python.antlr.ast.List) { //XXX: performance problem? Any way to do this better? - List<exprType> elts = ((org.python.antlr.ast.List)e).elts; + List<exprType> elts = ((org.python.antlr.ast.List)e).getElts(); for (int i=0;i<elts.size();i++) { checkAssign(elts.get(i)); } @@ -781,7 +781,7 @@ for (Object o : sltypes) { if (o instanceof Index) { Index i = (Index)o; - etypes.add(i.value); + etypes.add(i.getValue()); } else { extslice = true; break; Modified: branches/astwrite/src/org/python/antlr/ast/Assert.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,9 +7,23 @@ import java.io.IOException; public class Assert extends stmtType { - public exprType test; - public exprType msg; + private exprType test; + public exprType getTest() { + return test; + } + public void setTest(exprType test) { + this.test = test; + } + private exprType msg; + public exprType getMsg() { + return msg; + } + public void setMsg(exprType msg) { + this.msg = msg; + } + + private final static String[] fields = new String[] {"test", "msg"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/Assign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,9 +7,23 @@ import java.io.IOException; public class Assign extends stmtType { - public java.util.List<exprType> targets; - public exprType value; + private java.util.List<exprType> targets; + public java.util.List<exprType> getTargets() { + return targets; + } + public void setTargets(java.util.List<exprType> targets) { + this.targets = targets; + } + private exprType value; + public exprType getValue() { + return value; + } + public void setValue(exprType value) { + this.value = value; + } + + private final static String[] fields = new String[] {"targets", "value"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/Attribute.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,10 +7,31 @@ import java.io.IOException; public class Attribute extends exprType implements Context { - public exprType value; - public String attr; - public expr_contextType ctx; + private exprType value; + public exprType getValue() { + return value; + } + public void setValue(exprType value) { + this.value = value; + } + private String attr; + public String getAttr() { + return attr; + } + public void setAttr(String attr) { + this.attr = attr; + } + + private expr_contextType ctx; + public expr_contextType getCtx() { + return ctx; + } + public void setCtx(expr_contextType ctx) { + this.ctx = ctx; + } + + private final static String[] fields = new String[] {"value", "attr", "ctx"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/AugAssign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,10 +7,31 @@ import java.io.IOException; public class AugAssign extends stmtType { - public exprType target; - public operatorType op; - public exprType value; + private exprType target; + public exprType getTarget() { + return target; + } + public void setTarget(exprType target) { + this.target = target; + } + private operatorType op; + public operatorType getOp() { + return op; + } + public void setOp(operatorType op) { + this.op = op; + } + + private exprType value; + public exprType getValue() { + return value; + } + public void setValue(exprType value) { + this.value = value; + } + + private final static String[] fields = new String[] {"target", "op", "value"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/BinOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,10 +7,31 @@ import java.io.IOException; public class BinOp extends exprType { - public exprType left; - public operatorType op; - public exprType right; + private exprType left; + public exprType getLeft() { + return left; + } + public void setLeft(exprType left) { + this.left = left; + } + private operatorType op; + public operatorType getOp() { + return op; + } + public void setOp(operatorType op) { + this.op = op; + } + + private exprType right; + public exprType getRight() { + return right; + } + public void setRight(exprType right) { + this.right = right; + } + + private final static String[] fields = new String[] {"left", "op", "right"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/BoolOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,9 +7,23 @@ import java.io.IOException; public class BoolOp extends exprType { - public boolopType op; - public java.util.List<exprType> values; + private boolopType op; + public boolopType getOp() { + return op; + } + public void setOp(boolopType op) { + this.op = op; + } + private java.util.List<exprType> values; + public java.util.List<exprType> getValues() { + return values; + } + public void setValues(java.util.List<exprType> values) { + this.values = values; + } + + private final static String[] fields = new String[] {"op", "values"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/Call.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Call.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/Call.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,12 +7,47 @@ import java.io.IOException; public class Call extends exprType { - public exprType func; - public java.util.List<exprType> args; - public java.util.List<keywordType> keywords; - public exprType starargs; - public exprType kwargs; + private exprType func; + public exprType getFunc() { + return func; + } + public void setFunc(exprType func) { + this.func = func; + } + private java.util.List<exprType> args; + public java.util.List<exprType> getArgs() { + return args; + } + public void setArgs(java.util.List<exprType> args) { + this.args = args; + } + + private java.util.List<keywordType> keywords; + public java.util.List<keywordType> getKeywords() { + return keywords; + } + public void setKeywords(java.util.List<keywordType> keywords) { + this.keywords = keywords; + } + + private exprType starargs; + public exprType getStarargs() { + return starargs; + } + public void setStarargs(exprType starargs) { + this.starargs = starargs; + } + + private exprType kwargs; + public exprType getKwargs() { + return kwargs; + } + public void setKwargs(exprType kwargs) { + this.kwargs = kwargs; + } + + private final static String[] fields = new String[] {"func", "args", "keywords", "starargs", "kwargs"}; Modified: branches/astwrite/src/org/python/antlr/ast/ClassDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,11 +7,39 @@ import java.io.IOException; public class ClassDef extends stmtType { - public String name; - public java.util.List<exprType> bases; - public java.util.List<stmtType> body; - public java.util.List<exprType> decorators; + private String name; + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + private java.util.List<exprType> bases; + public java.util.List<exprType> getBases() { + return bases; + } + public void setBases(java.util.List<exprType> bases) { + this.bases = bases; + } + + private java.util.List<stmtType> body; + public java.util.List<stmtType> getBody() { + return body; + } + public void setBody(java.util.List<stmtType> body) { + this.body = body; + } + + private java.util.List<exprType> decorators; + public java.util.List<exprType> getDecorators() { + return decorators; + } + public void setDecorators(java.util.List<exprType> decorators) { + this.decorators = decorators; + } + + private final static String[] fields = new String[] {"name", "bases", "body", "decorators"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/Compare.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,10 +7,31 @@ import java.io.IOException; public class Compare extends exprType { - public exprType left; - public java.util.List<cmpopType> ops; - public java.util.List<exprType> comparators; + private exprType left; + public exprType getLeft() { + return left; + } + public void setLeft(exprType left) { + this.left = left; + } + private java.util.List<cmpopType> ops; + public java.util.List<cmpopType> getOps() { + return ops; + } + public void setOps(java.util.List<cmpopType> ops) { + this.ops = ops; + } + + private java.util.List<exprType> comparators; + public java.util.List<exprType> getComparators() { + return comparators; + } + public void setComparators(java.util.List<exprType> comparators) { + this.comparators = comparators; + } + + private final static String[] fields = new String[] {"left", "ops", "comparators"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/Delete.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,8 +7,15 @@ import java.io.IOException; public class Delete extends stmtType { - public java.util.List<exprType> targets; + private java.util.List<exprType> targets; + public java.util.List<exprType> getTargets() { + return targets; + } + public void setTargets(java.util.List<exprType> targets) { + this.targets = targets; + } + private final static String[] fields = new String[] {"targets"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/Dict.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,9 +7,23 @@ import java.io.IOException; public class Dict extends exprType { - public java.util.List<exprType> keys; - public java.util.List<exprType> values; + private java.util.List<exprType> keys; + public java.util.List<exprType> getKeys() { + return keys; + } + public void setKeys(java.util.List<exprType> keys) { + this.keys = keys; + } + private java.util.List<exprType> values; + public java.util.List<exprType> getValues() { + return values; + } + public void setValues(java.util.List<exprType> values) { + this.values = values; + } + + private final static String[] fields = new String[] {"keys", "values"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/Exec.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,10 +7,31 @@ import java.io.IOException; public class Exec extends stmtType { - public exprType body; - public exprType globals; - public exprType locals; + private exprType body; + public exprType getBody() { + return body; + } + public void setBody(exprType body) { + this.body = body; + } + private exprType globals; + public exprType getGlobals() { + return globals; + } + public void setGlobals(exprType globals) { + this.globals = globals; + } + + private exprType locals; + public exprType getLocals() { + return locals; + } + public void setLocals(exprType locals) { + this.locals = locals; + } + + private final static String[] fields = new String[] {"body", "globals", "locals"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/Expr.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,8 +7,15 @@ import java.io.IOException; public class Expr extends stmtType { - public exprType value; + private exprType value; + public exprType getValue() { + return value; + } + public void setValue(exprType value) { + this.value = value; + } + private final static String[] fields = new String[] {"value"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/Expression.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Expression.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/Expression.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,8 +7,15 @@ import java.io.IOException; public class Expression extends modType { - public exprType body; + private exprType body; + public exprType getBody() { + return body; + } + public void setBody(exprType body) { + this.body = body; + } + private final static String[] fields = new String[] {"body"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/ExtSlice.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,8 +7,15 @@ import java.io.IOException; public class ExtSlice extends sliceType { - public java.util.List<sliceType> dims; + private java.util.List<sliceType> dims; + public java.util.List<sliceType> getDims() { + return dims; + } + public void setDims(java.util.List<sliceType> dims) { + this.dims = dims; + } + private final static String[] fields = new String[] {"dims"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/For.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/For.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/For.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,11 +7,39 @@ import java.io.IOException; public class For extends stmtType { - public exprType target; - public exprType iter; - public java.util.List<stmtType> body; - public java.util.List<stmtType> orelse; + private exprType target; + public exprType getTarget() { + return target; + } + public void setTarget(exprType target) { + this.target = target; + } + private exprType iter; + public exprType getIter() { + return iter; + } + public void setIter(exprType iter) { + this.iter = iter; + } + + private java.util.List<stmtType> body; + public java.util.List<stmtType> getBody() { + return body; + } + public void setBody(java.util.List<stmtType> body) { + this.body = body; + } + + private java.util.List<stmtType> orelse; + public java.util.List<stmtType> getOrelse() { + return orelse; + } + public void setOrelse(java.util.List<stmtType> orelse) { + this.orelse = orelse; + } + + private final static String[] fields = new String[] {"target", "iter", "body", "orelse"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/FunctionDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,11 +7,39 @@ import java.io.IOException; public class FunctionDef extends stmtType { - public String name; - public argumentsType args; - public java.util.List<stmtType> body; - public java.util.List<exprType> decorators; + private String name; + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + private argumentsType args; + public argumentsType getArgs() { + return args; + } + public void setArgs(argumentsType args) { + this.args = args; + } + + private java.util.List<stmtType> body; + public java.util.List<stmtType> getBody() { + return body; + } + public void setBody(java.util.List<stmtType> body) { + this.body = body; + } + + private java.util.List<exprType> decorators; + public java.util.List<exprType> getDecorators() { + return decorators; + } + public void setDecorators(java.util.List<exprType> decorators) { + this.decorators = decorators; + } + + private final static String[] fields = new String[] {"name", "args", "body", "decorators"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,9 +7,23 @@ import java.io.IOException; public class GeneratorExp extends exprType { - public exprType elt; - public java.util.List<comprehensionType> generators; + private exprType elt; + public exprType getElt() { + return elt; + } + public void setElt(exprType elt) { + this.elt = elt; + } + private java.util.List<comprehensionType> generators; + public java.util.List<comprehensionType> getGenerators() { + return generators; + } + public void setGenerators(java.util.List<comprehensionType> generators) { + this.generators = generators; + } + + private final static String[] fields = new String[] {"elt", "generators"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/Global.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Global.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/Global.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,8 +7,15 @@ import java.io.IOException; public class Global extends stmtType { - public java.util.List<String> names; + private java.util.List<String> names; + public java.util.List<String> getNames() { + return names; + } + public void setNames(java.util.List<String> names) { + this.names = names; + } + private final static String[] fields = new String[] {"names"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/If.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/If.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/If.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,10 +7,31 @@ import java.io.IOException; public class If extends stmtType { - public exprType test; - public java.util.List<stmtType> body; - public java.util.List<stmtType> orelse; + private exprType test; + public exprType getTest() { + return test; + } + public void setTest(exprType test) { + this.test = test; + } + private java.util.List<stmtType> body; + public java.util.List<stmtType> getBody() { + return body; + } + public void setBody(java.util.List<stmtType> body) { + this.body = body; + } + + private java.util.List<stmtType> orelse; + public java.util.List<stmtType> getOrelse() { + return orelse; + } + public void setOrelse(java.util.List<stmtType> orelse) { + this.orelse = orelse; + } + + private final static String[] fields = new String[] {"test", "body", "orelse"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/IfExp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/IfExp.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/IfExp.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,10 +7,31 @@ import java.io.IOException; public class IfExp extends exprType { - public exprType test; - public exprType body; - public exprType orelse; + private exprType test; + public exprType getTest() { + return test; + } + public void setTest(exprType test) { + this.test = test; + } + private exprType body; + public exprType getBody() { + return body; + } + public void setBody(exprType body) { + this.body = body; + } + + private exprType orelse; + public exprType getOrelse() { + return orelse; + } + public void setOrelse(exprType orelse) { + this.orelse = orelse; + } + + private final static String[] fields = new String[] {"test", "body", "orelse"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/Import.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Import.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/Import.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,8 +7,15 @@ import java.io.IOException; public class Import extends stmtType { - public java.util.List<aliasType> names; + private java.util.List<aliasType> names; + public java.util.List<aliasType> getNames() { + return names; + } + public void setNames(java.util.List<aliasType> names) { + this.names = names; + } + private final static String[] fields = new String[] {"names"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/ImportFrom.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ImportFrom.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/ImportFrom.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,10 +7,31 @@ import java.io.IOException; public class ImportFrom extends stmtType { - public String module; - public java.util.List<aliasType> names; - public int level; + private String module; + public String getModule() { + return module; + } + public void setModule(String module) { + this.module = module; + } + private java.util.List<aliasType> names; + public java.util.List<aliasType> getNames() { + return names; + } + public void setNames(java.util.List<aliasType> names) { + this.names = names; + } + + private int level; + public int getLevel() { + return level; + } + public void setLevel(int level) { + this.level = level; + } + + private final static String[] fields = new String[] {"module", "names", "level"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/Index.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Index.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/Index.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,8 +7,15 @@ import java.io.IOException; public class Index extends sliceType { - public exprType value; + private exprType value; + public exprType getValue() { + return value; + } + public void setValue(exprType value) { + this.value = value; + } + private final static String[] fields = new String[] {"value"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/Interactive.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Interactive.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/Interactive.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,8 +7,15 @@ import java.io.IOException; public class Interactive extends modType { - public java.util.List<stmtType> body; + private java.util.List<stmtType> body; + public java.util.List<stmtType> getBody() { + return body; + } + public void setBody(java.util.List<stmtType> body) { + this.body = body; + } + private final static String[] fields = new String[] {"body"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/Lambda.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Lambda.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/Lambda.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,9 +7,23 @@ import java.io.IOException; public class Lambda extends exprType { - public argumentsType args; - public exprType body; + private argumentsType args; + public argumentsType getArgs() { + return args; + } + public void setArgs(argumentsType args) { + this.args = args; + } + private exprType body; + public exprType getBody() { + return body; + } + public void setBody(exprType body) { + this.body = body; + } + + private final static String[] fields = new String[] {"args", "body"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/List.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/List.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/List.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,9 +7,23 @@ import java.io.IOException; public class List extends exprType implements Context { - public java.util.List<exprType> elts; - public expr_contextType ctx; + private java.util.List<exprType> elts; + public java.util.List<exprType> getElts() { + return elts; + } + public void setElts(java.util.List<exprType> elts) { + this.elts = elts; + } + private expr_contextType ctx; + public expr_contextType getCtx() { + return ctx; + } + public void setCtx(expr_contextType ctx) { + this.ctx = ctx; + } + + private final static String[] fields = new String[] {"elts", "ctx"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/ListComp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ListComp.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/ListComp.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,9 +7,23 @@ import java.io.IOException; public class ListComp extends exprType { - public exprType elt; - public java.util.List<comprehensionType> generators; + private exprType elt; + public exprType getElt() { + return elt; + } + public void setElt(exprType elt) { + this.elt = elt; + } + private java.util.List<comprehensionType> generators; + public java.util.List<comprehensionType> getGenerators() { + return generators; + } + public void setGenerators(java.util.List<comprehensionType> generators) { + this.generators = generators; + } + + private final static String[] fields = new String[] {"elt", "generators"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/Module.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Module.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/Module.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,8 +7,15 @@ import java.io.IOException; public class Module extends modType { - public java.util.List<stmtType> body; + private java.util.List<stmtType> body; + public java.util.List<stmtType> getBody() { + return body; + } + public void setBody(java.util.List<stmtType> body) { + this.body = body; + } + private final static String[] fields = new String[] {"body"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/Name.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Name.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/Name.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,9 +7,23 @@ import java.io.IOException; public class Name extends exprType implements Context { - public String id; - public expr_contextType ctx; + private String id; + public String getId() { + return id; + } + public void setId(String id) { + this.id = id; + } + private expr_contextType ctx; + public expr_contextType getCtx() { + return ctx; + } + public void setCtx(expr_contextType ctx) { + this.ctx = ctx; + } + + private final static String[] fields = new String[] {"id", "ctx"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/Num.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Num.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/Num.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,8 +7,15 @@ import java.io.IOException; public class Num extends exprType { - public Object n; + private Object n; + public Object getN() { + return n; + } + public void setN(Object n) { + this.n = n; + } + private final static String[] fields = new String[] {"n"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/Print.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Print.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/Print.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,10 +7,31 @@ import java.io.IOException; public class Print extends stmtType { - public exprType dest; - public java.util.List<exprType> values; - public boolean nl; + private exprType dest; + public exprType getDest() { + return dest; + } + public void setDest(exprType dest) { + this.dest = dest; + } + private java.util.List<exprType> values; + public java.util.List<exprType> getValues() { + return values; + } + public void setValues(java.util.List<exprType> values) { + this.values = values; + } + + private boolean nl; + public boolean getNl() { + return nl; + } + public void setNl(boolean nl) { + this.nl = nl; + } + + private final static String[] fields = new String[] {"dest", "values", "nl"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/Raise.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Raise.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/Raise.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,49 +7,71 @@ import java.io.IOException; public class Raise extends stmtType { - public exprType type; - public exprType inst; - public exprType tback; + private exprType excepttype; + public exprType getExcepttype() { + return excepttype; + } + public void setExcepttype(exprType excepttype) { + this.excepttype = excepttype; + } - private final static String[] fields = new String[] {"type", "inst", + private exprType inst; + public exprType getInst() { + return inst; + } + public void setInst(exprType inst) { + this.inst = inst; + } + + private exprType tback; + public exprType getTback() { + return tback; + } + public void setTback(exprType tback) { + this.tback = tback; + } + + + private final static String[] fields = new String[] {"excepttype", "inst", "tback"}; public String[] get_fields() { return fields; } - public Raise(exprType type, exprType inst, exprType tback) { - this.type = type; - addChild(type); + public Raise(exprType excepttype, exprType inst, exprType tback) { + this.excepttype = excepttype; + addChild(excepttype); this.inst = inst; addChild(inst); this.tback = tback; addChild(tback); } - public Raise(Token token, exprType type, exprType inst, exprType tback) { + public Raise(Token token, exprType excepttype, exprType inst, exprType + tback) { super(token); - this.type = type; - addChild(type); + this.excepttype = excepttype; + addChild(excepttype); this.inst = inst; addChild(inst); this.tback = tback; addChild(tback); } - public Raise(int ttype, Token token, exprType type, exprType inst, exprType - tback) { + public Raise(int ttype, Token token, exprType excepttype, exprType inst, + exprType tback) { super(ttype, token); - this.type = type; - addChild(type); + this.excepttype = excepttype; + addChild(excepttype); this.inst = inst; addChild(inst); this.tback = tback; addChild(tback); } - public Raise(PythonTree tree, exprType type, exprType inst, exprType tback) - { + public Raise(PythonTree tree, exprType excepttype, exprType inst, exprType + tback) { super(tree); - this.type = type; - addChild(type); + this.excepttype = excepttype; + addChild(excepttype); this.inst = inst; addChild(inst); this.tback = tback; @@ -62,8 +84,8 @@ public String toStringTree() { StringBuffer sb = new StringBuffer("Raise("); - sb.append("type="); - sb.append(dumpThis(type)); + sb.append("excepttype="); + sb.append(dumpThis(excepttype)); sb.append(","); sb.append("inst="); sb.append(dumpThis(inst)); @@ -80,8 +102,8 @@ } public void traverse(VisitorIF visitor) throws Exception { - if (type != null) - type.accept(visitor); + if (excepttype != null) + excepttype.accept(visitor); if (inst != null) inst.accept(visitor); if (tback != null) Modified: branches/astwrite/src/org/python/antlr/ast/Repr.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Repr.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/Repr.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,8 +7,15 @@ import java.io.IOException; public class Repr extends exprType { - public exprType value; + private exprType value; + public exprType getValue() { + return value; + } + public void setValue(exprType value) { + this.value = value; + } + private final static String[] fields = new String[] {"value"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/Return.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Return.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/Return.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,8 +7,15 @@ import java.io.IOException; public class Return extends stmtType { - public exprType value; + private exprType value; + public exprType getValue() { + return value; + } + public void setValue(exprType value) { + this.value = value; + } + private final static String[] fields = new String[] {"value"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/Slice.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Slice.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/Slice.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,10 +7,31 @@ import java.io.IOException; public class Slice extends sliceType { - public exprType lower; - public exprType upper; - public exprType step; + private exprType lower; + public exprType getLower() { + return lower; + } + public void setLower(exprType lower) { + this.lower = lower; + } + private exprType upper; + public exprType getUpper() { + return upper; + } + public void setUpper(exprType upper) { + this.upper = upper; + } + + private exprType step; + public exprType getStep() { + return step; + } + public void setStep(exprType step) { + this.step = step; + } + + private final static String[] fields = new String[] {"lower", "upper", "step"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/Str.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Str.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/Str.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,8 +7,15 @@ import java.io.IOException; public class Str extends exprType { - public Object s; + private Object s; + public Object getS() { + return s; + } + public void setS(Object s) { + this.s = s; + } + private final static String[] fields = new String[] {"s"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/Subscript.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Subscript.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/Subscript.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,10 +7,31 @@ import java.io.IOException; public class Subscript extends exprType implements Context { - public exprType value; - public sliceType slice; - public expr_contextType ctx; + private exprType value; + public exprType getValue() { + return value; + } + public void setValue(exprType value) { + this.value = value; + } + private sliceType slice; + public sliceType getSlice() { + return slice; + } + public void setSlice(sliceType slice) { + this.slice = slice; + } + + private expr_contextType ctx; + public expr_contextType getCtx() { + return ctx; + } + public void setCtx(expr_contextType ctx) { + this.ctx = ctx; + } + + private final static String[] fields = new String[] {"value", "slice", "ctx"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/Suite.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Suite.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/Suite.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,8 +7,15 @@ import java.io.IOException; public class Suite extends modType { - public java.util.List<stmtType> body; + private java.util.List<stmtType> body; + public java.util.List<stmtType> getBody() { + return body; + } + public void setBody(java.util.List<stmtType> body) { + this.body = body; + } + private final static String[] fields = new String[] {"body"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/TryExcept.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/TryExcept.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/TryExcept.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,10 +7,31 @@ import java.io.IOException; public class TryExcept extends stmtType { - public java.util.List<stmtType> body; - public java.util.List<excepthandlerType> handlers; - public java.util.List<stmtType> orelse; + private java.util.List<stmtType> body; + public java.util.List<stmtType> getBody() { + return body; + } + public void setBody(java.util.List<stmtType> body) { + this.body = body; + } + private java.util.List<excepthandlerType> handlers; + public java.util.List<excepthandlerType> getHandlers() { + return handlers; + } + public void setHandlers(java.util.List<excepthandlerType> handlers) { + this.handlers = handlers; + } + + private java.util.List<stmtType> orelse; + public java.util.List<stmtType> getOrelse() { + return orelse; + } + public void setOrelse(java.util.List<stmtType> orelse) { + this.orelse = orelse; + } + + private final static String[] fields = new String[] {"body", "handlers", "orelse"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/TryFinally.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/TryFinally.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/TryFinally.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,9 +7,23 @@ import java.io.IOException; public class TryFinally extends stmtType { - public java.util.List<stmtType> body; - public java.util.List<stmtType> finalbody; + private java.util.List<stmtType> body; + public java.util.List<stmtType> getBody() { + return body; + } + public void setBody(java.util.List<stmtType> body) { + this.body = body; + } + private java.util.List<stmtType> finalbody; + public java.util.List<stmtType> getFinalbody() { + return finalbody; + } + public void setFinalbody(java.util.List<stmtType> finalbody) { + this.finalbody = finalbody; + } + + private final static String[] fields = new String[] {"body", "finalbody"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/Tuple.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Tuple.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/Tuple.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,9 +7,23 @@ import java.io.IOException; public class Tuple extends exprType implements Context { - public java.util.List<exprType> elts; - public expr_contextType ctx; + private java.util.List<exprType> elts; + public java.util.List<exprType> getElts() { + return elts; + } + public void setElts(java.util.List<exprType> elts) { + this.elts = elts; + } + private expr_contextType ctx; + public expr_contextType getCtx() { + return ctx; + } + public void setCtx(expr_contextType ctx) { + this.ctx = ctx; + } + + private final static String[] fields = new String[] {"elts", "ctx"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/UnaryOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/UnaryOp.java 2008-11-18 16:02:41 UTC (rev 5591) +++ branches/astwrite/src/org/python/antlr/ast/UnaryOp.java 2008-11-18 20:21:20 UTC (rev 5592) @@ -7,9 +7,23 @@ import java.io.IOException; public class UnaryOp extends exprType { - public unaryopType op; - public exprType operand; + private unaryopType op; + public unaryopType getOp() { + return op; + } + public void setOp(unaryopType op) { + this.op = op; + } + private exprType operand; + public exprType getOperand() { + return operand; + } + public void setOperand(exprType operand) { + this.operand = operand; + } + + private final static String[] fields = new String[] {"op", "operand"}; public String[] get_fields() { return fields; } Modified: branches/astwrite/src/org/python/antlr/ast/While.java ===================================================... [truncated message content] |
From: <fwi...@us...> - 2008-11-20 22:22:35
|
Revision: 5594 http://jython.svn.sourceforge.net/jython/?rev=5594&view=rev Author: fwierzbicki Date: 2008-11-20 22:22:29 +0000 (Thu, 20 Nov 2008) Log Message: ----------- Experimenting with a class I'm calling "ListWrapper" for the moment. The idea is to expose something like a Python list for ast writing from Python code without actually using PyList. I don't want to use PyList because everything would need to be PyObject -- which I am trying to avoid in the ast for now. Anyway, like I said this is experimental. Modified Paths: -------------- branches/astwrite/Lib/test/test_ast.py branches/astwrite/ast/asdl_antlr.py branches/astwrite/src/org/python/antlr/ast/Assert.java branches/astwrite/src/org/python/antlr/ast/Assign.java branches/astwrite/src/org/python/antlr/ast/Attribute.java branches/astwrite/src/org/python/antlr/ast/AugAssign.java branches/astwrite/src/org/python/antlr/ast/BinOp.java branches/astwrite/src/org/python/antlr/ast/BoolOp.java branches/astwrite/src/org/python/antlr/ast/Break.java branches/astwrite/src/org/python/antlr/ast/Call.java branches/astwrite/src/org/python/antlr/ast/ClassDef.java branches/astwrite/src/org/python/antlr/ast/Compare.java branches/astwrite/src/org/python/antlr/ast/Continue.java branches/astwrite/src/org/python/antlr/ast/Delete.java branches/astwrite/src/org/python/antlr/ast/Dict.java branches/astwrite/src/org/python/antlr/ast/Ellipsis.java branches/astwrite/src/org/python/antlr/ast/Exec.java branches/astwrite/src/org/python/antlr/ast/Expr.java branches/astwrite/src/org/python/antlr/ast/Expression.java branches/astwrite/src/org/python/antlr/ast/ExtSlice.java branches/astwrite/src/org/python/antlr/ast/For.java branches/astwrite/src/org/python/antlr/ast/FunctionDef.java branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java branches/astwrite/src/org/python/antlr/ast/Global.java branches/astwrite/src/org/python/antlr/ast/If.java branches/astwrite/src/org/python/antlr/ast/IfExp.java branches/astwrite/src/org/python/antlr/ast/Import.java branches/astwrite/src/org/python/antlr/ast/ImportFrom.java branches/astwrite/src/org/python/antlr/ast/Index.java branches/astwrite/src/org/python/antlr/ast/Interactive.java branches/astwrite/src/org/python/antlr/ast/Lambda.java branches/astwrite/src/org/python/antlr/ast/List.java branches/astwrite/src/org/python/antlr/ast/ListComp.java branches/astwrite/src/org/python/antlr/ast/Module.java branches/astwrite/src/org/python/antlr/ast/Name.java branches/astwrite/src/org/python/antlr/ast/Num.java branches/astwrite/src/org/python/antlr/ast/Pass.java branches/astwrite/src/org/python/antlr/ast/Print.java branches/astwrite/src/org/python/antlr/ast/Raise.java branches/astwrite/src/org/python/antlr/ast/Repr.java branches/astwrite/src/org/python/antlr/ast/Return.java branches/astwrite/src/org/python/antlr/ast/Slice.java branches/astwrite/src/org/python/antlr/ast/Str.java branches/astwrite/src/org/python/antlr/ast/Subscript.java branches/astwrite/src/org/python/antlr/ast/Suite.java branches/astwrite/src/org/python/antlr/ast/TryExcept.java branches/astwrite/src/org/python/antlr/ast/TryFinally.java branches/astwrite/src/org/python/antlr/ast/Tuple.java branches/astwrite/src/org/python/antlr/ast/UnaryOp.java branches/astwrite/src/org/python/antlr/ast/VisitorBase.java branches/astwrite/src/org/python/antlr/ast/While.java branches/astwrite/src/org/python/antlr/ast/With.java branches/astwrite/src/org/python/antlr/ast/Yield.java branches/astwrite/src/org/python/antlr/ast/aliasType.java branches/astwrite/src/org/python/antlr/ast/argumentsType.java branches/astwrite/src/org/python/antlr/ast/comprehensionType.java branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java branches/astwrite/src/org/python/antlr/ast/exprType.java branches/astwrite/src/org/python/antlr/ast/keywordType.java branches/astwrite/src/org/python/antlr/ast/modType.java branches/astwrite/src/org/python/antlr/ast/sliceType.java branches/astwrite/src/org/python/antlr/ast/stmtType.java Added Paths: ----------- branches/astwrite/src/org/python/antlr/ListWrapper.java Property Changed: ---------------- branches/astwrite/src/org/python/antlr/ branches/astwrite/src/org/python/antlr/ast/ Modified: branches/astwrite/Lib/test/test_ast.py =================================================================== --- branches/astwrite/Lib/test/test_ast.py 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/Lib/test/test_ast.py 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,5 +1,5 @@ -#Taken and modified from CPython's release25-maint branch, revision 62446. -import sys,os, itertools +import sys, itertools, unittest +from test import test_support import ast if sys.platform.startswith('java'): @@ -7,7 +7,7 @@ ast_list = java.util.List get_symbol_key = lambda op: op - + def get_class_name(t): result = t.__class__.__name__ if result in ("expr_contextType", @@ -34,15 +34,16 @@ return t elif isinstance(t, ast_list): return [to_tuple(e) for e in t] - result = [get_class_name(t)] + result = [t.__class__.__name__] if hasattr(t, 'lineno') and hasattr(t, 'col_offset'): result.append((t.lineno, t.col_offset)) - if not hasattr(t, '_fields') or t._fields is None: + if t._fields is None: return tuple(result) for f in t._fields: result.append(to_tuple(getattr(t, f))) return tuple(result) + # These tests are compiled through "exec" # There should be atleast one test per statement exec_tests = [ @@ -146,49 +147,179 @@ # TODO: expr_context, slice, boolop, operator, unaryop, cmpop, comprehension # excepthandler, arguments, keywords, alias -if __name__=='__main__' and sys.argv[1:] == ['-g']: - for statements, kind in ((exec_tests, "exec"), (single_tests, "single"), - (eval_tests, "eval")): - print kind+"_results = [" - for s in statements: - print repr(to_tuple(compile(s, "?", kind, 0x400)))+"," - print "]" - print "run_tests()" - raise SystemExit +class AST_Tests(unittest.TestCase): -def test_order(ast_node, parent_pos): - - if (not isinstance(ast_node, ast.AST) - or not hasattr(ast_node, '_fields') - or ast_node._fields == None): + def _assert_order(self, ast_node, parent_pos): + if not isinstance(ast_node, ast.AST) or ast_node._fields is None: return - if isinstance(ast_node, (ast.expr, ast.stmt, ast.excepthandler)): - node_pos = (ast_node.lineno, ast_node.col_offset) - assert node_pos >= parent_pos, (node_pos, parent_pos) - parent_pos = (ast_node.lineno, ast_node.col_offset) - for name in ast_node._fields: - value = getattr(ast_node, name) - if isinstance(value, ast_list): - for child in value: - test_order(child, parent_pos) - elif value != None: - test_order(value, parent_pos) + if isinstance(ast_node, (ast.expr, ast.stmt, ast.excepthandler)): + node_pos = (ast_node.lineno, ast_node.col_offset) + self.assert_(node_pos >= parent_pos) + parent_pos = (ast_node.lineno, ast_node.col_offset) + for name in ast_node._fields: + value = getattr(ast_node, name) + if isinstance(value, ast_list): + for child in value: + self._assert_order(child, parent_pos) + elif value is not None: + self._assert_order(value, parent_pos) -def run_tests(): - for input, output, kind in ((exec_tests, exec_results, "exec"), - (single_tests, single_results, "single"), - (eval_tests, eval_results, "eval")): - for i, o in itertools.izip(input, output): - ast_tree = compile(i, "?", kind, 0x400) - assert to_tuple(ast_tree) == o, "expected %s, got %s" % ( - o, to_tuple(ast_tree)) - test_order(ast_tree, (0, 0)) + def test_snippets(self): + for input, output, kind in ((exec_tests, exec_results, "exec"), + (single_tests, single_results, "single"), + (eval_tests, eval_results, "eval")): + for i, o in itertools.izip(input, output): + ast_tree = compile(i, "?", kind, ast.PyCF_ONLY_AST) + self.assertEquals(to_tuple(ast_tree), o) + self._assert_order(ast_tree, (0, 0)) -# XXX: AugStore added for Jython. Short term it is too hard to emit just "Store" as CPython does. + def test_nodeclasses(self): + x = ast.BinOp(1, 2, 3, lineno=0) + self.assertEquals(x.left, 1) + self.assertEquals(x.op, 2) + self.assertEquals(x.right, 3) + self.assertEquals(x.lineno, 0) + + # node raises exception when not given enough arguments + self.assertRaises(TypeError, ast.BinOp, 1, 2) + + # can set attributes through kwargs too + x = ast.BinOp(left=1, op=2, right=3, lineno=0) + self.assertEquals(x.left, 1) + self.assertEquals(x.op, 2) + self.assertEquals(x.right, 3) + self.assertEquals(x.lineno, 0) + + # this used to fail because Sub._fields was None + x = ast.Sub() + + def test_pickling(self): + import pickle + mods = [pickle] + try: + import cPickle + mods.append(cPickle) + except ImportError: + pass + protocols = [0, 1, 2] + for mod in mods: + for protocol in protocols: + for ast in (compile(i, "?", "exec", 0x400) for i in exec_tests): + ast2 = mod.loads(mod.dumps(ast, protocol)) + self.assertEquals(to_tuple(ast2), to_tuple(ast)) + + +class ASTHelpers_Test(unittest.TestCase): + + def test_parse(self): + a = ast.parse('foo(1 + 1)') + b = compile('foo(1 + 1)', '<unknown>', 'exec', ast.PyCF_ONLY_AST) + self.assertEqual(ast.dump(a), ast.dump(b)) + + def test_dump(self): + node = ast.parse('spam(eggs, "and cheese")') + self.assertEqual(ast.dump(node), + "Module(body=[Expr(value=Call(func=Name(id='spam', ctx=Load()), " + "args=[Name(id='eggs', ctx=Load()), Str(s='and cheese')], " + "keywords=[], starargs=None, kwargs=None))])" + ) + self.assertEqual(ast.dump(node, annotate_fields=False), + "Module([Expr(Call(Name('spam', Load()), [Name('eggs', Load()), " + "Str('and cheese')], [], None, None))])" + ) + self.assertEqual(ast.dump(node, include_attributes=True), + "Module(body=[Expr(value=Call(func=Name(id='spam', ctx=Load(), " + "lineno=1, col_offset=0), args=[Name(id='eggs', ctx=Load(), " + "lineno=1, col_offset=5), Str(s='and cheese', lineno=1, " + "col_offset=11)], keywords=[], starargs=None, kwargs=None, " + "lineno=1, col_offset=0), lineno=1, col_offset=0)])" + ) + + def test_copy_location(self): + src = ast.parse('1 + 1', mode='eval') + src.body.right = ast.copy_location(ast.Num(2), src.body.right) + self.assertEqual(ast.dump(src, include_attributes=True), + 'Expression(body=BinOp(left=Num(n=1, lineno=1, col_offset=0), ' + 'op=Add(), right=Num(n=2, lineno=1, col_offset=4), lineno=1, ' + 'col_offset=0))' + ) + + def test_fix_missing_locations(self): + src = ast.parse('write("spam")') + src.body.append(ast.Expr(ast.Call(ast.Name('spam', ast.Load()), + [ast.Str('eggs')], [], None, None))) + self.assertEqual(src, ast.fix_missing_locations(src)) + self.assertEqual(ast.dump(src, include_attributes=True), + "Module(body=[Expr(value=Call(func=Name(id='write', ctx=Load(), " + "lineno=1, col_offset=0), args=[Str(s='spam', lineno=1, " + "col_offset=6)], keywords=[], starargs=None, kwargs=None, " + "lineno=1, col_offset=0), lineno=1, col_offset=0), " + "Expr(value=Call(func=Name(id='spam', ctx=Load(), lineno=1, " + "col_offset=0), args=[Str(s='eggs', lineno=1, col_offset=0)], " + "keywords=[], starargs=None, kwargs=None, lineno=1, " + "col_offset=0), lineno=1, col_offset=0)])" + ) + + def test_increment_lineno(self): + src = ast.parse('1 + 1', mode='eval') + self.assertEqual(ast.increment_lineno(src, n=3), src) + self.assertEqual(ast.dump(src, include_attributes=True), + 'Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), ' + 'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, ' + 'col_offset=0))' + ) + + def test_iter_fields(self): + node = ast.parse('foo()', mode='eval') + d = dict(ast.iter_fields(node.body)) + self.assertEqual(d.pop('func').id, 'foo') + self.assertEqual(d, {'keywords': [], 'kwargs': None, + 'args': [], 'starargs': None}) + + def test_iter_child_nodes(self): + node = ast.parse("spam(23, 42, eggs='leek')", mode='eval') + self.assertEqual(len(list(ast.iter_child_nodes(node.body))), 4) + iterator = ast.iter_child_nodes(node.body) + self.assertEqual(next(iterator).id, 'spam') + self.assertEqual(next(iterator).n, 23) + self.assertEqual(next(iterator).n, 42) + self.assertEqual(ast.dump(next(iterator)), + "keyword(arg='eggs', value=Str(s='leek'))" + ) + + def test_get_docstring(self): + node = ast.parse('def foo():\n """line one\n line two"""') + self.assertEqual(ast.get_docstring(node.body[0]), + 'line one\nline two') + + def test_literal_eval(self): + self.assertEqual(ast.literal_eval('[1, 2, 3]'), [1, 2, 3]) + self.assertEqual(ast.literal_eval('{"foo": 42}'), {"foo": 42}) + self.assertEqual(ast.literal_eval('(True, False, None)'), (True, False, None)) + self.assertRaises(ValueError, ast.literal_eval, 'foo()') + + +def test_main(): + test_support.run_unittest(AST_Tests, ASTHelpers_Test) + +def main(): + if __name__ != '__main__': + return + if sys.argv[1:] == ['-g']: + for statements, kind in ((exec_tests, "exec"), (single_tests, "single"), + (eval_tests, "eval")): + print kind+"_results = [" + for s in statements: + print repr(to_tuple(compile(s, "?", kind, 0x400)))+"," + print "]" + print "main()" + raise SystemExit + test_main() + #### EVERYTHING BELOW IS GENERATED ##### exec_results = [ ('Module', [('FunctionDef', (1, 0), 'f', ('arguments', [], None, None, []), [('Pass', (1, 9))], [])]), -('Module', [('ClassDef', (1, 0), 'C', [], [('Pass', (1, 8))],[])]), +('Module', [('ClassDef', (1, 0), 'C', [], [('Pass', (1, 8))], [])]), ('Module', [('FunctionDef', (1, 0), 'f', ('arguments', [], None, None, []), [('Return', (1, 8), ('Num', (1, 15), 1))], [])]), ('Module', [('Delete', (1, 0), [('Name', (1, 4), 'v', ('Del',))])]), ('Module', [('Assign', (1, 0), [('Name', (1, 0), 'v', ('Store',))], ('Num', (1, 4), 1))]), @@ -198,7 +329,7 @@ ('Module', [('While', (1, 0), ('Name', (1, 6), 'v', ('Load',)), [('Pass', (1, 8))], [])]), ('Module', [('If', (1, 0), ('Name', (1, 3), 'v', ('Load',)), [('Pass', (1, 5))], [])]), ('Module', [('Raise', (1, 0), ('Name', (1, 6), 'Exception', ('Load',)), ('Str', (1, 17), 'string'), None)]), -('Module', [('TryExcept', (1, 0), [('Pass', (2, 2))], [('excepthandler', (3, 0), ('Name', (3, 7), 'Exception', ('Load',)), None, [('Pass', (4, 2))], 3, 0)], [])]), +('Module', [('TryExcept', (1, 0), [('Pass', (2, 2))], [('ExceptHandler', (3, 0), ('Name', (3, 7), 'Exception', ('Load',)), None, [('Pass', (4, 2))])], [])]), ('Module', [('TryFinally', (1, 0), [('Pass', (2, 2))], [('Pass', (4, 2))])]), ('Module', [('Assert', (1, 0), ('Name', (1, 7), 'v', ('Load',)), None)]), ('Module', [('Import', (1, 0), [('alias', 'sys', None)])]), @@ -233,4 +364,4 @@ ('Expression', ('Tuple', (1, 0), [('Num', (1, 0), 1), ('Num', (1, 2), 2), ('Num', (1, 4), 3)], ('Load',))), ('Expression', ('Call', (1, 0), ('Attribute', (1, 0), ('Attribute', (1, 0), ('Attribute', (1, 0), ('Name', (1, 0), 'a', ('Load',)), 'b', ('Load',)), 'c', ('Load',)), 'd', ('Load',)), [('Subscript', (1, 8), ('Attribute', (1, 8), ('Name', (1, 8), 'a', ('Load',)), 'b', ('Load',)), ('Slice', ('Num', (1, 12), 1), ('Num', (1, 14), 2), None), ('Load',))], [], None, None)), ] -run_tests() +main() Modified: branches/astwrite/ast/asdl_antlr.py =================================================================== --- branches/astwrite/ast/asdl_antlr.py 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/ast/asdl_antlr.py 2008-11-20 22:22:29 UTC (rev 5594) @@ -57,6 +57,7 @@ print >> self.file, 'package org.python.antlr.ast;' if refersToPythonTree: print >> self.file, 'import org.python.antlr.PythonTree;' + print >> self.file, 'import org.python.antlr.ListWrapper;' print >> self.file, 'import org.antlr.runtime.CommonToken;' print >> self.file, 'import org.antlr.runtime.Token;' if useDataOutput: @@ -291,6 +292,7 @@ def javaConstructorHelper(self, fields, depth): for f in fields: self.emit("this.%s = %s;" % (f.name, f.name), depth+1) + #self.emit("set%s(%s);" % (str(f.name).capitalize(), f.name), depth+1) fparg = self.fieldDef(f) not_simple = True @@ -399,14 +401,18 @@ self.emit("", 0) def visitField(self, field, depth): - self.emit("private %s;" % self.fieldDef(field), depth) - self.emit("public %s get%s() {" % (self.javaType(field), + self.emit("private %s;" % self.fieldDef(field, True), depth) + self.emit("public %s get%s() {" % (self.javaType(field, True), str(field.name).capitalize()), depth) self.emit("return %s;" % field.name, depth+1) self.emit("}", depth) self.emit("public void set%s(%s) {" % (str(field.name).capitalize(), self.fieldDef(field)), depth) - self.emit("this.%s = %s;" % (field.name, field.name), depth+1) + if field.seq: + self.emit("this.%s = new %s(%s);" % (field.name, + self.javaType(field, True), field.name), depth+1) + else: + self.emit("this.%s = %s;" % (field.name, field.name), depth+1) self.emit("}", depth) self.emit("", 0) @@ -420,16 +426,20 @@ 'PythonTree' : 'PythonTree', # also for antlr type } - def fieldDef(self, field): - jtype = self.javaType(field) + def fieldDef(self, field, wrapper=False): + jtype = self.javaType(field, wrapper) name = field.name return "%s %s" % (jtype, name) - def javaType(self, field): + def javaType(self, field, wrapper=False): jtype = str(field.type) jtype = self.bltinnames.get(jtype, jtype + 'Type') if field.seq: - return "java.util.List<%s>" % jtype + if wrapper: + return "ListWrapper<%s>" % jtype + else: + return "java.util.List<%s>" % jtype + return jtype class VisitorVisitor(EmitVisitor): Property changes on: branches/astwrite/src/org/python/antlr ___________________________________________________________________ Added: svn:ignore + .ListWrapper.java.swp Added: branches/astwrite/src/org/python/antlr/ListWrapper.java =================================================================== --- branches/astwrite/src/org/python/antlr/ListWrapper.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ListWrapper.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -0,0 +1,213 @@ +package org.python.antlr; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.ListIterator; +import org.python.core.PyObject; + +public class ListWrapper<E> implements List<E> { + + private List<E> list; + + public ListWrapper(List<E> list) { + this.list = list; + } + + public boolean containsAll(Collection c) { + return containsAll(c); + } + + public boolean removeAll(Collection c) { + return list.removeAll(c); + } + + public boolean retainAll(Collection c) { + return list.retainAll(c); + } + + public boolean add(E e) { + return list.add(e); + } + + public void add(int index, E e) { + list.add(index, e); + } + + public boolean addAll(Collection c) { + return list.addAll(c); + } + + public boolean addAll(int index, Collection c) { + return list.addAll(index, c); + } + + public void clear() { + list.clear(); + } + + public boolean contains(Object elem) { + return list.contains(elem); + } + + public E get(int index) { + return list.get(index); + } + + public int indexOf(Object elem) { + return list.indexOf(elem); + } + + public boolean isEmpty() { + return list.isEmpty(); + } + + public int lastIndexOf(Object elem) { + return list.lastIndexOf(elem); + } + + public E remove(int index) { + return list.remove(index); + } + + public boolean remove(Object o) { + return list.remove(o); + } + + public E set(int index, E element) { + return list.set(index, element); + } + + public int size() { + return list.size(); + } + + public Object[] toArray() { + return list.toArray(); + } + + public Object[] toArray(Object[] a) { + return list.toArray(a); + } + + public Iterator iterator() { + return list.iterator(); + } + + public ListIterator listIterator() { + return list.listIterator(); + } + + public ListIterator listIterator(int index) { + return list.listIterator(index); + } + + public List subList(int fromIndex, int toIndex) { + return list.subList(fromIndex, toIndex); + } + + public ListWrapper __add__(Object o) { + List newList = new ArrayList(); + newList.addAll(list); + newList.add(o); + return new ListWrapper(newList); + } + + public void __iadd__(PyObject o) { + extend(o); + } + + public int __len__() { + return list.size(); + } + + public boolean __contains__(Object o) { + return list.contains(o); + } + + public PyObject __imul__(PyObject o) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public PyObject __iter__() { + throw new UnsupportedOperationException("Not supported yet."); + } + + public PyObject __mul__(PyObject o) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public PyObject __radd__(PyObject o) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public PyObject __rmul__(PyObject o) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public void append(PyObject o) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public int count(PyObject o) { + throw new UnsupportedOperationException("Not supported yet."); + } + + protected void del(int i) { + throw new UnsupportedOperationException("Not supported yet."); + } + + protected void delRange(int start, int stop, int step) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public void extend(PyObject o) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public int index(PyObject o) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public int index(PyObject o, int start) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public int index(PyObject o, int start, int stop) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public void insert(int index, PyObject o) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public PyObject pop() { + throw new UnsupportedOperationException("Not supported yet."); + } + + public PyObject pop(int n) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public void remove(PyObject o) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public void reverse() { + throw new UnsupportedOperationException("Not supported yet."); + } + + public void sort(PyObject compare) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public void sort() { + throw new UnsupportedOperationException("Not supported yet."); + } + + public void sort(PyObject cmp, PyObject key, PyObject reverse) { + throw new UnsupportedOperationException("Not supported yet."); + } + +} Property changes on: branches/astwrite/src/org/python/antlr/ast ___________________________________________________________________ Added: svn:ignore + .comprehensionType.java.swp Modified: branches/astwrite/src/org/python/antlr/ast/Assert.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; Modified: branches/astwrite/src/org/python/antlr/ast/Assign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,18 +1,19 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; import java.io.IOException; public class Assign extends stmtType { - private java.util.List<exprType> targets; - public java.util.List<exprType> getTargets() { + private ListWrapper<exprType> targets; + public ListWrapper<exprType> getTargets() { return targets; } public void setTargets(java.util.List<exprType> targets) { - this.targets = targets; + this.targets = new ListWrapper<exprType>(targets); } private exprType value; Modified: branches/astwrite/src/org/python/antlr/ast/Attribute.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; Modified: branches/astwrite/src/org/python/antlr/ast/AugAssign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; Modified: branches/astwrite/src/org/python/antlr/ast/BinOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; Modified: branches/astwrite/src/org/python/antlr/ast/BoolOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; @@ -15,12 +16,12 @@ this.op = op; } - private java.util.List<exprType> values; - public java.util.List<exprType> getValues() { + private ListWrapper<exprType> values; + public ListWrapper<exprType> getValues() { return values; } public void setValues(java.util.List<exprType> values) { - this.values = values; + this.values = new ListWrapper<exprType>(values); } Modified: branches/astwrite/src/org/python/antlr/ast/Break.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Break.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/Break.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; Modified: branches/astwrite/src/org/python/antlr/ast/Call.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Call.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/Call.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; @@ -15,20 +16,20 @@ this.func = func; } - private java.util.List<exprType> args; - public java.util.List<exprType> getArgs() { + private ListWrapper<exprType> args; + public ListWrapper<exprType> getArgs() { return args; } public void setArgs(java.util.List<exprType> args) { - this.args = args; + this.args = new ListWrapper<exprType>(args); } - private java.util.List<keywordType> keywords; - public java.util.List<keywordType> getKeywords() { + private ListWrapper<keywordType> keywords; + public ListWrapper<keywordType> getKeywords() { return keywords; } public void setKeywords(java.util.List<keywordType> keywords) { - this.keywords = keywords; + this.keywords = new ListWrapper<keywordType>(keywords); } private exprType starargs; Modified: branches/astwrite/src/org/python/antlr/ast/ClassDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; @@ -15,28 +16,28 @@ this.name = name; } - private java.util.List<exprType> bases; - public java.util.List<exprType> getBases() { + private ListWrapper<exprType> bases; + public ListWrapper<exprType> getBases() { return bases; } public void setBases(java.util.List<exprType> bases) { - this.bases = bases; + this.bases = new ListWrapper<exprType>(bases); } - private java.util.List<stmtType> body; - public java.util.List<stmtType> getBody() { + private ListWrapper<stmtType> body; + public ListWrapper<stmtType> getBody() { return body; } public void setBody(java.util.List<stmtType> body) { - this.body = body; + this.body = new ListWrapper<stmtType>(body); } - private java.util.List<exprType> decorators; - public java.util.List<exprType> getDecorators() { + private ListWrapper<exprType> decorators; + public ListWrapper<exprType> getDecorators() { return decorators; } public void setDecorators(java.util.List<exprType> decorators) { - this.decorators = decorators; + this.decorators = new ListWrapper<exprType>(decorators); } Modified: branches/astwrite/src/org/python/antlr/ast/Compare.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; @@ -15,20 +16,20 @@ this.left = left; } - private java.util.List<cmpopType> ops; - public java.util.List<cmpopType> getOps() { + private ListWrapper<cmpopType> ops; + public ListWrapper<cmpopType> getOps() { return ops; } public void setOps(java.util.List<cmpopType> ops) { - this.ops = ops; + this.ops = new ListWrapper<cmpopType>(ops); } - private java.util.List<exprType> comparators; - public java.util.List<exprType> getComparators() { + private ListWrapper<exprType> comparators; + public ListWrapper<exprType> getComparators() { return comparators; } public void setComparators(java.util.List<exprType> comparators) { - this.comparators = comparators; + this.comparators = new ListWrapper<exprType>(comparators); } Modified: branches/astwrite/src/org/python/antlr/ast/Continue.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Continue.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/Continue.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; Modified: branches/astwrite/src/org/python/antlr/ast/Delete.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,18 +1,19 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; import java.io.IOException; public class Delete extends stmtType { - private java.util.List<exprType> targets; - public java.util.List<exprType> getTargets() { + private ListWrapper<exprType> targets; + public ListWrapper<exprType> getTargets() { return targets; } public void setTargets(java.util.List<exprType> targets) { - this.targets = targets; + this.targets = new ListWrapper<exprType>(targets); } Modified: branches/astwrite/src/org/python/antlr/ast/Dict.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,26 +1,27 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; import java.io.IOException; public class Dict extends exprType { - private java.util.List<exprType> keys; - public java.util.List<exprType> getKeys() { + private ListWrapper<exprType> keys; + public ListWrapper<exprType> getKeys() { return keys; } public void setKeys(java.util.List<exprType> keys) { - this.keys = keys; + this.keys = new ListWrapper<exprType>(keys); } - private java.util.List<exprType> values; - public java.util.List<exprType> getValues() { + private ListWrapper<exprType> values; + public ListWrapper<exprType> getValues() { return values; } public void setValues(java.util.List<exprType> values) { - this.values = values; + this.values = new ListWrapper<exprType>(values); } Modified: branches/astwrite/src/org/python/antlr/ast/Ellipsis.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Ellipsis.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/Ellipsis.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; Modified: branches/astwrite/src/org/python/antlr/ast/Exec.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; Modified: branches/astwrite/src/org/python/antlr/ast/Expr.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; Modified: branches/astwrite/src/org/python/antlr/ast/Expression.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Expression.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/Expression.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; Modified: branches/astwrite/src/org/python/antlr/ast/ExtSlice.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,18 +1,19 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; import java.io.IOException; public class ExtSlice extends sliceType { - private java.util.List<sliceType> dims; - public java.util.List<sliceType> getDims() { + private ListWrapper<sliceType> dims; + public ListWrapper<sliceType> getDims() { return dims; } public void setDims(java.util.List<sliceType> dims) { - this.dims = dims; + this.dims = new ListWrapper<sliceType>(dims); } Modified: branches/astwrite/src/org/python/antlr/ast/For.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/For.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/For.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; @@ -23,20 +24,20 @@ this.iter = iter; } - private java.util.List<stmtType> body; - public java.util.List<stmtType> getBody() { + private ListWrapper<stmtType> body; + public ListWrapper<stmtType> getBody() { return body; } public void setBody(java.util.List<stmtType> body) { - this.body = body; + this.body = new ListWrapper<stmtType>(body); } - private java.util.List<stmtType> orelse; - public java.util.List<stmtType> getOrelse() { + private ListWrapper<stmtType> orelse; + public ListWrapper<stmtType> getOrelse() { return orelse; } public void setOrelse(java.util.List<stmtType> orelse) { - this.orelse = orelse; + this.orelse = new ListWrapper<stmtType>(orelse); } Modified: branches/astwrite/src/org/python/antlr/ast/FunctionDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; @@ -23,20 +24,20 @@ this.args = args; } - private java.util.List<stmtType> body; - public java.util.List<stmtType> getBody() { + private ListWrapper<stmtType> body; + public ListWrapper<stmtType> getBody() { return body; } public void setBody(java.util.List<stmtType> body) { - this.body = body; + this.body = new ListWrapper<stmtType>(body); } - private java.util.List<exprType> decorators; - public java.util.List<exprType> getDecorators() { + private ListWrapper<exprType> decorators; + public ListWrapper<exprType> getDecorators() { return decorators; } public void setDecorators(java.util.List<exprType> decorators) { - this.decorators = decorators; + this.decorators = new ListWrapper<exprType>(decorators); } Modified: branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; @@ -15,12 +16,12 @@ this.elt = elt; } - private java.util.List<comprehensionType> generators; - public java.util.List<comprehensionType> getGenerators() { + private ListWrapper<comprehensionType> generators; + public ListWrapper<comprehensionType> getGenerators() { return generators; } public void setGenerators(java.util.List<comprehensionType> generators) { - this.generators = generators; + this.generators = new ListWrapper<comprehensionType>(generators); } Modified: branches/astwrite/src/org/python/antlr/ast/Global.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Global.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/Global.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,18 +1,19 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; import java.io.IOException; public class Global extends stmtType { - private java.util.List<String> names; - public java.util.List<String> getNames() { + private ListWrapper<String> names; + public ListWrapper<String> getNames() { return names; } public void setNames(java.util.List<String> names) { - this.names = names; + this.names = new ListWrapper<String>(names); } Modified: branches/astwrite/src/org/python/antlr/ast/If.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/If.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/If.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; @@ -15,20 +16,20 @@ this.test = test; } - private java.util.List<stmtType> body; - public java.util.List<stmtType> getBody() { + private ListWrapper<stmtType> body; + public ListWrapper<stmtType> getBody() { return body; } public void setBody(java.util.List<stmtType> body) { - this.body = body; + this.body = new ListWrapper<stmtType>(body); } - private java.util.List<stmtType> orelse; - public java.util.List<stmtType> getOrelse() { + private ListWrapper<stmtType> orelse; + public ListWrapper<stmtType> getOrelse() { return orelse; } public void setOrelse(java.util.List<stmtType> orelse) { - this.orelse = orelse; + this.orelse = new ListWrapper<stmtType>(orelse); } Modified: branches/astwrite/src/org/python/antlr/ast/IfExp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/IfExp.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/IfExp.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; Modified: branches/astwrite/src/org/python/antlr/ast/Import.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Import.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/Import.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,18 +1,19 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; import java.io.IOException; public class Import extends stmtType { - private java.util.List<aliasType> names; - public java.util.List<aliasType> getNames() { + private ListWrapper<aliasType> names; + public ListWrapper<aliasType> getNames() { return names; } public void setNames(java.util.List<aliasType> names) { - this.names = names; + this.names = new ListWrapper<aliasType>(names); } Modified: branches/astwrite/src/org/python/antlr/ast/ImportFrom.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ImportFrom.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/ImportFrom.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; @@ -15,12 +16,12 @@ this.module = module; } - private java.util.List<aliasType> names; - public java.util.List<aliasType> getNames() { + private ListWrapper<aliasType> names; + public ListWrapper<aliasType> getNames() { return names; } public void setNames(java.util.List<aliasType> names) { - this.names = names; + this.names = new ListWrapper<aliasType>(names); } private int level; Modified: branches/astwrite/src/org/python/antlr/ast/Index.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Index.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/Index.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; Modified: branches/astwrite/src/org/python/antlr/ast/Interactive.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Interactive.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/Interactive.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,18 +1,19 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; import java.io.IOException; public class Interactive extends modType { - private java.util.List<stmtType> body; - public java.util.List<stmtType> getBody() { + private ListWrapper<stmtType> body; + public ListWrapper<stmtType> getBody() { return body; } public void setBody(java.util.List<stmtType> body) { - this.body = body; + this.body = new ListWrapper<stmtType>(body); } Modified: branches/astwrite/src/org/python/antlr/ast/Lambda.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Lambda.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/Lambda.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; Modified: branches/astwrite/src/org/python/antlr/ast/List.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/List.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/List.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,18 +1,19 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; import java.io.IOException; public class List extends exprType implements Context { - private java.util.List<exprType> elts; - public java.util.List<exprType> getElts() { + private ListWrapper<exprType> elts; + public ListWrapper<exprType> getElts() { return elts; } public void setElts(java.util.List<exprType> elts) { - this.elts = elts; + this.elts = new ListWrapper<exprType>(elts); } private expr_contextType ctx; Modified: branches/astwrite/src/org/python/antlr/ast/ListComp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ListComp.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/ListComp.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; @@ -15,12 +16,12 @@ this.elt = elt; } - private java.util.List<comprehensionType> generators; - public java.util.List<comprehensionType> getGenerators() { + private ListWrapper<comprehensionType> generators; + public ListWrapper<comprehensionType> getGenerators() { return generators; } public void setGenerators(java.util.List<comprehensionType> generators) { - this.generators = generators; + this.generators = new ListWrapper<comprehensionType>(generators); } Modified: branches/astwrite/src/org/python/antlr/ast/Module.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Module.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/Module.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,18 +1,19 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; import java.io.IOException; public class Module extends modType { - private java.util.List<stmtType> body; - public java.util.List<stmtType> getBody() { + private ListWrapper<stmtType> body; + public ListWrapper<stmtType> getBody() { return body; } public void setBody(java.util.List<stmtType> body) { - this.body = body; + this.body = new ListWrapper<stmtType>(body); } Modified: branches/astwrite/src/org/python/antlr/ast/Name.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Name.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/Name.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; Modified: branches/astwrite/src/org/python/antlr/ast/Num.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Num.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/Num.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; Modified: branches/astwrite/src/org/python/antlr/ast/Pass.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Pass.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/Pass.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; Modified: branches/astwrite/src/org/python/antlr/ast/Print.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Print.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/Print.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; @@ -15,12 +16,12 @@ this.dest = dest; } - private java.util.List<exprType> values; - public java.util.List<exprType> getValues() { + private ListWrapper<exprType> values; + public ListWrapper<exprType> getValues() { return values; } public void setValues(java.util.List<exprType> values) { - this.values = values; + this.values = new ListWrapper<exprType>(values); } private boolean nl; Modified: branches/astwrite/src/org/python/antlr/ast/Raise.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Raise.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/Raise.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; Modified: branches/astwrite/src/org/python/antlr/ast/Repr.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Repr.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/Repr.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; Modified: branches/astwrite/src/org/python/antlr/ast/Return.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Return.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/Return.java 2008-11-20 22:22:29 UTC (rev 5594) @@ -1,6 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import org.python.antlr.PythonTree; +import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; Modified: branches/astwrite/src/org/python/antlr/ast/Slice.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Slice.java 2008-11-20 18:52:08 UTC (rev 5593) +++ branches/astwrite/src/org/python/antlr/ast/Slice.java 2... [truncated message content] |
From: <fwi...@us...> - 2008-11-20 23:44:14
|
Revision: 5595 http://jython.svn.sourceforge.net/jython/?rev=5595&view=rev Author: fwierzbicki Date: 2008-11-20 23:44:08 +0000 (Thu, 20 Nov 2008) Log Message: ----------- Oops missed a spot for wrapping with ListWrapper. Modified Paths: -------------- branches/astwrite/ast/asdl_antlr.py branches/astwrite/src/org/python/antlr/ast/Assign.java branches/astwrite/src/org/python/antlr/ast/BoolOp.java branches/astwrite/src/org/python/antlr/ast/Call.java branches/astwrite/src/org/python/antlr/ast/ClassDef.java branches/astwrite/src/org/python/antlr/ast/Compare.java branches/astwrite/src/org/python/antlr/ast/Delete.java branches/astwrite/src/org/python/antlr/ast/Dict.java branches/astwrite/src/org/python/antlr/ast/ExtSlice.java branches/astwrite/src/org/python/antlr/ast/For.java branches/astwrite/src/org/python/antlr/ast/FunctionDef.java branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java branches/astwrite/src/org/python/antlr/ast/Global.java branches/astwrite/src/org/python/antlr/ast/If.java branches/astwrite/src/org/python/antlr/ast/Import.java branches/astwrite/src/org/python/antlr/ast/ImportFrom.java branches/astwrite/src/org/python/antlr/ast/Interactive.java branches/astwrite/src/org/python/antlr/ast/List.java branches/astwrite/src/org/python/antlr/ast/ListComp.java branches/astwrite/src/org/python/antlr/ast/Module.java branches/astwrite/src/org/python/antlr/ast/Print.java branches/astwrite/src/org/python/antlr/ast/Suite.java branches/astwrite/src/org/python/antlr/ast/TryExcept.java branches/astwrite/src/org/python/antlr/ast/TryFinally.java branches/astwrite/src/org/python/antlr/ast/Tuple.java branches/astwrite/src/org/python/antlr/ast/While.java branches/astwrite/src/org/python/antlr/ast/With.java branches/astwrite/src/org/python/antlr/ast/argumentsType.java branches/astwrite/src/org/python/antlr/ast/comprehensionType.java branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java Modified: branches/astwrite/ast/asdl_antlr.py =================================================================== --- branches/astwrite/ast/asdl_antlr.py 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/ast/asdl_antlr.py 2008-11-20 23:44:08 UTC (rev 5595) @@ -291,8 +291,15 @@ def javaConstructorHelper(self, fields, depth): for f in fields: - self.emit("this.%s = %s;" % (f.name, f.name), depth+1) - #self.emit("set%s(%s);" % (str(f.name).capitalize(), f.name), depth+1) + #XXX: old version: + #self.emit("this.%s = %s;" % (f.name, f.name), depth+1) + #XXX: code cut and pasted from visitField + if f.seq: + self.emit("this.%s = new %s(%s);" % (f.name, + self.javaType(f, True), f.name), depth+1) + else: + self.emit("this.%s = %s;" % (f.name, f.name), depth+1) + fparg = self.fieldDef(f) not_simple = True Modified: branches/astwrite/src/org/python/antlr/ast/Assign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-11-20 23:44:08 UTC (rev 5595) @@ -29,7 +29,7 @@ public String[] get_fields() { return fields; } public Assign(java.util.List<exprType> targets, exprType value) { - this.targets = targets; + this.targets = new ListWrapper<exprType>(targets); if (targets != null) { for(PythonTree t : targets) { addChild(t); @@ -42,7 +42,7 @@ public Assign(Token token, java.util.List<exprType> targets, exprType value) { super(token); - this.targets = targets; + this.targets = new ListWrapper<exprType>(targets); if (targets != null) { for(PythonTree t : targets) { addChild(t); @@ -55,7 +55,7 @@ public Assign(int ttype, Token token, java.util.List<exprType> targets, exprType value) { super(ttype, token); - this.targets = targets; + this.targets = new ListWrapper<exprType>(targets); if (targets != null) { for(PythonTree t : targets) { addChild(t); @@ -68,7 +68,7 @@ public Assign(PythonTree tree, java.util.List<exprType> targets, exprType value) { super(tree); - this.targets = targets; + this.targets = new ListWrapper<exprType>(targets); if (targets != null) { for(PythonTree t : targets) { addChild(t); Modified: branches/astwrite/src/org/python/antlr/ast/BoolOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-11-20 23:44:08 UTC (rev 5595) @@ -30,7 +30,7 @@ public BoolOp(boolopType op, java.util.List<exprType> values) { this.op = op; - this.values = values; + this.values = new ListWrapper<exprType>(values); if (values != null) { for(PythonTree t : values) { addChild(t); @@ -41,7 +41,7 @@ public BoolOp(Token token, boolopType op, java.util.List<exprType> values) { super(token); this.op = op; - this.values = values; + this.values = new ListWrapper<exprType>(values); if (values != null) { for(PythonTree t : values) { addChild(t); @@ -53,7 +53,7 @@ java.util.List<exprType> values) { super(ttype, token); this.op = op; - this.values = values; + this.values = new ListWrapper<exprType>(values); if (values != null) { for(PythonTree t : values) { addChild(t); @@ -65,7 +65,7 @@ values) { super(tree); this.op = op; - this.values = values; + this.values = new ListWrapper<exprType>(values); if (values != null) { for(PythonTree t : values) { addChild(t); Modified: branches/astwrite/src/org/python/antlr/ast/Call.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Call.java 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/src/org/python/antlr/ast/Call.java 2008-11-20 23:44:08 UTC (rev 5595) @@ -58,13 +58,13 @@ java.util.List<keywordType> keywords, exprType starargs, exprType kwargs) { this.func = func; addChild(func); - this.args = args; + this.args = new ListWrapper<exprType>(args); if (args != null) { for(PythonTree t : args) { addChild(t); } } - this.keywords = keywords; + this.keywords = new ListWrapper<keywordType>(keywords); if (keywords != null) { for(PythonTree t : keywords) { addChild(t); @@ -81,13 +81,13 @@ super(token); this.func = func; addChild(func); - this.args = args; + this.args = new ListWrapper<exprType>(args); if (args != null) { for(PythonTree t : args) { addChild(t); } } - this.keywords = keywords; + this.keywords = new ListWrapper<keywordType>(keywords); if (keywords != null) { for(PythonTree t : keywords) { addChild(t); @@ -105,13 +105,13 @@ super(ttype, token); this.func = func; addChild(func); - this.args = args; + this.args = new ListWrapper<exprType>(args); if (args != null) { for(PythonTree t : args) { addChild(t); } } - this.keywords = keywords; + this.keywords = new ListWrapper<keywordType>(keywords); if (keywords != null) { for(PythonTree t : keywords) { addChild(t); @@ -128,13 +128,13 @@ super(tree); this.func = func; addChild(func); - this.args = args; + this.args = new ListWrapper<exprType>(args); if (args != null) { for(PythonTree t : args) { addChild(t); } } - this.keywords = keywords; + this.keywords = new ListWrapper<keywordType>(keywords); if (keywords != null) { for(PythonTree t : keywords) { addChild(t); Modified: branches/astwrite/src/org/python/antlr/ast/ClassDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-11-20 23:44:08 UTC (rev 5595) @@ -48,19 +48,19 @@ public ClassDef(String name, java.util.List<exprType> bases, java.util.List<stmtType> body, java.util.List<exprType> decorators) { this.name = name; - this.bases = bases; + this.bases = new ListWrapper<exprType>(bases); if (bases != null) { for(PythonTree t : bases) { addChild(t); } } - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); } } - this.decorators = decorators; + this.decorators = new ListWrapper<exprType>(decorators); if (decorators != null) { for(PythonTree t : decorators) { addChild(t); @@ -72,19 +72,19 @@ java.util.List<stmtType> body, java.util.List<exprType> decorators) { super(token); this.name = name; - this.bases = bases; + this.bases = new ListWrapper<exprType>(bases); if (bases != null) { for(PythonTree t : bases) { addChild(t); } } - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); } } - this.decorators = decorators; + this.decorators = new ListWrapper<exprType>(decorators); if (decorators != null) { for(PythonTree t : decorators) { addChild(t); @@ -97,19 +97,19 @@ java.util.List<exprType> decorators) { super(ttype, token); this.name = name; - this.bases = bases; + this.bases = new ListWrapper<exprType>(bases); if (bases != null) { for(PythonTree t : bases) { addChild(t); } } - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); } } - this.decorators = decorators; + this.decorators = new ListWrapper<exprType>(decorators); if (decorators != null) { for(PythonTree t : decorators) { addChild(t); @@ -121,19 +121,19 @@ bases, java.util.List<stmtType> body, java.util.List<exprType> decorators) { super(tree); this.name = name; - this.bases = bases; + this.bases = new ListWrapper<exprType>(bases); if (bases != null) { for(PythonTree t : bases) { addChild(t); } } - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); } } - this.decorators = decorators; + this.decorators = new ListWrapper<exprType>(decorators); if (decorators != null) { for(PythonTree t : decorators) { addChild(t); Modified: branches/astwrite/src/org/python/antlr/ast/Compare.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-11-20 23:44:08 UTC (rev 5595) @@ -41,8 +41,8 @@ java.util.List<exprType> comparators) { this.left = left; addChild(left); - this.ops = ops; - this.comparators = comparators; + this.ops = new ListWrapper<cmpopType>(ops); + this.comparators = new ListWrapper<exprType>(comparators); if (comparators != null) { for(PythonTree t : comparators) { addChild(t); @@ -55,8 +55,8 @@ super(token); this.left = left; addChild(left); - this.ops = ops; - this.comparators = comparators; + this.ops = new ListWrapper<cmpopType>(ops); + this.comparators = new ListWrapper<exprType>(comparators); if (comparators != null) { for(PythonTree t : comparators) { addChild(t); @@ -69,8 +69,8 @@ super(ttype, token); this.left = left; addChild(left); - this.ops = ops; - this.comparators = comparators; + this.ops = new ListWrapper<cmpopType>(ops); + this.comparators = new ListWrapper<exprType>(comparators); if (comparators != null) { for(PythonTree t : comparators) { addChild(t); @@ -83,8 +83,8 @@ super(tree); this.left = left; addChild(left); - this.ops = ops; - this.comparators = comparators; + this.ops = new ListWrapper<cmpopType>(ops); + this.comparators = new ListWrapper<exprType>(comparators); if (comparators != null) { for(PythonTree t : comparators) { addChild(t); Modified: branches/astwrite/src/org/python/antlr/ast/Delete.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-11-20 23:44:08 UTC (rev 5595) @@ -21,7 +21,7 @@ public String[] get_fields() { return fields; } public Delete(java.util.List<exprType> targets) { - this.targets = targets; + this.targets = new ListWrapper<exprType>(targets); if (targets != null) { for(PythonTree t : targets) { addChild(t); @@ -31,7 +31,7 @@ public Delete(Token token, java.util.List<exprType> targets) { super(token); - this.targets = targets; + this.targets = new ListWrapper<exprType>(targets); if (targets != null) { for(PythonTree t : targets) { addChild(t); @@ -41,7 +41,7 @@ public Delete(int ttype, Token token, java.util.List<exprType> targets) { super(ttype, token); - this.targets = targets; + this.targets = new ListWrapper<exprType>(targets); if (targets != null) { for(PythonTree t : targets) { addChild(t); @@ -51,7 +51,7 @@ public Delete(PythonTree tree, java.util.List<exprType> targets) { super(tree); - this.targets = targets; + this.targets = new ListWrapper<exprType>(targets); if (targets != null) { for(PythonTree t : targets) { addChild(t); Modified: branches/astwrite/src/org/python/antlr/ast/Dict.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-11-20 23:44:08 UTC (rev 5595) @@ -30,13 +30,13 @@ public Dict(java.util.List<exprType> keys, java.util.List<exprType> values) { - this.keys = keys; + this.keys = new ListWrapper<exprType>(keys); if (keys != null) { for(PythonTree t : keys) { addChild(t); } } - this.values = values; + this.values = new ListWrapper<exprType>(values); if (values != null) { for(PythonTree t : values) { addChild(t); @@ -47,13 +47,13 @@ public Dict(Token token, java.util.List<exprType> keys, java.util.List<exprType> values) { super(token); - this.keys = keys; + this.keys = new ListWrapper<exprType>(keys); if (keys != null) { for(PythonTree t : keys) { addChild(t); } } - this.values = values; + this.values = new ListWrapper<exprType>(values); if (values != null) { for(PythonTree t : values) { addChild(t); @@ -64,13 +64,13 @@ public Dict(int ttype, Token token, java.util.List<exprType> keys, java.util.List<exprType> values) { super(ttype, token); - this.keys = keys; + this.keys = new ListWrapper<exprType>(keys); if (keys != null) { for(PythonTree t : keys) { addChild(t); } } - this.values = values; + this.values = new ListWrapper<exprType>(values); if (values != null) { for(PythonTree t : values) { addChild(t); @@ -81,13 +81,13 @@ public Dict(PythonTree tree, java.util.List<exprType> keys, java.util.List<exprType> values) { super(tree); - this.keys = keys; + this.keys = new ListWrapper<exprType>(keys); if (keys != null) { for(PythonTree t : keys) { addChild(t); } } - this.values = values; + this.values = new ListWrapper<exprType>(values); if (values != null) { for(PythonTree t : values) { addChild(t); Modified: branches/astwrite/src/org/python/antlr/ast/ExtSlice.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-11-20 23:44:08 UTC (rev 5595) @@ -21,7 +21,7 @@ public String[] get_fields() { return fields; } public ExtSlice(java.util.List<sliceType> dims) { - this.dims = dims; + this.dims = new ListWrapper<sliceType>(dims); if (dims != null) { for(PythonTree t : dims) { addChild(t); @@ -31,7 +31,7 @@ public ExtSlice(Token token, java.util.List<sliceType> dims) { super(token); - this.dims = dims; + this.dims = new ListWrapper<sliceType>(dims); if (dims != null) { for(PythonTree t : dims) { addChild(t); @@ -41,7 +41,7 @@ public ExtSlice(int ttype, Token token, java.util.List<sliceType> dims) { super(ttype, token); - this.dims = dims; + this.dims = new ListWrapper<sliceType>(dims); if (dims != null) { for(PythonTree t : dims) { addChild(t); @@ -51,7 +51,7 @@ public ExtSlice(PythonTree tree, java.util.List<sliceType> dims) { super(tree); - this.dims = dims; + this.dims = new ListWrapper<sliceType>(dims); if (dims != null) { for(PythonTree t : dims) { addChild(t); Modified: branches/astwrite/src/org/python/antlr/ast/For.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/For.java 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/src/org/python/antlr/ast/For.java 2008-11-20 23:44:08 UTC (rev 5595) @@ -51,13 +51,13 @@ addChild(target); this.iter = iter; addChild(iter); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); } } - this.orelse = orelse; + this.orelse = new ListWrapper<stmtType>(orelse); if (orelse != null) { for(PythonTree t : orelse) { addChild(t); @@ -72,13 +72,13 @@ addChild(target); this.iter = iter; addChild(iter); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); } } - this.orelse = orelse; + this.orelse = new ListWrapper<stmtType>(orelse); if (orelse != null) { for(PythonTree t : orelse) { addChild(t); @@ -93,13 +93,13 @@ addChild(target); this.iter = iter; addChild(iter); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); } } - this.orelse = orelse; + this.orelse = new ListWrapper<stmtType>(orelse); if (orelse != null) { for(PythonTree t : orelse) { addChild(t); @@ -114,13 +114,13 @@ addChild(target); this.iter = iter; addChild(iter); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); } } - this.orelse = orelse; + this.orelse = new ListWrapper<stmtType>(orelse); if (orelse != null) { for(PythonTree t : orelse) { addChild(t); Modified: branches/astwrite/src/org/python/antlr/ast/FunctionDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-11-20 23:44:08 UTC (rev 5595) @@ -49,13 +49,13 @@ java.util.List<stmtType> body, java.util.List<exprType> decorators) { this.name = name; this.args = args; - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); } } - this.decorators = decorators; + this.decorators = new ListWrapper<exprType>(decorators); if (decorators != null) { for(PythonTree t : decorators) { addChild(t); @@ -68,13 +68,13 @@ super(token); this.name = name; this.args = args; - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); } } - this.decorators = decorators; + this.decorators = new ListWrapper<exprType>(decorators); if (decorators != null) { for(PythonTree t : decorators) { addChild(t); @@ -87,13 +87,13 @@ super(ttype, token); this.name = name; this.args = args; - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); } } - this.decorators = decorators; + this.decorators = new ListWrapper<exprType>(decorators); if (decorators != null) { for(PythonTree t : decorators) { addChild(t); @@ -106,13 +106,13 @@ super(tree); this.name = name; this.args = args; - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); } } - this.decorators = decorators; + this.decorators = new ListWrapper<exprType>(decorators); if (decorators != null) { for(PythonTree t : decorators) { addChild(t); Modified: branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-11-20 23:44:08 UTC (rev 5595) @@ -32,7 +32,7 @@ generators) { this.elt = elt; addChild(elt); - this.generators = generators; + this.generators = new ListWrapper<comprehensionType>(generators); if (generators != null) { for(PythonTree t : generators) { addChild(t); @@ -45,7 +45,7 @@ super(token); this.elt = elt; addChild(elt); - this.generators = generators; + this.generators = new ListWrapper<comprehensionType>(generators); if (generators != null) { for(PythonTree t : generators) { addChild(t); @@ -58,7 +58,7 @@ super(ttype, token); this.elt = elt; addChild(elt); - this.generators = generators; + this.generators = new ListWrapper<comprehensionType>(generators); if (generators != null) { for(PythonTree t : generators) { addChild(t); @@ -71,7 +71,7 @@ super(tree); this.elt = elt; addChild(elt); - this.generators = generators; + this.generators = new ListWrapper<comprehensionType>(generators); if (generators != null) { for(PythonTree t : generators) { addChild(t); Modified: branches/astwrite/src/org/python/antlr/ast/Global.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Global.java 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/src/org/python/antlr/ast/Global.java 2008-11-20 23:44:08 UTC (rev 5595) @@ -21,22 +21,22 @@ public String[] get_fields() { return fields; } public Global(java.util.List<String> names) { - this.names = names; + this.names = new ListWrapper<String>(names); } public Global(Token token, java.util.List<String> names) { super(token); - this.names = names; + this.names = new ListWrapper<String>(names); } public Global(int ttype, Token token, java.util.List<String> names) { super(ttype, token); - this.names = names; + this.names = new ListWrapper<String>(names); } public Global(PythonTree tree, java.util.List<String> names) { super(tree); - this.names = names; + this.names = new ListWrapper<String>(names); } public String toString() { Modified: branches/astwrite/src/org/python/antlr/ast/If.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/If.java 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/src/org/python/antlr/ast/If.java 2008-11-20 23:44:08 UTC (rev 5595) @@ -41,13 +41,13 @@ java.util.List<stmtType> orelse) { this.test = test; addChild(test); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); } } - this.orelse = orelse; + this.orelse = new ListWrapper<stmtType>(orelse); if (orelse != null) { for(PythonTree t : orelse) { addChild(t); @@ -60,13 +60,13 @@ super(token); this.test = test; addChild(test); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); } } - this.orelse = orelse; + this.orelse = new ListWrapper<stmtType>(orelse); if (orelse != null) { for(PythonTree t : orelse) { addChild(t); @@ -79,13 +79,13 @@ super(ttype, token); this.test = test; addChild(test); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); } } - this.orelse = orelse; + this.orelse = new ListWrapper<stmtType>(orelse); if (orelse != null) { for(PythonTree t : orelse) { addChild(t); @@ -98,13 +98,13 @@ super(tree); this.test = test; addChild(test); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); } } - this.orelse = orelse; + this.orelse = new ListWrapper<stmtType>(orelse); if (orelse != null) { for(PythonTree t : orelse) { addChild(t); Modified: branches/astwrite/src/org/python/antlr/ast/Import.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Import.java 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/src/org/python/antlr/ast/Import.java 2008-11-20 23:44:08 UTC (rev 5595) @@ -21,7 +21,7 @@ public String[] get_fields() { return fields; } public Import(java.util.List<aliasType> names) { - this.names = names; + this.names = new ListWrapper<aliasType>(names); if (names != null) { for(PythonTree t : names) { addChild(t); @@ -31,7 +31,7 @@ public Import(Token token, java.util.List<aliasType> names) { super(token); - this.names = names; + this.names = new ListWrapper<aliasType>(names); if (names != null) { for(PythonTree t : names) { addChild(t); @@ -41,7 +41,7 @@ public Import(int ttype, Token token, java.util.List<aliasType> names) { super(ttype, token); - this.names = names; + this.names = new ListWrapper<aliasType>(names); if (names != null) { for(PythonTree t : names) { addChild(t); @@ -51,7 +51,7 @@ public Import(PythonTree tree, java.util.List<aliasType> names) { super(tree); - this.names = names; + this.names = new ListWrapper<aliasType>(names); if (names != null) { for(PythonTree t : names) { addChild(t); Modified: branches/astwrite/src/org/python/antlr/ast/ImportFrom.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ImportFrom.java 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/src/org/python/antlr/ast/ImportFrom.java 2008-11-20 23:44:08 UTC (rev 5595) @@ -40,7 +40,7 @@ public ImportFrom(String module, java.util.List<aliasType> names, int level) { this.module = module; - this.names = names; + this.names = new ListWrapper<aliasType>(names); if (names != null) { for(PythonTree t : names) { addChild(t); @@ -53,7 +53,7 @@ names, int level) { super(token); this.module = module; - this.names = names; + this.names = new ListWrapper<aliasType>(names); if (names != null) { for(PythonTree t : names) { addChild(t); @@ -66,7 +66,7 @@ java.util.List<aliasType> names, int level) { super(ttype, token); this.module = module; - this.names = names; + this.names = new ListWrapper<aliasType>(names); if (names != null) { for(PythonTree t : names) { addChild(t); @@ -79,7 +79,7 @@ names, int level) { super(tree); this.module = module; - this.names = names; + this.names = new ListWrapper<aliasType>(names); if (names != null) { for(PythonTree t : names) { addChild(t); Modified: branches/astwrite/src/org/python/antlr/ast/Interactive.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Interactive.java 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/src/org/python/antlr/ast/Interactive.java 2008-11-20 23:44:08 UTC (rev 5595) @@ -21,7 +21,7 @@ public String[] get_fields() { return fields; } public Interactive(java.util.List<stmtType> body) { - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); @@ -31,7 +31,7 @@ public Interactive(Token token, java.util.List<stmtType> body) { super(token); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); @@ -41,7 +41,7 @@ public Interactive(int ttype, Token token, java.util.List<stmtType> body) { super(ttype, token); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); @@ -51,7 +51,7 @@ public Interactive(PythonTree tree, java.util.List<stmtType> body) { super(tree); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); Modified: branches/astwrite/src/org/python/antlr/ast/List.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/List.java 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/src/org/python/antlr/ast/List.java 2008-11-20 23:44:08 UTC (rev 5595) @@ -29,7 +29,7 @@ public String[] get_fields() { return fields; } public List(java.util.List<exprType> elts, expr_contextType ctx) { - this.elts = elts; + this.elts = new ListWrapper<exprType>(elts); if (elts != null) { for(PythonTree t : elts) { addChild(t); @@ -41,7 +41,7 @@ public List(Token token, java.util.List<exprType> elts, expr_contextType ctx) { super(token); - this.elts = elts; + this.elts = new ListWrapper<exprType>(elts); if (elts != null) { for(PythonTree t : elts) { addChild(t); @@ -53,7 +53,7 @@ public List(int ttype, Token token, java.util.List<exprType> elts, expr_contextType ctx) { super(ttype, token); - this.elts = elts; + this.elts = new ListWrapper<exprType>(elts); if (elts != null) { for(PythonTree t : elts) { addChild(t); @@ -65,7 +65,7 @@ public List(PythonTree tree, java.util.List<exprType> elts, expr_contextType ctx) { super(tree); - this.elts = elts; + this.elts = new ListWrapper<exprType>(elts); if (elts != null) { for(PythonTree t : elts) { addChild(t); Modified: branches/astwrite/src/org/python/antlr/ast/ListComp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ListComp.java 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/src/org/python/antlr/ast/ListComp.java 2008-11-20 23:44:08 UTC (rev 5595) @@ -32,7 +32,7 @@ { this.elt = elt; addChild(elt); - this.generators = generators; + this.generators = new ListWrapper<comprehensionType>(generators); if (generators != null) { for(PythonTree t : generators) { addChild(t); @@ -45,7 +45,7 @@ super(token); this.elt = elt; addChild(elt); - this.generators = generators; + this.generators = new ListWrapper<comprehensionType>(generators); if (generators != null) { for(PythonTree t : generators) { addChild(t); @@ -58,7 +58,7 @@ super(ttype, token); this.elt = elt; addChild(elt); - this.generators = generators; + this.generators = new ListWrapper<comprehensionType>(generators); if (generators != null) { for(PythonTree t : generators) { addChild(t); @@ -71,7 +71,7 @@ super(tree); this.elt = elt; addChild(elt); - this.generators = generators; + this.generators = new ListWrapper<comprehensionType>(generators); if (generators != null) { for(PythonTree t : generators) { addChild(t); Modified: branches/astwrite/src/org/python/antlr/ast/Module.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Module.java 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/src/org/python/antlr/ast/Module.java 2008-11-20 23:44:08 UTC (rev 5595) @@ -21,7 +21,7 @@ public String[] get_fields() { return fields; } public Module(java.util.List<stmtType> body) { - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); @@ -31,7 +31,7 @@ public Module(Token token, java.util.List<stmtType> body) { super(token); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); @@ -41,7 +41,7 @@ public Module(int ttype, Token token, java.util.List<stmtType> body) { super(ttype, token); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); @@ -51,7 +51,7 @@ public Module(PythonTree tree, java.util.List<stmtType> body) { super(tree); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); Modified: branches/astwrite/src/org/python/antlr/ast/Print.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Print.java 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/src/org/python/antlr/ast/Print.java 2008-11-20 23:44:08 UTC (rev 5595) @@ -40,7 +40,7 @@ public Print(exprType dest, java.util.List<exprType> values, boolean nl) { this.dest = dest; addChild(dest); - this.values = values; + this.values = new ListWrapper<exprType>(values); if (values != null) { for(PythonTree t : values) { addChild(t); @@ -54,7 +54,7 @@ super(token); this.dest = dest; addChild(dest); - this.values = values; + this.values = new ListWrapper<exprType>(values); if (values != null) { for(PythonTree t : values) { addChild(t); @@ -68,7 +68,7 @@ super(ttype, token); this.dest = dest; addChild(dest); - this.values = values; + this.values = new ListWrapper<exprType>(values); if (values != null) { for(PythonTree t : values) { addChild(t); @@ -82,7 +82,7 @@ super(tree); this.dest = dest; addChild(dest); - this.values = values; + this.values = new ListWrapper<exprType>(values); if (values != null) { for(PythonTree t : values) { addChild(t); Modified: branches/astwrite/src/org/python/antlr/ast/Suite.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Suite.java 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/src/org/python/antlr/ast/Suite.java 2008-11-20 23:44:08 UTC (rev 5595) @@ -21,7 +21,7 @@ public String[] get_fields() { return fields; } public Suite(java.util.List<stmtType> body) { - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); @@ -31,7 +31,7 @@ public Suite(Token token, java.util.List<stmtType> body) { super(token); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); @@ -41,7 +41,7 @@ public Suite(int ttype, Token token, java.util.List<stmtType> body) { super(ttype, token); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); @@ -51,7 +51,7 @@ public Suite(PythonTree tree, java.util.List<stmtType> body) { super(tree); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); Modified: branches/astwrite/src/org/python/antlr/ast/TryExcept.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/TryExcept.java 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/src/org/python/antlr/ast/TryExcept.java 2008-11-20 23:44:08 UTC (rev 5595) @@ -40,19 +40,19 @@ public TryExcept(java.util.List<stmtType> body, java.util.List<excepthandlerType> handlers, java.util.List<stmtType> orelse) { - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); } } - this.handlers = handlers; + this.handlers = new ListWrapper<excepthandlerType>(handlers); if (handlers != null) { for(PythonTree t : handlers) { addChild(t); } } - this.orelse = orelse; + this.orelse = new ListWrapper<stmtType>(orelse); if (orelse != null) { for(PythonTree t : orelse) { addChild(t); @@ -64,19 +64,19 @@ java.util.List<excepthandlerType> handlers, java.util.List<stmtType> orelse) { super(token); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); } } - this.handlers = handlers; + this.handlers = new ListWrapper<excepthandlerType>(handlers); if (handlers != null) { for(PythonTree t : handlers) { addChild(t); } } - this.orelse = orelse; + this.orelse = new ListWrapper<stmtType>(orelse); if (orelse != null) { for(PythonTree t : orelse) { addChild(t); @@ -88,19 +88,19 @@ java.util.List<excepthandlerType> handlers, java.util.List<stmtType> orelse) { super(ttype, token); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); } } - this.handlers = handlers; + this.handlers = new ListWrapper<excepthandlerType>(handlers); if (handlers != null) { for(PythonTree t : handlers) { addChild(t); } } - this.orelse = orelse; + this.orelse = new ListWrapper<stmtType>(orelse); if (orelse != null) { for(PythonTree t : orelse) { addChild(t); @@ -112,19 +112,19 @@ java.util.List<excepthandlerType> handlers, java.util.List<stmtType> orelse) { super(tree); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); } } - this.handlers = handlers; + this.handlers = new ListWrapper<excepthandlerType>(handlers); if (handlers != null) { for(PythonTree t : handlers) { addChild(t); } } - this.orelse = orelse; + this.orelse = new ListWrapper<stmtType>(orelse); if (orelse != null) { for(PythonTree t : orelse) { addChild(t); Modified: branches/astwrite/src/org/python/antlr/ast/TryFinally.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/TryFinally.java 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/src/org/python/antlr/ast/TryFinally.java 2008-11-20 23:44:08 UTC (rev 5595) @@ -30,13 +30,13 @@ public TryFinally(java.util.List<stmtType> body, java.util.List<stmtType> finalbody) { - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); } } - this.finalbody = finalbody; + this.finalbody = new ListWrapper<stmtType>(finalbody); if (finalbody != null) { for(PythonTree t : finalbody) { addChild(t); @@ -47,13 +47,13 @@ public TryFinally(Token token, java.util.List<stmtType> body, java.util.List<stmtType> finalbody) { super(token); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); } } - this.finalbody = finalbody; + this.finalbody = new ListWrapper<stmtType>(finalbody); if (finalbody != null) { for(PythonTree t : finalbody) { addChild(t); @@ -64,13 +64,13 @@ public TryFinally(int ttype, Token token, java.util.List<stmtType> body, java.util.List<stmtType> finalbody) { super(ttype, token); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); } } - this.finalbody = finalbody; + this.finalbody = new ListWrapper<stmtType>(finalbody); if (finalbody != null) { for(PythonTree t : finalbody) { addChild(t); @@ -81,13 +81,13 @@ public TryFinally(PythonTree tree, java.util.List<stmtType> body, java.util.List<stmtType> finalbody) { super(tree); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); } } - this.finalbody = finalbody; + this.finalbody = new ListWrapper<stmtType>(finalbody); if (finalbody != null) { for(PythonTree t : finalbody) { addChild(t); Modified: branches/astwrite/src/org/python/antlr/ast/Tuple.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Tuple.java 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/src/org/python/antlr/ast/Tuple.java 2008-11-20 23:44:08 UTC (rev 5595) @@ -29,7 +29,7 @@ public String[] get_fields() { return fields; } public Tuple(java.util.List<exprType> elts, expr_contextType ctx) { - this.elts = elts; + this.elts = new ListWrapper<exprType>(elts); if (elts != null) { for(PythonTree t : elts) { addChild(t); @@ -41,7 +41,7 @@ public Tuple(Token token, java.util.List<exprType> elts, expr_contextType ctx) { super(token); - this.elts = elts; + this.elts = new ListWrapper<exprType>(elts); if (elts != null) { for(PythonTree t : elts) { addChild(t); @@ -53,7 +53,7 @@ public Tuple(int ttype, Token token, java.util.List<exprType> elts, expr_contextType ctx) { super(ttype, token); - this.elts = elts; + this.elts = new ListWrapper<exprType>(elts); if (elts != null) { for(PythonTree t : elts) { addChild(t); @@ -65,7 +65,7 @@ public Tuple(PythonTree tree, java.util.List<exprType> elts, expr_contextType ctx) { super(tree); - this.elts = elts; + this.elts = new ListWrapper<exprType>(elts); if (elts != null) { for(PythonTree t : elts) { addChild(t); Modified: branches/astwrite/src/org/python/antlr/ast/While.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/While.java 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/src/org/python/antlr/ast/While.java 2008-11-20 23:44:08 UTC (rev 5595) @@ -41,13 +41,13 @@ java.util.List<stmtType> orelse) { this.test = test; addChild(test); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); } } - this.orelse = orelse; + this.orelse = new ListWrapper<stmtType>(orelse); if (orelse != null) { for(PythonTree t : orelse) { addChild(t); @@ -60,13 +60,13 @@ super(token); this.test = test; addChild(test); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); } } - this.orelse = orelse; + this.orelse = new ListWrapper<stmtType>(orelse); if (orelse != null) { for(PythonTree t : orelse) { addChild(t); @@ -79,13 +79,13 @@ super(ttype, token); this.test = test; addChild(test); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); } } - this.orelse = orelse; + this.orelse = new ListWrapper<stmtType>(orelse); if (orelse != null) { for(PythonTree t : orelse) { addChild(t); @@ -98,13 +98,13 @@ super(tree); this.test = test; addChild(test); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); } } - this.orelse = orelse; + this.orelse = new ListWrapper<stmtType>(orelse); if (orelse != null) { for(PythonTree t : orelse) { addChild(t); Modified: branches/astwrite/src/org/python/antlr/ast/With.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/With.java 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/src/org/python/antlr/ast/With.java 2008-11-20 23:44:08 UTC (rev 5595) @@ -44,7 +44,7 @@ addChild(context_expr); this.optional_vars = optional_vars; addChild(optional_vars); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); @@ -59,7 +59,7 @@ addChild(context_expr); this.optional_vars = optional_vars; addChild(optional_vars); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); @@ -74,7 +74,7 @@ addChild(context_expr); this.optional_vars = optional_vars; addChild(optional_vars); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); @@ -89,7 +89,7 @@ addChild(context_expr); this.optional_vars = optional_vars; addChild(optional_vars); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); Modified: branches/astwrite/src/org/python/antlr/ast/argumentsType.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/argumentsType.java 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/src/org/python/antlr/ast/argumentsType.java 2008-11-20 23:44:08 UTC (rev 5595) @@ -47,7 +47,7 @@ public argumentsType(java.util.List<exprType> args, String vararg, String kwarg, java.util.List<exprType> defaults) { - this.args = args; + this.args = new ListWrapper<exprType>(args); if (args != null) { for(PythonTree t : args) { addChild(t); @@ -55,7 +55,7 @@ } this.vararg = vararg; this.kwarg = kwarg; - this.defaults = defaults; + this.defaults = new ListWrapper<exprType>(defaults); if (defaults != null) { for(PythonTree t : defaults) { addChild(t); @@ -66,7 +66,7 @@ public argumentsType(Token token, java.util.List<exprType> args, String vararg, String kwarg, java.util.List<exprType> defaults) { super(token); - this.args = args; + this.args = new ListWrapper<exprType>(args); if (args != null) { for(PythonTree t : args) { addChild(t); @@ -74,7 +74,7 @@ } this.vararg = vararg; this.kwarg = kwarg; - this.defaults = defaults; + this.defaults = new ListWrapper<exprType>(defaults); if (defaults != null) { for(PythonTree t : defaults) { addChild(t); @@ -85,7 +85,7 @@ public argumentsType(int ttype, Token token, java.util.List<exprType> args, String vararg, String kwarg, java.util.List<exprType> defaults) { super(ttype, token); - this.args = args; + this.args = new ListWrapper<exprType>(args); if (args != null) { for(PythonTree t : args) { addChild(t); @@ -93,7 +93,7 @@ } this.vararg = vararg; this.kwarg = kwarg; - this.defaults = defaults; + this.defaults = new ListWrapper<exprType>(defaults); if (defaults != null) { for(PythonTree t : defaults) { addChild(t); @@ -104,7 +104,7 @@ public argumentsType(PythonTree tree, java.util.List<exprType> args, String vararg, String kwarg, java.util.List<exprType> defaults) { super(tree); - this.args = args; + this.args = new ListWrapper<exprType>(args); if (args != null) { for(PythonTree t : args) { addChild(t); @@ -112,7 +112,7 @@ } this.vararg = vararg; this.kwarg = kwarg; - this.defaults = defaults; + this.defaults = new ListWrapper<exprType>(defaults); if (defaults != null) { for(PythonTree t : defaults) { addChild(t); Modified: branches/astwrite/src/org/python/antlr/ast/comprehensionType.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/comprehensionType.java 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/src/org/python/antlr/ast/comprehensionType.java 2008-11-20 23:44:08 UTC (rev 5595) @@ -43,7 +43,7 @@ addChild(target); this.iter = iter; addChild(iter); - this.ifs = ifs; + this.ifs = new ListWrapper<exprType>(ifs); if (ifs != null) { for(PythonTree t : ifs) { addChild(t); @@ -58,7 +58,7 @@ addChild(target); this.iter = iter; addChild(iter); - this.ifs = ifs; + this.ifs = new ListWrapper<exprType>(ifs); if (ifs != null) { for(PythonTree t : ifs) { addChild(t); @@ -73,7 +73,7 @@ addChild(target); this.iter = iter; addChild(iter); - this.ifs = ifs; + this.ifs = new ListWrapper<exprType>(ifs); if (ifs != null) { for(PythonTree t : ifs) { addChild(t); @@ -88,7 +88,7 @@ addChild(target); this.iter = iter; addChild(iter); - this.ifs = ifs; + this.ifs = new ListWrapper<exprType>(ifs); if (ifs != null) { for(PythonTree t : ifs) { addChild(t); Modified: branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java 2008-11-20 22:22:29 UTC (rev 5594) +++ branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java 2008-11-20 23:44:08 UTC (rev 5595) @@ -60,7 +60,7 @@ addChild(excepttype); this.name = name; addChild(name); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); @@ -77,7 +77,7 @@ addChild(excepttype); this.name = name; addChild(name); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); @@ -94,7 +94,7 @@ addChild(excepttype); this.name = name; addChild(name); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); @@ -111,7 +111,7 @@ addChild(excepttype); this.name = name; addChild(name); - this.body = body; + this.body = new ListWrapper<stmtType>(body); if (body != null) { for(PythonTree t : body) { addChild(t); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fwi...@us...> - 2008-11-21 14:59:32
|
Revision: 5597 http://jython.svn.sourceforge.net/jython/?rev=5597&view=rev Author: fwierzbicki Date: 2008-11-21 14:59:28 +0000 (Fri, 21 Nov 2008) Log Message: ----------- More experimentation with ast -- adding internalGet* methods. The idea being that the main parser and compiler will interact with the ast nodes only through constructors and internalGet* methods, while Python code will interact with ast code through regular get* and set* methods which will be able to translate from Python to node types. Modified Paths: -------------- branches/astwrite/ast/asdl_antlr.py branches/astwrite/src/org/python/antlr/GrammarActions.java branches/astwrite/src/org/python/antlr/ast/Assert.java branches/astwrite/src/org/python/antlr/ast/Assign.java branches/astwrite/src/org/python/antlr/ast/Attribute.java branches/astwrite/src/org/python/antlr/ast/AugAssign.java branches/astwrite/src/org/python/antlr/ast/BinOp.java branches/astwrite/src/org/python/antlr/ast/BoolOp.java branches/astwrite/src/org/python/antlr/ast/Call.java branches/astwrite/src/org/python/antlr/ast/ClassDef.java branches/astwrite/src/org/python/antlr/ast/Compare.java branches/astwrite/src/org/python/antlr/ast/Delete.java branches/astwrite/src/org/python/antlr/ast/Dict.java branches/astwrite/src/org/python/antlr/ast/Exec.java branches/astwrite/src/org/python/antlr/ast/Expr.java branches/astwrite/src/org/python/antlr/ast/Expression.java branches/astwrite/src/org/python/antlr/ast/ExtSlice.java branches/astwrite/src/org/python/antlr/ast/For.java branches/astwrite/src/org/python/antlr/ast/FunctionDef.java branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java branches/astwrite/src/org/python/antlr/ast/Global.java branches/astwrite/src/org/python/antlr/ast/If.java branches/astwrite/src/org/python/antlr/ast/IfExp.java branches/astwrite/src/org/python/antlr/ast/Import.java branches/astwrite/src/org/python/antlr/ast/ImportFrom.java branches/astwrite/src/org/python/antlr/ast/Index.java branches/astwrite/src/org/python/antlr/ast/Interactive.java branches/astwrite/src/org/python/antlr/ast/Lambda.java branches/astwrite/src/org/python/antlr/ast/List.java branches/astwrite/src/org/python/antlr/ast/ListComp.java branches/astwrite/src/org/python/antlr/ast/Module.java branches/astwrite/src/org/python/antlr/ast/Name.java branches/astwrite/src/org/python/antlr/ast/Num.java branches/astwrite/src/org/python/antlr/ast/Print.java branches/astwrite/src/org/python/antlr/ast/Raise.java branches/astwrite/src/org/python/antlr/ast/Repr.java branches/astwrite/src/org/python/antlr/ast/Return.java branches/astwrite/src/org/python/antlr/ast/Slice.java branches/astwrite/src/org/python/antlr/ast/Str.java branches/astwrite/src/org/python/antlr/ast/Subscript.java branches/astwrite/src/org/python/antlr/ast/Suite.java branches/astwrite/src/org/python/antlr/ast/TryExcept.java branches/astwrite/src/org/python/antlr/ast/TryFinally.java branches/astwrite/src/org/python/antlr/ast/Tuple.java branches/astwrite/src/org/python/antlr/ast/UnaryOp.java branches/astwrite/src/org/python/antlr/ast/While.java branches/astwrite/src/org/python/antlr/ast/With.java branches/astwrite/src/org/python/antlr/ast/Yield.java branches/astwrite/src/org/python/antlr/ast/aliasType.java branches/astwrite/src/org/python/antlr/ast/argumentsType.java branches/astwrite/src/org/python/antlr/ast/comprehensionType.java branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java branches/astwrite/src/org/python/antlr/ast/keywordType.java branches/astwrite/src/org/python/compiler/ArgListCompiler.java branches/astwrite/src/org/python/compiler/CodeCompiler.java branches/astwrite/src/org/python/compiler/Future.java branches/astwrite/src/org/python/compiler/ScopesCompiler.java Property Changed: ---------------- branches/astwrite/src/org/python/antlr/ast/ branches/astwrite/src/org/python/compiler/ Modified: branches/astwrite/ast/asdl_antlr.py =================================================================== --- branches/astwrite/ast/asdl_antlr.py 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/ast/asdl_antlr.py 2008-11-21 14:59:28 UTC (rev 5597) @@ -409,7 +409,7 @@ def visitField(self, field, depth): self.emit("private %s;" % self.fieldDef(field, True), depth) - self.emit("public %s get%s() {" % (self.javaType(field, True), + self.emit("public %s getInternal%s() {" % (self.javaType(field, True), str(field.name).capitalize()), depth) self.emit("return %s;" % field.name, depth+1) self.emit("}", depth) Modified: branches/astwrite/src/org/python/antlr/GrammarActions.java =================================================================== --- branches/astwrite/src/org/python/antlr/GrammarActions.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/GrammarActions.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -135,7 +135,7 @@ List<exprType> result = new ArrayList<exprType>(); if (etype != null) { if (etype instanceof Tuple) { - return ((Tuple)etype).getElts(); + return ((Tuple)etype).getInternalElts(); } result.add(etype); } @@ -314,10 +314,10 @@ } if (tree instanceof GeneratorExp) { GeneratorExp g = (GeneratorExp)tree; - recurseSetContext(g.getElt(), context); + recurseSetContext(g.getInternalElt(), context); } else if (tree instanceof ListComp) { ListComp lc = (ListComp)tree; - recurseSetContext(lc.getElt(), context); + recurseSetContext(lc.getInternalElt(), context); } else if (!(tree instanceof ListComp)) { for (int i=0; i<tree.getChildCount(); i++) { recurseSetContext(tree.getChild(i), context); @@ -357,7 +357,7 @@ checkAssign(castExpr(e.get(0))); if (e.get(0) instanceof Name) { Name arg = (Name)e.get(0); - k.add(new keywordType(arg, arg.getId(), castExpr(e.get(1)))); + k.add(new keywordType(arg, arg.getInternalId(), castExpr(e.get(1)))); } else { errorHandler.error("keyword must be a name", (PythonTree)e.get(0)); } @@ -588,26 +588,26 @@ exprType negate(PythonTree t, exprType o) { if (o instanceof Num) { Num num = (Num)o; - if (num.getN() instanceof PyInteger) { - int v = ((PyInteger)num.getN()).getValue(); + if (num.getInternalN() instanceof PyInteger) { + int v = ((PyInteger)num.getInternalN()).getValue(); if (v > 0) { num.setN(new PyInteger(-v)); return num; } - } else if (num.getN() instanceof PyLong) { - BigInteger v = ((PyLong)num.getN()).getValue(); + } else if (num.getInternalN() instanceof PyLong) { + BigInteger v = ((PyLong)num.getInternalN()).getValue(); if (v.compareTo(BigInteger.ZERO) == 1) { num.setN(new PyLong(v.negate())); return num; } - } else if (num.getN() instanceof PyFloat) { - double v = ((PyFloat)num.getN()).getValue(); + } else if (num.getInternalN() instanceof PyFloat) { + double v = ((PyFloat)num.getInternalN()).getValue(); if (v > 0) { num.setN(new PyFloat(-v)); return num; } - } else if (num.getN() instanceof PyComplex) { - double v = ((PyComplex)num.getN()).imag; + } else if (num.getInternalN() instanceof PyComplex) { + double v = ((PyComplex)num.getInternalN()).imag; if (v > 0) { num.setN(new PyComplex(0,-v)); return num; @@ -631,7 +631,7 @@ } void checkAssign(exprType e) { - if (e instanceof Name && ((Name)e).getId().equals("None")) { + if (e instanceof Name && ((Name)e).getInternalId().equals("None")) { errorHandler.error("assignment to None", e); } else if (e instanceof GeneratorExp) { errorHandler.error("can't assign to generator expression", e); @@ -653,7 +653,7 @@ errorHandler.error("can't assign to conditional expression", e); } else if (e instanceof Tuple) { //XXX: performance problem? Any way to do this better? - List<exprType> elts = ((Tuple)e).getElts(); + List<exprType> elts = ((Tuple)e).getInternalElts(); if (elts.size() == 0) { errorHandler.error("can't assign to ()", e); } @@ -662,7 +662,7 @@ } } else if (e instanceof org.python.antlr.ast.List) { //XXX: performance problem? Any way to do this better? - List<exprType> elts = ((org.python.antlr.ast.List)e).getElts(); + List<exprType> elts = ((org.python.antlr.ast.List)e).getInternalElts(); for (int i=0;i<elts.size();i++) { checkAssign(elts.get(i)); } @@ -781,7 +781,7 @@ for (Object o : sltypes) { if (o instanceof Index) { Index i = (Index)o; - etypes.add(i.getValue()); + etypes.add(i.getInternalValue()); } else { extslice = true; break; Property changes on: branches/astwrite/src/org/python/antlr/ast ___________________________________________________________________ Modified: svn:ignore - .comprehensionType.java.swp + .comprehensionType.java.swp .If.java.swp Modified: branches/astwrite/src/org/python/antlr/ast/Assert.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class Assert extends stmtType { private exprType test; - public exprType getTest() { + public exprType getInternalTest() { return test; } public void setTest(exprType test) { @@ -17,7 +17,7 @@ } private exprType msg; - public exprType getMsg() { + public exprType getInternalMsg() { return msg; } public void setMsg(exprType msg) { Modified: branches/astwrite/src/org/python/antlr/ast/Assign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class Assign extends stmtType { private ListWrapper<exprType> targets; - public ListWrapper<exprType> getTargets() { + public ListWrapper<exprType> getInternalTargets() { return targets; } public void setTargets(java.util.List<exprType> targets) { @@ -17,7 +17,7 @@ } private exprType value; - public exprType getValue() { + public exprType getInternalValue() { return value; } public void setValue(exprType value) { Modified: branches/astwrite/src/org/python/antlr/ast/Attribute.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class Attribute extends exprType implements Context { private exprType value; - public exprType getValue() { + public exprType getInternalValue() { return value; } public void setValue(exprType value) { @@ -17,7 +17,7 @@ } private String attr; - public String getAttr() { + public String getInternalAttr() { return attr; } public void setAttr(String attr) { @@ -25,7 +25,7 @@ } private expr_contextType ctx; - public expr_contextType getCtx() { + public expr_contextType getInternalCtx() { return ctx; } public void setCtx(expr_contextType ctx) { Modified: branches/astwrite/src/org/python/antlr/ast/AugAssign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class AugAssign extends stmtType { private exprType target; - public exprType getTarget() { + public exprType getInternalTarget() { return target; } public void setTarget(exprType target) { @@ -17,7 +17,7 @@ } private operatorType op; - public operatorType getOp() { + public operatorType getInternalOp() { return op; } public void setOp(operatorType op) { @@ -25,7 +25,7 @@ } private exprType value; - public exprType getValue() { + public exprType getInternalValue() { return value; } public void setValue(exprType value) { Modified: branches/astwrite/src/org/python/antlr/ast/BinOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class BinOp extends exprType { private exprType left; - public exprType getLeft() { + public exprType getInternalLeft() { return left; } public void setLeft(exprType left) { @@ -17,7 +17,7 @@ } private operatorType op; - public operatorType getOp() { + public operatorType getInternalOp() { return op; } public void setOp(operatorType op) { @@ -25,7 +25,7 @@ } private exprType right; - public exprType getRight() { + public exprType getInternalRight() { return right; } public void setRight(exprType right) { Modified: branches/astwrite/src/org/python/antlr/ast/BoolOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class BoolOp extends exprType { private boolopType op; - public boolopType getOp() { + public boolopType getInternalOp() { return op; } public void setOp(boolopType op) { @@ -17,7 +17,7 @@ } private ListWrapper<exprType> values; - public ListWrapper<exprType> getValues() { + public ListWrapper<exprType> getInternalValues() { return values; } public void setValues(java.util.List<exprType> values) { Modified: branches/astwrite/src/org/python/antlr/ast/Call.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Call.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/Call.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class Call extends exprType { private exprType func; - public exprType getFunc() { + public exprType getInternalFunc() { return func; } public void setFunc(exprType func) { @@ -17,7 +17,7 @@ } private ListWrapper<exprType> args; - public ListWrapper<exprType> getArgs() { + public ListWrapper<exprType> getInternalArgs() { return args; } public void setArgs(java.util.List<exprType> args) { @@ -25,7 +25,7 @@ } private ListWrapper<keywordType> keywords; - public ListWrapper<keywordType> getKeywords() { + public ListWrapper<keywordType> getInternalKeywords() { return keywords; } public void setKeywords(java.util.List<keywordType> keywords) { @@ -33,7 +33,7 @@ } private exprType starargs; - public exprType getStarargs() { + public exprType getInternalStarargs() { return starargs; } public void setStarargs(exprType starargs) { @@ -41,7 +41,7 @@ } private exprType kwargs; - public exprType getKwargs() { + public exprType getInternalKwargs() { return kwargs; } public void setKwargs(exprType kwargs) { Modified: branches/astwrite/src/org/python/antlr/ast/ClassDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class ClassDef extends stmtType { private String name; - public String getName() { + public String getInternalName() { return name; } public void setName(String name) { @@ -17,7 +17,7 @@ } private ListWrapper<exprType> bases; - public ListWrapper<exprType> getBases() { + public ListWrapper<exprType> getInternalBases() { return bases; } public void setBases(java.util.List<exprType> bases) { @@ -25,7 +25,7 @@ } private ListWrapper<stmtType> body; - public ListWrapper<stmtType> getBody() { + public ListWrapper<stmtType> getInternalBody() { return body; } public void setBody(java.util.List<stmtType> body) { @@ -33,7 +33,7 @@ } private ListWrapper<exprType> decorators; - public ListWrapper<exprType> getDecorators() { + public ListWrapper<exprType> getInternalDecorators() { return decorators; } public void setDecorators(java.util.List<exprType> decorators) { Modified: branches/astwrite/src/org/python/antlr/ast/Compare.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class Compare extends exprType { private exprType left; - public exprType getLeft() { + public exprType getInternalLeft() { return left; } public void setLeft(exprType left) { @@ -17,7 +17,7 @@ } private ListWrapper<cmpopType> ops; - public ListWrapper<cmpopType> getOps() { + public ListWrapper<cmpopType> getInternalOps() { return ops; } public void setOps(java.util.List<cmpopType> ops) { @@ -25,7 +25,7 @@ } private ListWrapper<exprType> comparators; - public ListWrapper<exprType> getComparators() { + public ListWrapper<exprType> getInternalComparators() { return comparators; } public void setComparators(java.util.List<exprType> comparators) { Modified: branches/astwrite/src/org/python/antlr/ast/Delete.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class Delete extends stmtType { private ListWrapper<exprType> targets; - public ListWrapper<exprType> getTargets() { + public ListWrapper<exprType> getInternalTargets() { return targets; } public void setTargets(java.util.List<exprType> targets) { Modified: branches/astwrite/src/org/python/antlr/ast/Dict.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class Dict extends exprType { private ListWrapper<exprType> keys; - public ListWrapper<exprType> getKeys() { + public ListWrapper<exprType> getInternalKeys() { return keys; } public void setKeys(java.util.List<exprType> keys) { @@ -17,7 +17,7 @@ } private ListWrapper<exprType> values; - public ListWrapper<exprType> getValues() { + public ListWrapper<exprType> getInternalValues() { return values; } public void setValues(java.util.List<exprType> values) { Modified: branches/astwrite/src/org/python/antlr/ast/Exec.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class Exec extends stmtType { private exprType body; - public exprType getBody() { + public exprType getInternalBody() { return body; } public void setBody(exprType body) { @@ -17,7 +17,7 @@ } private exprType globals; - public exprType getGlobals() { + public exprType getInternalGlobals() { return globals; } public void setGlobals(exprType globals) { @@ -25,7 +25,7 @@ } private exprType locals; - public exprType getLocals() { + public exprType getInternalLocals() { return locals; } public void setLocals(exprType locals) { Modified: branches/astwrite/src/org/python/antlr/ast/Expr.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class Expr extends stmtType { private exprType value; - public exprType getValue() { + public exprType getInternalValue() { return value; } public void setValue(exprType value) { Modified: branches/astwrite/src/org/python/antlr/ast/Expression.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Expression.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/Expression.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class Expression extends modType { private exprType body; - public exprType getBody() { + public exprType getInternalBody() { return body; } public void setBody(exprType body) { Modified: branches/astwrite/src/org/python/antlr/ast/ExtSlice.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class ExtSlice extends sliceType { private ListWrapper<sliceType> dims; - public ListWrapper<sliceType> getDims() { + public ListWrapper<sliceType> getInternalDims() { return dims; } public void setDims(java.util.List<sliceType> dims) { Modified: branches/astwrite/src/org/python/antlr/ast/For.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/For.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/For.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class For extends stmtType { private exprType target; - public exprType getTarget() { + public exprType getInternalTarget() { return target; } public void setTarget(exprType target) { @@ -17,7 +17,7 @@ } private exprType iter; - public exprType getIter() { + public exprType getInternalIter() { return iter; } public void setIter(exprType iter) { @@ -25,7 +25,7 @@ } private ListWrapper<stmtType> body; - public ListWrapper<stmtType> getBody() { + public ListWrapper<stmtType> getInternalBody() { return body; } public void setBody(java.util.List<stmtType> body) { @@ -33,7 +33,7 @@ } private ListWrapper<stmtType> orelse; - public ListWrapper<stmtType> getOrelse() { + public ListWrapper<stmtType> getInternalOrelse() { return orelse; } public void setOrelse(java.util.List<stmtType> orelse) { Modified: branches/astwrite/src/org/python/antlr/ast/FunctionDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class FunctionDef extends stmtType { private String name; - public String getName() { + public String getInternalName() { return name; } public void setName(String name) { @@ -17,7 +17,7 @@ } private argumentsType args; - public argumentsType getArgs() { + public argumentsType getInternalArgs() { return args; } public void setArgs(argumentsType args) { @@ -25,7 +25,7 @@ } private ListWrapper<stmtType> body; - public ListWrapper<stmtType> getBody() { + public ListWrapper<stmtType> getInternalBody() { return body; } public void setBody(java.util.List<stmtType> body) { @@ -33,7 +33,7 @@ } private ListWrapper<exprType> decorators; - public ListWrapper<exprType> getDecorators() { + public ListWrapper<exprType> getInternalDecorators() { return decorators; } public void setDecorators(java.util.List<exprType> decorators) { Modified: branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class GeneratorExp extends exprType { private exprType elt; - public exprType getElt() { + public exprType getInternalElt() { return elt; } public void setElt(exprType elt) { @@ -17,7 +17,7 @@ } private ListWrapper<comprehensionType> generators; - public ListWrapper<comprehensionType> getGenerators() { + public ListWrapper<comprehensionType> getInternalGenerators() { return generators; } public void setGenerators(java.util.List<comprehensionType> generators) { Modified: branches/astwrite/src/org/python/antlr/ast/Global.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Global.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/Global.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class Global extends stmtType { private ListWrapper<String> names; - public ListWrapper<String> getNames() { + public ListWrapper<String> getInternalNames() { return names; } public void setNames(java.util.List<String> names) { Modified: branches/astwrite/src/org/python/antlr/ast/If.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/If.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/If.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class If extends stmtType { private exprType test; - public exprType getTest() { + public exprType getInternalTest() { return test; } public void setTest(exprType test) { @@ -17,7 +17,7 @@ } private ListWrapper<stmtType> body; - public ListWrapper<stmtType> getBody() { + public ListWrapper<stmtType> getInternalBody() { return body; } public void setBody(java.util.List<stmtType> body) { @@ -25,7 +25,7 @@ } private ListWrapper<stmtType> orelse; - public ListWrapper<stmtType> getOrelse() { + public ListWrapper<stmtType> getInternalOrelse() { return orelse; } public void setOrelse(java.util.List<stmtType> orelse) { Modified: branches/astwrite/src/org/python/antlr/ast/IfExp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/IfExp.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/IfExp.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class IfExp extends exprType { private exprType test; - public exprType getTest() { + public exprType getInternalTest() { return test; } public void setTest(exprType test) { @@ -17,7 +17,7 @@ } private exprType body; - public exprType getBody() { + public exprType getInternalBody() { return body; } public void setBody(exprType body) { @@ -25,7 +25,7 @@ } private exprType orelse; - public exprType getOrelse() { + public exprType getInternalOrelse() { return orelse; } public void setOrelse(exprType orelse) { Modified: branches/astwrite/src/org/python/antlr/ast/Import.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Import.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/Import.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class Import extends stmtType { private ListWrapper<aliasType> names; - public ListWrapper<aliasType> getNames() { + public ListWrapper<aliasType> getInternalNames() { return names; } public void setNames(java.util.List<aliasType> names) { Modified: branches/astwrite/src/org/python/antlr/ast/ImportFrom.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ImportFrom.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/ImportFrom.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class ImportFrom extends stmtType { private String module; - public String getModule() { + public String getInternalModule() { return module; } public void setModule(String module) { @@ -17,7 +17,7 @@ } private ListWrapper<aliasType> names; - public ListWrapper<aliasType> getNames() { + public ListWrapper<aliasType> getInternalNames() { return names; } public void setNames(java.util.List<aliasType> names) { @@ -25,7 +25,7 @@ } private int level; - public int getLevel() { + public int getInternalLevel() { return level; } public void setLevel(int level) { Modified: branches/astwrite/src/org/python/antlr/ast/Index.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Index.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/Index.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class Index extends sliceType { private exprType value; - public exprType getValue() { + public exprType getInternalValue() { return value; } public void setValue(exprType value) { Modified: branches/astwrite/src/org/python/antlr/ast/Interactive.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Interactive.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/Interactive.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class Interactive extends modType { private ListWrapper<stmtType> body; - public ListWrapper<stmtType> getBody() { + public ListWrapper<stmtType> getInternalBody() { return body; } public void setBody(java.util.List<stmtType> body) { Modified: branches/astwrite/src/org/python/antlr/ast/Lambda.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Lambda.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/Lambda.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class Lambda extends exprType { private argumentsType args; - public argumentsType getArgs() { + public argumentsType getInternalArgs() { return args; } public void setArgs(argumentsType args) { @@ -17,7 +17,7 @@ } private exprType body; - public exprType getBody() { + public exprType getInternalBody() { return body; } public void setBody(exprType body) { Modified: branches/astwrite/src/org/python/antlr/ast/List.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/List.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/List.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class List extends exprType implements Context { private ListWrapper<exprType> elts; - public ListWrapper<exprType> getElts() { + public ListWrapper<exprType> getInternalElts() { return elts; } public void setElts(java.util.List<exprType> elts) { @@ -17,7 +17,7 @@ } private expr_contextType ctx; - public expr_contextType getCtx() { + public expr_contextType getInternalCtx() { return ctx; } public void setCtx(expr_contextType ctx) { Modified: branches/astwrite/src/org/python/antlr/ast/ListComp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ListComp.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/ListComp.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class ListComp extends exprType { private exprType elt; - public exprType getElt() { + public exprType getInternalElt() { return elt; } public void setElt(exprType elt) { @@ -17,7 +17,7 @@ } private ListWrapper<comprehensionType> generators; - public ListWrapper<comprehensionType> getGenerators() { + public ListWrapper<comprehensionType> getInternalGenerators() { return generators; } public void setGenerators(java.util.List<comprehensionType> generators) { Modified: branches/astwrite/src/org/python/antlr/ast/Module.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Module.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/Module.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class Module extends modType { private ListWrapper<stmtType> body; - public ListWrapper<stmtType> getBody() { + public ListWrapper<stmtType> getInternalBody() { return body; } public void setBody(java.util.List<stmtType> body) { Modified: branches/astwrite/src/org/python/antlr/ast/Name.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Name.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/Name.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class Name extends exprType implements Context { private String id; - public String getId() { + public String getInternalId() { return id; } public void setId(String id) { @@ -17,7 +17,7 @@ } private expr_contextType ctx; - public expr_contextType getCtx() { + public expr_contextType getInternalCtx() { return ctx; } public void setCtx(expr_contextType ctx) { Modified: branches/astwrite/src/org/python/antlr/ast/Num.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Num.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/Num.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class Num extends exprType { private Object n; - public Object getN() { + public Object getInternalN() { return n; } public void setN(Object n) { Modified: branches/astwrite/src/org/python/antlr/ast/Print.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Print.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/Print.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class Print extends stmtType { private exprType dest; - public exprType getDest() { + public exprType getInternalDest() { return dest; } public void setDest(exprType dest) { @@ -17,7 +17,7 @@ } private ListWrapper<exprType> values; - public ListWrapper<exprType> getValues() { + public ListWrapper<exprType> getInternalValues() { return values; } public void setValues(java.util.List<exprType> values) { @@ -25,7 +25,7 @@ } private boolean nl; - public boolean getNl() { + public boolean getInternalNl() { return nl; } public void setNl(boolean nl) { Modified: branches/astwrite/src/org/python/antlr/ast/Raise.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Raise.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/Raise.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class Raise extends stmtType { private exprType excepttype; - public exprType getExcepttype() { + public exprType getInternalExcepttype() { return excepttype; } public void setExcepttype(exprType excepttype) { @@ -17,7 +17,7 @@ } private exprType inst; - public exprType getInst() { + public exprType getInternalInst() { return inst; } public void setInst(exprType inst) { @@ -25,7 +25,7 @@ } private exprType tback; - public exprType getTback() { + public exprType getInternalTback() { return tback; } public void setTback(exprType tback) { Modified: branches/astwrite/src/org/python/antlr/ast/Repr.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Repr.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/Repr.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class Repr extends exprType { private exprType value; - public exprType getValue() { + public exprType getInternalValue() { return value; } public void setValue(exprType value) { Modified: branches/astwrite/src/org/python/antlr/ast/Return.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Return.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/Return.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class Return extends stmtType { private exprType value; - public exprType getValue() { + public exprType getInternalValue() { return value; } public void setValue(exprType value) { Modified: branches/astwrite/src/org/python/antlr/ast/Slice.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Slice.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/Slice.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class Slice extends sliceType { private exprType lower; - public exprType getLower() { + public exprType getInternalLower() { return lower; } public void setLower(exprType lower) { @@ -17,7 +17,7 @@ } private exprType upper; - public exprType getUpper() { + public exprType getInternalUpper() { return upper; } public void setUpper(exprType upper) { @@ -25,7 +25,7 @@ } private exprType step; - public exprType getStep() { + public exprType getInternalStep() { return step; } public void setStep(exprType step) { Modified: branches/astwrite/src/org/python/antlr/ast/Str.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Str.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/Str.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class Str extends exprType { private Object s; - public Object getS() { + public Object getInternalS() { return s; } public void setS(Object s) { Modified: branches/astwrite/src/org/python/antlr/ast/Subscript.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Subscript.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/Subscript.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class Subscript extends exprType implements Context { private exprType value; - public exprType getValue() { + public exprType getInternalValue() { return value; } public void setValue(exprType value) { @@ -17,7 +17,7 @@ } private sliceType slice; - public sliceType getSlice() { + public sliceType getInternalSlice() { return slice; } public void setSlice(sliceType slice) { @@ -25,7 +25,7 @@ } private expr_contextType ctx; - public expr_contextType getCtx() { + public expr_contextType getInternalCtx() { return ctx; } public void setCtx(expr_contextType ctx) { Modified: branches/astwrite/src/org/python/antlr/ast/Suite.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Suite.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/Suite.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class Suite extends modType { private ListWrapper<stmtType> body; - public ListWrapper<stmtType> getBody() { + public ListWrapper<stmtType> getInternalBody() { return body; } public void setBody(java.util.List<stmtType> body) { Modified: branches/astwrite/src/org/python/antlr/ast/TryExcept.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/TryExcept.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/TryExcept.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class TryExcept extends stmtType { private ListWrapper<stmtType> body; - public ListWrapper<stmtType> getBody() { + public ListWrapper<stmtType> getInternalBody() { return body; } public void setBody(java.util.List<stmtType> body) { @@ -17,7 +17,7 @@ } private ListWrapper<excepthandlerType> handlers; - public ListWrapper<excepthandlerType> getHandlers() { + public ListWrapper<excepthandlerType> getInternalHandlers() { return handlers; } public void setHandlers(java.util.List<excepthandlerType> handlers) { @@ -25,7 +25,7 @@ } private ListWrapper<stmtType> orelse; - public ListWrapper<stmtType> getOrelse() { + public ListWrapper<stmtType> getInternalOrelse() { return orelse; } public void setOrelse(java.util.List<stmtType> orelse) { Modified: branches/astwrite/src/org/python/antlr/ast/TryFinally.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/TryFinally.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/TryFinally.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class TryFinally extends stmtType { private ListWrapper<stmtType> body; - public ListWrapper<stmtType> getBody() { + public ListWrapper<stmtType> getInternalBody() { return body; } public void setBody(java.util.List<stmtType> body) { @@ -17,7 +17,7 @@ } private ListWrapper<stmtType> finalbody; - public ListWrapper<stmtType> getFinalbody() { + public ListWrapper<stmtType> getInternalFinalbody() { return finalbody; } public void setFinalbody(java.util.List<stmtType> finalbody) { Modified: branches/astwrite/src/org/python/antlr/ast/Tuple.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Tuple.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/Tuple.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class Tuple extends exprType implements Context { private ListWrapper<exprType> elts; - public ListWrapper<exprType> getElts() { + public ListWrapper<exprType> getInternalElts() { return elts; } public void setElts(java.util.List<exprType> elts) { @@ -17,7 +17,7 @@ } private expr_contextType ctx; - public expr_contextType getCtx() { + public expr_contextType getInternalCtx() { return ctx; } public void setCtx(expr_contextType ctx) { Modified: branches/astwrite/src/org/python/antlr/ast/UnaryOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/UnaryOp.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/UnaryOp.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class UnaryOp extends exprType { private unaryopType op; - public unaryopType getOp() { + public unaryopType getInternalOp() { return op; } public void setOp(unaryopType op) { @@ -17,7 +17,7 @@ } private exprType operand; - public exprType getOperand() { + public exprType getInternalOperand() { return operand; } public void setOperand(exprType operand) { Modified: branches/astwrite/src/org/python/antlr/ast/While.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/While.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/While.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class While extends stmtType { private exprType test; - public exprType getTest() { + public exprType getInternalTest() { return test; } public void setTest(exprType test) { @@ -17,7 +17,7 @@ } private ListWrapper<stmtType> body; - public ListWrapper<stmtType> getBody() { + public ListWrapper<stmtType> getInternalBody() { return body; } public void setBody(java.util.List<stmtType> body) { @@ -25,7 +25,7 @@ } private ListWrapper<stmtType> orelse; - public ListWrapper<stmtType> getOrelse() { + public ListWrapper<stmtType> getInternalOrelse() { return orelse; } public void setOrelse(java.util.List<stmtType> orelse) { Modified: branches/astwrite/src/org/python/antlr/ast/With.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/With.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/With.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class With extends stmtType { private exprType context_expr; - public exprType getContext_expr() { + public exprType getInternalContext_expr() { return context_expr; } public void setContext_expr(exprType context_expr) { @@ -17,7 +17,7 @@ } private exprType optional_vars; - public exprType getOptional_vars() { + public exprType getInternalOptional_vars() { return optional_vars; } public void setOptional_vars(exprType optional_vars) { @@ -25,7 +25,7 @@ } private ListWrapper<stmtType> body; - public ListWrapper<stmtType> getBody() { + public ListWrapper<stmtType> getInternalBody() { return body; } public void setBody(java.util.List<stmtType> body) { Modified: branches/astwrite/src/org/python/antlr/ast/Yield.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Yield.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/Yield.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class Yield extends exprType { private exprType value; - public exprType getValue() { + public exprType getInternalValue() { return value; } public void setValue(exprType value) { Modified: branches/astwrite/src/org/python/antlr/ast/aliasType.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/aliasType.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/aliasType.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class aliasType extends PythonTree { private String name; - public String getName() { + public String getInternalName() { return name; } public void setName(String name) { @@ -17,7 +17,7 @@ } private String asname; - public String getAsname() { + public String getInternalAsname() { return asname; } public void setAsname(String asname) { Modified: branches/astwrite/src/org/python/antlr/ast/argumentsType.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/argumentsType.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/argumentsType.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class argumentsType extends PythonTree { private ListWrapper<exprType> args; - public ListWrapper<exprType> getArgs() { + public ListWrapper<exprType> getInternalArgs() { return args; } public void setArgs(java.util.List<exprType> args) { @@ -17,7 +17,7 @@ } private String vararg; - public String getVararg() { + public String getInternalVararg() { return vararg; } public void setVararg(String vararg) { @@ -25,7 +25,7 @@ } private String kwarg; - public String getKwarg() { + public String getInternalKwarg() { return kwarg; } public void setKwarg(String kwarg) { @@ -33,7 +33,7 @@ } private ListWrapper<exprType> defaults; - public ListWrapper<exprType> getDefaults() { + public ListWrapper<exprType> getInternalDefaults() { return defaults; } public void setDefaults(java.util.List<exprType> defaults) { Modified: branches/astwrite/src/org/python/antlr/ast/comprehensionType.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/comprehensionType.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/comprehensionType.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class comprehensionType extends PythonTree { private exprType target; - public exprType getTarget() { + public exprType getInternalTarget() { return target; } public void setTarget(exprType target) { @@ -17,7 +17,7 @@ } private exprType iter; - public exprType getIter() { + public exprType getInternalIter() { return iter; } public void setIter(exprType iter) { @@ -25,7 +25,7 @@ } private ListWrapper<exprType> ifs; - public ListWrapper<exprType> getIfs() { + public ListWrapper<exprType> getInternalIfs() { return ifs; } public void setIfs(java.util.List<exprType> ifs) { Modified: branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class excepthandlerType extends PythonTree { private exprType excepttype; - public exprType getExcepttype() { + public exprType getInternalExcepttype() { return excepttype; } public void setExcepttype(exprType excepttype) { @@ -17,7 +17,7 @@ } private exprType name; - public exprType getName() { + public exprType getInternalName() { return name; } public void setName(exprType name) { @@ -25,7 +25,7 @@ } private ListWrapper<stmtType> body; - public ListWrapper<stmtType> getBody() { + public ListWrapper<stmtType> getInternalBody() { return body; } public void setBody(java.util.List<stmtType> body) { @@ -33,7 +33,7 @@ } private int lineno; - public int getLineno() { + public int getInternalLineno() { return lineno; } public void setLineno(int lineno) { @@ -41,7 +41,7 @@ } private int col_offset; - public int getCol_offset() { + public int getInternalCol_offset() { return col_offset; } public void setCol_offset(int col_offset) { Modified: branches/astwrite/src/org/python/antlr/ast/keywordType.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/keywordType.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/antlr/ast/keywordType.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -9,7 +9,7 @@ public class keywordType extends PythonTree { private String arg; - public String getArg() { + public String getInternalArg() { return arg; } public void setArg(String arg) { @@ -17,7 +17,7 @@ } private exprType value; - public exprType getValue() { + public exprType getInternalValue() { return value; } public void setValue(exprType value) { Property changes on: branches/astwrite/src/org/python/compiler ___________________________________________________________________ Modified: svn:ignore - .AppleDouble *.class + .AppleDouble *.class .CodeCompiler.java.swp .ArgListCompiler.java.swp .ScopesCompiler.java.swp Modified: branches/astwrite/src/org/python/compiler/ArgListCompiler.java =================================================================== --- branches/astwrite/src/org/python/compiler/ArgListCompiler.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/compiler/ArgListCompiler.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -40,10 +40,10 @@ } public void appendInitCode(Suite node) { - int n = node.getBody().size(); + int n = node.getInternalBody().size(); List<stmtType> newtree = new ArrayList<stmtType>(); newtree.addAll(init_code); - newtree.addAll(node.getBody()); + newtree.addAll(node.getInternalBody()); node.setBody(newtree); } @@ -52,60 +52,60 @@ } public void visitArgs(argumentsType args) throws Exception { - for (int i = 0; i < args.getArgs().size(); i++) { - String name = (String) visit(args.getArgs().get(i)); + for (int i = 0; i < args.getInternalArgs().size(); i++) { + String name = (String) visit(args.getInternalArgs().get(i)); names.add(name); - if (args.getArgs().get(i) instanceof Tuple) { + if (args.getInternalArgs().get(i) instanceof Tuple) { List<exprType> targets = new ArrayList<exprType>(); - targets.add(args.getArgs().get(i)); - Assign ass = new Assign(args.getArgs().get(i), + targets.add(args.getInternalArgs().get(i)); + Assign ass = new Assign(args.getInternalArgs().get(i), targets, - new Name(args.getArgs().get(i), name, expr_contextType.Load)); + new Name(args.getInternalArgs().get(i), name, expr_contextType.Load)); init_code.add(ass); } } - if (args.getVararg() != null) { + if (args.getInternalVararg() != null) { arglist = true; - names.add(args.getVararg()); + names.add(args.getInternalVararg()); } - if (args.getKwarg() != null) { + if (args.getInternalKwarg() != null) { keywordlist = true; - names.add(args.getKwarg()); + names.add(args.getInternalKwarg()); } - defaults = args.getDefaults(); + defaults = args.getInternalDefaults(); for (int i = 0; i < defaults.size(); i++) { if (defaults.get(i) == null) throw new ParseException( "non-default argument follows default argument", - args.getArgs().get(args.getArgs().size() - defaults.size() + i)); + args.getInternalArgs().get(args.getInternalArgs().size() - defaults.size() + i)); } } @Override public Object visitName(Name node) throws Exception { //FIXME: do we need Store and Param, or just Param? - if (node.getCtx() != expr_contextType.Store && node.getCtx() != expr_contextType.Param) { + if (node.getInternalCtx() != expr_contextType.Store && node.getInternalCtx() != expr_contextType.Param) { return null; } - if (fpnames.contains(node.getId())) { + if (fpnames.contains(node.getInternalId())) { throw new ParseException("duplicate argument name found: " + - node.getId(), node); + node.getInternalId(), node); } - fpnames.add(node.getId()); - return node.getId(); + fpnames.add(node.getInternalId()); + return node.getInternalId(); } @Override public Object visitTuple(Tuple node) throws Exception { StringBuffer name = new StringBuffer("("); - int n = node.getElts().size(); + int n = node.getInternalElts().size(); for (int i = 0; i < n-1; i++) { - name.append(visit(node.getElts().get(i))); + name.append(visit(node.getInternalElts().get(i))); name.append(", "); } - name.append(visit(node.getElts().get(n - 1))); + name.append(visit(node.getInternalElts().get(n - 1))); name.append(")"); return name.toString(); } Modified: branches/astwrite/src/org/python/compiler/CodeCompiler.java =================================================================== --- branches/astwrite/src/org/python/compiler/CodeCompiler.java 2008-11-21 02:00:11 UTC (rev 5596) +++ branches/astwrite/src/org/python/compiler/CodeCompiler.java 2008-11-21 14:59:28 UTC (rev 5597) @@ -297,13 +297,13 @@ public Object visitModule(org.python.antlr.ast.Module suite) throws Exception { - if (suite.getBody().size() > 0 && - suite.getBody().get(0) instanceof Expr && - ((Expr) suite.getBody().get(0)).getValue() instanceof Str) + if (suite.getInternalBody().size() > 0 && + suite.getInternalBody().get(0) instanceof Expr && + ((Expr) suite.getInternalBody().get(0)).getInternalValue() instanceof Str) { loadFrame(); code.ldc("__doc__"); - visit(((Expr) suite.getBody().get(0)).getValue()); + visit(((Expr) suite.getInternalBody().get(0)).getInternalValue()); code.invokevirtual("org/python/core/PyFrame", "setglobal", "(" +$str ... [truncated message content] |
From: <fwi...@us...> - 2008-11-23 14:01:11
|
Revision: 5612 http://jython.svn.sourceforge.net/jython/?rev=5612&view=rev Author: fwierzbicki Date: 2008-11-23 14:01:06 +0000 (Sun, 23 Nov 2008) Log Message: ----------- set* that take lists now take objects in prep for converting from Python objects. Modified Paths: -------------- branches/astwrite/ast/asdl_antlr.py branches/astwrite/src/org/python/antlr/ast/Assert.java branches/astwrite/src/org/python/antlr/ast/Assign.java branches/astwrite/src/org/python/antlr/ast/Attribute.java branches/astwrite/src/org/python/antlr/ast/AugAssign.java branches/astwrite/src/org/python/antlr/ast/BinOp.java branches/astwrite/src/org/python/antlr/ast/BoolOp.java branches/astwrite/src/org/python/antlr/ast/Break.java branches/astwrite/src/org/python/antlr/ast/Call.java branches/astwrite/src/org/python/antlr/ast/ClassDef.java branches/astwrite/src/org/python/antlr/ast/Compare.java branches/astwrite/src/org/python/antlr/ast/Continue.java branches/astwrite/src/org/python/antlr/ast/Delete.java branches/astwrite/src/org/python/antlr/ast/Dict.java branches/astwrite/src/org/python/antlr/ast/Ellipsis.java branches/astwrite/src/org/python/antlr/ast/Exec.java branches/astwrite/src/org/python/antlr/ast/Expr.java branches/astwrite/src/org/python/antlr/ast/Expression.java branches/astwrite/src/org/python/antlr/ast/ExtSlice.java branches/astwrite/src/org/python/antlr/ast/For.java branches/astwrite/src/org/python/antlr/ast/FunctionDef.java branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java branches/astwrite/src/org/python/antlr/ast/Global.java branches/astwrite/src/org/python/antlr/ast/If.java branches/astwrite/src/org/python/antlr/ast/IfExp.java branches/astwrite/src/org/python/antlr/ast/Import.java branches/astwrite/src/org/python/antlr/ast/ImportFrom.java branches/astwrite/src/org/python/antlr/ast/Index.java branches/astwrite/src/org/python/antlr/ast/Interactive.java branches/astwrite/src/org/python/antlr/ast/Lambda.java branches/astwrite/src/org/python/antlr/ast/List.java branches/astwrite/src/org/python/antlr/ast/ListComp.java branches/astwrite/src/org/python/antlr/ast/Module.java branches/astwrite/src/org/python/antlr/ast/Name.java branches/astwrite/src/org/python/antlr/ast/Num.java branches/astwrite/src/org/python/antlr/ast/Pass.java branches/astwrite/src/org/python/antlr/ast/Print.java branches/astwrite/src/org/python/antlr/ast/Raise.java branches/astwrite/src/org/python/antlr/ast/Repr.java branches/astwrite/src/org/python/antlr/ast/Return.java branches/astwrite/src/org/python/antlr/ast/Slice.java branches/astwrite/src/org/python/antlr/ast/Str.java branches/astwrite/src/org/python/antlr/ast/Subscript.java branches/astwrite/src/org/python/antlr/ast/Suite.java branches/astwrite/src/org/python/antlr/ast/TryExcept.java branches/astwrite/src/org/python/antlr/ast/TryFinally.java branches/astwrite/src/org/python/antlr/ast/Tuple.java branches/astwrite/src/org/python/antlr/ast/UnaryOp.java branches/astwrite/src/org/python/antlr/ast/While.java branches/astwrite/src/org/python/antlr/ast/With.java branches/astwrite/src/org/python/antlr/ast/Yield.java branches/astwrite/src/org/python/antlr/ast/aliasType.java branches/astwrite/src/org/python/antlr/ast/argumentsType.java branches/astwrite/src/org/python/antlr/ast/comprehensionType.java branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java branches/astwrite/src/org/python/antlr/ast/keywordType.java Modified: branches/astwrite/ast/asdl_antlr.py =================================================================== --- branches/astwrite/ast/asdl_antlr.py 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/ast/asdl_antlr.py 2008-11-23 14:01:06 UTC (rev 5612) @@ -413,19 +413,22 @@ str(field.name).capitalize()), depth) self.emit("return %s;" % field.name, depth+1) self.emit("}", depth) - self.emit("public void set%s(%s) {" % (str(field.name).capitalize(), - self.fieldDef(field)), depth) + self.emit("public Object get%s() {" % (str(field.name).capitalize()), depth) + self.emit("return %s;" % field.name, depth+1) + self.emit("}", depth) + self.emit("public void set%s(Object %s) {" % (str(field.name).capitalize(), + field.name), depth) if field.seq: - self.emit("this.%s = new %s(%s);" % (field.name, - self.javaType(field, True), field.name), depth+1) + self.emit("this.%s = new %s(" % (field.name, self.javaType(field, True)), depth+1) + self.emit("(%s)%s);" % (self.javaType(field), field.name), depth+2) else: - self.emit("this.%s = %s;" % (field.name, field.name), depth+1) + self.emit("this.%s = (%s)%s;" % (field.name, self.javaType(field), field.name), depth+1) self.emit("}", depth) self.emit("", 0) bltinnames = { - 'int' : 'int', - 'bool' : 'boolean', + 'int' : 'Integer', + 'bool' : 'Boolean', 'identifier' : 'String', 'string' : 'Object', 'object' : 'Object', # was PyObject Modified: branches/astwrite/src/org/python/antlr/ast/Assert.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,17 +12,23 @@ public exprType getInternalTest() { return test; } - public void setTest(exprType test) { - this.test = test; + public Object getTest() { + return test; } + public void setTest(Object test) { + this.test = (exprType)test; + } private exprType msg; public exprType getInternalMsg() { return msg; } - public void setMsg(exprType msg) { - this.msg = msg; + public Object getMsg() { + return msg; } + public void setMsg(Object msg) { + this.msg = (exprType)msg; + } private final static String[] fields = new String[] {"test", "msg"}; @@ -43,7 +49,7 @@ addChild(msg); } - public Assert(int ttype, Token token, exprType test, exprType msg) { + public Assert(Integer ttype, Token token, exprType test, exprType msg) { super(ttype, token); this.test = test; addChild(test); Modified: branches/astwrite/src/org/python/antlr/ast/Assign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,17 +12,24 @@ public ListWrapper<exprType> getInternalTargets() { return targets; } - public void setTargets(java.util.List<exprType> targets) { - this.targets = new ListWrapper<exprType>(targets); + public Object getTargets() { + return targets; } + public void setTargets(Object targets) { + this.targets = new ListWrapper<exprType>( + (java.util.List<exprType>)targets); + } private exprType value; public exprType getInternalValue() { return value; } - public void setValue(exprType value) { - this.value = value; + public Object getValue() { + return value; } + public void setValue(Object value) { + this.value = (exprType)value; + } private final static String[] fields = new String[] {"targets", "value"}; @@ -52,7 +59,7 @@ addChild(value); } - public Assign(int ttype, Token token, java.util.List<exprType> targets, + public Assign(Integer ttype, Token token, java.util.List<exprType> targets, exprType value) { super(ttype, token); this.targets = new ListWrapper<exprType>(targets); Modified: branches/astwrite/src/org/python/antlr/ast/Attribute.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,25 +12,34 @@ public exprType getInternalValue() { return value; } - public void setValue(exprType value) { - this.value = value; + public Object getValue() { + return value; } + public void setValue(Object value) { + this.value = (exprType)value; + } private String attr; public String getInternalAttr() { return attr; } - public void setAttr(String attr) { - this.attr = attr; + public Object getAttr() { + return attr; } + public void setAttr(Object attr) { + this.attr = (String)attr; + } private expr_contextType ctx; public expr_contextType getInternalCtx() { return ctx; } - public void setCtx(expr_contextType ctx) { - this.ctx = ctx; + public Object getCtx() { + return ctx; } + public void setCtx(Object ctx) { + this.ctx = (expr_contextType)ctx; + } private final static String[] fields = new String[] {"value", "attr", @@ -53,7 +62,7 @@ this.ctx = ctx; } - public Attribute(int ttype, Token token, exprType value, String attr, + public Attribute(Integer ttype, Token token, exprType value, String attr, expr_contextType ctx) { super(ttype, token); this.value = value; Modified: branches/astwrite/src/org/python/antlr/ast/AugAssign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,25 +12,34 @@ public exprType getInternalTarget() { return target; } - public void setTarget(exprType target) { - this.target = target; + public Object getTarget() { + return target; } + public void setTarget(Object target) { + this.target = (exprType)target; + } private operatorType op; public operatorType getInternalOp() { return op; } - public void setOp(operatorType op) { - this.op = op; + public Object getOp() { + return op; } + public void setOp(Object op) { + this.op = (operatorType)op; + } private exprType value; public exprType getInternalValue() { return value; } - public void setValue(exprType value) { - this.value = value; + public Object getValue() { + return value; } + public void setValue(Object value) { + this.value = (exprType)value; + } private final static String[] fields = new String[] {"target", "op", @@ -55,8 +64,8 @@ addChild(value); } - public AugAssign(int ttype, Token token, exprType target, operatorType op, - exprType value) { + public AugAssign(Integer ttype, Token token, exprType target, operatorType + op, exprType value) { super(ttype, token); this.target = target; addChild(target); Modified: branches/astwrite/src/org/python/antlr/ast/BinOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -2,6 +2,7 @@ package org.python.antlr.ast; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; +import org.python.core.PyInteger; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; @@ -12,27 +13,44 @@ public exprType getInternalLeft() { return left; } - public void setLeft(exprType left) { - this.left = left; + public Object getLeft() { + return left; } + public void setLeft(Object left) { + if (left instanceof exprType) { + this.left = (exprType)left; + } else if (left instanceof Integer) { + this.left = new Num(new PyInteger((Integer)left)); + } + } + private operatorType op; public operatorType getInternalOp() { return op; } - public void setOp(operatorType op) { - this.op = op; + public Object getOp() { + return op; } + public void setOp(Object op) { + this.op = (operatorType)op; + } private exprType right; public exprType getInternalRight() { return right; } - public void setRight(exprType right) { - this.right = right; + public Object getRight() { + return right; } + public void setRight(Object right) { + if (right instanceof exprType) { + this.right = (exprType)right; + } else if (right instanceof Integer) { + this.right = new Num(new PyInteger((Integer)right)); + } + } - private final static String[] fields = new String[] {"left", "op", "right"}; public String[] get_fields() { return fields; } @@ -44,6 +62,15 @@ addChild(right); } + public BinOp() { + } + + public BinOp(Object left, operatorType op, Object right) { + setLeft(left); + setOp(op); + setRight(right); + } + public BinOp(Token token, exprType left, operatorType op, exprType right) { super(token); this.left = left; @@ -53,7 +80,7 @@ addChild(right); } - public BinOp(int ttype, Token token, exprType left, operatorType op, + public BinOp(Integer ttype, Token token, exprType left, operatorType op, exprType right) { super(ttype, token); this.left = left; Modified: branches/astwrite/src/org/python/antlr/ast/BoolOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,17 +12,24 @@ public boolopType getInternalOp() { return op; } - public void setOp(boolopType op) { - this.op = op; + public Object getOp() { + return op; } + public void setOp(Object op) { + this.op = (boolopType)op; + } private ListWrapper<exprType> values; public ListWrapper<exprType> getInternalValues() { return values; } - public void setValues(java.util.List<exprType> values) { - this.values = new ListWrapper<exprType>(values); + public Object getValues() { + return values; } + public void setValues(Object values) { + this.values = new ListWrapper<exprType>( + (java.util.List<exprType>)values); + } private final static String[] fields = new String[] {"op", "values"}; @@ -49,7 +56,7 @@ } } - public BoolOp(int ttype, Token token, boolopType op, + public BoolOp(Integer ttype, Token token, boolopType op, java.util.List<exprType> values) { super(ttype, token); this.op = op; Modified: branches/astwrite/src/org/python/antlr/ast/Break.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Break.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/Break.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -16,7 +16,7 @@ super(token); } - public Break(int ttype, Token token) { + public Break(Integer ttype, Token token) { super(ttype, token); } Modified: branches/astwrite/src/org/python/antlr/ast/Call.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Call.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/Call.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,41 +12,58 @@ public exprType getInternalFunc() { return func; } - public void setFunc(exprType func) { - this.func = func; + public Object getFunc() { + return func; } + public void setFunc(Object func) { + this.func = (exprType)func; + } private ListWrapper<exprType> args; public ListWrapper<exprType> getInternalArgs() { return args; } - public void setArgs(java.util.List<exprType> args) { - this.args = new ListWrapper<exprType>(args); + public Object getArgs() { + return args; } + public void setArgs(Object args) { + this.args = new ListWrapper<exprType>( + (java.util.List<exprType>)args); + } private ListWrapper<keywordType> keywords; public ListWrapper<keywordType> getInternalKeywords() { return keywords; } - public void setKeywords(java.util.List<keywordType> keywords) { - this.keywords = new ListWrapper<keywordType>(keywords); + public Object getKeywords() { + return keywords; } + public void setKeywords(Object keywords) { + this.keywords = new ListWrapper<keywordType>( + (java.util.List<keywordType>)keywords); + } private exprType starargs; public exprType getInternalStarargs() { return starargs; } - public void setStarargs(exprType starargs) { - this.starargs = starargs; + public Object getStarargs() { + return starargs; } + public void setStarargs(Object starargs) { + this.starargs = (exprType)starargs; + } private exprType kwargs; public exprType getInternalKwargs() { return kwargs; } - public void setKwargs(exprType kwargs) { - this.kwargs = kwargs; + public Object getKwargs() { + return kwargs; } + public void setKwargs(Object kwargs) { + this.kwargs = (exprType)kwargs; + } private final static String[] fields = new String[] {"func", "args", @@ -99,9 +116,9 @@ addChild(kwargs); } - public Call(int ttype, Token token, exprType func, java.util.List<exprType> - args, java.util.List<keywordType> keywords, exprType starargs, exprType - kwargs) { + public Call(Integer ttype, Token token, exprType func, + java.util.List<exprType> args, java.util.List<keywordType> keywords, + exprType starargs, exprType kwargs) { super(ttype, token); this.func = func; addChild(func); Modified: branches/astwrite/src/org/python/antlr/ast/ClassDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,33 +12,48 @@ public String getInternalName() { return name; } - public void setName(String name) { - this.name = name; + public Object getName() { + return name; } + public void setName(Object name) { + this.name = (String)name; + } private ListWrapper<exprType> bases; public ListWrapper<exprType> getInternalBases() { return bases; } - public void setBases(java.util.List<exprType> bases) { - this.bases = new ListWrapper<exprType>(bases); + public Object getBases() { + return bases; } + public void setBases(Object bases) { + this.bases = new ListWrapper<exprType>( + (java.util.List<exprType>)bases); + } private ListWrapper<stmtType> body; public ListWrapper<stmtType> getInternalBody() { return body; } - public void setBody(java.util.List<stmtType> body) { - this.body = new ListWrapper<stmtType>(body); + public Object getBody() { + return body; } + public void setBody(Object body) { + this.body = new ListWrapper<stmtType>( + (java.util.List<stmtType>)body); + } private ListWrapper<exprType> decorators; public ListWrapper<exprType> getInternalDecorators() { return decorators; } - public void setDecorators(java.util.List<exprType> decorators) { - this.decorators = new ListWrapper<exprType>(decorators); + public Object getDecorators() { + return decorators; } + public void setDecorators(Object decorators) { + this.decorators = new ListWrapper<exprType>( + (java.util.List<exprType>)decorators); + } private final static String[] fields = new String[] {"name", "bases", @@ -92,7 +107,7 @@ } } - public ClassDef(int ttype, Token token, String name, + public ClassDef(Integer ttype, Token token, String name, java.util.List<exprType> bases, java.util.List<stmtType> body, java.util.List<exprType> decorators) { super(ttype, token); Modified: branches/astwrite/src/org/python/antlr/ast/Compare.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,25 +12,36 @@ public exprType getInternalLeft() { return left; } - public void setLeft(exprType left) { - this.left = left; + public Object getLeft() { + return left; } + public void setLeft(Object left) { + this.left = (exprType)left; + } private ListWrapper<cmpopType> ops; public ListWrapper<cmpopType> getInternalOps() { return ops; } - public void setOps(java.util.List<cmpopType> ops) { - this.ops = new ListWrapper<cmpopType>(ops); + public Object getOps() { + return ops; } + public void setOps(Object ops) { + this.ops = new ListWrapper<cmpopType>( + (java.util.List<cmpopType>)ops); + } private ListWrapper<exprType> comparators; public ListWrapper<exprType> getInternalComparators() { return comparators; } - public void setComparators(java.util.List<exprType> comparators) { - this.comparators = new ListWrapper<exprType>(comparators); + public Object getComparators() { + return comparators; } + public void setComparators(Object comparators) { + this.comparators = new ListWrapper<exprType>( + (java.util.List<exprType>)comparators); + } private final static String[] fields = new String[] {"left", "ops", @@ -64,7 +75,7 @@ } } - public Compare(int ttype, Token token, exprType left, + public Compare(Integer ttype, Token token, exprType left, java.util.List<cmpopType> ops, java.util.List<exprType> comparators) { super(ttype, token); this.left = left; Modified: branches/astwrite/src/org/python/antlr/ast/Continue.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Continue.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/Continue.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -16,7 +16,7 @@ super(token); } - public Continue(int ttype, Token token) { + public Continue(Integer ttype, Token token) { super(ttype, token); } Modified: branches/astwrite/src/org/python/antlr/ast/Delete.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,9 +12,13 @@ public ListWrapper<exprType> getInternalTargets() { return targets; } - public void setTargets(java.util.List<exprType> targets) { - this.targets = new ListWrapper<exprType>(targets); + public Object getTargets() { + return targets; } + public void setTargets(Object targets) { + this.targets = new ListWrapper<exprType>( + (java.util.List<exprType>)targets); + } private final static String[] fields = new String[] {"targets"}; @@ -39,7 +43,8 @@ } } - public Delete(int ttype, Token token, java.util.List<exprType> targets) { + public Delete(Integer ttype, Token token, java.util.List<exprType> targets) + { super(ttype, token); this.targets = new ListWrapper<exprType>(targets); if (targets != null) { Modified: branches/astwrite/src/org/python/antlr/ast/Dict.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,17 +12,25 @@ public ListWrapper<exprType> getInternalKeys() { return keys; } - public void setKeys(java.util.List<exprType> keys) { - this.keys = new ListWrapper<exprType>(keys); + public Object getKeys() { + return keys; } + public void setKeys(Object keys) { + this.keys = new ListWrapper<exprType>( + (java.util.List<exprType>)keys); + } private ListWrapper<exprType> values; public ListWrapper<exprType> getInternalValues() { return values; } - public void setValues(java.util.List<exprType> values) { - this.values = new ListWrapper<exprType>(values); + public Object getValues() { + return values; } + public void setValues(Object values) { + this.values = new ListWrapper<exprType>( + (java.util.List<exprType>)values); + } private final static String[] fields = new String[] {"keys", "values"}; @@ -61,7 +69,7 @@ } } - public Dict(int ttype, Token token, java.util.List<exprType> keys, + public Dict(Integer ttype, Token token, java.util.List<exprType> keys, java.util.List<exprType> values) { super(ttype, token); this.keys = new ListWrapper<exprType>(keys); Modified: branches/astwrite/src/org/python/antlr/ast/Ellipsis.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Ellipsis.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/Ellipsis.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -16,7 +16,7 @@ super(token); } - public Ellipsis(int ttype, Token token) { + public Ellipsis(Integer ttype, Token token) { super(ttype, token); } Modified: branches/astwrite/src/org/python/antlr/ast/Exec.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,25 +12,34 @@ public exprType getInternalBody() { return body; } - public void setBody(exprType body) { - this.body = body; + public Object getBody() { + return body; } + public void setBody(Object body) { + this.body = (exprType)body; + } private exprType globals; public exprType getInternalGlobals() { return globals; } - public void setGlobals(exprType globals) { - this.globals = globals; + public Object getGlobals() { + return globals; } + public void setGlobals(Object globals) { + this.globals = (exprType)globals; + } private exprType locals; public exprType getInternalLocals() { return locals; } - public void setLocals(exprType locals) { - this.locals = locals; + public Object getLocals() { + return locals; } + public void setLocals(Object locals) { + this.locals = (exprType)locals; + } private final static String[] fields = new String[] {"body", "globals", @@ -56,7 +65,7 @@ addChild(locals); } - public Exec(int ttype, Token token, exprType body, exprType globals, + public Exec(Integer ttype, Token token, exprType body, exprType globals, exprType locals) { super(ttype, token); this.body = body; Modified: branches/astwrite/src/org/python/antlr/ast/Expr.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,9 +12,12 @@ public exprType getInternalValue() { return value; } - public void setValue(exprType value) { - this.value = value; + public Object getValue() { + return value; } + public void setValue(Object value) { + this.value = (exprType)value; + } private final static String[] fields = new String[] {"value"}; @@ -31,7 +34,7 @@ addChild(value); } - public Expr(int ttype, Token token, exprType value) { + public Expr(Integer ttype, Token token, exprType value) { super(ttype, token); this.value = value; addChild(value); Modified: branches/astwrite/src/org/python/antlr/ast/Expression.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Expression.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/Expression.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,9 +12,12 @@ public exprType getInternalBody() { return body; } - public void setBody(exprType body) { - this.body = body; + public Object getBody() { + return body; } + public void setBody(Object body) { + this.body = (exprType)body; + } private final static String[] fields = new String[] {"body"}; @@ -31,7 +34,7 @@ addChild(body); } - public Expression(int ttype, Token token, exprType body) { + public Expression(Integer ttype, Token token, exprType body) { super(ttype, token); this.body = body; addChild(body); Modified: branches/astwrite/src/org/python/antlr/ast/ExtSlice.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,9 +12,13 @@ public ListWrapper<sliceType> getInternalDims() { return dims; } - public void setDims(java.util.List<sliceType> dims) { - this.dims = new ListWrapper<sliceType>(dims); + public Object getDims() { + return dims; } + public void setDims(Object dims) { + this.dims = new ListWrapper<sliceType>( + (java.util.List<sliceType>)dims); + } private final static String[] fields = new String[] {"dims"}; @@ -39,7 +43,8 @@ } } - public ExtSlice(int ttype, Token token, java.util.List<sliceType> dims) { + public ExtSlice(Integer ttype, Token token, java.util.List<sliceType> dims) + { super(ttype, token); this.dims = new ListWrapper<sliceType>(dims); if (dims != null) { Modified: branches/astwrite/src/org/python/antlr/ast/For.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/For.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/For.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,33 +12,47 @@ public exprType getInternalTarget() { return target; } - public void setTarget(exprType target) { - this.target = target; + public Object getTarget() { + return target; } + public void setTarget(Object target) { + this.target = (exprType)target; + } private exprType iter; public exprType getInternalIter() { return iter; } - public void setIter(exprType iter) { - this.iter = iter; + public Object getIter() { + return iter; } + public void setIter(Object iter) { + this.iter = (exprType)iter; + } private ListWrapper<stmtType> body; public ListWrapper<stmtType> getInternalBody() { return body; } - public void setBody(java.util.List<stmtType> body) { - this.body = new ListWrapper<stmtType>(body); + public Object getBody() { + return body; } + public void setBody(Object body) { + this.body = new ListWrapper<stmtType>( + (java.util.List<stmtType>)body); + } private ListWrapper<stmtType> orelse; public ListWrapper<stmtType> getInternalOrelse() { return orelse; } - public void setOrelse(java.util.List<stmtType> orelse) { - this.orelse = new ListWrapper<stmtType>(orelse); + public Object getOrelse() { + return orelse; } + public void setOrelse(Object orelse) { + this.orelse = new ListWrapper<stmtType>( + (java.util.List<stmtType>)orelse); + } private final static String[] fields = new String[] {"target", "iter", @@ -86,7 +100,7 @@ } } - public For(int ttype, Token token, exprType target, exprType iter, + public For(Integer ttype, Token token, exprType target, exprType iter, java.util.List<stmtType> body, java.util.List<stmtType> orelse) { super(ttype, token); this.target = target; Modified: branches/astwrite/src/org/python/antlr/ast/FunctionDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,33 +12,47 @@ public String getInternalName() { return name; } - public void setName(String name) { - this.name = name; + public Object getName() { + return name; } + public void setName(Object name) { + this.name = (String)name; + } private argumentsType args; public argumentsType getInternalArgs() { return args; } - public void setArgs(argumentsType args) { - this.args = args; + public Object getArgs() { + return args; } + public void setArgs(Object args) { + this.args = (argumentsType)args; + } private ListWrapper<stmtType> body; public ListWrapper<stmtType> getInternalBody() { return body; } - public void setBody(java.util.List<stmtType> body) { - this.body = new ListWrapper<stmtType>(body); + public Object getBody() { + return body; } + public void setBody(Object body) { + this.body = new ListWrapper<stmtType>( + (java.util.List<stmtType>)body); + } private ListWrapper<exprType> decorators; public ListWrapper<exprType> getInternalDecorators() { return decorators; } - public void setDecorators(java.util.List<exprType> decorators) { - this.decorators = new ListWrapper<exprType>(decorators); + public Object getDecorators() { + return decorators; } + public void setDecorators(Object decorators) { + this.decorators = new ListWrapper<exprType>( + (java.util.List<exprType>)decorators); + } private final static String[] fields = new String[] {"name", "args", @@ -82,8 +96,8 @@ } } - public FunctionDef(int ttype, Token token, String name, argumentsType args, - java.util.List<stmtType> body, java.util.List<exprType> decorators) { + public FunctionDef(Integer ttype, Token token, String name, argumentsType + args, java.util.List<stmtType> body, java.util.List<exprType> decorators) { super(ttype, token); this.name = name; this.args = args; Modified: branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,17 +12,24 @@ public exprType getInternalElt() { return elt; } - public void setElt(exprType elt) { - this.elt = elt; + public Object getElt() { + return elt; } + public void setElt(Object elt) { + this.elt = (exprType)elt; + } private ListWrapper<comprehensionType> generators; public ListWrapper<comprehensionType> getInternalGenerators() { return generators; } - public void setGenerators(java.util.List<comprehensionType> generators) { - this.generators = new ListWrapper<comprehensionType>(generators); + public Object getGenerators() { + return generators; } + public void setGenerators(Object generators) { + this.generators = new ListWrapper<comprehensionType>( + (java.util.List<comprehensionType>)generators); + } private final static String[] fields = new String[] {"elt", "generators"}; @@ -53,7 +60,7 @@ } } - public GeneratorExp(int ttype, Token token, exprType elt, + public GeneratorExp(Integer ttype, Token token, exprType elt, java.util.List<comprehensionType> generators) { super(ttype, token); this.elt = elt; Modified: branches/astwrite/src/org/python/antlr/ast/Global.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Global.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/Global.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,9 +12,13 @@ public ListWrapper<String> getInternalNames() { return names; } - public void setNames(java.util.List<String> names) { - this.names = new ListWrapper<String>(names); + public Object getNames() { + return names; } + public void setNames(Object names) { + this.names = new ListWrapper<String>( + (java.util.List<String>)names); + } private final static String[] fields = new String[] {"names"}; @@ -29,7 +33,7 @@ this.names = new ListWrapper<String>(names); } - public Global(int ttype, Token token, java.util.List<String> names) { + public Global(Integer ttype, Token token, java.util.List<String> names) { super(ttype, token); this.names = new ListWrapper<String>(names); } Modified: branches/astwrite/src/org/python/antlr/ast/If.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/If.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/If.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,25 +12,36 @@ public exprType getInternalTest() { return test; } - public void setTest(exprType test) { - this.test = test; + public Object getTest() { + return test; } + public void setTest(Object test) { + this.test = (exprType)test; + } private ListWrapper<stmtType> body; public ListWrapper<stmtType> getInternalBody() { return body; } - public void setBody(java.util.List<stmtType> body) { - this.body = new ListWrapper<stmtType>(body); + public Object getBody() { + return body; } + public void setBody(Object body) { + this.body = new ListWrapper<stmtType>( + (java.util.List<stmtType>)body); + } private ListWrapper<stmtType> orelse; public ListWrapper<stmtType> getInternalOrelse() { return orelse; } - public void setOrelse(java.util.List<stmtType> orelse) { - this.orelse = new ListWrapper<stmtType>(orelse); + public Object getOrelse() { + return orelse; } + public void setOrelse(Object orelse) { + this.orelse = new ListWrapper<stmtType>( + (java.util.List<stmtType>)orelse); + } private final static String[] fields = new String[] {"test", "body", @@ -74,8 +85,8 @@ } } - public If(int ttype, Token token, exprType test, java.util.List<stmtType> - body, java.util.List<stmtType> orelse) { + public If(Integer ttype, Token token, exprType test, + java.util.List<stmtType> body, java.util.List<stmtType> orelse) { super(ttype, token); this.test = test; addChild(test); Modified: branches/astwrite/src/org/python/antlr/ast/IfExp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/IfExp.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/IfExp.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,25 +12,34 @@ public exprType getInternalTest() { return test; } - public void setTest(exprType test) { - this.test = test; + public Object getTest() { + return test; } + public void setTest(Object test) { + this.test = (exprType)test; + } private exprType body; public exprType getInternalBody() { return body; } - public void setBody(exprType body) { - this.body = body; + public Object getBody() { + return body; } + public void setBody(Object body) { + this.body = (exprType)body; + } private exprType orelse; public exprType getInternalOrelse() { return orelse; } - public void setOrelse(exprType orelse) { - this.orelse = orelse; + public Object getOrelse() { + return orelse; } + public void setOrelse(Object orelse) { + this.orelse = (exprType)orelse; + } private final static String[] fields = new String[] {"test", "body", @@ -56,8 +65,8 @@ addChild(orelse); } - public IfExp(int ttype, Token token, exprType test, exprType body, exprType - orelse) { + public IfExp(Integer ttype, Token token, exprType test, exprType body, + exprType orelse) { super(ttype, token); this.test = test; addChild(test); Modified: branches/astwrite/src/org/python/antlr/ast/Import.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Import.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/Import.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,9 +12,13 @@ public ListWrapper<aliasType> getInternalNames() { return names; } - public void setNames(java.util.List<aliasType> names) { - this.names = new ListWrapper<aliasType>(names); + public Object getNames() { + return names; } + public void setNames(Object names) { + this.names = new ListWrapper<aliasType>( + (java.util.List<aliasType>)names); + } private final static String[] fields = new String[] {"names"}; @@ -39,7 +43,7 @@ } } - public Import(int ttype, Token token, java.util.List<aliasType> names) { + public Import(Integer ttype, Token token, java.util.List<aliasType> names) { super(ttype, token); this.names = new ListWrapper<aliasType>(names); if (names != null) { Modified: branches/astwrite/src/org/python/antlr/ast/ImportFrom.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ImportFrom.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/ImportFrom.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,32 +12,42 @@ public String getInternalModule() { return module; } - public void setModule(String module) { - this.module = module; + public Object getModule() { + return module; } + public void setModule(Object module) { + this.module = (String)module; + } private ListWrapper<aliasType> names; public ListWrapper<aliasType> getInternalNames() { return names; } - public void setNames(java.util.List<aliasType> names) { - this.names = new ListWrapper<aliasType>(names); + public Object getNames() { + return names; } + public void setNames(Object names) { + this.names = new ListWrapper<aliasType>( + (java.util.List<aliasType>)names); + } - private int level; - public int getInternalLevel() { + private Integer level; + public Integer getInternalLevel() { return level; } - public void setLevel(int level) { - this.level = level; + public Object getLevel() { + return level; } + public void setLevel(Object level) { + this.level = (Integer)level; + } private final static String[] fields = new String[] {"module", "names", "level"}; public String[] get_fields() { return fields; } - public ImportFrom(String module, java.util.List<aliasType> names, int + public ImportFrom(String module, java.util.List<aliasType> names, Integer level) { this.module = module; this.names = new ListWrapper<aliasType>(names); @@ -50,7 +60,7 @@ } public ImportFrom(Token token, String module, java.util.List<aliasType> - names, int level) { + names, Integer level) { super(token); this.module = module; this.names = new ListWrapper<aliasType>(names); @@ -62,8 +72,8 @@ this.level = level; } - public ImportFrom(int ttype, Token token, String module, - java.util.List<aliasType> names, int level) { + public ImportFrom(Integer ttype, Token token, String module, + java.util.List<aliasType> names, Integer level) { super(ttype, token); this.module = module; this.names = new ListWrapper<aliasType>(names); @@ -76,7 +86,7 @@ } public ImportFrom(PythonTree tree, String module, java.util.List<aliasType> - names, int level) { + names, Integer level) { super(tree); this.module = module; this.names = new ListWrapper<aliasType>(names); Modified: branches/astwrite/src/org/python/antlr/ast/Index.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Index.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/Index.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,9 +12,12 @@ public exprType getInternalValue() { return value; } - public void setValue(exprType value) { - this.value = value; + public Object getValue() { + return value; } + public void setValue(Object value) { + this.value = (exprType)value; + } private final static String[] fields = new String[] {"value"}; @@ -31,7 +34,7 @@ addChild(value); } - public Index(int ttype, Token token, exprType value) { + public Index(Integer ttype, Token token, exprType value) { super(ttype, token); this.value = value; addChild(value); Modified: branches/astwrite/src/org/python/antlr/ast/Interactive.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Interactive.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/Interactive.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,9 +12,13 @@ public ListWrapper<stmtType> getInternalBody() { return body; } - public void setBody(java.util.List<stmtType> body) { - this.body = new ListWrapper<stmtType>(body); + public Object getBody() { + return body; } + public void setBody(Object body) { + this.body = new ListWrapper<stmtType>( + (java.util.List<stmtType>)body); + } private final static String[] fields = new String[] {"body"}; @@ -39,7 +43,8 @@ } } - public Interactive(int ttype, Token token, java.util.List<stmtType> body) { + public Interactive(Integer ttype, Token token, java.util.List<stmtType> + body) { super(ttype, token); this.body = new ListWrapper<stmtType>(body); if (body != null) { Modified: branches/astwrite/src/org/python/antlr/ast/Lambda.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Lambda.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/Lambda.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,17 +12,23 @@ public argumentsType getInternalArgs() { return args; } - public void setArgs(argumentsType args) { - this.args = args; + public Object getArgs() { + return args; } + public void setArgs(Object args) { + this.args = (argumentsType)args; + } private exprType body; public exprType getInternalBody() { return body; } - public void setBody(exprType body) { - this.body = body; + public Object getBody() { + return body; } + public void setBody(Object body) { + this.body = (exprType)body; + } private final static String[] fields = new String[] {"args", "body"}; @@ -41,7 +47,8 @@ addChild(body); } - public Lambda(int ttype, Token token, argumentsType args, exprType body) { + public Lambda(Integer ttype, Token token, argumentsType args, exprType + body) { super(ttype, token); this.args = args; this.body = body; Modified: branches/astwrite/src/org/python/antlr/ast/List.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/List.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/List.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,17 +12,24 @@ public ListWrapper<exprType> getInternalElts() { return elts; } - public void setElts(java.util.List<exprType> elts) { - this.elts = new ListWrapper<exprType>(elts); + public Object getElts() { + return elts; } + public void setElts(Object elts) { + this.elts = new ListWrapper<exprType>( + (java.util.List<exprType>)elts); + } private expr_contextType ctx; public expr_contextType getInternalCtx() { return ctx; } - public void setCtx(expr_contextType ctx) { - this.ctx = ctx; + public Object getCtx() { + return ctx; } + public void setCtx(Object ctx) { + this.ctx = (expr_contextType)ctx; + } private final static String[] fields = new String[] {"elts", "ctx"}; @@ -50,7 +57,7 @@ this.ctx = ctx; } - public List(int ttype, Token token, java.util.List<exprType> elts, + public List(Integer ttype, Token token, java.util.List<exprType> elts, expr_contextType ctx) { super(ttype, token); this.elts = new ListWrapper<exprType>(elts); Modified: branches/astwrite/src/org/python/antlr/ast/ListComp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ListComp.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/ListComp.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,17 +12,24 @@ public exprType getInternalElt() { return elt; } - public void setElt(exprType elt) { - this.elt = elt; + public Object getElt() { + return elt; } + public void setElt(Object elt) { + this.elt = (exprType)elt; + } private ListWrapper<comprehensionType> generators; public ListWrapper<comprehensionType> getInternalGenerators() { return generators; } - public void setGenerators(java.util.List<comprehensionType> generators) { - this.generators = new ListWrapper<comprehensionType>(generators); + public Object getGenerators() { + return generators; } + public void setGenerators(Object generators) { + this.generators = new ListWrapper<comprehensionType>( + (java.util.List<comprehensionType>)generators); + } private final static String[] fields = new String[] {"elt", "generators"}; @@ -53,7 +60,7 @@ } } - public ListComp(int ttype, Token token, exprType elt, + public ListComp(Integer ttype, Token token, exprType elt, java.util.List<comprehensionType> generators) { super(ttype, token); this.elt = elt; Modified: branches/astwrite/src/org/python/antlr/ast/Module.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Module.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/Module.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,9 +12,13 @@ public ListWrapper<stmtType> getInternalBody() { return body; } - public void setBody(java.util.List<stmtType> body) { - this.body = new ListWrapper<stmtType>(body); + public Object getBody() { + return body; } + public void setBody(Object body) { + this.body = new ListWrapper<stmtType>( + (java.util.List<stmtType>)body); + } private final static String[] fields = new String[] {"body"}; @@ -39,7 +43,7 @@ } } - public Module(int ttype, Token token, java.util.List<stmtType> body) { + public Module(Integer ttype, Token token, java.util.List<stmtType> body) { super(ttype, token); this.body = new ListWrapper<stmtType>(body); if (body != null) { Modified: branches/astwrite/src/org/python/antlr/ast/Name.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Name.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/Name.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,17 +12,23 @@ public String getInternalId() { return id; } - public void setId(String id) { - this.id = id; + public Object getId() { + return id; } + public void setId(Object id) { + this.id = (String)id; + } private expr_contextType ctx; public expr_contextType getInternalCtx() { return ctx; } - public void setCtx(expr_contextType ctx) { - this.ctx = ctx; + public Object getCtx() { + return ctx; } + public void setCtx(Object ctx) { + this.ctx = (expr_contextType)ctx; + } private final static String[] fields = new String[] {"id", "ctx"}; @@ -39,7 +45,7 @@ this.ctx = ctx; } - public Name(int ttype, Token token, String id, expr_contextType ctx) { + public Name(Integer ttype, Token token, String id, expr_contextType ctx) { super(ttype, token); this.id = id; this.ctx = ctx; Modified: branches/astwrite/src/org/python/antlr/ast/Num.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Num.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/Num.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,8 +12,11 @@ public Object getInternalN() { return n; } + public Object getN() { + return n; + } public void setN(Object n) { - this.n = n; + this.n = (Object)n; } @@ -29,7 +32,7 @@ this.n = n; } - public Num(int ttype, Token token, Object n) { + public Num(Integer ttype, Token token, Object n) { super(ttype, token); this.n = n; } Modified: branches/astwrite/src/org/python/antlr/ast/Pass.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Pass.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/Pass.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -16,7 +16,7 @@ super(token); } - public Pass(int ttype, Token token) { + public Pass(Integer ttype, Token token) { super(ttype, token); } Modified: branches/astwrite/src/org/python/antlr/ast/Print.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Print.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/Print.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,32 +12,42 @@ public exprType getInternalDest() { return dest; } - public void setDest(exprType dest) { - this.dest = dest; + public Object getDest() { + return dest; } + public void setDest(Object dest) { + this.dest = (exprType)dest; + } private ListWrapper<exprType> values; public ListWrapper<exprType> getInternalValues() { return values; } - public void setValues(java.util.List<exprType> values) { - this.values = new ListWrapper<exprType>(values); + public Object getValues() { + return values; } + public void setValues(Object values) { + this.values = new ListWrapper<exprType>( + (java.util.List<exprType>)values); + } - private boolean nl; - public boolean getInternalNl() { + private Boolean nl; + public Boolean getInternalNl() { return nl; } - public void setNl(boolean nl) { - this.nl = nl; + public Object getNl() { + return nl; } + public void setNl(Object nl) { + this.nl = (Boolean)nl; + } private final static String[] fields = new String[] {"dest", "values", "nl"}; public String[] get_fields() { return fields; } - public Print(exprType dest, java.util.List<exprType> values, boolean nl) { + public Print(exprType dest, java.util.List<exprType> values, Boolean nl) { this.dest = dest; addChild(dest); this.values = new ListWrapper<exprType>(values); @@ -50,7 +60,7 @@ } public Print(Token token, exprType dest, java.util.List<exprType> values, - boolean nl) { + Boolean nl) { super(token); this.dest = dest; addChild(dest); @@ -63,8 +73,8 @@ this.nl = nl; } - public Print(int ttype, Token token, exprType dest, - java.util.List<exprType> values, boolean nl) { + public Print(Integer ttype, Token token, exprType dest, + java.util.List<exprType> values, Boolean nl) { super(ttype, token); this.dest = dest; addChild(dest); @@ -78,7 +88,7 @@ } public Print(PythonTree tree, exprType dest, java.util.List<exprType> - values, boolean nl) { + values, Boolean nl) { super(tree); this.dest = dest; addChild(dest); Modified: branches/astwrite/src/org/python/antlr/ast/Raise.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Raise.java 2008-11-23 06:28:45 UTC (rev 5611) +++ branches/astwrite/src/org/python/antlr/ast/Raise.java 2008-11-23 14:01:06 UTC (rev 5612) @@ -12,25 +12,34 @@ public exprType getInternalExcepttype() { return excepttype; } - public void setExcepttype(exprType excepttype) { - this.excepttype = excepttype; + public Object getExcepttype() { + return excepttype; } + public void setExcepttype(Object excepttype) { + this.excepttype = (exprType)excepttype; + } private exprType inst; public exprType getInternalInst() { return inst; } - public void setInst(exprType inst) { - this.inst = inst; + public Object getInst() { + return inst; } + public void setInst(Object inst) { + this.inst = (exprType)inst; + } private exprType tback; public exprType getInternalTback() ... [truncated message content] |
From: <fwi...@us...> - 2008-11-23 14:49:35
|
Revision: 5615 http://jython.svn.sourceforge.net/jython/?rev=5615&view=rev Author: fwierzbicki Date: 2008-11-23 14:49:27 +0000 (Sun, 23 Nov 2008) Log Message: ----------- Merged revisions 5593,5596,5598-5604,5606,5608-5611 via svnmerge from https://jython.svn.sourceforge.net/svnroot/jython/trunk/jython Modified Paths: -------------- branches/astwrite/Lib/inspect.py branches/astwrite/Lib/test/test_chdir.py branches/astwrite/Lib/test/test_descr.py branches/astwrite/Lib/test/test_import_jy.py branches/astwrite/Lib/test/test_inspect.py branches/astwrite/Lib/zlib.py branches/astwrite/src/com/ziclix/python/sql/Fetch.java branches/astwrite/src/com/ziclix/python/sql/Procedure.java branches/astwrite/src/com/ziclix/python/sql/PyCursor.java branches/astwrite/src/com/ziclix/python/sql/PyStatement.java branches/astwrite/src/org/python/compiler/CodeCompiler.java branches/astwrite/src/org/python/compiler/Module.java branches/astwrite/src/org/python/core/Py.java branches/astwrite/src/org/python/core/PyArray.java branches/astwrite/src/org/python/core/PyFile.java branches/astwrite/src/org/python/core/PyObject.java branches/astwrite/src/org/python/core/PySequence.java branches/astwrite/src/org/python/core/PyString.java branches/astwrite/src/org/python/core/PySystemState.java branches/astwrite/src/org/python/core/__builtin__.java branches/astwrite/src/org/python/core/imp.java branches/astwrite/src/org/python/core/util/FileUtil.java branches/astwrite/src/org/python/modules/_codecs.java branches/astwrite/src/org/python/modules/imp.java branches/astwrite/src/org/python/modules/struct.java branches/astwrite/src/org/python/modules/thread/thread.java branches/astwrite/src/org/python/modules/time/PyTimeTuple.java branches/astwrite/src/org/python/modules/time/Time.java Added Paths: ----------- branches/astwrite/Lib/pydoc.py branches/astwrite/Lib/warnings.py Property Changed: ---------------- branches/astwrite/ Property changes on: branches/astwrite ___________________________________________________________________ Modified: svnmerge-integrated - /trunk/jython:1-5584 + /trunk/jython:1-5614 Modified: branches/astwrite/Lib/inspect.py =================================================================== --- branches/astwrite/Lib/inspect.py 2008-11-23 14:16:31 UTC (rev 5614) +++ branches/astwrite/Lib/inspect.py 2008-11-23 14:49:27 UTC (rev 5615) @@ -383,6 +383,8 @@ filename = getfile(object) if string.lower(filename[-4:]) in ('.pyc', '.pyo'): filename = filename[:-4] + '.py' + elif filename.endswith('$py.class'): + filename = filename[:-9] + '.py' for suffix, mode, kind in imp.get_suffixes(): if 'b' in mode and string.lower(filename[-len(suffix):]) == suffix: # Looks like a binary file. We want to only return a text file. Copied: branches/astwrite/Lib/pydoc.py (from rev 5611, trunk/jython/Lib/pydoc.py) =================================================================== --- branches/astwrite/Lib/pydoc.py (rev 0) +++ branches/astwrite/Lib/pydoc.py 2008-11-23 14:49:27 UTC (rev 5615) @@ -0,0 +1,2257 @@ +#!/usr/bin/env python +# -*- coding: Latin-1 -*- +"""Generate Python documentation in HTML or text for interactive use. + +In the Python interpreter, do "from pydoc import help" to provide online +help. Calling help(thing) on a Python object documents the object. + +Or, at the shell command line outside of Python: + +Run "pydoc <name>" to show documentation on something. <name> may be +the name of a function, module, package, or a dotted reference to a +class or function within a module or module in a package. If the +argument contains a path segment delimiter (e.g. slash on Unix, +backslash on Windows) it is treated as the path to a Python source file. + +Run "pydoc -k <keyword>" to search for a keyword in the synopsis lines +of all available modules. + +Run "pydoc -p <port>" to start an HTTP server on a given port on the +local machine to generate documentation web pages. + +For platforms without a command line, "pydoc -g" starts the HTTP server +and also pops up a little window for controlling it. + +Run "pydoc -w <name>" to write out the HTML documentation for a module +to a file named "<name>.html". + +Module docs for core modules are assumed to be in + + http://www.python.org/doc/current/lib/ + +This can be overridden by setting the PYTHONDOCS environment variable +to a different URL or to a local directory containing the Library +Reference Manual pages. +""" + +__author__ = "Ka-Ping Yee <pi...@lf...>" +__date__ = "26 February 2001" + +__version__ = "$Revision: 54366 $" +__credits__ = """Guido van Rossum, for an excellent programming language. +Tommy Burnette, the original creator of manpy. +Paul Prescod, for all his work on onlinehelp. +Richard Chamberlain, for the first implementation of textdoc. +""" + +# Known bugs that can't be fixed here: +# - imp.load_module() cannot be prevented from clobbering existing +# loaded modules, so calling synopsis() on a binary module file +# changes the contents of any existing module with the same name. +# - If the __file__ attribute on a module is a relative path and +# the current directory is changed with os.chdir(), an incorrect +# path will be displayed. + +import sys, imp, os, re, types, inspect, __builtin__, pkgutil +from repr import Repr +from string import expandtabs, find, join, lower, split, strip, rfind, rstrip +try: + from collections import deque +except ImportError: + # Python 2.3 compatibility + class deque(list): + def popleft(self): + return self.pop(0) + +# --------------------------------------------------------- common routines + +def pathdirs(): + """Convert sys.path into a list of absolute, existing, unique paths.""" + dirs = [] + normdirs = [] + for dir in sys.path: + dir = os.path.abspath(dir or '.') + normdir = os.path.normcase(dir) + if normdir not in normdirs and os.path.isdir(dir): + dirs.append(dir) + normdirs.append(normdir) + return dirs + +def getdoc(object): + """Get the doc string or comments for an object.""" + result = inspect.getdoc(object) or inspect.getcomments(object) + return result and re.sub('^ *\n', '', rstrip(result)) or '' + +def splitdoc(doc): + """Split a doc string into a synopsis line (if any) and the rest.""" + lines = split(strip(doc), '\n') + if len(lines) == 1: + return lines[0], '' + elif len(lines) >= 2 and not rstrip(lines[1]): + return lines[0], join(lines[2:], '\n') + return '', join(lines, '\n') + +def classname(object, modname): + """Get a class name and qualify it with a module name if necessary.""" + name = object.__name__ + if object.__module__ != modname: + name = object.__module__ + '.' + name + return name + +def isdata(object): + """Check if an object is of a type that probably means it's data.""" + return not (inspect.ismodule(object) or inspect.isclass(object) or + inspect.isroutine(object) or inspect.isframe(object) or + inspect.istraceback(object) or inspect.iscode(object)) + +def replace(text, *pairs): + """Do a series of global replacements on a string.""" + while pairs: + text = join(split(text, pairs[0]), pairs[1]) + pairs = pairs[2:] + return text + +def cram(text, maxlen): + """Omit part of a string if needed to make it fit in a maximum length.""" + if len(text) > maxlen: + pre = max(0, (maxlen-3)//2) + post = max(0, maxlen-3-pre) + return text[:pre] + '...' + text[len(text)-post:] + return text + +_re_stripid = re.compile(r' at 0x[0-9a-f]{6,16}(>+)$', re.IGNORECASE) +def stripid(text): + """Remove the hexadecimal id from a Python object representation.""" + # The behaviour of %p is implementation-dependent in terms of case. + if _re_stripid.search(repr(Exception)): + return _re_stripid.sub(r'\1', text) + return text + +def _is_some_method(obj): + return inspect.ismethod(obj) or inspect.ismethoddescriptor(obj) + +def allmethods(cl): + methods = {} + for key, value in inspect.getmembers(cl, _is_some_method): + methods[key] = 1 + for base in cl.__bases__: + methods.update(allmethods(base)) # all your base are belong to us + for key in methods.keys(): + methods[key] = getattr(cl, key) + return methods + +def _split_list(s, predicate): + """Split sequence s via predicate, and return pair ([true], [false]). + + The return value is a 2-tuple of lists, + ([x for x in s if predicate(x)], + [x for x in s if not predicate(x)]) + """ + + yes = [] + no = [] + for x in s: + if predicate(x): + yes.append(x) + else: + no.append(x) + return yes, no + +def visiblename(name, all=None): + """Decide whether to show documentation on a variable.""" + # Certain special names are redundant. + if name in ('__builtins__', '__doc__', '__file__', '__path__', + '__module__', '__name__', '__slots__'): return 0 + # Private names are hidden, but special names are displayed. + if name.startswith('__') and name.endswith('__'): return 1 + if all is not None: + # only document that which the programmer exported in __all__ + return name in all + else: + return not name.startswith('_') + +def classify_class_attrs(object): + """Wrap inspect.classify_class_attrs, with fixup for data descriptors.""" + def fixup((name, kind, cls, value)): + if inspect.isdatadescriptor(value): + kind = 'data descriptor' + return name, kind, cls, value + return map(fixup, inspect.classify_class_attrs(object)) + +# ----------------------------------------------------- module manipulation + +def ispackage(path): + """Guess whether a path refers to a package directory.""" + if os.path.isdir(path): + for ext in ('.py', '.pyc', '.pyo', '$py.class'): + if os.path.isfile(os.path.join(path, '__init__' + ext)): + return True + return False + +def source_synopsis(file): + line = file.readline() + while line[:1] == '#' or not strip(line): + line = file.readline() + if not line: break + line = strip(line) + if line[:4] == 'r"""': line = line[1:] + if line[:3] == '"""': + line = line[3:] + if line[-1:] == '\\': line = line[:-1] + while not strip(line): + line = file.readline() + if not line: break + result = strip(split(line, '"""')[0]) + else: result = None + return result + +def synopsis(filename, cache={}): + """Get the one-line summary out of a module file.""" + mtime = os.stat(filename).st_mtime + lastupdate, result = cache.get(filename, (0, None)) + if lastupdate < mtime: + info = inspect.getmoduleinfo(filename) + try: + file = open(filename) + except IOError: + # module can't be opened, so skip it + return None + if info and 'b' in info[2]: # binary modules have to be imported + try: module = imp.load_module('__temp__', file, filename, info[1:]) + except: return None + result = (module.__doc__ or '').splitlines()[0] + del sys.modules['__temp__'] + else: # text modules can be directly examined + result = source_synopsis(file) + file.close() + cache[filename] = (mtime, result) + return result + +class ErrorDuringImport(Exception): + """Errors that occurred while trying to import something to document it.""" + def __init__(self, filename, (exc, value, tb)): + self.filename = filename + self.exc = exc + self.value = value + self.tb = tb + + def __str__(self): + exc = self.exc + if type(exc) is types.ClassType: + exc = exc.__name__ + return 'problem in %s - %s: %s' % (self.filename, exc, self.value) + +def importfile(path): + """Import a Python source file or compiled file given its path.""" + magic = imp.get_magic() + file = open(path, 'r') + if file.read(len(magic)) == magic: + kind = imp.PY_COMPILED + else: + kind = imp.PY_SOURCE + file.close() + filename = os.path.basename(path) + name, ext = os.path.splitext(filename) + file = open(path, 'r') + try: + module = imp.load_module(name, file, path, (ext, 'r', kind)) + except: + raise ErrorDuringImport(path, sys.exc_info()) + file.close() + return module + +def safeimport(path, forceload=0, cache={}): + """Import a module; handle errors; return None if the module isn't found. + + If the module *is* found but an exception occurs, it's wrapped in an + ErrorDuringImport exception and reraised. Unlike __import__, if a + package path is specified, the module at the end of the path is returned, + not the package at the beginning. If the optional 'forceload' argument + is 1, we reload the module from disk (unless it's a dynamic extension).""" + try: + # If forceload is 1 and the module has been previously loaded from + # disk, we always have to reload the module. Checking the file's + # mtime isn't good enough (e.g. the module could contain a class + # that inherits from another module that has changed). + if forceload and path in sys.modules: + if path not in sys.builtin_module_names: + # Avoid simply calling reload() because it leaves names in + # the currently loaded module lying around if they're not + # defined in the new source file. Instead, remove the + # module from sys.modules and re-import. Also remove any + # submodules because they won't appear in the newly loaded + # module's namespace if they're already in sys.modules. + subs = [m for m in sys.modules if m.startswith(path + '.')] + for key in [path] + subs: + # Prevent garbage collection. + cache[key] = sys.modules[key] + del sys.modules[key] + module = __import__(path) + except: + # Did the error occur before or after the module was found? + (exc, value, tb) = info = sys.exc_info() + if path in sys.modules: + # An error occurred while executing the imported module. + raise ErrorDuringImport(sys.modules[path].__file__, info) + elif exc is SyntaxError: + # A SyntaxError occurred before we could execute the module. + raise ErrorDuringImport(value.filename, info) + elif exc is ImportError and \ + split(lower(str(value)))[:2] == ['no', 'module']: + # The module was not found. + return None + else: + # Some other error occurred during the importing process. + raise ErrorDuringImport(path, sys.exc_info()) + for part in split(path, '.')[1:]: + try: module = getattr(module, part) + except AttributeError: return None + return module + +# ---------------------------------------------------- formatter base class + +class Doc: + def document(self, object, name=None, *args): + """Generate documentation for an object.""" + args = (object, name) + args + # 'try' clause is to attempt to handle the possibility that inspect + # identifies something in a way that pydoc itself has issues handling; + # think 'super' and how it is a descriptor (which raises the exception + # by lacking a __name__ attribute) and an instance. + if inspect.isgetsetdescriptor(object): return self.docdata(*args) + if inspect.ismemberdescriptor(object): return self.docdata(*args) + try: + if inspect.ismodule(object): return self.docmodule(*args) + if inspect.isclass(object): return self.docclass(*args) + if inspect.isroutine(object): return self.docroutine(*args) + except AttributeError: + pass + if isinstance(object, property): return self.docproperty(*args) + return self.docother(*args) + + def fail(self, object, name=None, *args): + """Raise an exception for unimplemented types.""" + message = "don't know how to document object%s of type %s" % ( + name and ' ' + repr(name), type(object).__name__) + raise TypeError, message + + docmodule = docclass = docroutine = docother = docproperty = docdata = fail + + def getdocloc(self, object): + """Return the location of module docs or None""" + + try: + file = inspect.getabsfile(object) + except TypeError: + file = '(built-in)' + + docloc = os.environ.get("PYTHONDOCS", + "http://www.python.org/doc/current/lib") + basedir = os.path.join(sys.exec_prefix, "lib", + "python"+sys.version[0:3]) + if (isinstance(object, type(os)) and + (object.__name__ in ('errno', 'exceptions', 'gc', 'imp', + 'marshal', 'posix', 'signal', 'sys', + 'thread', 'zipimport') or + (file.startswith(basedir) and + not file.startswith(os.path.join(basedir, 'site-packages'))))): + htmlfile = "module-%s.html" % object.__name__ + if docloc.startswith("http://"): + docloc = "%s/%s" % (docloc.rstrip("/"), htmlfile) + else: + docloc = os.path.join(docloc, htmlfile) + else: + docloc = None + return docloc + +# -------------------------------------------- HTML documentation generator + +class HTMLRepr(Repr): + """Class for safely making an HTML representation of a Python object.""" + def __init__(self): + Repr.__init__(self) + self.maxlist = self.maxtuple = 20 + self.maxdict = 10 + self.maxstring = self.maxother = 100 + + def escape(self, text): + return replace(text, '&', '&', '<', '<', '>', '>') + + def repr(self, object): + return Repr.repr(self, object) + + def repr1(self, x, level): + if hasattr(type(x), '__name__'): + methodname = 'repr_' + join(split(type(x).__name__), '_') + if hasattr(self, methodname): + return getattr(self, methodname)(x, level) + return self.escape(cram(stripid(repr(x)), self.maxother)) + + def repr_string(self, x, level): + test = cram(x, self.maxstring) + testrepr = repr(test) + if '\\' in test and '\\' not in replace(testrepr, r'\\', ''): + # Backslashes are only literal in the string and are never + # needed to make any special characters, so show a raw string. + return 'r' + testrepr[0] + self.escape(test) + testrepr[0] + return re.sub(r'((\\[\\abfnrtv\'"]|\\[0-9]..|\\x..|\\u....)+)', + r'<font color="#c040c0">\1</font>', + self.escape(testrepr)) + + repr_str = repr_string + + def repr_instance(self, x, level): + try: + return self.escape(cram(stripid(repr(x)), self.maxstring)) + except: + return self.escape('<%s instance>' % x.__class__.__name__) + + repr_unicode = repr_string + +class HTMLDoc(Doc): + """Formatter class for HTML documentation.""" + + # ------------------------------------------- HTML formatting utilities + + _repr_instance = HTMLRepr() + repr = _repr_instance.repr + escape = _repr_instance.escape + + def page(self, title, contents): + """Format an HTML page.""" + return ''' +<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> +<html><head><title>Python: %s</title> +</head><body bgcolor="#f0f0f8"> +%s +</body></html>''' % (title, contents) + + def heading(self, title, fgcol, bgcol, extras=''): + """Format a page heading.""" + return ''' +<table width="100%%" cellspacing=0 cellpadding=2 border=0 summary="heading"> +<tr bgcolor="%s"> +<td valign=bottom> <br> +<font color="%s" face="helvetica, arial"> <br>%s</font></td +><td align=right valign=bottom +><font color="%s" face="helvetica, arial">%s</font></td></tr></table> + ''' % (bgcol, fgcol, title, fgcol, extras or ' ') + + def section(self, title, fgcol, bgcol, contents, width=6, + prelude='', marginalia=None, gap=' '): + """Format a section with a heading.""" + if marginalia is None: + marginalia = '<tt>' + ' ' * width + '</tt>' + result = '''<p> +<table width="100%%" cellspacing=0 cellpadding=2 border=0 summary="section"> +<tr bgcolor="%s"> +<td colspan=3 valign=bottom> <br> +<font color="%s" face="helvetica, arial">%s</font></td></tr> + ''' % (bgcol, fgcol, title) + if prelude: + result = result + ''' +<tr bgcolor="%s"><td rowspan=2>%s</td> +<td colspan=2>%s</td></tr> +<tr><td>%s</td>''' % (bgcol, marginalia, prelude, gap) + else: + result = result + ''' +<tr><td bgcolor="%s">%s</td><td>%s</td>''' % (bgcol, marginalia, gap) + + return result + '\n<td width="100%%">%s</td></tr></table>' % contents + + def bigsection(self, title, *args): + """Format a section with a big heading.""" + title = '<big><strong>%s</strong></big>' % title + return self.section(title, *args) + + def preformat(self, text): + """Format literal preformatted text.""" + text = self.escape(expandtabs(text)) + return replace(text, '\n\n', '\n \n', '\n\n', '\n \n', + ' ', ' ', '\n', '<br>\n') + + def multicolumn(self, list, format, cols=4): + """Format a list of items into a multi-column list.""" + result = '' + rows = (len(list)+cols-1)/cols + for col in range(cols): + result = result + '<td width="%d%%" valign=top>' % (100/cols) + for i in range(rows*col, rows*col+rows): + if i < len(list): + result = result + format(list[i]) + '<br>\n' + result = result + '</td>' + return '<table width="100%%" summary="list"><tr>%s</tr></table>' % result + + def grey(self, text): return '<font color="#909090">%s</font>' % text + + def namelink(self, name, *dicts): + """Make a link for an identifier, given name-to-URL mappings.""" + for dict in dicts: + if name in dict: + return '<a href="%s">%s</a>' % (dict[name], name) + return name + + def classlink(self, object, modname): + """Make a link for a class.""" + name, module = object.__name__, sys.modules.get(object.__module__) + if hasattr(module, name) and getattr(module, name) is object: + return '<a href="%s.html#%s">%s</a>' % ( + module.__name__, name, classname(object, modname)) + return classname(object, modname) + + def modulelink(self, object): + """Make a link for a module.""" + return '<a href="%s.html">%s</a>' % (object.__name__, object.__name__) + + def modpkglink(self, (name, path, ispackage, shadowed)): + """Make a link for a module or package to display in an index.""" + if shadowed: + return self.grey(name) + if path: + url = '%s.%s.html' % (path, name) + else: + url = '%s.html' % name + if ispackage: + text = '<strong>%s</strong> (package)' % name + else: + text = name + return '<a href="%s">%s</a>' % (url, text) + + def markup(self, text, escape=None, funcs={}, classes={}, methods={}): + """Mark up some plain text, given a context of symbols to look for. + Each context dictionary maps object names to anchor names.""" + escape = escape or self.escape + results = [] + here = 0 + pattern = re.compile(r'\b((http|ftp)://\S+[\w/]|' + r'RFC[- ]?(\d+)|' + r'PEP[- ]?(\d+)|' + r'(self\.)?(\w+))') + while True: + match = pattern.search(text, here) + if not match: break + start, end = match.span() + results.append(escape(text[here:start])) + + all, scheme, rfc, pep, selfdot, name = match.groups() + if scheme: + url = escape(all).replace('"', '"') + results.append('<a href="%s">%s</a>' % (url, url)) + elif rfc: + url = 'http://www.rfc-editor.org/rfc/rfc%d.txt' % int(rfc) + results.append('<a href="%s">%s</a>' % (url, escape(all))) + elif pep: + url = 'http://www.python.org/peps/pep-%04d.html' % int(pep) + results.append('<a href="%s">%s</a>' % (url, escape(all))) + elif text[end:end+1] == '(': + results.append(self.namelink(name, methods, funcs, classes)) + elif selfdot: + results.append('self.<strong>%s</strong>' % name) + else: + results.append(self.namelink(name, classes)) + here = end + results.append(escape(text[here:])) + return join(results, '') + + # ---------------------------------------------- type-specific routines + + def formattree(self, tree, modname, parent=None): + """Produce HTML for a class tree as given by inspect.getclasstree().""" + result = '' + for entry in tree: + if type(entry) is type(()): + c, bases = entry + result = result + '<dt><font face="helvetica, arial">' + result = result + self.classlink(c, modname) + if bases and bases != (parent,): + parents = [] + for base in bases: + parents.append(self.classlink(base, modname)) + result = result + '(' + join(parents, ', ') + ')' + result = result + '\n</font></dt>' + elif type(entry) is type([]): + result = result + '<dd>\n%s</dd>\n' % self.formattree( + entry, modname, c) + return '<dl>\n%s</dl>\n' % result + + def docmodule(self, object, name=None, mod=None, *ignored): + """Produce HTML documentation for a module object.""" + name = object.__name__ # ignore the passed-in name + try: + all = object.__all__ + except AttributeError: + all = None + parts = split(name, '.') + links = [] + for i in range(len(parts)-1): + links.append( + '<a href="%s.html"><font color="#ffffff">%s</font></a>' % + (join(parts[:i+1], '.'), parts[i])) + linkedname = join(links + parts[-1:], '.') + head = '<big><big><strong>%s</strong></big></big>' % linkedname + try: + path = inspect.getabsfile(object) + url = path + if sys.platform == 'win32': + import nturl2path + url = nturl2path.pathname2url(path) + filelink = '<a href="file:%s">%s</a>' % (url, path) + except TypeError: + filelink = '(built-in)' + info = [] + if hasattr(object, '__version__'): + version = str(object.__version__) + if version[:11] == '$' + 'Revision: ' and version[-1:] == '$': + version = strip(version[11:-1]) + info.append('version %s' % self.escape(version)) + if hasattr(object, '__date__'): + info.append(self.escape(str(object.__date__))) + if info: + head = head + ' (%s)' % join(info, ', ') + docloc = self.getdocloc(object) + if docloc is not None: + docloc = '<br><a href="%(docloc)s">Module Docs</a>' % locals() + else: + docloc = '' + result = self.heading( + head, '#ffffff', '#7799ee', + '<a href=".">index</a><br>' + filelink + docloc) + + modules = inspect.getmembers(object, inspect.ismodule) + + classes, cdict = [], {} + for key, value in inspect.getmembers(object, inspect.isclass): + # if __all__ exists, believe it. Otherwise use old heuristic. + if (all is not None or + (inspect.getmodule(value) or object) is object): + if visiblename(key, all): + classes.append((key, value)) + cdict[key] = cdict[value] = '#' + key + for key, value in classes: + for base in value.__bases__: + key, modname = base.__name__, base.__module__ + module = sys.modules.get(modname) + if modname != name and module and hasattr(module, key): + if getattr(module, key) is base: + if not key in cdict: + cdict[key] = cdict[base] = modname + '.html#' + key + funcs, fdict = [], {} + for key, value in inspect.getmembers(object, inspect.isroutine): + # if __all__ exists, believe it. Otherwise use old heuristic. + if (all is not None or + inspect.isbuiltin(value) or inspect.getmodule(value) is object): + if visiblename(key, all): + funcs.append((key, value)) + fdict[key] = '#-' + key + if inspect.isfunction(value): fdict[value] = fdict[key] + data = [] + for key, value in inspect.getmembers(object, isdata): + if visiblename(key, all): + data.append((key, value)) + + doc = self.markup(getdoc(object), self.preformat, fdict, cdict) + doc = doc and '<tt>%s</tt>' % doc + result = result + '<p>%s</p>\n' % doc + + if hasattr(object, '__path__'): + modpkgs = [] + for importer, modname, ispkg in pkgutil.iter_modules(object.__path__): + modpkgs.append((modname, name, ispkg, 0)) + modpkgs.sort() + contents = self.multicolumn(modpkgs, self.modpkglink) + result = result + self.bigsection( + 'Package Contents', '#ffffff', '#aa55cc', contents) + elif modules: + contents = self.multicolumn( + modules, lambda (key, value), s=self: s.modulelink(value)) + result = result + self.bigsection( + 'Modules', '#fffff', '#aa55cc', contents) + + if classes: + classlist = map(lambda (key, value): value, classes) + contents = [ + self.formattree(inspect.getclasstree(classlist, 1), name)] + for key, value in classes: + contents.append(self.document(value, key, name, fdict, cdict)) + result = result + self.bigsection( + 'Classes', '#ffffff', '#ee77aa', join(contents)) + if funcs: + contents = [] + for key, value in funcs: + contents.append(self.document(value, key, name, fdict, cdict)) + result = result + self.bigsection( + 'Functions', '#ffffff', '#eeaa77', join(contents)) + if data: + contents = [] + for key, value in data: + contents.append(self.document(value, key)) + result = result + self.bigsection( + 'Data', '#ffffff', '#55aa55', join(contents, '<br>\n')) + if hasattr(object, '__author__'): + contents = self.markup(str(object.__author__), self.preformat) + result = result + self.bigsection( + 'Author', '#ffffff', '#7799ee', contents) + if hasattr(object, '__credits__'): + contents = self.markup(str(object.__credits__), self.preformat) + result = result + self.bigsection( + 'Credits', '#ffffff', '#7799ee', contents) + + return result + + def docclass(self, object, name=None, mod=None, funcs={}, classes={}, + *ignored): + """Produce HTML documentation for a class object.""" + realname = object.__name__ + name = name or realname + bases = object.__bases__ + + contents = [] + push = contents.append + + # Cute little class to pump out a horizontal rule between sections. + class HorizontalRule: + def __init__(self): + self.needone = 0 + def maybe(self): + if self.needone: + push('<hr>\n') + self.needone = 1 + hr = HorizontalRule() + + # List the mro, if non-trivial. + mro = deque(inspect.getmro(object)) + if len(mro) > 2: + hr.maybe() + push('<dl><dt>Method resolution order:</dt>\n') + for base in mro: + push('<dd>%s</dd>\n' % self.classlink(base, + object.__module__)) + push('</dl>\n') + + def spill(msg, attrs, predicate): + ok, attrs = _split_list(attrs, predicate) + if ok: + hr.maybe() + push(msg) + for name, kind, homecls, value in ok: + push(self.document(getattr(object, name), name, mod, + funcs, classes, mdict, object)) + push('\n') + return attrs + + def spilldescriptors(msg, attrs, predicate): + ok, attrs = _split_list(attrs, predicate) + if ok: + hr.maybe() + push(msg) + for name, kind, homecls, value in ok: + push(self._docdescriptor(name, value, mod)) + return attrs + + def spilldata(msg, attrs, predicate): + ok, attrs = _split_list(attrs, predicate) + if ok: + hr.maybe() + push(msg) + for name, kind, homecls, value in ok: + base = self.docother(getattr(object, name), name, mod) + if callable(value) or inspect.isdatadescriptor(value): + doc = getattr(value, "__doc__", None) + else: + doc = None + if doc is None: + push('<dl><dt>%s</dl>\n' % base) + else: + doc = self.markup(getdoc(value), self.preformat, + funcs, classes, mdict) + doc = '<dd><tt>%s</tt>' % doc + push('<dl><dt>%s%s</dl>\n' % (base, doc)) + push('\n') + return attrs + + attrs = filter(lambda (name, kind, cls, value): visiblename(name), + classify_class_attrs(object)) + mdict = {} + for key, kind, homecls, value in attrs: + mdict[key] = anchor = '#' + name + '-' + key + value = getattr(object, key) + try: + # The value may not be hashable (e.g., a data attr with + # a dict or list value). + mdict[value] = anchor + except TypeError: + pass + + while attrs: + if mro: + thisclass = mro.popleft() + else: + thisclass = attrs[0][2] + attrs, inherited = _split_list(attrs, lambda t: t[2] is thisclass) + + if thisclass is __builtin__.object: + attrs = inherited + continue + elif thisclass is object: + tag = 'defined here' + else: + tag = 'inherited from %s' % self.classlink(thisclass, + object.__module__) + tag += ':<br>\n' + + # Sort attrs by name. + try: + attrs.sort(key=lambda t: t[0]) + except TypeError: + attrs.sort(lambda t1, t2: cmp(t1[0], t2[0])) # 2.3 compat + + # Pump out the attrs, segregated by kind. + attrs = spill('Methods %s' % tag, attrs, + lambda t: t[1] == 'method') + attrs = spill('Class methods %s' % tag, attrs, + lambda t: t[1] == 'class method') + attrs = spill('Static methods %s' % tag, attrs, + lambda t: t[1] == 'static method') + attrs = spilldescriptors('Data descriptors %s' % tag, attrs, + lambda t: t[1] == 'data descriptor') + attrs = spilldata('Data and other attributes %s' % tag, attrs, + lambda t: t[1] == 'data') + assert attrs == [] + attrs = inherited + + contents = ''.join(contents) + + if name == realname: + title = '<a name="%s">class <strong>%s</strong></a>' % ( + name, realname) + else: + title = '<strong>%s</strong> = <a name="%s">class %s</a>' % ( + name, name, realname) + if bases: + parents = [] + for base in bases: + parents.append(self.classlink(base, object.__module__)) + title = title + '(%s)' % join(parents, ', ') + doc = self.markup(getdoc(object), self.preformat, funcs, classes, mdict) + doc = doc and '<tt>%s<br> </tt>' % doc + + return self.section(title, '#000000', '#ffc8d8', contents, 3, doc) + + def formatvalue(self, object): + """Format an argument default value as text.""" + return self.grey('=' + self.repr(object)) + + def docroutine(self, object, name=None, mod=None, + funcs={}, classes={}, methods={}, cl=None): + """Produce HTML documentation for a function or method object.""" + realname = object.__name__ + name = name or realname + anchor = (cl and cl.__name__ or '') + '-' + name + note = '' + skipdocs = 0 + if inspect.ismethod(object): + imclass = object.im_class + if cl: + if imclass is not cl: + note = ' from ' + self.classlink(imclass, mod) + else: + if object.im_self is not None: + note = ' method of %s instance' % self.classlink( + object.im_self.__class__, mod) + else: + note = ' unbound %s method' % self.classlink(imclass,mod) + object = object.im_func + + if name == realname: + title = '<a name="%s"><strong>%s</strong></a>' % (anchor, realname) + else: + if (cl and realname in cl.__dict__ and + cl.__dict__[realname] is object): + reallink = '<a href="#%s">%s</a>' % ( + cl.__name__ + '-' + realname, realname) + skipdocs = 1 + else: + reallink = realname + title = '<a name="%s"><strong>%s</strong></a> = %s' % ( + anchor, name, reallink) + if inspect.isfunction(object): + args, varargs, varkw, defaults = inspect.getargspec(object) + argspec = inspect.formatargspec( + args, varargs, varkw, defaults, formatvalue=self.formatvalue) + if realname == '<lambda>': + title = '<strong>%s</strong> <em>lambda</em> ' % name + argspec = argspec[1:-1] # remove parentheses + else: + argspec = '(...)' + + decl = title + argspec + (note and self.grey( + '<font face="helvetica, arial">%s</font>' % note)) + + if skipdocs: + return '<dl><dt>%s</dt></dl>\n' % decl + else: + doc = self.markup( + getdoc(object), self.preformat, funcs, classes, methods) + doc = doc and '<dd><tt>%s</tt></dd>' % doc + return '<dl><dt>%s</dt>%s</dl>\n' % (decl, doc) + + def _docdescriptor(self, name, value, mod): + results = [] + push = results.append + + if name: + push('<dl><dt><strong>%s</strong></dt>\n' % name) + if value.__doc__ is not None: + doc = self.markup(getdoc(value), self.preformat) + push('<dd><tt>%s</tt></dd>\n' % doc) + push('</dl>\n') + + return ''.join(results) + + def docproperty(self, object, name=None, mod=None, cl=None): + """Produce html documentation for a property.""" + return self._docdescriptor(name, object, mod) + + def docother(self, object, name=None, mod=None, *ignored): + """Produce HTML documentation for a data object.""" + lhs = name and '<strong>%s</strong> = ' % name or '' + return lhs + self.repr(object) + + def docdata(self, object, name=None, mod=None, cl=None): + """Produce html documentation for a data descriptor.""" + return self._docdescriptor(name, object, mod) + + def index(self, dir, shadowed=None): + """Generate an HTML index for a directory of modules.""" + modpkgs = [] + if shadowed is None: shadowed = {} + for importer, name, ispkg in pkgutil.iter_modules([dir]): + modpkgs.append((name, '', ispkg, name in shadowed)) + shadowed[name] = 1 + + modpkgs.sort() + contents = self.multicolumn(modpkgs, self.modpkglink) + return self.bigsection(dir, '#ffffff', '#ee77aa', contents) + +# -------------------------------------------- text documentation generator + +class TextRepr(Repr): + """Class for safely making a text representation of a Python object.""" + def __init__(self): + Repr.__init__(self) + self.maxlist = self.maxtuple = 20 + self.maxdict = 10 + self.maxstring = self.maxother = 100 + + def repr1(self, x, level): + if hasattr(type(x), '__name__'): + methodname = 'repr_' + join(split(type(x).__name__), '_') + if hasattr(self, methodname): + return getattr(self, methodname)(x, level) + return cram(stripid(repr(x)), self.maxother) + + def repr_string(self, x, level): + test = cram(x, self.maxstring) + testrepr = repr(test) + if '\\' in test and '\\' not in replace(testrepr, r'\\', ''): + # Backslashes are only literal in the string and are never + # needed to make any special characters, so show a raw string. + return 'r' + testrepr[0] + test + testrepr[0] + return testrepr + + repr_str = repr_string + + def repr_instance(self, x, level): + try: + return cram(stripid(repr(x)), self.maxstring) + except: + return '<%s instance>' % x.__class__.__name__ + +class TextDoc(Doc): + """Formatter class for text documentation.""" + + # ------------------------------------------- text formatting utilities + + _repr_instance = TextRepr() + repr = _repr_instance.repr + + def bold(self, text): + """Format a string in bold by overstriking.""" + return join(map(lambda ch: ch + '\b' + ch, text), '') + + def indent(self, text, prefix=' '): + """Indent text by prepending a given prefix to each line.""" + if not text: return '' + lines = split(text, '\n') + lines = map(lambda line, prefix=prefix: prefix + line, lines) + if lines: lines[-1] = rstrip(lines[-1]) + return join(lines, '\n') + + def section(self, title, contents): + """Format a section with a given heading.""" + return self.bold(title) + '\n' + rstrip(self.indent(contents)) + '\n\n' + + # ---------------------------------------------- type-specific routines + + def formattree(self, tree, modname, parent=None, prefix=''): + """Render in text a class tree as returned by inspect.getclasstree().""" + result = '' + for entry in tree: + if type(entry) is type(()): + c, bases = entry + result = result + prefix + classname(c, modname) + if bases and bases != (parent,): + parents = map(lambda c, m=modname: classname(c, m), bases) + result = result + '(%s)' % join(parents, ', ') + result = result + '\n' + elif type(entry) is type([]): + result = result + self.formattree( + entry, modname, c, prefix + ' ') + return result + + def docmodule(self, object, name=None, mod=None): + """Produce text documentation for a given module object.""" + name = object.__name__ # ignore the passed-in name + synop, desc = splitdoc(getdoc(object)) + result = self.section('NAME', name + (synop and ' - ' + synop)) + + try: + all = object.__all__ + except AttributeError: + all = None + + try: + file = inspect.getabsfile(object) + except TypeError: + file = '(built-in)' + result = result + self.section('FILE', file) + + docloc = self.getdocloc(object) + if docloc is not None: + result = result + self.section('MODULE DOCS', docloc) + + if desc: + result = result + self.section('DESCRIPTION', desc) + + classes = [] + for key, value in inspect.getmembers(object, inspect.isclass): + # if __all__ exists, believe it. Otherwise use old heuristic. + if (all is not None + or (inspect.getmodule(value) or object) is object): + if visiblename(key, all): + classes.append((key, value)) + funcs = [] + for key, value in inspect.getmembers(object, inspect.isroutine): + # if __all__ exists, believe it. Otherwise use old heuristic. + if (all is not None or + inspect.isbuiltin(value) or inspect.getmodule(value) is object): + if visiblename(key, all): + funcs.append((key, value)) + data = [] + for key, value in inspect.getmembers(object, isdata): + if visiblename(key, all): + data.append((key, value)) + + if hasattr(object, '__path__'): + modpkgs = [] + for importer, modname, ispkg in pkgutil.iter_modules(object.__path__): + if ispkg: + modpkgs.append(modname + ' (package)') + else: + modpkgs.append(modname) + + modpkgs.sort() + result = result + self.section( + 'PACKAGE CONTENTS', join(modpkgs, '\n')) + + if classes: + classlist = map(lambda (key, value): value, classes) + contents = [self.formattree( + inspect.getclasstree(classlist, 1), name)] + for key, value in classes: + contents.append(self.document(value, key, name)) + result = result + self.section('CLASSES', join(contents, '\n')) + + if funcs: + contents = [] + for key, value in funcs: + contents.append(self.document(value, key, name)) + result = result + self.section('FUNCTIONS', join(contents, '\n')) + + if data: + contents = [] + for key, value in data: + contents.append(self.docother(value, key, name, maxlen=70)) + result = result + self.section('DATA', join(contents, '\n')) + + if hasattr(object, '__version__'): + version = str(object.__version__) + if version[:11] == '$' + 'Revision: ' and version[-1:] == '$': + version = strip(version[11:-1]) + result = result + self.section('VERSION', version) + if hasattr(object, '__date__'): + result = result + self.section('DATE', str(object.__date__)) + if hasattr(object, '__author__'): + result = result + self.section('AUTHOR', str(object.__author__)) + if hasattr(object, '__credits__'): + result = result + self.section('CREDITS', str(object.__credits__)) + return result + + def docclass(self, object, name=None, mod=None): + """Produce text documentation for a given class object.""" + realname = object.__name__ + name = name or realname + bases = object.__bases__ + + def makename(c, m=object.__module__): + return classname(c, m) + + if name == realname: + title = 'class ' + self.bold(realname) + else: + title = self.bold(name) + ' = class ' + realname + if bases: + parents = map(makename, bases) + title = title + '(%s)' % join(parents, ', ') + + doc = getdoc(object) + contents = doc and [doc + '\n'] or [] + push = contents.append + + # List the mro, if non-trivial. + mro = deque(inspect.getmro(object)) + if len(mro) > 2: + push("Method resolution order:") + for base in mro: + push(' ' + makename(base)) + push('') + + # Cute little class to pump out a horizontal rule between sections. + class HorizontalRule: + def __init__(self): + self.needone = 0 + def maybe(self): + if self.needone: + push('-' * 70) + self.needone = 1 + hr = HorizontalRule() + + def spill(msg, attrs, predicate): + ok, attrs = _split_list(attrs, predicate) + if ok: + hr.maybe() + push(msg) + for name, kind, homecls, value in ok: + push(self.document(getattr(object, name), + name, mod, object)) + return attrs + + def spilldescriptors(msg, attrs, predicate): + ok, attrs = _split_list(attrs, predicate) + if ok: + hr.maybe() + push(msg) + for name, kind, homecls, value in ok: + push(self._docdescriptor(name, value, mod)) + return attrs + + def spilldata(msg, attrs, predicate): + ok, attrs = _split_list(attrs, predicate) + if ok: + hr.maybe() + push(msg) + for name, kind, homecls, value in ok: + if callable(value) or inspect.isdatadescriptor(value): + doc = getdoc(value) + else: + doc = None + push(self.docother(getattr(object, name), + name, mod, maxlen=70, doc=doc) + '\n') + return attrs + + attrs = filter(lambda (name, kind, cls, value): visiblename(name), + classify_class_attrs(object)) + while attrs: + if mro: + thisclass = mro.popleft() + else: + thisclass = attrs[0][2] + attrs, inherited = _split_list(attrs, lambda t: t[2] is thisclass) + + if thisclass is __builtin__.object: + attrs = inherited + continue + elif thisclass is object: + tag = "defined here" + else: + tag = "inherited from %s" % classname(thisclass, + object.__module__) + filter(lambda t: not t[0].startswith('_'), attrs) + + # Sort attrs by name. + attrs.sort() + + # Pump out the attrs, segregated by kind. + attrs = spill("Methods %s:\n" % tag, attrs, + lambda t: t[1] == 'method') + attrs = spill("Class methods %s:\n" % tag, attrs, + lambda t: t[1] == 'class method') + attrs = spill("Static methods %s:\n" % tag, attrs, + lambda t: t[1] == 'static method') + attrs = spilldescriptors("Data descriptors %s:\n" % tag, attrs, + lambda t: t[1] == 'data descriptor') + attrs = spilldata("Data and other attributes %s:\n" % tag, attrs, + lambda t: t[1] == 'data') + assert attrs == [] + attrs = inherited + + contents = '\n'.join(contents) + if not contents: + return title + '\n' + return title + '\n' + self.indent(rstrip(contents), ' | ') + '\n' + + def formatvalue(self, object): + """Format an argument default value as text.""" + return '=' + self.repr(object) + + def docroutine(self, object, name=None, mod=None, cl=None): + """Produce text documentation for a function or method object.""" + realname = object.__name__ + name = name or realname + note = '' + skipdocs = 0 + if inspect.ismethod(object): + imclass = object.im_class + if cl: + if imclass is not cl: + note = ' from ' + classname(imclass, mod) + else: + if object.im_self is not None: + note = ' method of %s instance' % classname( + object.im_self.__class__, mod) + else: + note = ' unbound %s method' % classname(imclass,mod) + object = object.im_func + + if name == realname: + title = self.bold(realname) + else: + if (cl and realname in cl.__dict__ and + cl.__dict__[realname] is object): + skipdocs = 1 + title = self.bold(name) + ' = ' + realname + if inspect.isfunction(object): + args, varargs, varkw, defaults = inspect.getargspec(object) + argspec = inspect.formatargspec( + args, varargs, varkw, defaults, formatvalue=self.formatvalue) + if realname == '<lambda>': + title = self.bold(name) + ' lambda ' + argspec = argspec[1:-1] # remove parentheses + else: + argspec = '(...)' + decl = title + argspec + note + + if skipdocs: + return decl + '\n' + else: + doc = getdoc(object) or '' + return decl + '\n' + (doc and rstrip(self.indent(doc)) + '\n') + + def _docdescriptor(self, name, value, mod): + results = [] + push = results.append + + if name: + push(self.bold(name)) + push('\n') + doc = getdoc(value) or '' + if doc: + push(self.indent(doc)) + push('\n') + return ''.join(results) + + def docproperty(self, object, name=None, mod=None, cl=None): + """Produce text documentation for a property.""" + return self._docdescriptor(name, object, mod) + + def docdata(self, object, name=None, mod=None, cl=None): + """Produce text documentation for a data descriptor.""" + return self._docdescriptor(name, object, mod) + + def docother(self, object, name=None, mod=None, parent=None, maxlen=None, doc=None): + """Produce text documentation for a data object.""" + repr = self.repr(object) + if maxlen: + line = (name and name + ' = ' or '') + repr + chop = maxlen - len(line) + if chop < 0: repr = repr[:chop] + '...' + line = (name and self.bold(name) + ' = ' or '') + repr + if doc is not None: + line += '\n' + self.indent(str(doc)) + return line + +# --------------------------------------------------------- user interfaces + +def pager(text): + """The first time this is called, determine what kind of pager to use.""" + global pager + pager = getpager() + pager(text) + +def getpager(): + """Decide what method to use for paging through text.""" + if sys.platform.startswith('java'): + return plainpager + if type(sys.stdout) is not types.FileType: + return plainpager + if not sys.stdin.isatty() or not sys.stdout.isatty(): + return plainpager + if 'PAGER' in os.environ: + if sys.platform == 'win32': # pipes completely broken in Windows + return lambda text: tempfilepager(plain(text), os.environ['PAGER']) + elif os.environ.get('TERM') in ('dumb', 'emacs'): + return lambda text: pipepager(plain(text), os.environ['PAGER']) + else: + return lambda text: pipepager(text, os.environ['PAGER']) + if os.environ.get('TERM') in ('dumb', 'emacs'): + return plainpager + if sys.platform == 'win32' or sys.platform.startswith('os2'): + return lambda text: tempfilepager(plain(text), 'more <') + if hasattr(os, 'system') and os.system('(less) 2>/dev/null') == 0: + return lambda text: pipepager(text, 'less') + + import tempfile + (fd, filename) = tempfile.mkstemp() + os.close(fd) + try: + if hasattr(os, 'system') and os.system('more %s' % filename) == 0: + return lambda text: pipepager(text, 'more') + else: + return ttypager + finally: + os.unlink(filename) + +def plain(text): + """Remove boldface formatting from text.""" + return re.sub('.\b', '', text) + +def pipepager(text, cmd): + """Page through text by feeding it to another program.""" + pipe = os.popen(cmd, 'w') + try: + pipe.write(text) + pipe.close() + except IOError: + pass # Ignore broken pipes caused by quitting the pager program. + +def tempfilepager(text, cmd): + """Page through text by invoking a program on a temporary file.""" + import tempfile + filename = tempfile.mktemp() + file = open(filename, 'w') + file.write(text) + file.close() + try: + os.system(cmd + ' ' + filename) + finally: + os.unlink(filename) + +def ttypager(text): + """Page through text on a text terminal.""" + lines = split(plain(text), '\n') + try: + import tty + fd = sys.stdin.fileno() + old = tty.tcgetattr(fd) + tty.setcbreak(fd) + getchar = lambda: sys.stdin.read(1) + except (ImportError, AttributeError): + tty = None + getchar = lambda: sys.stdin.readline()[:-1][:1] + + try: + r = inc = os.environ.get('LINES', 25) - 1 + sys.stdout.write(join(lines[:inc], '\n') + '\n') + while lines[r:]: + sys.stdout.write('-- more --') + sys.stdout.flush() + c = getchar() + + if c in ('q', 'Q'): + sys.stdout.write('\r \r') + break + elif c in ('\r', '\n'): + sys.stdout.write('\r \r' + lines[r] + '\n') + r = r + 1 + continue + if c in ('b', 'B', '\x1b'): + r = r - inc - inc + if r < 0: r = 0 + sys.stdout.write('\n' + join(lines[r:r+inc], '\n') + '\n') + r = r + inc + + finally: + if tty: + tty.tcsetattr(fd, tty.TCSAFLUSH, old) + +def plainpager(text): + """Simply print unformatted text. This is the ultimate fallback.""" + sys.stdout.write(plain(text)) + +def describe(thing): + """Produce a short description of the given thing.""" + if inspect.ismodule(thing): + if thing.__name__ in sys.builtin_module_names: + return 'built-in module ' + thing.__name__ + if hasattr(thing, '__path__'): + return 'package ' + thing.__name__ + else: + return 'module ' + thing.__name__ + if inspect.isbuiltin(thing): + return 'built-in function ' + thing.__name__ + if inspect.isgetsetdescriptor(thing): + return 'getset descriptor %s.%s.%s' % ( + thing.__objclass__.__module__, thing.__objclass__.__name__, + thing.__name__) + if inspect.ismemberdescriptor(thing): + return 'member descriptor %s.%s.%s' % ( + thing.__objclass__.__module__, thing.__objclass__.__name__, + thing.__name__) + if inspect.isclass(thing): + return 'class ' + thing.__name__ + if inspect.isfunction(thing): + return 'function ' + thing.__name__ + if insp... [truncated message content] |
From: <fwi...@us...> - 2008-11-24 04:39:11
|
Revision: 5628 http://jython.svn.sourceforge.net/jython/?rev=5628&view=rev Author: fwierzbicki Date: 2008-11-24 04:39:05 +0000 (Mon, 24 Nov 2008) Log Message: ----------- Just enough to get one of the (modified) 2.6 test_ast tests to pass. Modified Paths: -------------- branches/astwrite/Lib/test/test_ast.py branches/astwrite/ast/asdl_antlr.py branches/astwrite/src/org/python/antlr/ast/Assert.java branches/astwrite/src/org/python/antlr/ast/Assign.java branches/astwrite/src/org/python/antlr/ast/Attribute.java branches/astwrite/src/org/python/antlr/ast/AugAssign.java branches/astwrite/src/org/python/antlr/ast/BinOp.java branches/astwrite/src/org/python/antlr/ast/BoolOp.java branches/astwrite/src/org/python/antlr/ast/Break.java branches/astwrite/src/org/python/antlr/ast/Call.java branches/astwrite/src/org/python/antlr/ast/ClassDef.java branches/astwrite/src/org/python/antlr/ast/Compare.java branches/astwrite/src/org/python/antlr/ast/Continue.java branches/astwrite/src/org/python/antlr/ast/Delete.java branches/astwrite/src/org/python/antlr/ast/Dict.java branches/astwrite/src/org/python/antlr/ast/Ellipsis.java branches/astwrite/src/org/python/antlr/ast/Exec.java branches/astwrite/src/org/python/antlr/ast/Expr.java branches/astwrite/src/org/python/antlr/ast/Expression.java branches/astwrite/src/org/python/antlr/ast/ExtSlice.java branches/astwrite/src/org/python/antlr/ast/For.java branches/astwrite/src/org/python/antlr/ast/FunctionDef.java branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java branches/astwrite/src/org/python/antlr/ast/Global.java branches/astwrite/src/org/python/antlr/ast/If.java branches/astwrite/src/org/python/antlr/ast/IfExp.java branches/astwrite/src/org/python/antlr/ast/Import.java branches/astwrite/src/org/python/antlr/ast/ImportFrom.java branches/astwrite/src/org/python/antlr/ast/Index.java branches/astwrite/src/org/python/antlr/ast/Interactive.java branches/astwrite/src/org/python/antlr/ast/Lambda.java branches/astwrite/src/org/python/antlr/ast/List.java branches/astwrite/src/org/python/antlr/ast/ListComp.java branches/astwrite/src/org/python/antlr/ast/Module.java branches/astwrite/src/org/python/antlr/ast/Name.java branches/astwrite/src/org/python/antlr/ast/Num.java branches/astwrite/src/org/python/antlr/ast/Pass.java branches/astwrite/src/org/python/antlr/ast/Print.java branches/astwrite/src/org/python/antlr/ast/Raise.java branches/astwrite/src/org/python/antlr/ast/Repr.java branches/astwrite/src/org/python/antlr/ast/Return.java branches/astwrite/src/org/python/antlr/ast/Slice.java branches/astwrite/src/org/python/antlr/ast/Str.java branches/astwrite/src/org/python/antlr/ast/Subscript.java branches/astwrite/src/org/python/antlr/ast/Suite.java branches/astwrite/src/org/python/antlr/ast/TryExcept.java branches/astwrite/src/org/python/antlr/ast/TryFinally.java branches/astwrite/src/org/python/antlr/ast/Tuple.java branches/astwrite/src/org/python/antlr/ast/UnaryOp.java branches/astwrite/src/org/python/antlr/ast/VisitorBase.java branches/astwrite/src/org/python/antlr/ast/While.java branches/astwrite/src/org/python/antlr/ast/With.java branches/astwrite/src/org/python/antlr/ast/Yield.java branches/astwrite/src/org/python/antlr/ast/aliasType.java branches/astwrite/src/org/python/antlr/ast/argumentsType.java branches/astwrite/src/org/python/antlr/ast/boolopType.java branches/astwrite/src/org/python/antlr/ast/cmpopType.java branches/astwrite/src/org/python/antlr/ast/comprehensionType.java branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java branches/astwrite/src/org/python/antlr/ast/exprType.java branches/astwrite/src/org/python/antlr/ast/expr_contextType.java branches/astwrite/src/org/python/antlr/ast/keywordType.java branches/astwrite/src/org/python/antlr/ast/modType.java branches/astwrite/src/org/python/antlr/ast/operatorType.java branches/astwrite/src/org/python/antlr/ast/sliceType.java branches/astwrite/src/org/python/antlr/ast/stmtType.java branches/astwrite/src/org/python/antlr/ast/unaryopType.java Added Paths: ----------- branches/astwrite/src/org/python/antlr/AstAdapter.java Modified: branches/astwrite/Lib/test/test_ast.py =================================================================== --- branches/astwrite/Lib/test/test_ast.py 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/Lib/test/test_ast.py 2008-11-24 04:39:05 UTC (rev 5628) @@ -174,20 +174,20 @@ self._assert_order(ast_tree, (0, 0)) def test_nodeclasses(self): - x = ast.BinOp(1, 2, 3, lineno=0) - self.assertEquals(x.left, 1) - self.assertEquals(x.op, 2) - self.assertEquals(x.right, 3) + x = ast.BinOp(1, ast.Add, 3, lineno=0) + self.assertEquals(x.left.n, 1) + self.assertEquals(x.op, ast.Add) + self.assertEquals(x.right.n, 3) self.assertEquals(x.lineno, 0) # node raises exception when not given enough arguments self.assertRaises(TypeError, ast.BinOp, 1, 2) # can set attributes through kwargs too - x = ast.BinOp(left=1, op=2, right=3, lineno=0) - self.assertEquals(x.left, 1) - self.assertEquals(x.op, 2) - self.assertEquals(x.right, 3) + x = ast.BinOp(left=1, op=ast.Add, right=3, lineno=0) + self.assertEquals(x.left.n, 1) + self.assertEquals(x.op, ast.Add) + self.assertEquals(x.right.n, 3) self.assertEquals(x.lineno, 0) # this used to fail because Sub._fields was None Modified: branches/astwrite/ast/asdl_antlr.py =================================================================== --- branches/astwrite/ast/asdl_antlr.py 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/ast/asdl_antlr.py 2008-11-24 04:39:05 UTC (rev 5628) @@ -56,6 +56,7 @@ print >> self.file, "// Autogenerated AST node" print >> self.file, 'package org.python.antlr.ast;' if refersToPythonTree: + print >> self.file, 'import org.python.antlr.AstAdapter;' print >> self.file, 'import org.python.antlr.PythonTree;' print >> self.file, 'import org.python.antlr.ListWrapper;' print >> self.file, 'import org.antlr.runtime.CommonToken;' @@ -150,6 +151,8 @@ self.attributes(sum, depth, True); + self.emit("public %sType __call__() { return this; }" % name, depth + 1) + self.emit("}", depth) self.close() @@ -291,9 +294,6 @@ def javaConstructorHelper(self, fields, depth): for f in fields: - #XXX: old version: - #self.emit("this.%s = %s;" % (f.name, f.name), depth+1) - #XXX: code cut and pasted from visitField if f.seq: self.emit("this.%s = new %s(%s);" % (f.name, self.javaType(f, True), f.name), depth+1) @@ -319,44 +319,9 @@ #XXX: this method used to emit a pickle(DataOutputStream ostream) for cPickle support. # If we want to re-add it, see Jython 2.2's pickle method in its ast nodes. def javaMethods(self, type, clsname, ctorname, fields, depth): - # The java ctors - fpargs = ", ".join([self.fieldDef(f) for f in fields]) - self.emit("public %s(%s) {" % (ctorname, fpargs), depth) - self.javaConstructorHelper(fields, depth) - self.emit("}", depth) - self.emit("", 0) + self.javaConstructors(type, clsname, ctorname, fields, depth) - token = asdl.Field('Token', 'token') - token.typedef = False - fpargs = ", ".join([self.fieldDef(f) for f in [token] + fields]) - self.emit("public %s(%s) {" % (ctorname, fpargs), depth) - self.emit("super(token);", depth+1) - self.javaConstructorHelper(fields, depth) - self.emit("}", depth) - self.emit("", 0) - - ttype = asdl.Field('int', 'ttype') - ttype.typedef = False - fpargs = ", ".join([self.fieldDef(f) for f in [ttype, token] + fields]) - self.emit("public %s(%s) {" % (ctorname, fpargs), depth) - self.emit("super(ttype, token);", depth+1) - self.javaConstructorHelper(fields, depth) - self.emit("}", depth) - self.emit("", 0) - - tree = asdl.Field('PythonTree', 'tree') - tree.typedef = False - fpargs = ", ".join([self.fieldDef(f) for f in [tree] + fields]) - self.emit("public %s(%s) {" % (ctorname, fpargs), depth) - self.emit("super(tree);", depth+1) - self.javaConstructorHelper(fields, depth) - self.emit("}", depth) - self.emit("", 0) - - if fpargs: - fpargs += ", " - # The toString() method self.emit("public String toString() {", depth) self.emit('return "%s";' % clsname, depth+1) @@ -407,6 +372,46 @@ self.emit('}', depth) self.emit("", 0) + def javaConstructors(self, type, clsname, ctorname, fields, depth): + if len(fields) > 0: + self.emit("public %s() {}" % (ctorname), depth) + + fpargs = ", ".join(["Object %s" % f.name for f in fields]) + self.emit("public %s(%s) {" % (ctorname, fpargs), depth) + for f in fields: + self.emit("set%s(%s);" % (str(f.name).capitalize(), + f.name), depth+1) + self.emit("}", depth) + self.emit("", 0) + + token = asdl.Field('Token', 'token') + token.typedef = False + fpargs = ", ".join([self.fieldDef(f) for f in [token] + fields]) + self.emit("public %s(%s) {" % (ctorname, fpargs), depth) + self.emit("super(token);", depth+1) + self.javaConstructorHelper(fields, depth) + self.emit("}", depth) + self.emit("", 0) + + ttype = asdl.Field('int', 'ttype') + ttype.typedef = False + fpargs = ", ".join([self.fieldDef(f) for f in [ttype, token] + fields]) + self.emit("public %s(%s) {" % (ctorname, fpargs), depth) + self.emit("super(ttype, token);", depth+1) + self.javaConstructorHelper(fields, depth) + self.emit("}", depth) + self.emit("", 0) + + tree = asdl.Field('PythonTree', 'tree') + tree.typedef = False + fpargs = ", ".join([self.fieldDef(f) for f in [tree] + fields]) + self.emit("public %s(%s) {" % (ctorname, fpargs), depth) + self.emit("super(tree);", depth+1) + self.javaConstructorHelper(fields, depth) + self.emit("}", depth) + self.emit("", 0) + + def visitField(self, field, depth): self.emit("private %s;" % self.fieldDef(field, True), depth) self.emit("public %s getInternal%s() {" % (self.javaType(field, True), @@ -422,7 +427,7 @@ self.emit("this.%s = new %s(" % (field.name, self.javaType(field, True)), depth+1) self.emit("(%s)%s);" % (self.javaType(field), field.name), depth+2) else: - self.emit("this.%s = (%s)%s;" % (field.name, self.javaType(field), field.name), depth+1) + self.emit("this.%s = AstAdapter.to_%s(%s);" % (field.name, str(field.type), field.name), depth+1) self.emit("}", depth) self.emit("", 0) Added: branches/astwrite/src/org/python/antlr/AstAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/AstAdapter.java (rev 0) +++ branches/astwrite/src/org/python/antlr/AstAdapter.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -0,0 +1,109 @@ +package org.python.antlr; + +import org.python.antlr.ast.*; +import org.python.core.*; + +/** + * AstAdapter turns Python and Java objects into ast nodes. + */ +public class AstAdapter { + + public static exprType to_expr(Object o) { + if (o == null || o instanceof exprType) { + return (exprType)o; + } else if (o instanceof Integer) { + return new Num(new PyInteger((Integer)o)); + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to expr node"); + } + + public static int to_int(Object o) { + if (o == null || o instanceof Integer) { + return (Integer)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to int node"); + } + + public static String to_identifier(Object o) { + if (o == null || o instanceof String) { + return (String)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to identifier node"); + } + + public static expr_contextType to_expr_context(Object o) { + if (o == null || o instanceof expr_contextType) { + return (expr_contextType)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to expr_context node"); + } + + public static sliceType to_slice(Object o) { + if (o == null || o instanceof sliceType) { + return (sliceType)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to slice node"); + } + + public static String to_string(Object o) { + if (o == null || o instanceof String) { + return (String)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to string node"); + } + + public static operatorType to_operator(Object o) { + if (o == null || o instanceof operatorType) { + return (operatorType)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to operator node"); + } + + public static boolopType to_boolop(Object o) { + if (o == null || o instanceof boolopType) { + return (boolopType)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to boolop node"); + } + + public static argumentsType to_arguments(Object o) { + if (o == null || o instanceof argumentsType) { + return (argumentsType)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to arguments node"); + } + + public static Object to_object(Object o) { + if (o == null || o instanceof Object) { + return (Object)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to object node"); + } + + public static Boolean to_bool(Object o) { + if (o == null || o instanceof Boolean) { + return (Boolean)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to Boolean node"); + } + + public static unaryopType to_unaryop(Object o) { + if (o == null || o instanceof unaryopType) { + return (unaryopType)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to unaryop node"); + } + +} Modified: branches/astwrite/src/org/python/antlr/ast/Assert.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -16,7 +17,7 @@ return test; } public void setTest(Object test) { - this.test = (exprType)test; + this.test = AstAdapter.to_expr(test); } private exprType msg; @@ -27,18 +28,17 @@ return msg; } public void setMsg(Object msg) { - this.msg = (exprType)msg; + this.msg = AstAdapter.to_expr(msg); } private final static String[] fields = new String[] {"test", "msg"}; public String[] get_fields() { return fields; } - public Assert(exprType test, exprType msg) { - this.test = test; - addChild(test); - this.msg = msg; - addChild(msg); + public Assert() {} + public Assert(Object test, Object msg) { + setTest(test); + setMsg(msg); } public Assert(Token token, exprType test, exprType msg) { Modified: branches/astwrite/src/org/python/antlr/ast/Assign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -28,22 +29,17 @@ return value; } public void setValue(Object value) { - this.value = (exprType)value; + this.value = AstAdapter.to_expr(value); } private final static String[] fields = new String[] {"targets", "value"}; public String[] get_fields() { return fields; } - public Assign(java.util.List<exprType> targets, exprType value) { - this.targets = new ListWrapper<exprType>(targets); - if (targets != null) { - for(PythonTree t : targets) { - addChild(t); - } - } - this.value = value; - addChild(value); + public Assign() {} + public Assign(Object targets, Object value) { + setTargets(targets); + setValue(value); } public Assign(Token token, java.util.List<exprType> targets, exprType Modified: branches/astwrite/src/org/python/antlr/ast/Attribute.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -16,7 +17,7 @@ return value; } public void setValue(Object value) { - this.value = (exprType)value; + this.value = AstAdapter.to_expr(value); } private String attr; @@ -27,7 +28,7 @@ return attr; } public void setAttr(Object attr) { - this.attr = (String)attr; + this.attr = AstAdapter.to_identifier(attr); } private expr_contextType ctx; @@ -38,7 +39,7 @@ return ctx; } public void setCtx(Object ctx) { - this.ctx = (expr_contextType)ctx; + this.ctx = AstAdapter.to_expr_context(ctx); } @@ -46,11 +47,11 @@ "ctx"}; public String[] get_fields() { return fields; } - public Attribute(exprType value, String attr, expr_contextType ctx) { - this.value = value; - addChild(value); - this.attr = attr; - this.ctx = ctx; + public Attribute() {} + public Attribute(Object value, Object attr, Object ctx) { + setValue(value); + setAttr(attr); + setCtx(ctx); } public Attribute(Token token, exprType value, String attr, expr_contextType Modified: branches/astwrite/src/org/python/antlr/ast/AugAssign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -16,7 +17,7 @@ return target; } public void setTarget(Object target) { - this.target = (exprType)target; + this.target = AstAdapter.to_expr(target); } private operatorType op; @@ -27,7 +28,7 @@ return op; } public void setOp(Object op) { - this.op = (operatorType)op; + this.op = AstAdapter.to_operator(op); } private exprType value; @@ -38,7 +39,7 @@ return value; } public void setValue(Object value) { - this.value = (exprType)value; + this.value = AstAdapter.to_expr(value); } @@ -46,12 +47,11 @@ "value"}; public String[] get_fields() { return fields; } - public AugAssign(exprType target, operatorType op, exprType value) { - this.target = target; - addChild(target); - this.op = op; - this.value = value; - addChild(value); + public AugAssign() {} + public AugAssign(Object target, Object op, Object value) { + setTarget(target); + setOp(op); + setValue(value); } public AugAssign(Token token, exprType target, operatorType op, exprType Modified: branches/astwrite/src/org/python/antlr/ast/BinOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,8 +1,8 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; -import org.python.core.PyInteger; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; import java.io.DataOutputStream; @@ -17,14 +17,9 @@ return left; } public void setLeft(Object left) { - if (left instanceof exprType) { - this.left = (exprType)left; - } else if (left instanceof Integer) { - this.left = new Num(new PyInteger((Integer)left)); - } + this.left = AstAdapter.to_expr(left); } - private operatorType op; public operatorType getInternalOp() { return op; @@ -33,7 +28,7 @@ return op; } public void setOp(Object op) { - this.op = (operatorType)op; + this.op = AstAdapter.to_operator(op); } private exprType right; @@ -44,28 +39,15 @@ return right; } public void setRight(Object right) { - if (right instanceof exprType) { - this.right = (exprType)right; - } else if (right instanceof Integer) { - this.right = new Num(new PyInteger((Integer)right)); - } + this.right = AstAdapter.to_expr(right); } + private final static String[] fields = new String[] {"left", "op", "right"}; public String[] get_fields() { return fields; } - public BinOp(exprType left, operatorType op, exprType right) { - this.left = left; - addChild(left); - this.op = op; - this.right = right; - addChild(right); - } - - public BinOp() { - } - - public BinOp(Object left, operatorType op, Object right) { + public BinOp() {} + public BinOp(Object left, Object op, Object right) { setLeft(left); setOp(op); setRight(right); Modified: branches/astwrite/src/org/python/antlr/ast/BoolOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -16,7 +17,7 @@ return op; } public void setOp(Object op) { - this.op = (boolopType)op; + this.op = AstAdapter.to_boolop(op); } private ListWrapper<exprType> values; @@ -35,14 +36,10 @@ private final static String[] fields = new String[] {"op", "values"}; public String[] get_fields() { return fields; } - public BoolOp(boolopType op, java.util.List<exprType> values) { - this.op = op; - this.values = new ListWrapper<exprType>(values); - if (values != null) { - for(PythonTree t : values) { - addChild(t); - } - } + public BoolOp() {} + public BoolOp(Object op, Object values) { + setOp(op); + setValues(values); } public BoolOp(Token token, boolopType op, java.util.List<exprType> values) { Modified: branches/astwrite/src/org/python/antlr/ast/Break.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Break.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/Break.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -9,9 +10,6 @@ public class Break extends stmtType { - public Break() { - } - public Break(Token token) { super(token); } Modified: branches/astwrite/src/org/python/antlr/ast/Call.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Call.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/Call.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -16,7 +17,7 @@ return func; } public void setFunc(Object func) { - this.func = (exprType)func; + this.func = AstAdapter.to_expr(func); } private ListWrapper<exprType> args; @@ -51,7 +52,7 @@ return starargs; } public void setStarargs(Object starargs) { - this.starargs = (exprType)starargs; + this.starargs = AstAdapter.to_expr(starargs); } private exprType kwargs; @@ -62,7 +63,7 @@ return kwargs; } public void setKwargs(Object kwargs) { - this.kwargs = (exprType)kwargs; + this.kwargs = AstAdapter.to_expr(kwargs); } @@ -71,26 +72,14 @@ "starargs", "kwargs"}; public String[] get_fields() { return fields; } - public Call(exprType func, java.util.List<exprType> args, - java.util.List<keywordType> keywords, exprType starargs, exprType kwargs) { - this.func = func; - addChild(func); - this.args = new ListWrapper<exprType>(args); - if (args != null) { - for(PythonTree t : args) { - addChild(t); - } - } - this.keywords = new ListWrapper<keywordType>(keywords); - if (keywords != null) { - for(PythonTree t : keywords) { - addChild(t); - } - } - this.starargs = starargs; - addChild(starargs); - this.kwargs = kwargs; - addChild(kwargs); + public Call() {} + public Call(Object func, Object args, Object keywords, Object starargs, + Object kwargs) { + setFunc(func); + setArgs(args); + setKeywords(keywords); + setStarargs(starargs); + setKwargs(kwargs); } public Call(Token token, exprType func, java.util.List<exprType> args, Modified: branches/astwrite/src/org/python/antlr/ast/ClassDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -16,7 +17,7 @@ return name; } public void setName(Object name) { - this.name = (String)name; + this.name = AstAdapter.to_identifier(name); } private ListWrapper<exprType> bases; @@ -60,27 +61,12 @@ "body", "decorators"}; public String[] get_fields() { return fields; } - public ClassDef(String name, java.util.List<exprType> bases, - java.util.List<stmtType> body, java.util.List<exprType> decorators) { - this.name = name; - this.bases = new ListWrapper<exprType>(bases); - if (bases != null) { - for(PythonTree t : bases) { - addChild(t); - } - } - this.body = new ListWrapper<stmtType>(body); - if (body != null) { - for(PythonTree t : body) { - addChild(t); - } - } - this.decorators = new ListWrapper<exprType>(decorators); - if (decorators != null) { - for(PythonTree t : decorators) { - addChild(t); - } - } + public ClassDef() {} + public ClassDef(Object name, Object bases, Object body, Object decorators) { + setName(name); + setBases(bases); + setBody(body); + setDecorators(decorators); } public ClassDef(Token token, String name, java.util.List<exprType> bases, Modified: branches/astwrite/src/org/python/antlr/ast/Compare.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -16,7 +17,7 @@ return left; } public void setLeft(Object left) { - this.left = (exprType)left; + this.left = AstAdapter.to_expr(left); } private ListWrapper<cmpopType> ops; @@ -48,17 +49,11 @@ "comparators"}; public String[] get_fields() { return fields; } - public Compare(exprType left, java.util.List<cmpopType> ops, - java.util.List<exprType> comparators) { - this.left = left; - addChild(left); - this.ops = new ListWrapper<cmpopType>(ops); - this.comparators = new ListWrapper<exprType>(comparators); - if (comparators != null) { - for(PythonTree t : comparators) { - addChild(t); - } - } + public Compare() {} + public Compare(Object left, Object ops, Object comparators) { + setLeft(left); + setOps(ops); + setComparators(comparators); } public Compare(Token token, exprType left, java.util.List<cmpopType> ops, Modified: branches/astwrite/src/org/python/antlr/ast/Continue.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Continue.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/Continue.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -9,9 +10,6 @@ public class Continue extends stmtType { - public Continue() { - } - public Continue(Token token) { super(token); } Modified: branches/astwrite/src/org/python/antlr/ast/Delete.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -24,13 +25,9 @@ private final static String[] fields = new String[] {"targets"}; public String[] get_fields() { return fields; } - public Delete(java.util.List<exprType> targets) { - this.targets = new ListWrapper<exprType>(targets); - if (targets != null) { - for(PythonTree t : targets) { - addChild(t); - } - } + public Delete() {} + public Delete(Object targets) { + setTargets(targets); } public Delete(Token token, java.util.List<exprType> targets) { Modified: branches/astwrite/src/org/python/antlr/ast/Dict.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -36,20 +37,10 @@ private final static String[] fields = new String[] {"keys", "values"}; public String[] get_fields() { return fields; } - public Dict(java.util.List<exprType> keys, java.util.List<exprType> values) - { - this.keys = new ListWrapper<exprType>(keys); - if (keys != null) { - for(PythonTree t : keys) { - addChild(t); - } - } - this.values = new ListWrapper<exprType>(values); - if (values != null) { - for(PythonTree t : values) { - addChild(t); - } - } + public Dict() {} + public Dict(Object keys, Object values) { + setKeys(keys); + setValues(values); } public Dict(Token token, java.util.List<exprType> keys, Modified: branches/astwrite/src/org/python/antlr/ast/Ellipsis.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Ellipsis.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/Ellipsis.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -9,9 +10,6 @@ public class Ellipsis extends sliceType { - public Ellipsis() { - } - public Ellipsis(Token token) { super(token); } Modified: branches/astwrite/src/org/python/antlr/ast/Exec.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -16,7 +17,7 @@ return body; } public void setBody(Object body) { - this.body = (exprType)body; + this.body = AstAdapter.to_expr(body); } private exprType globals; @@ -27,7 +28,7 @@ return globals; } public void setGlobals(Object globals) { - this.globals = (exprType)globals; + this.globals = AstAdapter.to_expr(globals); } private exprType locals; @@ -38,7 +39,7 @@ return locals; } public void setLocals(Object locals) { - this.locals = (exprType)locals; + this.locals = AstAdapter.to_expr(locals); } @@ -46,13 +47,11 @@ "locals"}; public String[] get_fields() { return fields; } - public Exec(exprType body, exprType globals, exprType locals) { - this.body = body; - addChild(body); - this.globals = globals; - addChild(globals); - this.locals = locals; - addChild(locals); + public Exec() {} + public Exec(Object body, Object globals, Object locals) { + setBody(body); + setGlobals(globals); + setLocals(locals); } public Exec(Token token, exprType body, exprType globals, exprType locals) { Modified: branches/astwrite/src/org/python/antlr/ast/Expr.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -16,16 +17,16 @@ return value; } public void setValue(Object value) { - this.value = (exprType)value; + this.value = AstAdapter.to_expr(value); } private final static String[] fields = new String[] {"value"}; public String[] get_fields() { return fields; } - public Expr(exprType value) { - this.value = value; - addChild(value); + public Expr() {} + public Expr(Object value) { + setValue(value); } public Expr(Token token, exprType value) { Modified: branches/astwrite/src/org/python/antlr/ast/Expression.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Expression.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/Expression.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -16,16 +17,16 @@ return body; } public void setBody(Object body) { - this.body = (exprType)body; + this.body = AstAdapter.to_expr(body); } private final static String[] fields = new String[] {"body"}; public String[] get_fields() { return fields; } - public Expression(exprType body) { - this.body = body; - addChild(body); + public Expression() {} + public Expression(Object body) { + setBody(body); } public Expression(Token token, exprType body) { Modified: branches/astwrite/src/org/python/antlr/ast/ExtSlice.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -24,13 +25,9 @@ private final static String[] fields = new String[] {"dims"}; public String[] get_fields() { return fields; } - public ExtSlice(java.util.List<sliceType> dims) { - this.dims = new ListWrapper<sliceType>(dims); - if (dims != null) { - for(PythonTree t : dims) { - addChild(t); - } - } + public ExtSlice() {} + public ExtSlice(Object dims) { + setDims(dims); } public ExtSlice(Token token, java.util.List<sliceType> dims) { Modified: branches/astwrite/src/org/python/antlr/ast/For.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/For.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/For.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -16,7 +17,7 @@ return target; } public void setTarget(Object target) { - this.target = (exprType)target; + this.target = AstAdapter.to_expr(target); } private exprType iter; @@ -27,7 +28,7 @@ return iter; } public void setIter(Object iter) { - this.iter = (exprType)iter; + this.iter = AstAdapter.to_expr(iter); } private ListWrapper<stmtType> body; @@ -59,24 +60,12 @@ "body", "orelse"}; public String[] get_fields() { return fields; } - public For(exprType target, exprType iter, java.util.List<stmtType> body, - java.util.List<stmtType> orelse) { - this.target = target; - addChild(target); - this.iter = iter; - addChild(iter); - this.body = new ListWrapper<stmtType>(body); - if (body != null) { - for(PythonTree t : body) { - addChild(t); - } - } - this.orelse = new ListWrapper<stmtType>(orelse); - if (orelse != null) { - for(PythonTree t : orelse) { - addChild(t); - } - } + public For() {} + public For(Object target, Object iter, Object body, Object orelse) { + setTarget(target); + setIter(iter); + setBody(body); + setOrelse(orelse); } public For(Token token, exprType target, exprType iter, Modified: branches/astwrite/src/org/python/antlr/ast/FunctionDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -16,7 +17,7 @@ return name; } public void setName(Object name) { - this.name = (String)name; + this.name = AstAdapter.to_identifier(name); } private argumentsType args; @@ -27,7 +28,7 @@ return args; } public void setArgs(Object args) { - this.args = (argumentsType)args; + this.args = AstAdapter.to_arguments(args); } private ListWrapper<stmtType> body; @@ -59,22 +60,13 @@ "body", "decorators"}; public String[] get_fields() { return fields; } - public FunctionDef(String name, argumentsType args, - java.util.List<stmtType> body, java.util.List<exprType> decorators) { - this.name = name; - this.args = args; - this.body = new ListWrapper<stmtType>(body); - if (body != null) { - for(PythonTree t : body) { - addChild(t); - } - } - this.decorators = new ListWrapper<exprType>(decorators); - if (decorators != null) { - for(PythonTree t : decorators) { - addChild(t); - } - } + public FunctionDef() {} + public FunctionDef(Object name, Object args, Object body, Object + decorators) { + setName(name); + setArgs(args); + setBody(body); + setDecorators(decorators); } public FunctionDef(Token token, String name, argumentsType args, Modified: branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -16,7 +17,7 @@ return elt; } public void setElt(Object elt) { - this.elt = (exprType)elt; + this.elt = AstAdapter.to_expr(elt); } private ListWrapper<comprehensionType> generators; @@ -35,16 +36,10 @@ private final static String[] fields = new String[] {"elt", "generators"}; public String[] get_fields() { return fields; } - public GeneratorExp(exprType elt, java.util.List<comprehensionType> - generators) { - this.elt = elt; - addChild(elt); - this.generators = new ListWrapper<comprehensionType>(generators); - if (generators != null) { - for(PythonTree t : generators) { - addChild(t); - } - } + public GeneratorExp() {} + public GeneratorExp(Object elt, Object generators) { + setElt(elt); + setGenerators(generators); } public GeneratorExp(Token token, exprType elt, Modified: branches/astwrite/src/org/python/antlr/ast/Global.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Global.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/Global.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -24,8 +25,9 @@ private final static String[] fields = new String[] {"names"}; public String[] get_fields() { return fields; } - public Global(java.util.List<String> names) { - this.names = new ListWrapper<String>(names); + public Global() {} + public Global(Object names) { + setNames(names); } public Global(Token token, java.util.List<String> names) { Modified: branches/astwrite/src/org/python/antlr/ast/If.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/If.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/If.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -16,7 +17,7 @@ return test; } public void setTest(Object test) { - this.test = (exprType)test; + this.test = AstAdapter.to_expr(test); } private ListWrapper<stmtType> body; @@ -48,22 +49,11 @@ "orelse"}; public String[] get_fields() { return fields; } - public If(exprType test, java.util.List<stmtType> body, - java.util.List<stmtType> orelse) { - this.test = test; - addChild(test); - this.body = new ListWrapper<stmtType>(body); - if (body != null) { - for(PythonTree t : body) { - addChild(t); - } - } - this.orelse = new ListWrapper<stmtType>(orelse); - if (orelse != null) { - for(PythonTree t : orelse) { - addChild(t); - } - } + public If() {} + public If(Object test, Object body, Object orelse) { + setTest(test); + setBody(body); + setOrelse(orelse); } public If(Token token, exprType test, java.util.List<stmtType> body, Modified: branches/astwrite/src/org/python/antlr/ast/IfExp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/IfExp.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/IfExp.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -16,7 +17,7 @@ return test; } public void setTest(Object test) { - this.test = (exprType)test; + this.test = AstAdapter.to_expr(test); } private exprType body; @@ -27,7 +28,7 @@ return body; } public void setBody(Object body) { - this.body = (exprType)body; + this.body = AstAdapter.to_expr(body); } private exprType orelse; @@ -38,7 +39,7 @@ return orelse; } public void setOrelse(Object orelse) { - this.orelse = (exprType)orelse; + this.orelse = AstAdapter.to_expr(orelse); } @@ -46,13 +47,11 @@ "orelse"}; public String[] get_fields() { return fields; } - public IfExp(exprType test, exprType body, exprType orelse) { - this.test = test; - addChild(test); - this.body = body; - addChild(body); - this.orelse = orelse; - addChild(orelse); + public IfExp() {} + public IfExp(Object test, Object body, Object orelse) { + setTest(test); + setBody(body); + setOrelse(orelse); } public IfExp(Token token, exprType test, exprType body, exprType orelse) { Modified: branches/astwrite/src/org/python/antlr/ast/Import.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Import.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/Import.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -24,13 +25,9 @@ private final static String[] fields = new String[] {"names"}; public String[] get_fields() { return fields; } - public Import(java.util.List<aliasType> names) { - this.names = new ListWrapper<aliasType>(names); - if (names != null) { - for(PythonTree t : names) { - addChild(t); - } - } + public Import() {} + public Import(Object names) { + setNames(names); } public Import(Token token, java.util.List<aliasType> names) { Modified: branches/astwrite/src/org/python/antlr/ast/ImportFrom.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ImportFrom.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/ImportFrom.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -16,7 +17,7 @@ return module; } public void setModule(Object module) { - this.module = (String)module; + this.module = AstAdapter.to_identifier(module); } private ListWrapper<aliasType> names; @@ -39,7 +40,7 @@ return level; } public void setLevel(Object level) { - this.level = (Integer)level; + this.level = AstAdapter.to_int(level); } @@ -47,16 +48,11 @@ "level"}; public String[] get_fields() { return fields; } - public ImportFrom(String module, java.util.List<aliasType> names, Integer - level) { - this.module = module; - this.names = new ListWrapper<aliasType>(names); - if (names != null) { - for(PythonTree t : names) { - addChild(t); - } - } - this.level = level; + public ImportFrom() {} + public ImportFrom(Object module, Object names, Object level) { + setModule(module); + setNames(names); + setLevel(level); } public ImportFrom(Token token, String module, java.util.List<aliasType> Modified: branches/astwrite/src/org/python/antlr/ast/Index.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Index.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/Index.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -16,16 +17,16 @@ return value; } public void setValue(Object value) { - this.value = (exprType)value; + this.value = AstAdapter.to_expr(value); } private final static String[] fields = new String[] {"value"}; public String[] get_fields() { return fields; } - public Index(exprType value) { - this.value = value; - addChild(value); + public Index() {} + public Index(Object value) { + setValue(value); } public Index(Token token, exprType value) { Modified: branches/astwrite/src/org/python/antlr/ast/Interactive.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Interactive.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/Interactive.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -24,13 +25,9 @@ private final static String[] fields = new String[] {"body"}; public String[] get_fields() { return fields; } - public Interactive(java.util.List<stmtType> body) { - this.body = new ListWrapper<stmtType>(body); - if (body != null) { - for(PythonTree t : body) { - addChild(t); - } - } + public Interactive() {} + public Interactive(Object body) { + setBody(body); } public Interactive(Token token, java.util.List<stmtType> body) { Modified: branches/astwrite/src/org/python/antlr/ast/Lambda.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Lambda.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/Lambda.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -16,7 +17,7 @@ return args; } public void setArgs(Object args) { - this.args = (argumentsType)args; + this.args = AstAdapter.to_arguments(args); } private exprType body; @@ -27,17 +28,17 @@ return body; } public void setBody(Object body) { - this.body = (exprType)body; + this.body = AstAdapter.to_expr(body); } private final static String[] fields = new String[] {"args", "body"}; public String[] get_fields() { return fields; } - public Lambda(argumentsType args, exprType body) { - this.args = args; - this.body = body; - addChild(body); + public Lambda() {} + public Lambda(Object args, Object body) { + setArgs(args); + setBody(body); } public Lambda(Token token, argumentsType args, exprType body) { Modified: branches/astwrite/src/org/python/antlr/ast/List.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/List.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/List.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -28,21 +29,17 @@ return ctx; } public void setCtx(Object ctx) { - this.ctx = (expr_contextType)ctx; + this.ctx = AstAdapter.to_expr_context(ctx); } private final static String[] fields = new String[] {"elts", "ctx"}; public String[] get_fields() { return fields; } - public List(java.util.List<exprType> elts, expr_contextType ctx) { - this.elts = new ListWrapper<exprType>(elts); - if (elts != null) { - for(PythonTree t : elts) { - addChild(t); - } - } - this.ctx = ctx; + public List() {} + public List(Object elts, Object ctx) { + setElts(elts); + setCtx(ctx); } public List(Token token, java.util.List<exprType> elts, expr_contextType Modified: branches/astwrite/src/org/python/antlr/ast/ListComp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ListComp.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrite/src/org/python/antlr/ast/ListComp.java 2008-11-24 04:39:05 UTC (rev 5628) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -16,7 +17,7 @@ return elt; } public void setElt(Object elt) { - this.elt = (exprType)elt; + this.elt = AstAdapter.to_expr(elt); } private ListWrapper<comprehensionType> generators; @@ -35,16 +36,10 @@ private final static String[] fields = new String[] {"elt", "generators"}; public String[] get_fields() { return fields; } - public ListComp(exprType elt, java.util.List<comprehensionType> generators) - { - this.elt = elt; - addChild(elt); - this.generators = new ListWrapper<comprehensionType>(generators); - if (generators != null) { - for(PythonTree t : generators) { - addChild(t); - } - } + public ListComp() {} + public ListComp(Object elt, Object generators) { + setElt(elt); + setGenerators(generators); } public ListComp(Token token, exprType elt, Modified: branches/astwrite/src/org/python/antlr/ast/Module.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Module.java 2008-11-24 02:48:33 UTC (rev 5627) +++ branches/astwrit... [truncated message content] |
From: <fwi...@us...> - 2008-11-24 19:41:56
|
Revision: 5633 http://jython.svn.sourceforge.net/jython/?rev=5633&view=rev Author: fwierzbicki Date: 2008-11-24 19:41:50 +0000 (Mon, 24 Nov 2008) Log Message: ----------- internal compiler operates on the internal lists now ListWrappers. Modified Paths: -------------- branches/astwrite/ast/asdl_antlr.py branches/astwrite/src/org/python/antlr/AstAdapter.java branches/astwrite/src/org/python/antlr/ast/Assert.java branches/astwrite/src/org/python/antlr/ast/Assign.java branches/astwrite/src/org/python/antlr/ast/Attribute.java branches/astwrite/src/org/python/antlr/ast/AugAssign.java branches/astwrite/src/org/python/antlr/ast/BinOp.java branches/astwrite/src/org/python/antlr/ast/BoolOp.java branches/astwrite/src/org/python/antlr/ast/Break.java branches/astwrite/src/org/python/antlr/ast/Call.java branches/astwrite/src/org/python/antlr/ast/ClassDef.java branches/astwrite/src/org/python/antlr/ast/Compare.java branches/astwrite/src/org/python/antlr/ast/Continue.java branches/astwrite/src/org/python/antlr/ast/Delete.java branches/astwrite/src/org/python/antlr/ast/Dict.java branches/astwrite/src/org/python/antlr/ast/Ellipsis.java branches/astwrite/src/org/python/antlr/ast/Exec.java branches/astwrite/src/org/python/antlr/ast/Expr.java branches/astwrite/src/org/python/antlr/ast/Expression.java branches/astwrite/src/org/python/antlr/ast/ExtSlice.java branches/astwrite/src/org/python/antlr/ast/For.java branches/astwrite/src/org/python/antlr/ast/FunctionDef.java branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java branches/astwrite/src/org/python/antlr/ast/Global.java branches/astwrite/src/org/python/antlr/ast/If.java branches/astwrite/src/org/python/antlr/ast/IfExp.java branches/astwrite/src/org/python/antlr/ast/Import.java branches/astwrite/src/org/python/antlr/ast/ImportFrom.java branches/astwrite/src/org/python/antlr/ast/Index.java branches/astwrite/src/org/python/antlr/ast/Interactive.java branches/astwrite/src/org/python/antlr/ast/Lambda.java branches/astwrite/src/org/python/antlr/ast/List.java branches/astwrite/src/org/python/antlr/ast/ListComp.java branches/astwrite/src/org/python/antlr/ast/Module.java branches/astwrite/src/org/python/antlr/ast/Name.java branches/astwrite/src/org/python/antlr/ast/Num.java branches/astwrite/src/org/python/antlr/ast/Pass.java branches/astwrite/src/org/python/antlr/ast/Print.java branches/astwrite/src/org/python/antlr/ast/Raise.java branches/astwrite/src/org/python/antlr/ast/Repr.java branches/astwrite/src/org/python/antlr/ast/Return.java branches/astwrite/src/org/python/antlr/ast/Slice.java branches/astwrite/src/org/python/antlr/ast/Str.java branches/astwrite/src/org/python/antlr/ast/Subscript.java branches/astwrite/src/org/python/antlr/ast/Suite.java branches/astwrite/src/org/python/antlr/ast/TryExcept.java branches/astwrite/src/org/python/antlr/ast/TryFinally.java branches/astwrite/src/org/python/antlr/ast/Tuple.java branches/astwrite/src/org/python/antlr/ast/UnaryOp.java branches/astwrite/src/org/python/antlr/ast/VisitorBase.java branches/astwrite/src/org/python/antlr/ast/While.java branches/astwrite/src/org/python/antlr/ast/With.java branches/astwrite/src/org/python/antlr/ast/Yield.java branches/astwrite/src/org/python/antlr/ast/aliasType.java branches/astwrite/src/org/python/antlr/ast/argumentsType.java branches/astwrite/src/org/python/antlr/ast/comprehensionType.java branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java branches/astwrite/src/org/python/antlr/ast/exprType.java branches/astwrite/src/org/python/antlr/ast/keywordType.java branches/astwrite/src/org/python/antlr/ast/modType.java branches/astwrite/src/org/python/antlr/ast/sliceType.java branches/astwrite/src/org/python/antlr/ast/stmtType.java branches/astwrite/src/org/python/compiler/ArgListCompiler.java Modified: branches/astwrite/ast/asdl_antlr.py =================================================================== --- branches/astwrite/ast/asdl_antlr.py 2008-11-24 05:52:36 UTC (rev 5632) +++ branches/astwrite/ast/asdl_antlr.py 2008-11-24 19:41:50 UTC (rev 5633) @@ -56,6 +56,7 @@ print >> self.file, "// Autogenerated AST node" print >> self.file, 'package org.python.antlr.ast;' if refersToPythonTree: + print >> self.file, 'import java.util.ArrayList;' print >> self.file, 'import org.python.antlr.AstAdapter;' print >> self.file, 'import org.python.antlr.PythonTree;' print >> self.file, 'import org.python.antlr.ListWrapper;' @@ -294,11 +295,11 @@ def javaConstructorHelper(self, fields, depth): for f in fields: - if f.seq: - self.emit("this.%s = new %s(%s);" % (f.name, - self.javaType(f, True), f.name), depth+1) - else: - self.emit("this.%s = %s;" % (f.name, f.name), depth+1) + #if f.seq: + # self.emit("this.%s = new %s(%s);" % (f.name, + # self.javaType(f), f.name), depth+1) + #else: + self.emit("this.%s = %s;" % (f.name, f.name), depth+1) fparg = self.fieldDef(f) @@ -308,11 +309,12 @@ #For now ignoring String -- will want to revisit if not_simple and fparg.find("String") == -1: if f.seq: - self.emit("if (%s != null) {" % f.name, depth+1); - self.emit("for(PythonTree t : %(name)s) {" % {"name":f.name}, depth+2) - self.emit("addChild(t);", depth+3) - self.emit("}", depth+2) + self.emit("if (%s == null) {" % f.name, depth+1); + self.emit("this.%s = new ArrayList<%s>();" % (f.name, self.javaType(f, False)), depth+2) self.emit("}", depth+1) + self.emit("for(PythonTree t : this.%(name)s) {" % {"name":f.name}, depth+1) + self.emit("addChild(t);", depth+2) + self.emit("}", depth+1) elif str(f.type) == "expr": self.emit("addChild(%s);" % (f.name), depth+1) @@ -413,19 +415,22 @@ def visitField(self, field, depth): - self.emit("private %s;" % self.fieldDef(field, True), depth) - self.emit("public %s getInternal%s() {" % (self.javaType(field, True), + self.emit("private %s;" % self.fieldDef(field), depth) + self.emit("public %s getInternal%s() {" % (self.javaType(field), str(field.name).capitalize()), depth) self.emit("return %s;" % field.name, depth+1) self.emit("}", depth) self.emit("public Object get%s() {" % (str(field.name).capitalize()), depth) - self.emit("return %s;" % field.name, depth+1) + if field.seq: + self.emit("return new ListWrapper(%s);" % field.name, depth+1) + else: + self.emit("return %s;" % field.name, depth+1) self.emit("}", depth) self.emit("public void set%s(Object %s) {" % (str(field.name).capitalize(), field.name), depth) if field.seq: - self.emit("this.%s = new %s(" % (field.name, self.javaType(field, True)), depth+1) - self.emit("(%s)%s);" % (self.javaType(field), field.name), depth+2) + #self.emit("this.%s = new %s(" % (field.name, self.javaType(field)), depth+1) + self.emit("this.%s = AstAdapter.to_%sList(%s);" % (field.name, str(field.type), field.name), depth+1) else: self.emit("this.%s = AstAdapter.to_%s(%s);" % (field.name, str(field.type), field.name), depth+1) self.emit("}", depth) @@ -441,20 +446,16 @@ 'PythonTree' : 'PythonTree', # also for antlr type } - def fieldDef(self, field, wrapper=False): - jtype = self.javaType(field, wrapper) + def fieldDef(self, field): + jtype = self.javaType(field) name = field.name return "%s %s" % (jtype, name) - def javaType(self, field, wrapper=False): + def javaType(self, field, check_seq=True): jtype = str(field.type) jtype = self.bltinnames.get(jtype, jtype + 'Type') - if field.seq: - if wrapper: - return "ListWrapper<%s>" % jtype - else: - return "java.util.List<%s>" % jtype - + if check_seq and field.seq: + return "java.util.List<%s>" % jtype return jtype class VisitorVisitor(EmitVisitor): Modified: branches/astwrite/src/org/python/antlr/AstAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/AstAdapter.java 2008-11-24 05:52:36 UTC (rev 5632) +++ branches/astwrite/src/org/python/antlr/AstAdapter.java 2008-11-24 19:41:50 UTC (rev 5633) @@ -8,6 +8,42 @@ */ public class AstAdapter { + public static java.util.List<aliasType> to_aliasList(Object o) { + return null; + } + + public static java.util.List<cmpopType> to_cmpopList(Object o) { + return null; + } + + public static java.util.List<comprehensionType> to_comprehensionList(Object o) { + return null; + } + + public static java.util.List<excepthandlerType> to_excepthandlerList(Object o) { + return null; + } + + public static java.util.List<exprType> to_exprList(Object o) { + return null; + } + + public static java.util.List<String> to_identifierList(Object o) { + return null; + } + + public static java.util.List<keywordType> to_keywordList(Object o) { + return null; + } + + public static java.util.List<sliceType> to_sliceList(Object o) { + return null; + } + + public static java.util.List<stmtType> to_stmtList(Object o) { + return null; + } + public static exprType to_expr(Object o) { if (o == null || o instanceof exprType) { return (exprType)o; Modified: branches/astwrite/src/org/python/antlr/ast/Assert.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-11-24 05:52:36 UTC (rev 5632) +++ branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-11-24 19:41:50 UTC (rev 5633) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import java.util.ArrayList; import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; Modified: branches/astwrite/src/org/python/antlr/ast/Assign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-11-24 05:52:36 UTC (rev 5632) +++ branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-11-24 19:41:50 UTC (rev 5633) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import java.util.ArrayList; import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; @@ -9,16 +10,15 @@ import java.io.IOException; public class Assign extends stmtType { - private ListWrapper<exprType> targets; - public ListWrapper<exprType> getInternalTargets() { + private java.util.List<exprType> targets; + public java.util.List<exprType> getInternalTargets() { return targets; } public Object getTargets() { - return targets; + return new ListWrapper(targets); } public void setTargets(Object targets) { - this.targets = new ListWrapper<exprType>( - (java.util.List<exprType>)targets); + this.targets = AstAdapter.to_exprList(targets); } private exprType value; @@ -45,12 +45,13 @@ public Assign(Token token, java.util.List<exprType> targets, exprType value) { super(token); - this.targets = new ListWrapper<exprType>(targets); - if (targets != null) { - for(PythonTree t : targets) { - addChild(t); - } + this.targets = targets; + if (targets == null) { + this.targets = new ArrayList<exprType>(); } + for(PythonTree t : this.targets) { + addChild(t); + } this.value = value; addChild(value); } @@ -58,12 +59,13 @@ public Assign(Integer ttype, Token token, java.util.List<exprType> targets, exprType value) { super(ttype, token); - this.targets = new ListWrapper<exprType>(targets); - if (targets != null) { - for(PythonTree t : targets) { - addChild(t); - } + this.targets = targets; + if (targets == null) { + this.targets = new ArrayList<exprType>(); } + for(PythonTree t : this.targets) { + addChild(t); + } this.value = value; addChild(value); } @@ -71,12 +73,13 @@ public Assign(PythonTree tree, java.util.List<exprType> targets, exprType value) { super(tree); - this.targets = new ListWrapper<exprType>(targets); - if (targets != null) { - for(PythonTree t : targets) { - addChild(t); - } + this.targets = targets; + if (targets == null) { + this.targets = new ArrayList<exprType>(); } + for(PythonTree t : this.targets) { + addChild(t); + } this.value = value; addChild(value); } Modified: branches/astwrite/src/org/python/antlr/ast/Attribute.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-11-24 05:52:36 UTC (rev 5632) +++ branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-11-24 19:41:50 UTC (rev 5633) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import java.util.ArrayList; import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; Modified: branches/astwrite/src/org/python/antlr/ast/AugAssign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-11-24 05:52:36 UTC (rev 5632) +++ branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-11-24 19:41:50 UTC (rev 5633) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import java.util.ArrayList; import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; Modified: branches/astwrite/src/org/python/antlr/ast/BinOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-11-24 05:52:36 UTC (rev 5632) +++ branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-11-24 19:41:50 UTC (rev 5633) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import java.util.ArrayList; import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; Modified: branches/astwrite/src/org/python/antlr/ast/BoolOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-11-24 05:52:36 UTC (rev 5632) +++ branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-11-24 19:41:50 UTC (rev 5633) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import java.util.ArrayList; import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; @@ -20,16 +21,15 @@ this.op = AstAdapter.to_boolop(op); } - private ListWrapper<exprType> values; - public ListWrapper<exprType> getInternalValues() { + private java.util.List<exprType> values; + public java.util.List<exprType> getInternalValues() { return values; } public Object getValues() { - return values; + return new ListWrapper(values); } public void setValues(Object values) { - this.values = new ListWrapper<exprType>( - (java.util.List<exprType>)values); + this.values = AstAdapter.to_exprList(values); } @@ -45,36 +45,39 @@ public BoolOp(Token token, boolopType op, java.util.List<exprType> values) { super(token); this.op = op; - this.values = new ListWrapper<exprType>(values); - if (values != null) { - for(PythonTree t : values) { - addChild(t); - } + this.values = values; + if (values == null) { + this.values = new ArrayList<exprType>(); } + for(PythonTree t : this.values) { + addChild(t); + } } public BoolOp(Integer ttype, Token token, boolopType op, java.util.List<exprType> values) { super(ttype, token); this.op = op; - this.values = new ListWrapper<exprType>(values); - if (values != null) { - for(PythonTree t : values) { - addChild(t); - } + this.values = values; + if (values == null) { + this.values = new ArrayList<exprType>(); } + for(PythonTree t : this.values) { + addChild(t); + } } public BoolOp(PythonTree tree, boolopType op, java.util.List<exprType> values) { super(tree); this.op = op; - this.values = new ListWrapper<exprType>(values); - if (values != null) { - for(PythonTree t : values) { - addChild(t); - } + this.values = values; + if (values == null) { + this.values = new ArrayList<exprType>(); } + for(PythonTree t : this.values) { + addChild(t); + } } public String toString() { Modified: branches/astwrite/src/org/python/antlr/ast/Break.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Break.java 2008-11-24 05:52:36 UTC (rev 5632) +++ branches/astwrite/src/org/python/antlr/ast/Break.java 2008-11-24 19:41:50 UTC (rev 5633) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import java.util.ArrayList; import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; Modified: branches/astwrite/src/org/python/antlr/ast/Call.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Call.java 2008-11-24 05:52:36 UTC (rev 5632) +++ branches/astwrite/src/org/python/antlr/ast/Call.java 2008-11-24 19:41:50 UTC (rev 5633) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import java.util.ArrayList; import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; @@ -20,28 +21,26 @@ this.func = AstAdapter.to_expr(func); } - private ListWrapper<exprType> args; - public ListWrapper<exprType> getInternalArgs() { + private java.util.List<exprType> args; + public java.util.List<exprType> getInternalArgs() { return args; } public Object getArgs() { - return args; + return new ListWrapper(args); } public void setArgs(Object args) { - this.args = new ListWrapper<exprType>( - (java.util.List<exprType>)args); + this.args = AstAdapter.to_exprList(args); } - private ListWrapper<keywordType> keywords; - public ListWrapper<keywordType> getInternalKeywords() { + private java.util.List<keywordType> keywords; + public java.util.List<keywordType> getInternalKeywords() { return keywords; } public Object getKeywords() { - return keywords; + return new ListWrapper(keywords); } public void setKeywords(Object keywords) { - this.keywords = new ListWrapper<keywordType>( - (java.util.List<keywordType>)keywords); + this.keywords = AstAdapter.to_keywordList(keywords); } private exprType starargs; @@ -87,18 +86,20 @@ super(token); this.func = func; addChild(func); - this.args = new ListWrapper<exprType>(args); - if (args != null) { - for(PythonTree t : args) { - addChild(t); - } + this.args = args; + if (args == null) { + this.args = new ArrayList<exprType>(); } - this.keywords = new ListWrapper<keywordType>(keywords); - if (keywords != null) { - for(PythonTree t : keywords) { - addChild(t); - } + for(PythonTree t : this.args) { + addChild(t); } + this.keywords = keywords; + if (keywords == null) { + this.keywords = new ArrayList<keywordType>(); + } + for(PythonTree t : this.keywords) { + addChild(t); + } this.starargs = starargs; addChild(starargs); this.kwargs = kwargs; @@ -111,18 +112,20 @@ super(ttype, token); this.func = func; addChild(func); - this.args = new ListWrapper<exprType>(args); - if (args != null) { - for(PythonTree t : args) { - addChild(t); - } + this.args = args; + if (args == null) { + this.args = new ArrayList<exprType>(); } - this.keywords = new ListWrapper<keywordType>(keywords); - if (keywords != null) { - for(PythonTree t : keywords) { - addChild(t); - } + for(PythonTree t : this.args) { + addChild(t); } + this.keywords = keywords; + if (keywords == null) { + this.keywords = new ArrayList<keywordType>(); + } + for(PythonTree t : this.keywords) { + addChild(t); + } this.starargs = starargs; addChild(starargs); this.kwargs = kwargs; @@ -134,18 +137,20 @@ super(tree); this.func = func; addChild(func); - this.args = new ListWrapper<exprType>(args); - if (args != null) { - for(PythonTree t : args) { - addChild(t); - } + this.args = args; + if (args == null) { + this.args = new ArrayList<exprType>(); } - this.keywords = new ListWrapper<keywordType>(keywords); - if (keywords != null) { - for(PythonTree t : keywords) { - addChild(t); - } + for(PythonTree t : this.args) { + addChild(t); } + this.keywords = keywords; + if (keywords == null) { + this.keywords = new ArrayList<keywordType>(); + } + for(PythonTree t : this.keywords) { + addChild(t); + } this.starargs = starargs; addChild(starargs); this.kwargs = kwargs; Modified: branches/astwrite/src/org/python/antlr/ast/ClassDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-11-24 05:52:36 UTC (rev 5632) +++ branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-11-24 19:41:50 UTC (rev 5633) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import java.util.ArrayList; import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; @@ -20,40 +21,37 @@ this.name = AstAdapter.to_identifier(name); } - private ListWrapper<exprType> bases; - public ListWrapper<exprType> getInternalBases() { + private java.util.List<exprType> bases; + public java.util.List<exprType> getInternalBases() { return bases; } public Object getBases() { - return bases; + return new ListWrapper(bases); } public void setBases(Object bases) { - this.bases = new ListWrapper<exprType>( - (java.util.List<exprType>)bases); + this.bases = AstAdapter.to_exprList(bases); } - private ListWrapper<stmtType> body; - public ListWrapper<stmtType> getInternalBody() { + private java.util.List<stmtType> body; + public java.util.List<stmtType> getInternalBody() { return body; } public Object getBody() { - return body; + return new ListWrapper(body); } public void setBody(Object body) { - this.body = new ListWrapper<stmtType>( - (java.util.List<stmtType>)body); + this.body = AstAdapter.to_stmtList(body); } - private ListWrapper<exprType> decorators; - public ListWrapper<exprType> getInternalDecorators() { + private java.util.List<exprType> decorators; + public java.util.List<exprType> getInternalDecorators() { return decorators; } public Object getDecorators() { - return decorators; + return new ListWrapper(decorators); } public void setDecorators(Object decorators) { - this.decorators = new ListWrapper<exprType>( - (java.util.List<exprType>)decorators); + this.decorators = AstAdapter.to_exprList(decorators); } @@ -73,24 +71,27 @@ java.util.List<stmtType> body, java.util.List<exprType> decorators) { super(token); this.name = name; - this.bases = new ListWrapper<exprType>(bases); - if (bases != null) { - for(PythonTree t : bases) { - addChild(t); - } + this.bases = bases; + if (bases == null) { + this.bases = new ArrayList<exprType>(); } - this.body = new ListWrapper<stmtType>(body); - if (body != null) { - for(PythonTree t : body) { - addChild(t); - } + for(PythonTree t : this.bases) { + addChild(t); } - this.decorators = new ListWrapper<exprType>(decorators); - if (decorators != null) { - for(PythonTree t : decorators) { - addChild(t); - } + this.body = body; + if (body == null) { + this.body = new ArrayList<stmtType>(); } + for(PythonTree t : this.body) { + addChild(t); + } + this.decorators = decorators; + if (decorators == null) { + this.decorators = new ArrayList<exprType>(); + } + for(PythonTree t : this.decorators) { + addChild(t); + } } public ClassDef(Integer ttype, Token token, String name, @@ -98,48 +99,54 @@ java.util.List<exprType> decorators) { super(ttype, token); this.name = name; - this.bases = new ListWrapper<exprType>(bases); - if (bases != null) { - for(PythonTree t : bases) { - addChild(t); - } + this.bases = bases; + if (bases == null) { + this.bases = new ArrayList<exprType>(); } - this.body = new ListWrapper<stmtType>(body); - if (body != null) { - for(PythonTree t : body) { - addChild(t); - } + for(PythonTree t : this.bases) { + addChild(t); } - this.decorators = new ListWrapper<exprType>(decorators); - if (decorators != null) { - for(PythonTree t : decorators) { - addChild(t); - } + this.body = body; + if (body == null) { + this.body = new ArrayList<stmtType>(); } + for(PythonTree t : this.body) { + addChild(t); + } + this.decorators = decorators; + if (decorators == null) { + this.decorators = new ArrayList<exprType>(); + } + for(PythonTree t : this.decorators) { + addChild(t); + } } public ClassDef(PythonTree tree, String name, java.util.List<exprType> bases, java.util.List<stmtType> body, java.util.List<exprType> decorators) { super(tree); this.name = name; - this.bases = new ListWrapper<exprType>(bases); - if (bases != null) { - for(PythonTree t : bases) { - addChild(t); - } + this.bases = bases; + if (bases == null) { + this.bases = new ArrayList<exprType>(); } - this.body = new ListWrapper<stmtType>(body); - if (body != null) { - for(PythonTree t : body) { - addChild(t); - } + for(PythonTree t : this.bases) { + addChild(t); } - this.decorators = new ListWrapper<exprType>(decorators); - if (decorators != null) { - for(PythonTree t : decorators) { - addChild(t); - } + this.body = body; + if (body == null) { + this.body = new ArrayList<stmtType>(); } + for(PythonTree t : this.body) { + addChild(t); + } + this.decorators = decorators; + if (decorators == null) { + this.decorators = new ArrayList<exprType>(); + } + for(PythonTree t : this.decorators) { + addChild(t); + } } public String toString() { Modified: branches/astwrite/src/org/python/antlr/ast/Compare.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-11-24 05:52:36 UTC (rev 5632) +++ branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-11-24 19:41:50 UTC (rev 5633) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import java.util.ArrayList; import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; @@ -20,28 +21,26 @@ this.left = AstAdapter.to_expr(left); } - private ListWrapper<cmpopType> ops; - public ListWrapper<cmpopType> getInternalOps() { + private java.util.List<cmpopType> ops; + public java.util.List<cmpopType> getInternalOps() { return ops; } public Object getOps() { - return ops; + return new ListWrapper(ops); } public void setOps(Object ops) { - this.ops = new ListWrapper<cmpopType>( - (java.util.List<cmpopType>)ops); + this.ops = AstAdapter.to_cmpopList(ops); } - private ListWrapper<exprType> comparators; - public ListWrapper<exprType> getInternalComparators() { + private java.util.List<exprType> comparators; + public java.util.List<exprType> getInternalComparators() { return comparators; } public Object getComparators() { - return comparators; + return new ListWrapper(comparators); } public void setComparators(Object comparators) { - this.comparators = new ListWrapper<exprType>( - (java.util.List<exprType>)comparators); + this.comparators = AstAdapter.to_exprList(comparators); } @@ -61,13 +60,14 @@ super(token); this.left = left; addChild(left); - this.ops = new ListWrapper<cmpopType>(ops); - this.comparators = new ListWrapper<exprType>(comparators); - if (comparators != null) { - for(PythonTree t : comparators) { - addChild(t); - } + this.ops = ops; + this.comparators = comparators; + if (comparators == null) { + this.comparators = new ArrayList<exprType>(); } + for(PythonTree t : this.comparators) { + addChild(t); + } } public Compare(Integer ttype, Token token, exprType left, @@ -75,13 +75,14 @@ super(ttype, token); this.left = left; addChild(left); - this.ops = new ListWrapper<cmpopType>(ops); - this.comparators = new ListWrapper<exprType>(comparators); - if (comparators != null) { - for(PythonTree t : comparators) { - addChild(t); - } + this.ops = ops; + this.comparators = comparators; + if (comparators == null) { + this.comparators = new ArrayList<exprType>(); } + for(PythonTree t : this.comparators) { + addChild(t); + } } public Compare(PythonTree tree, exprType left, java.util.List<cmpopType> @@ -89,13 +90,14 @@ super(tree); this.left = left; addChild(left); - this.ops = new ListWrapper<cmpopType>(ops); - this.comparators = new ListWrapper<exprType>(comparators); - if (comparators != null) { - for(PythonTree t : comparators) { - addChild(t); - } + this.ops = ops; + this.comparators = comparators; + if (comparators == null) { + this.comparators = new ArrayList<exprType>(); } + for(PythonTree t : this.comparators) { + addChild(t); + } } public String toString() { Modified: branches/astwrite/src/org/python/antlr/ast/Continue.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Continue.java 2008-11-24 05:52:36 UTC (rev 5632) +++ branches/astwrite/src/org/python/antlr/ast/Continue.java 2008-11-24 19:41:50 UTC (rev 5633) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import java.util.ArrayList; import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; Modified: branches/astwrite/src/org/python/antlr/ast/Delete.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-11-24 05:52:36 UTC (rev 5632) +++ branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-11-24 19:41:50 UTC (rev 5633) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import java.util.ArrayList; import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; @@ -9,16 +10,15 @@ import java.io.IOException; public class Delete extends stmtType { - private ListWrapper<exprType> targets; - public ListWrapper<exprType> getInternalTargets() { + private java.util.List<exprType> targets; + public java.util.List<exprType> getInternalTargets() { return targets; } public Object getTargets() { - return targets; + return new ListWrapper(targets); } public void setTargets(Object targets) { - this.targets = new ListWrapper<exprType>( - (java.util.List<exprType>)targets); + this.targets = AstAdapter.to_exprList(targets); } @@ -32,33 +32,36 @@ public Delete(Token token, java.util.List<exprType> targets) { super(token); - this.targets = new ListWrapper<exprType>(targets); - if (targets != null) { - for(PythonTree t : targets) { - addChild(t); - } + this.targets = targets; + if (targets == null) { + this.targets = new ArrayList<exprType>(); } + for(PythonTree t : this.targets) { + addChild(t); + } } public Delete(Integer ttype, Token token, java.util.List<exprType> targets) { super(ttype, token); - this.targets = new ListWrapper<exprType>(targets); - if (targets != null) { - for(PythonTree t : targets) { - addChild(t); - } + this.targets = targets; + if (targets == null) { + this.targets = new ArrayList<exprType>(); } + for(PythonTree t : this.targets) { + addChild(t); + } } public Delete(PythonTree tree, java.util.List<exprType> targets) { super(tree); - this.targets = new ListWrapper<exprType>(targets); - if (targets != null) { - for(PythonTree t : targets) { - addChild(t); - } + this.targets = targets; + if (targets == null) { + this.targets = new ArrayList<exprType>(); } + for(PythonTree t : this.targets) { + addChild(t); + } } public String toString() { Modified: branches/astwrite/src/org/python/antlr/ast/Dict.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-11-24 05:52:36 UTC (rev 5632) +++ branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-11-24 19:41:50 UTC (rev 5633) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import java.util.ArrayList; import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; @@ -9,28 +10,26 @@ import java.io.IOException; public class Dict extends exprType { - private ListWrapper<exprType> keys; - public ListWrapper<exprType> getInternalKeys() { + private java.util.List<exprType> keys; + public java.util.List<exprType> getInternalKeys() { return keys; } public Object getKeys() { - return keys; + return new ListWrapper(keys); } public void setKeys(Object keys) { - this.keys = new ListWrapper<exprType>( - (java.util.List<exprType>)keys); + this.keys = AstAdapter.to_exprList(keys); } - private ListWrapper<exprType> values; - public ListWrapper<exprType> getInternalValues() { + private java.util.List<exprType> values; + public java.util.List<exprType> getInternalValues() { return values; } public Object getValues() { - return values; + return new ListWrapper(values); } public void setValues(Object values) { - this.values = new ListWrapper<exprType>( - (java.util.List<exprType>)values); + this.values = AstAdapter.to_exprList(values); } @@ -46,52 +45,58 @@ public Dict(Token token, java.util.List<exprType> keys, java.util.List<exprType> values) { super(token); - this.keys = new ListWrapper<exprType>(keys); - if (keys != null) { - for(PythonTree t : keys) { - addChild(t); - } + this.keys = keys; + if (keys == null) { + this.keys = new ArrayList<exprType>(); } - this.values = new ListWrapper<exprType>(values); - if (values != null) { - for(PythonTree t : values) { - addChild(t); - } + for(PythonTree t : this.keys) { + addChild(t); } + this.values = values; + if (values == null) { + this.values = new ArrayList<exprType>(); + } + for(PythonTree t : this.values) { + addChild(t); + } } public Dict(Integer ttype, Token token, java.util.List<exprType> keys, java.util.List<exprType> values) { super(ttype, token); - this.keys = new ListWrapper<exprType>(keys); - if (keys != null) { - for(PythonTree t : keys) { - addChild(t); - } + this.keys = keys; + if (keys == null) { + this.keys = new ArrayList<exprType>(); } - this.values = new ListWrapper<exprType>(values); - if (values != null) { - for(PythonTree t : values) { - addChild(t); - } + for(PythonTree t : this.keys) { + addChild(t); } + this.values = values; + if (values == null) { + this.values = new ArrayList<exprType>(); + } + for(PythonTree t : this.values) { + addChild(t); + } } public Dict(PythonTree tree, java.util.List<exprType> keys, java.util.List<exprType> values) { super(tree); - this.keys = new ListWrapper<exprType>(keys); - if (keys != null) { - for(PythonTree t : keys) { - addChild(t); - } + this.keys = keys; + if (keys == null) { + this.keys = new ArrayList<exprType>(); } - this.values = new ListWrapper<exprType>(values); - if (values != null) { - for(PythonTree t : values) { - addChild(t); - } + for(PythonTree t : this.keys) { + addChild(t); } + this.values = values; + if (values == null) { + this.values = new ArrayList<exprType>(); + } + for(PythonTree t : this.values) { + addChild(t); + } } public String toString() { Modified: branches/astwrite/src/org/python/antlr/ast/Ellipsis.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Ellipsis.java 2008-11-24 05:52:36 UTC (rev 5632) +++ branches/astwrite/src/org/python/antlr/ast/Ellipsis.java 2008-11-24 19:41:50 UTC (rev 5633) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import java.util.ArrayList; import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; Modified: branches/astwrite/src/org/python/antlr/ast/Exec.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-11-24 05:52:36 UTC (rev 5632) +++ branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-11-24 19:41:50 UTC (rev 5633) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import java.util.ArrayList; import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; Modified: branches/astwrite/src/org/python/antlr/ast/Expr.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-11-24 05:52:36 UTC (rev 5632) +++ branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-11-24 19:41:50 UTC (rev 5633) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import java.util.ArrayList; import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; Modified: branches/astwrite/src/org/python/antlr/ast/Expression.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Expression.java 2008-11-24 05:52:36 UTC (rev 5632) +++ branches/astwrite/src/org/python/antlr/ast/Expression.java 2008-11-24 19:41:50 UTC (rev 5633) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import java.util.ArrayList; import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; Modified: branches/astwrite/src/org/python/antlr/ast/ExtSlice.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-11-24 05:52:36 UTC (rev 5632) +++ branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-11-24 19:41:50 UTC (rev 5633) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import java.util.ArrayList; import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; @@ -9,16 +10,15 @@ import java.io.IOException; public class ExtSlice extends sliceType { - private ListWrapper<sliceType> dims; - public ListWrapper<sliceType> getInternalDims() { + private java.util.List<sliceType> dims; + public java.util.List<sliceType> getInternalDims() { return dims; } public Object getDims() { - return dims; + return new ListWrapper(dims); } public void setDims(Object dims) { - this.dims = new ListWrapper<sliceType>( - (java.util.List<sliceType>)dims); + this.dims = AstAdapter.to_sliceList(dims); } @@ -32,33 +32,36 @@ public ExtSlice(Token token, java.util.List<sliceType> dims) { super(token); - this.dims = new ListWrapper<sliceType>(dims); - if (dims != null) { - for(PythonTree t : dims) { - addChild(t); - } + this.dims = dims; + if (dims == null) { + this.dims = new ArrayList<sliceType>(); } + for(PythonTree t : this.dims) { + addChild(t); + } } public ExtSlice(Integer ttype, Token token, java.util.List<sliceType> dims) { super(ttype, token); - this.dims = new ListWrapper<sliceType>(dims); - if (dims != null) { - for(PythonTree t : dims) { - addChild(t); - } + this.dims = dims; + if (dims == null) { + this.dims = new ArrayList<sliceType>(); } + for(PythonTree t : this.dims) { + addChild(t); + } } public ExtSlice(PythonTree tree, java.util.List<sliceType> dims) { super(tree); - this.dims = new ListWrapper<sliceType>(dims); - if (dims != null) { - for(PythonTree t : dims) { - addChild(t); - } + this.dims = dims; + if (dims == null) { + this.dims = new ArrayList<sliceType>(); } + for(PythonTree t : this.dims) { + addChild(t); + } } public String toString() { Modified: branches/astwrite/src/org/python/antlr/ast/For.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/For.java 2008-11-24 05:52:36 UTC (rev 5632) +++ branches/astwrite/src/org/python/antlr/ast/For.java 2008-11-24 19:41:50 UTC (rev 5633) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import java.util.ArrayList; import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; @@ -31,28 +32,26 @@ this.iter = AstAdapter.to_expr(iter); } - private ListWrapper<stmtType> body; - public ListWrapper<stmtType> getInternalBody() { + private java.util.List<stmtType> body; + public java.util.List<stmtType> getInternalBody() { return body; } public Object getBody() { - return body; + return new ListWrapper(body); } public void setBody(Object body) { - this.body = new ListWrapper<stmtType>( - (java.util.List<stmtType>)body); + this.body = AstAdapter.to_stmtList(body); } - private ListWrapper<stmtType> orelse; - public ListWrapper<stmtType> getInternalOrelse() { + private java.util.List<stmtType> orelse; + public java.util.List<stmtType> getInternalOrelse() { return orelse; } public Object getOrelse() { - return orelse; + return new ListWrapper(orelse); } public void setOrelse(Object orelse) { - this.orelse = new ListWrapper<stmtType>( - (java.util.List<stmtType>)orelse); + this.orelse = AstAdapter.to_stmtList(orelse); } @@ -75,18 +74,20 @@ addChild(target); this.iter = iter; addChild(iter); - this.body = new ListWrapper<stmtType>(body); - if (body != null) { - for(PythonTree t : body) { - addChild(t); - } + this.body = body; + if (body == null) { + this.body = new ArrayList<stmtType>(); } - this.orelse = new ListWrapper<stmtType>(orelse); - if (orelse != null) { - for(PythonTree t : orelse) { - addChild(t); - } + for(PythonTree t : this.body) { + addChild(t); } + this.orelse = orelse; + if (orelse == null) { + this.orelse = new ArrayList<stmtType>(); + } + for(PythonTree t : this.orelse) { + addChild(t); + } } public For(Integer ttype, Token token, exprType target, exprType iter, @@ -96,18 +97,20 @@ addChild(target); this.iter = iter; addChild(iter); - this.body = new ListWrapper<stmtType>(body); - if (body != null) { - for(PythonTree t : body) { - addChild(t); - } + this.body = body; + if (body == null) { + this.body = new ArrayList<stmtType>(); } - this.orelse = new ListWrapper<stmtType>(orelse); - if (orelse != null) { - for(PythonTree t : orelse) { - addChild(t); - } + for(PythonTree t : this.body) { + addChild(t); } + this.orelse = orelse; + if (orelse == null) { + this.orelse = new ArrayList<stmtType>(); + } + for(PythonTree t : this.orelse) { + addChild(t); + } } public For(PythonTree tree, exprType target, exprType iter, @@ -117,18 +120,20 @@ addChild(target); this.iter = iter; addChild(iter); - this.body = new ListWrapper<stmtType>(body); - if (body != null) { - for(PythonTree t : body) { - addChild(t); - } + this.body = body; + if (body == null) { + this.body = new ArrayList<stmtType>(); } - this.orelse = new ListWrapper<stmtType>(orelse); - if (orelse != null) { - for(PythonTree t : orelse) { - addChild(t); - } + for(PythonTree t : this.body) { + addChild(t); } + this.orelse = orelse; + if (orelse == null) { + this.orelse = new ArrayList<stmtType>(); + } + for(PythonTree t : this.orelse) { + addChild(t); + } } public String toString() { Modified: branches/astwrite/src/org/python/antlr/ast/FunctionDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-11-24 05:52:36 UTC (rev 5632) +++ branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-11-24 19:41:50 UTC (rev 5633) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import java.util.ArrayList; import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; @@ -31,28 +32,26 @@ this.args = AstAdapter.to_arguments(args); } - private ListWrapper<stmtType> body; - public ListWrapper<stmtType> getInternalBody() { + private java.util.List<stmtType> body; + public java.util.List<stmtType> getInternalBody() { return body; } public Object getBody() { - return body; + return new ListWrapper(body); } public void setBody(Object body) { - this.body = new ListWrapper<stmtType>( - (java.util.List<stmtType>)body); + this.body = AstAdapter.to_stmtList(body); } - private ListWrapper<exprType> decorators; - public ListWrapper<exprType> getInternalDecorators() { + private java.util.List<exprType> decorators; + public java.util.List<exprType> getInternalDecorators() { return decorators; } public Object getDecorators() { - return decorators; + return new ListWrapper(decorators); } public void setDecorators(Object decorators) { - this.decorators = new ListWrapper<exprType>( - (java.util.List<exprType>)decorators); + this.decorators = AstAdapter.to_exprList(decorators); } @@ -74,18 +73,20 @@ super(token); this.name = name; this.args = args; - this.body = new ListWrapper<stmtType>(body); - if (body != null) { - for(PythonTree t : body) { - addChild(t); - } + this.body = body; + if (body == null) { + this.body = new ArrayList<stmtType>(); } - this.decorators = new ListWrapper<exprType>(decorators); - if (decorators != null) { - for(PythonTree t : decorators) { - addChild(t); - } + for(PythonTree t : this.body) { + addChild(t); } + this.decorators = decorators; + if (decorators == null) { + this.decorators = new ArrayList<exprType>(); + } + for(PythonTree t : this.decorators) { + addChild(t); + } } public FunctionDef(Integer ttype, Token token, String name, argumentsType @@ -93,18 +94,20 @@ super(ttype, token); this.name = name; this.args = args; - this.body = new ListWrapper<stmtType>(body); - if (body != null) { - for(PythonTree t : body) { - addChild(t); - } + this.body = body; + if (body == null) { + this.body = new ArrayList<stmtType>(); } - this.decorators = new ListWrapper<exprType>(decorators); - if (decorators != null) { - for(PythonTree t : decorators) { - addChild(t); - } + for(PythonTree t : this.body) { + addChild(t); } + this.decorators = decorators; + if (decorators == null) { + this.decorators = new ArrayList<exprType>(); + } + for(PythonTree t : this.decorators) { + addChild(t); + } } public FunctionDef(PythonTree tree, String name, argumentsType args, @@ -112,18 +115,20 @@ super(tree); this.name = name; this.args = args; - this.body = new ListWrapper<stmtType>(body); - if (body != null) { - for(PythonTree t : body) { - addChild(t); - } + this.body = body; + if (body == null) { + this.body = new ArrayList<stmtType>(); } - this.decorators = new ListWrapper<exprType>(decorators); - if (decorators != null) { - for(PythonTree t : decorators) { - addChild(t); - } + for(PythonTree t : this.body) { + addChild(t); } + this.decorators = decorators; + if (decorators == null) { + this.decorators = new ArrayList<exprType>(); + } + for(PythonTree t : this.decorators) { + addChild(t); + } } public String toString() { Modified: branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-11-24 05:52:36 UTC (rev 5632) +++ branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-11-24 19:41:50 UTC (rev 5633) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import java.util.ArrayList; import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; @@ -20,16 +21,15 @@ this.elt = AstAdapter.to_expr(elt); } - private ListWrapper<comprehensionType> generators; - public ListWrapper<comprehensionType> getInternalGenerators() { + private java.util.List<comprehensionType> generators; + public java.util.List<comprehensionType> getInternalGenerators() { return generators; } public Object getGenerators() { - return generators; + return new ListWrapper(generators); } public void setGenerators(Object generators) { - this.generators = new ListWrapper<comprehensionType>( - (java.util.List<comprehensionType>)generators); + this.generators = AstAdapter.to_comprehensionList(generators); } @@ -47,12 +47,13 @@ super(token); this.elt = elt; addChild(elt); - this.generators = new ListWrapper<comprehensionType>(generators); - if (generators != null) { - for(PythonTree t : generators) { - addChild(t); - } + this.generators = generators; + if (generators == null) { + this.generators = new ArrayList<comprehensionType>(); } + for(PythonTree t : this.generators) { + addChild(t); + } } public GeneratorExp(Integer ttype, Token token, exprType elt, @@ -60,12 +61,13 @@ super(ttype, token); this.elt = elt; addChild(elt); - this.generators = new ListWrapper<comprehensionType>(generators); - if (generators != null) { - for(PythonTree t : generators) { - addChild(t); - } + this.generators = generators; + if (generators == null) { + this.generators = new ArrayList<comprehensionType>(); } + for(PythonTree t : this.generators) { + addChild(t); + } } public GeneratorExp(PythonTree tree, exprType elt, @@ -73,12 +75,13 @@ super(tree); this.elt = elt; addChild(elt); - this.generators = new ListWrapper<comprehensionType>(generators); - if (generators != null) { - for(PythonTree t : generators) { - addChild(t); - } + this.generators = generators; + if (generators == null) { + this.generators = new ArrayList<comprehensionType>(); } + for(PythonTree t : this.generators) { + addChild(t); + } } public String toString() { Modified: branches/astwrite/src/org/python/antlr/ast/Global.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Global.java 2008-11-24 05:52:36 UTC (rev 5632) +++ branches/astwrite/src/org/python/antlr/ast/Global.java 2008-11-24 19:41:50 UTC (rev 5633) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import java.util.ArrayList; import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; @@ -9,16 +10,15 @@ import java.io.IOException; public class Global extends stmtType { - private ListWrapper<String> names; - public ListWrapper<String> getInternalNames() { + private java.util.List<String> names; + public java.util.List<String> getInternalNames() { return names; } public Object getNames() { - return names; + return new ListWrapper(names); } public void setNames(Object names) { - this.names = new ListWrapper<String>( - (java.util.List<String>)names); + this.names = AstAdapter.to_identifierList(names); } @@ -32,17 +32,17 @@ public Global(Token token, java.util.List<String> names) { super(token); - this.names = new ListWrapper<String>(names); + this.names = names; } public Global(Integer ttype, Token token, java.util.List<String> names) { super(ttype, token); - this.names = new ListWrapper<String>(names); + this.names = names; } public Global(PythonTree tree, java.util.List<String> names) { super(tree); - this.names = new ListWrapper<String>(names); + this.names = names; } public String toString() { Modified: branches/astwrite/src/org/python/antlr/ast/If.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/If.java 2008-11-24 05:52:36 UTC (rev 5632) +++ branches/astwrite/src/org/python/antlr/ast/If.java 2008-11-24 19:41:50 UTC (rev 5633) @@ -1,5 +1,6 @@ // Autogenerated AST node package org.python.antlr.ast; +import java.util.ArrayList; import org.python.antlr.AstAdapter; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; @@ -20,28 +21,26 @@ this.test = AstAdapter.to_expr(test); } - private ListWrapper<stmtType> body; - public ListWrapper<stmtType> getInternalBody() { + private java.util.List<stmtType> body; + public java.util.List<stmtType> getInternalBody() { return body; } public Object getBody() { - return body; + return new ListWrapper(body); } public void setBo... [truncated message content] |
From: <fwi...@us...> - 2008-11-25 03:03:54
|
Revision: 5634 http://jython.svn.sourceforge.net/jython/?rev=5634&view=rev Author: fwierzbicki Date: 2008-11-25 03:03:43 +0000 (Tue, 25 Nov 2008) Log Message: ----------- Another small step towards writable AST. Starting on some Adapter classes. The names and design need to change, but this is a start. Modified Paths: -------------- branches/astwrite/ast/asdl_antlr.py branches/astwrite/src/org/python/antlr/ListWrapper.java branches/astwrite/src/org/python/antlr/ast/Assert.java branches/astwrite/src/org/python/antlr/ast/Assign.java branches/astwrite/src/org/python/antlr/ast/Attribute.java branches/astwrite/src/org/python/antlr/ast/AugAssign.java branches/astwrite/src/org/python/antlr/ast/BinOp.java branches/astwrite/src/org/python/antlr/ast/BoolOp.java branches/astwrite/src/org/python/antlr/ast/Break.java branches/astwrite/src/org/python/antlr/ast/Call.java branches/astwrite/src/org/python/antlr/ast/ClassDef.java branches/astwrite/src/org/python/antlr/ast/Compare.java branches/astwrite/src/org/python/antlr/ast/Continue.java branches/astwrite/src/org/python/antlr/ast/Delete.java branches/astwrite/src/org/python/antlr/ast/Dict.java branches/astwrite/src/org/python/antlr/ast/Ellipsis.java branches/astwrite/src/org/python/antlr/ast/Exec.java branches/astwrite/src/org/python/antlr/ast/Expr.java branches/astwrite/src/org/python/antlr/ast/Expression.java branches/astwrite/src/org/python/antlr/ast/ExtSlice.java branches/astwrite/src/org/python/antlr/ast/For.java branches/astwrite/src/org/python/antlr/ast/FunctionDef.java branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java branches/astwrite/src/org/python/antlr/ast/Global.java branches/astwrite/src/org/python/antlr/ast/If.java branches/astwrite/src/org/python/antlr/ast/IfExp.java branches/astwrite/src/org/python/antlr/ast/Import.java branches/astwrite/src/org/python/antlr/ast/ImportFrom.java branches/astwrite/src/org/python/antlr/ast/Index.java branches/astwrite/src/org/python/antlr/ast/Interactive.java branches/astwrite/src/org/python/antlr/ast/Lambda.java branches/astwrite/src/org/python/antlr/ast/List.java branches/astwrite/src/org/python/antlr/ast/ListComp.java branches/astwrite/src/org/python/antlr/ast/Module.java branches/astwrite/src/org/python/antlr/ast/Name.java branches/astwrite/src/org/python/antlr/ast/Num.java branches/astwrite/src/org/python/antlr/ast/Pass.java branches/astwrite/src/org/python/antlr/ast/Print.java branches/astwrite/src/org/python/antlr/ast/Raise.java branches/astwrite/src/org/python/antlr/ast/Repr.java branches/astwrite/src/org/python/antlr/ast/Return.java branches/astwrite/src/org/python/antlr/ast/Slice.java branches/astwrite/src/org/python/antlr/ast/Str.java branches/astwrite/src/org/python/antlr/ast/Subscript.java branches/astwrite/src/org/python/antlr/ast/Suite.java branches/astwrite/src/org/python/antlr/ast/TryExcept.java branches/astwrite/src/org/python/antlr/ast/TryFinally.java branches/astwrite/src/org/python/antlr/ast/Tuple.java branches/astwrite/src/org/python/antlr/ast/UnaryOp.java branches/astwrite/src/org/python/antlr/ast/VisitorBase.java branches/astwrite/src/org/python/antlr/ast/While.java branches/astwrite/src/org/python/antlr/ast/With.java branches/astwrite/src/org/python/antlr/ast/Yield.java branches/astwrite/src/org/python/antlr/ast/aliasType.java branches/astwrite/src/org/python/antlr/ast/argumentsType.java branches/astwrite/src/org/python/antlr/ast/comprehensionType.java branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java branches/astwrite/src/org/python/antlr/ast/exprType.java branches/astwrite/src/org/python/antlr/ast/keywordType.java branches/astwrite/src/org/python/antlr/ast/modType.java branches/astwrite/src/org/python/antlr/ast/sliceType.java branches/astwrite/src/org/python/antlr/ast/stmtType.java Added Paths: ----------- branches/astwrite/src/org/python/antlr/AstAdapters.java branches/astwrite/src/org/python/antlr/AstObjectAdapter.java branches/astwrite/src/org/python/antlr/StmtListAdapter.java Removed Paths: ------------- branches/astwrite/src/org/python/antlr/AstAdapter.java Modified: branches/astwrite/ast/asdl_antlr.py =================================================================== --- branches/astwrite/ast/asdl_antlr.py 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/ast/asdl_antlr.py 2008-11-25 03:03:43 UTC (rev 5634) @@ -57,7 +57,7 @@ print >> self.file, 'package org.python.antlr.ast;' if refersToPythonTree: print >> self.file, 'import java.util.ArrayList;' - print >> self.file, 'import org.python.antlr.AstAdapter;' + print >> self.file, 'import org.python.antlr.AstAdapters;' print >> self.file, 'import org.python.antlr.PythonTree;' print >> self.file, 'import org.python.antlr.ListWrapper;' print >> self.file, 'import org.antlr.runtime.CommonToken;' @@ -430,9 +430,9 @@ field.name), depth) if field.seq: #self.emit("this.%s = new %s(" % (field.name, self.javaType(field)), depth+1) - self.emit("this.%s = AstAdapter.to_%sList(%s);" % (field.name, str(field.type), field.name), depth+1) + self.emit("this.%s = AstAdapters.to_%sList(%s);" % (field.name, str(field.type), field.name), depth+1) else: - self.emit("this.%s = AstAdapter.to_%s(%s);" % (field.name, str(field.type), field.name), depth+1) + self.emit("this.%s = AstAdapters.to_%s(%s);" % (field.name, str(field.type), field.name), depth+1) self.emit("}", depth) self.emit("", 0) Deleted: branches/astwrite/src/org/python/antlr/AstAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/AstAdapter.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/AstAdapter.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,145 +0,0 @@ -package org.python.antlr; - -import org.python.antlr.ast.*; -import org.python.core.*; - -/** - * AstAdapter turns Python and Java objects into ast nodes. - */ -public class AstAdapter { - - public static java.util.List<aliasType> to_aliasList(Object o) { - return null; - } - - public static java.util.List<cmpopType> to_cmpopList(Object o) { - return null; - } - - public static java.util.List<comprehensionType> to_comprehensionList(Object o) { - return null; - } - - public static java.util.List<excepthandlerType> to_excepthandlerList(Object o) { - return null; - } - - public static java.util.List<exprType> to_exprList(Object o) { - return null; - } - - public static java.util.List<String> to_identifierList(Object o) { - return null; - } - - public static java.util.List<keywordType> to_keywordList(Object o) { - return null; - } - - public static java.util.List<sliceType> to_sliceList(Object o) { - return null; - } - - public static java.util.List<stmtType> to_stmtList(Object o) { - return null; - } - - public static exprType to_expr(Object o) { - if (o == null || o instanceof exprType) { - return (exprType)o; - } else if (o instanceof Integer) { - return new Num(new PyInteger((Integer)o)); - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to expr node"); - } - - public static int to_int(Object o) { - if (o == null || o instanceof Integer) { - return (Integer)o; - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to int node"); - } - - public static String to_identifier(Object o) { - if (o == null || o instanceof String) { - return (String)o; - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to identifier node"); - } - - public static expr_contextType to_expr_context(Object o) { - if (o == null || o instanceof expr_contextType) { - return (expr_contextType)o; - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to expr_context node"); - } - - public static sliceType to_slice(Object o) { - if (o == null || o instanceof sliceType) { - return (sliceType)o; - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to slice node"); - } - - public static String to_string(Object o) { - if (o == null || o instanceof String) { - return (String)o; - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to string node"); - } - - public static operatorType to_operator(Object o) { - if (o == null || o instanceof operatorType) { - return (operatorType)o; - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to operator node"); - } - - public static boolopType to_boolop(Object o) { - if (o == null || o instanceof boolopType) { - return (boolopType)o; - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to boolop node"); - } - - public static argumentsType to_arguments(Object o) { - if (o == null || o instanceof argumentsType) { - return (argumentsType)o; - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to arguments node"); - } - - public static Object to_object(Object o) { - if (o == null || o instanceof Object) { - return (Object)o; - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to object node"); - } - - public static Boolean to_bool(Object o) { - if (o == null || o instanceof Boolean) { - return (Boolean)o; - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to Boolean node"); - } - - public static unaryopType to_unaryop(Object o) { - if (o == null || o instanceof unaryopType) { - return (unaryopType)o; - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to unaryop node"); - } - -} Added: branches/astwrite/src/org/python/antlr/AstAdapters.java =================================================================== --- branches/astwrite/src/org/python/antlr/AstAdapters.java (rev 0) +++ branches/astwrite/src/org/python/antlr/AstAdapters.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -0,0 +1,156 @@ +package org.python.antlr; + +import org.python.antlr.ast.*; +import org.python.core.*; + +/** + * AstAdapter turns Python and Java objects into ast nodes. + */ +public class AstAdapters { + + public static java.util.List<aliasType> to_aliasList(Object o) { + return null; + } + + public static java.util.List<cmpopType> to_cmpopList(Object o) { + return null; + } + + public static java.util.List<comprehensionType> to_comprehensionList(Object o) { + return null; + } + + public static java.util.List<excepthandlerType> to_excepthandlerList(Object o) { + return null; + } + + public static java.util.List<exprType> to_exprList(Object o) { + return null; + } + + public static java.util.List<String> to_identifierList(Object o) { + return null; + } + + public static java.util.List<keywordType> to_keywordList(Object o) { + return null; + } + + public static java.util.List<sliceType> to_sliceList(Object o) { + return null; + } + + public static java.util.List<stmtType> to_stmtList(Object o) { + return null; + } + + public static exprType to_expr(Object o) { + if (o == null || o instanceof exprType) { + return (exprType)o; + } else if (o instanceof Integer) { + return new Num(new PyInteger((Integer)o)); + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to expr node"); + } + + public static int to_int(Object o) { + if (o == null || o instanceof Integer) { + return (Integer)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to int node"); + } + + public static String to_identifier(Object o) { + if (o == null || o instanceof String) { + return (String)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to identifier node"); + } + + public static expr_contextType to_expr_context(Object o) { + if (o == null || o instanceof expr_contextType) { + return (expr_contextType)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to expr_context node"); + } + + public static sliceType to_slice(Object o) { + if (o == null || o instanceof sliceType) { + return (sliceType)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to slice node"); + } + + public static stmtType to_stmt(Object o) { + if (o instanceof PyJavaInstance) { + o = ((PyJavaInstance)o).__tojava__(stmtType.class); + } + if (o == null || o instanceof stmtType) { + return (stmtType)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to stmt node"); + } + + public static String to_string(Object o) { + if (o == null || o instanceof String) { + return (String)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to string node"); + } + + public static operatorType to_operator(Object o) { + if (o == null || o instanceof operatorType) { + return (operatorType)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to operator node"); + } + + public static boolopType to_boolop(Object o) { + if (o == null || o instanceof boolopType) { + return (boolopType)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to boolop node"); + } + + public static argumentsType to_arguments(Object o) { + if (o == null || o instanceof argumentsType) { + return (argumentsType)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to arguments node"); + } + + public static Object to_object(Object o) { + if (o == null || o instanceof Object) { + return (Object)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to object node"); + } + + public static Boolean to_bool(Object o) { + if (o == null || o instanceof Boolean) { + return (Boolean)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to Boolean node"); + } + + public static unaryopType to_unaryop(Object o) { + if (o == null || o instanceof unaryopType) { + return (unaryopType)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to unaryop node"); + } + +} Added: branches/astwrite/src/org/python/antlr/AstObjectAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/AstObjectAdapter.java (rev 0) +++ branches/astwrite/src/org/python/antlr/AstObjectAdapter.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -0,0 +1,5 @@ +package org.python.antlr; + +public interface AstObjectAdapter { + public Object adapt(Object o); +} Modified: branches/astwrite/src/org/python/antlr/ListWrapper.java =================================================================== --- branches/astwrite/src/org/python/antlr/ListWrapper.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ListWrapper.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -7,14 +7,20 @@ import java.util.ListIterator; import org.python.core.PyObject; -public class ListWrapper<E> implements List<E> { +public class ListWrapper implements List { - private List<E> list; + private List list; + private AstObjectAdapter adapter; - public ListWrapper(List<E> list) { + public ListWrapper(List list) { this.list = list; } + public ListWrapper(List list, AstObjectAdapter adapter) { + this.adapter = adapter; + this.list = list; + } + public boolean containsAll(Collection c) { return containsAll(c); } @@ -27,11 +33,11 @@ return list.retainAll(c); } - public boolean add(E e) { + public boolean add(Object e) { return list.add(e); } - public void add(int index, E e) { + public void add(int index, Object e) { list.add(index, e); } @@ -51,7 +57,7 @@ return list.contains(elem); } - public E get(int index) { + public Object get(int index) { return list.get(index); } @@ -67,7 +73,7 @@ return list.lastIndexOf(elem); } - public E remove(int index) { + public Object remove(int index) { return list.remove(index); } @@ -75,7 +81,7 @@ return list.remove(o); } - public E set(int index, E element) { + public Object set(int index, Object element) { return list.set(index, element); } @@ -147,7 +153,7 @@ } public void append(PyObject o) { - throw new UnsupportedOperationException("Not supported yet."); + list.add(adapter.adapt(o)); } public int count(PyObject o) { Added: branches/astwrite/src/org/python/antlr/StmtListAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/StmtListAdapter.java (rev 0) +++ branches/astwrite/src/org/python/antlr/StmtListAdapter.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -0,0 +1,22 @@ +package org.python.antlr; + +import org.python.antlr.ast.stmtType; + +import java.util.ArrayList; +import java.util.List; + +public class StmtListAdapter implements AstObjectAdapter { + public Object adaptList(Object list) { + List<stmtType> s = new ArrayList<stmtType>(); + if (list instanceof List) { + for (Object o : (List)list) { + s.add(AstAdapters.to_stmt(o)); + } + } + return s; + } + + public Object adapt(Object o) { + return AstAdapters.to_stmt(o); + } +} Modified: branches/astwrite/src/org/python/antlr/ast/Assert.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return test; } public void setTest(Object test) { - this.test = AstAdapter.to_expr(test); + this.test = AstAdapters.to_expr(test); } private exprType msg; @@ -29,7 +29,7 @@ return msg; } public void setMsg(Object msg) { - this.msg = AstAdapter.to_expr(msg); + this.msg = AstAdapters.to_expr(msg); } Modified: branches/astwrite/src/org/python/antlr/ast/Assign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return new ListWrapper(targets); } public void setTargets(Object targets) { - this.targets = AstAdapter.to_exprList(targets); + this.targets = AstAdapters.to_exprList(targets); } private exprType value; @@ -29,7 +29,7 @@ return value; } public void setValue(Object value) { - this.value = AstAdapter.to_expr(value); + this.value = AstAdapters.to_expr(value); } Modified: branches/astwrite/src/org/python/antlr/ast/Attribute.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return value; } public void setValue(Object value) { - this.value = AstAdapter.to_expr(value); + this.value = AstAdapters.to_expr(value); } private String attr; @@ -29,7 +29,7 @@ return attr; } public void setAttr(Object attr) { - this.attr = AstAdapter.to_identifier(attr); + this.attr = AstAdapters.to_identifier(attr); } private expr_contextType ctx; @@ -40,7 +40,7 @@ return ctx; } public void setCtx(Object ctx) { - this.ctx = AstAdapter.to_expr_context(ctx); + this.ctx = AstAdapters.to_expr_context(ctx); } Modified: branches/astwrite/src/org/python/antlr/ast/AugAssign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return target; } public void setTarget(Object target) { - this.target = AstAdapter.to_expr(target); + this.target = AstAdapters.to_expr(target); } private operatorType op; @@ -29,7 +29,7 @@ return op; } public void setOp(Object op) { - this.op = AstAdapter.to_operator(op); + this.op = AstAdapters.to_operator(op); } private exprType value; @@ -40,7 +40,7 @@ return value; } public void setValue(Object value) { - this.value = AstAdapter.to_expr(value); + this.value = AstAdapters.to_expr(value); } Modified: branches/astwrite/src/org/python/antlr/ast/BinOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return left; } public void setLeft(Object left) { - this.left = AstAdapter.to_expr(left); + this.left = AstAdapters.to_expr(left); } private operatorType op; @@ -29,7 +29,7 @@ return op; } public void setOp(Object op) { - this.op = AstAdapter.to_operator(op); + this.op = AstAdapters.to_operator(op); } private exprType right; @@ -40,7 +40,7 @@ return right; } public void setRight(Object right) { - this.right = AstAdapter.to_expr(right); + this.right = AstAdapters.to_expr(right); } Modified: branches/astwrite/src/org/python/antlr/ast/BoolOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return op; } public void setOp(Object op) { - this.op = AstAdapter.to_boolop(op); + this.op = AstAdapters.to_boolop(op); } private java.util.List<exprType> values; @@ -29,7 +29,7 @@ return new ListWrapper(values); } public void setValues(Object values) { - this.values = AstAdapter.to_exprList(values); + this.values = AstAdapters.to_exprList(values); } Modified: branches/astwrite/src/org/python/antlr/ast/Break.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Break.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/Break.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; Modified: branches/astwrite/src/org/python/antlr/ast/Call.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Call.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/Call.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return func; } public void setFunc(Object func) { - this.func = AstAdapter.to_expr(func); + this.func = AstAdapters.to_expr(func); } private java.util.List<exprType> args; @@ -29,7 +29,7 @@ return new ListWrapper(args); } public void setArgs(Object args) { - this.args = AstAdapter.to_exprList(args); + this.args = AstAdapters.to_exprList(args); } private java.util.List<keywordType> keywords; @@ -40,7 +40,7 @@ return new ListWrapper(keywords); } public void setKeywords(Object keywords) { - this.keywords = AstAdapter.to_keywordList(keywords); + this.keywords = AstAdapters.to_keywordList(keywords); } private exprType starargs; @@ -51,7 +51,7 @@ return starargs; } public void setStarargs(Object starargs) { - this.starargs = AstAdapter.to_expr(starargs); + this.starargs = AstAdapters.to_expr(starargs); } private exprType kwargs; @@ -62,7 +62,7 @@ return kwargs; } public void setKwargs(Object kwargs) { - this.kwargs = AstAdapter.to_expr(kwargs); + this.kwargs = AstAdapters.to_expr(kwargs); } Modified: branches/astwrite/src/org/python/antlr/ast/ClassDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return name; } public void setName(Object name) { - this.name = AstAdapter.to_identifier(name); + this.name = AstAdapters.to_identifier(name); } private java.util.List<exprType> bases; @@ -29,7 +29,7 @@ return new ListWrapper(bases); } public void setBases(Object bases) { - this.bases = AstAdapter.to_exprList(bases); + this.bases = AstAdapters.to_exprList(bases); } private java.util.List<stmtType> body; @@ -40,7 +40,7 @@ return new ListWrapper(body); } public void setBody(Object body) { - this.body = AstAdapter.to_stmtList(body); + this.body = AstAdapters.to_stmtList(body); } private java.util.List<exprType> decorators; @@ -51,7 +51,7 @@ return new ListWrapper(decorators); } public void setDecorators(Object decorators) { - this.decorators = AstAdapter.to_exprList(decorators); + this.decorators = AstAdapters.to_exprList(decorators); } Modified: branches/astwrite/src/org/python/antlr/ast/Compare.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return left; } public void setLeft(Object left) { - this.left = AstAdapter.to_expr(left); + this.left = AstAdapters.to_expr(left); } private java.util.List<cmpopType> ops; @@ -29,7 +29,7 @@ return new ListWrapper(ops); } public void setOps(Object ops) { - this.ops = AstAdapter.to_cmpopList(ops); + this.ops = AstAdapters.to_cmpopList(ops); } private java.util.List<exprType> comparators; @@ -40,7 +40,7 @@ return new ListWrapper(comparators); } public void setComparators(Object comparators) { - this.comparators = AstAdapter.to_exprList(comparators); + this.comparators = AstAdapters.to_exprList(comparators); } Modified: branches/astwrite/src/org/python/antlr/ast/Continue.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Continue.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/Continue.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; Modified: branches/astwrite/src/org/python/antlr/ast/Delete.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return new ListWrapper(targets); } public void setTargets(Object targets) { - this.targets = AstAdapter.to_exprList(targets); + this.targets = AstAdapters.to_exprList(targets); } Modified: branches/astwrite/src/org/python/antlr/ast/Dict.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return new ListWrapper(keys); } public void setKeys(Object keys) { - this.keys = AstAdapter.to_exprList(keys); + this.keys = AstAdapters.to_exprList(keys); } private java.util.List<exprType> values; @@ -29,7 +29,7 @@ return new ListWrapper(values); } public void setValues(Object values) { - this.values = AstAdapter.to_exprList(values); + this.values = AstAdapters.to_exprList(values); } Modified: branches/astwrite/src/org/python/antlr/ast/Ellipsis.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Ellipsis.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/Ellipsis.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; Modified: branches/astwrite/src/org/python/antlr/ast/Exec.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return body; } public void setBody(Object body) { - this.body = AstAdapter.to_expr(body); + this.body = AstAdapters.to_expr(body); } private exprType globals; @@ -29,7 +29,7 @@ return globals; } public void setGlobals(Object globals) { - this.globals = AstAdapter.to_expr(globals); + this.globals = AstAdapters.to_expr(globals); } private exprType locals; @@ -40,7 +40,7 @@ return locals; } public void setLocals(Object locals) { - this.locals = AstAdapter.to_expr(locals); + this.locals = AstAdapters.to_expr(locals); } Modified: branches/astwrite/src/org/python/antlr/ast/Expr.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return value; } public void setValue(Object value) { - this.value = AstAdapter.to_expr(value); + this.value = AstAdapters.to_expr(value); } Modified: branches/astwrite/src/org/python/antlr/ast/Expression.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Expression.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/Expression.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return body; } public void setBody(Object body) { - this.body = AstAdapter.to_expr(body); + this.body = AstAdapters.to_expr(body); } Modified: branches/astwrite/src/org/python/antlr/ast/ExtSlice.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return new ListWrapper(dims); } public void setDims(Object dims) { - this.dims = AstAdapter.to_sliceList(dims); + this.dims = AstAdapters.to_sliceList(dims); } Modified: branches/astwrite/src/org/python/antlr/ast/For.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/For.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/For.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return target; } public void setTarget(Object target) { - this.target = AstAdapter.to_expr(target); + this.target = AstAdapters.to_expr(target); } private exprType iter; @@ -29,7 +29,7 @@ return iter; } public void setIter(Object iter) { - this.iter = AstAdapter.to_expr(iter); + this.iter = AstAdapters.to_expr(iter); } private java.util.List<stmtType> body; @@ -40,7 +40,7 @@ return new ListWrapper(body); } public void setBody(Object body) { - this.body = AstAdapter.to_stmtList(body); + this.body = AstAdapters.to_stmtList(body); } private java.util.List<stmtType> orelse; @@ -51,7 +51,7 @@ return new ListWrapper(orelse); } public void setOrelse(Object orelse) { - this.orelse = AstAdapter.to_stmtList(orelse); + this.orelse = AstAdapters.to_stmtList(orelse); } Modified: branches/astwrite/src/org/python/antlr/ast/FunctionDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return name; } public void setName(Object name) { - this.name = AstAdapter.to_identifier(name); + this.name = AstAdapters.to_identifier(name); } private argumentsType args; @@ -29,7 +29,7 @@ return args; } public void setArgs(Object args) { - this.args = AstAdapter.to_arguments(args); + this.args = AstAdapters.to_arguments(args); } private java.util.List<stmtType> body; @@ -40,7 +40,7 @@ return new ListWrapper(body); } public void setBody(Object body) { - this.body = AstAdapter.to_stmtList(body); + this.body = AstAdapters.to_stmtList(body); } private java.util.List<exprType> decorators; @@ -51,7 +51,7 @@ return new ListWrapper(decorators); } public void setDecorators(Object decorators) { - this.decorators = AstAdapter.to_exprList(decorators); + this.decorators = AstAdapters.to_exprList(decorators); } Modified: branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return elt; } public void setElt(Object elt) { - this.elt = AstAdapter.to_expr(elt); + this.elt = AstAdapters.to_expr(elt); } private java.util.List<comprehensionType> generators; @@ -29,7 +29,7 @@ return new ListWrapper(generators); } public void setGenerators(Object generators) { - this.generators = AstAdapter.to_comprehensionList(generators); + this.generators = AstAdapters.to_comprehensionList(generators); } Modified: branches/astwrite/src/org/python/antlr/ast/Global.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Global.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/Global.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return new ListWrapper(names); } public void setNames(Object names) { - this.names = AstAdapter.to_identifierList(names); + this.names = AstAdapters.to_identifierList(names); } Modified: branches/astwrite/src/org/python/antlr/ast/If.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/If.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/If.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return test; } public void setTest(Object test) { - this.test = AstAdapter.to_expr(test); + this.test = AstAdapters.to_expr(test); } private java.util.List<stmtType> body; @@ -29,7 +29,7 @@ return new ListWrapper(body); } public void setBody(Object body) { - this.body = AstAdapter.to_stmtList(body); + this.body = AstAdapters.to_stmtList(body); } private java.util.List<stmtType> orelse; @@ -40,7 +40,7 @@ return new ListWrapper(orelse); } public void setOrelse(Object orelse) { - this.orelse = AstAdapter.to_stmtList(orelse); + this.orelse = AstAdapters.to_stmtList(orelse); } Modified: branches/astwrite/src/org/python/antlr/ast/IfExp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/IfExp.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/IfExp.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return test; } public void setTest(Object test) { - this.test = AstAdapter.to_expr(test); + this.test = AstAdapters.to_expr(test); } private exprType body; @@ -29,7 +29,7 @@ return body; } public void setBody(Object body) { - this.body = AstAdapter.to_expr(body); + this.body = AstAdapters.to_expr(body); } private exprType orelse; @@ -40,7 +40,7 @@ return orelse; } public void setOrelse(Object orelse) { - this.orelse = AstAdapter.to_expr(orelse); + this.orelse = AstAdapters.to_expr(orelse); } Modified: branches/astwrite/src/org/python/antlr/ast/Import.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Import.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/Import.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return new ListWrapper(names); } public void setNames(Object names) { - this.names = AstAdapter.to_aliasList(names); + this.names = AstAdapters.to_aliasList(names); } Modified: branches/astwrite/src/org/python/antlr/ast/ImportFrom.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ImportFrom.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/ImportFrom.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return module; } public void setModule(Object module) { - this.module = AstAdapter.to_identifier(module); + this.module = AstAdapters.to_identifier(module); } private java.util.List<aliasType> names; @@ -29,7 +29,7 @@ return new ListWrapper(names); } public void setNames(Object names) { - this.names = AstAdapter.to_aliasList(names); + this.names = AstAdapters.to_aliasList(names); } private Integer level; @@ -40,7 +40,7 @@ return level; } public void setLevel(Object level) { - this.level = AstAdapter.to_int(level); + this.level = AstAdapters.to_int(level); } Modified: branches/astwrite/src/org/python/antlr/ast/Index.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Index.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/Index.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return value; } public void setValue(Object value) { - this.value = AstAdapter.to_expr(value); + this.value = AstAdapters.to_expr(value); } Modified: branches/astwrite/src/org/python/antlr/ast/Interactive.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Interactive.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/Interactive.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return new ListWrapper(body); } public void setBody(Object body) { - this.body = AstAdapter.to_stmtList(body); + this.body = AstAdapters.to_stmtList(body); } Modified: branches/astwrite/src/org/python/antlr/ast/Lambda.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Lambda.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/Lambda.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return args; } public void setArgs(Object args) { - this.args = AstAdapter.to_arguments(args); + this.args = AstAdapters.to_arguments(args); } private exprType body; @@ -29,7 +29,7 @@ return body; } public void setBody(Object body) { - this.body = AstAdapter.to_expr(body); + this.body = AstAdapters.to_expr(body); } Modified: branches/astwrite/src/org/python/antlr/ast/List.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/List.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/List.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return new ListWrapper(elts); } public void setElts(Object elts) { - this.elts = AstAdapter.to_exprList(elts); + this.elts = AstAdapters.to_exprList(elts); } private expr_contextType ctx; @@ -29,7 +29,7 @@ return ctx; } public void setCtx(Object ctx) { - this.ctx = AstAdapter.to_expr_context(ctx); + this.ctx = AstAdapters.to_expr_context(ctx); } Modified: branches/astwrite/src/org/python/antlr/ast/ListComp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ListComp.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/ListComp.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return elt; } public void setElt(Object elt) { - this.elt = AstAdapter.to_expr(elt); + this.elt = AstAdapters.to_expr(elt); } private java.util.List<comprehensionType> generators; @@ -29,7 +29,7 @@ return new ListWrapper(generators); } public void setGenerators(Object generators) { - this.generators = AstAdapter.to_comprehensionList(generators); + this.generators = AstAdapters.to_comprehensionList(generators); } Modified: branches/astwrite/src/org/python/antlr/ast/Module.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Module.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/Module.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return new ListWrapper(body); } public void setBody(Object body) { - this.body = AstAdapter.to_stmtList(body); + this.body = AstAdapters.to_stmtList(body); } Modified: branches/astwrite/src/org/python/antlr/ast/Name.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Name.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/Name.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return id; } public void setId(Object id) { - this.id = AstAdapter.to_identifier(id); + this.id = AstAdapters.to_identifier(id); } private expr_contextType ctx; @@ -29,7 +29,7 @@ return ctx; } public void setCtx(Object ctx) { - this.ctx = AstAdapter.to_expr_context(ctx); + this.ctx = AstAdapters.to_expr_context(ctx); } Modified: branches/astwrite/src/org/python/antlr/ast/Num.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Num.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/Num.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return n; } public void setN(Object n) { - this.n = AstAdapter.to_object(n); + this.n = AstAdapters.to_object(n); } Modified: branches/astwrite/src/org/python/antlr/ast/Pass.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Pass.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/Pass.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; Modified: branches/astwrite/src/org/python/antlr/ast/Print.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Print.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/Print.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return dest; } public void setDest(Object dest) { - this.dest = AstAdapter.to_expr(dest); + this.dest = AstAdapters.to_expr(dest); } private java.util.List<exprType> values; @@ -29,7 +29,7 @@ return new ListWrapper(values); } public void setValues(Object values) { - this.values = AstAdapter.to_exprList(values); + this.values = AstAdapters.to_exprList(values); } private Boolean nl; @@ -40,7 +40,7 @@ return nl; } public void setNl(Object nl) { - this.nl = AstAdapter.to_bool(nl); + this.nl = AstAdapters.to_bool(nl); } Modified: branches/astwrite/src/org/python/antlr/ast/Raise.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Raise.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/Raise.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonToken; @@ -18,7 +18,7 @@ return excepttype; } public void setExcepttype(Object excepttype) { - this.excepttype = AstAdapter.to_expr(excepttype); + this.excepttype = AstAdapters.to_expr(excepttype); } private exprType inst; @@ -29,7 +29,7 @@ return inst; } public void setInst(Object inst) { - this.inst = AstAdapter.to_expr(inst); + this.inst = AstAdapters.to_expr(inst); } private exprType tback; @@ -40,7 +40,7 @@ return tback; } public void setTback(Object tback) { - this.tback = AstAdapter.to_expr(tback); + this.tback = AstAdapters.to_expr(tback); } Modified: branches/astwrite/src/org/python/antlr/ast/Repr.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Repr.java 2008-11-24 19:41:50 UTC (rev 5633) +++ branches/astwrite/src/org/python/antlr/ast/Repr.java 2008-11-25 03:03:43 UTC (rev 5634) @@ -1,7 +1,7 @@ // Autogenerated AST node package org.python.antlr.ast; import java.util.ArrayList; -import org.python.antlr.AstAdapter; +import org.python.antlr.AstAdapters; import org.python.antlr.PythonTree; import org.python.antlr.ListWrapper; import org.antlr.runtime.CommonTok... [truncated message content] |
From: <fwi...@us...> - 2008-11-25 04:19:49
|
Revision: 5635 http://jython.svn.sourceforge.net/jython/?rev=5635&view=rev Author: fwierzbicki Date: 2008-11-25 04:19:42 +0000 (Tue, 25 Nov 2008) Log Message: ----------- Merged revisions 5616,5618-5621,5624,5626-5627,5629-5630 via svnmerge from https://jython.svn.sourceforge.net/svnroot/jython/trunk/jython Modified Paths: -------------- branches/astwrite/Lib/popen2.py branches/astwrite/Lib/test/test_bool.py branches/astwrite/Lib/test/test_descr.py branches/astwrite/build.xml branches/astwrite/src/org/python/core/Py.java branches/astwrite/src/org/python/core/PyBoolean.java branches/astwrite/src/org/python/core/PyBuiltinCallable.java branches/astwrite/src/org/python/core/PyCell.java branches/astwrite/src/org/python/core/PyClassMethodDescr.java branches/astwrite/src/org/python/core/PyDataDescr.java branches/astwrite/src/org/python/core/PyDictProxy.java branches/astwrite/src/org/python/core/PyEllipsis.java branches/astwrite/src/org/python/core/PyFunction.java branches/astwrite/src/org/python/core/PyGenerator.java branches/astwrite/src/org/python/core/PyMethod.java branches/astwrite/src/org/python/core/PyMethodDescr.java branches/astwrite/src/org/python/core/PyNone.java branches/astwrite/src/org/python/core/PyNotImplemented.java branches/astwrite/src/org/python/core/PySlice.java branches/astwrite/src/org/python/core/PySlot.java branches/astwrite/src/org/python/core/PySystemState.java branches/astwrite/src/org/python/core/PyTraceback.java branches/astwrite/src/org/python/core/PyType.java branches/astwrite/src/org/python/core/PyXRange.java branches/astwrite/src/org/python/expose/BaseTypeBuilder.java branches/astwrite/src/org/python/expose/ExposedType.java branches/astwrite/src/org/python/expose/TypeBuilder.java branches/astwrite/src/org/python/expose/generate/ExposedTypeProcessor.java branches/astwrite/src/org/python/expose/generate/ExposedTypeVisitor.java branches/astwrite/src/org/python/expose/generate/InstanceMethodExposer.java branches/astwrite/src/org/python/expose/generate/TypeExposer.java branches/astwrite/src/org/python/modules/PyTeeIterator.java branches/astwrite/src/org/python/modules/_codecs.java branches/astwrite/src/org/python/modules/_weakref/CallableProxyType.java branches/astwrite/src/org/python/modules/_weakref/ProxyType.java branches/astwrite/src/org/python/modules/operator.java branches/astwrite/src/org/python/modules/time/PyTimeTuple.java branches/astwrite/tests/java/org/python/expose/generate/DescriptorExposerTest.java branches/astwrite/tests/java/org/python/expose/generate/ExposedTypeProcessorTest.java branches/astwrite/tests/java/org/python/expose/generate/ExposedTypeVisitorTest.java branches/astwrite/tests/java/org/python/expose/generate/SimpleExposed.java branches/astwrite/tests/java/org/python/expose/generate/TypeExposerTest.java Added Paths: ----------- branches/astwrite/Lib/test/test_zipfile.py branches/astwrite/Lib/zipfile.py branches/astwrite/tests/java/org/python/util/ branches/astwrite/tests/java/org/python/util/InterpreterTest.java Removed Paths: ------------- branches/astwrite/tests/java/org/python/util/InterpreterTest.java Property Changed: ---------------- branches/astwrite/ Property changes on: branches/astwrite ___________________________________________________________________ Modified: svnmerge-integrated - /trunk/jython:1-5614 + /trunk/jython:1-5634 Modified: branches/astwrite/Lib/popen2.py =================================================================== --- branches/astwrite/Lib/popen2.py 2008-11-25 03:03:43 UTC (rev 5634) +++ branches/astwrite/Lib/popen2.py 2008-11-25 04:19:42 UTC (rev 5635) @@ -44,7 +44,7 @@ the close method. """ def __init__(self, stream, process, name): - self._file = FileUtil.wrap(stream) + self._file = FileUtil.wrap(stream, 0) self._process = process def __getattr__(self, name): @@ -93,10 +93,10 @@ bufsize ) - self.tochild = FileUtil.wrap(self._tochild) - self.fromchild = FileUtil.wrap(self._fromchild) + self.tochild = FileUtil.wrap(self._tochild, 0) + self.fromchild = FileUtil.wrap(self._fromchild, 0) if self._childerr: - self.childerr = FileUtil.wrap(self._childerr) + self.childerr = FileUtil.wrap(self._childerr, 0) def _startChildWaiter(self): """Start a subthread that waits for the child process to exit.""" @@ -198,7 +198,7 @@ "%s-stderr" % self.process, self._close ) - return FileUtil.wrap(joinedStream) + return FileUtil.wrap(joinedStream, 0) def _close( self ): """Must be closed twice (once for each of the two joined pipes)""" Modified: branches/astwrite/Lib/test/test_bool.py =================================================================== --- branches/astwrite/Lib/test/test_bool.py 2008-11-25 03:03:43 UTC (rev 5634) +++ branches/astwrite/Lib/test/test_bool.py 2008-11-25 04:19:42 UTC (rev 5635) @@ -343,9 +343,6 @@ # StackOverflow if __nonzero__ returns self # http://jython.org/bugs/1758318 del BoolTest.test_convert_to_bool -# bool should not be subclassable -# http://jython.org/bugs/1758319 -del BoolTest.test_subclass def test_main(): test_support.run_unittest(BoolTest) Modified: branches/astwrite/Lib/test/test_descr.py =================================================================== --- branches/astwrite/Lib/test/test_descr.py 2008-11-25 03:03:43 UTC (rev 5634) +++ branches/astwrite/Lib/test/test_descr.py 2008-11-25 04:19:42 UTC (rev 5635) @@ -4404,11 +4404,6 @@ classmethods_in_c, staticmethods_in_c, - # Jython allows subclassing of classes it shouldn't (like - # builtin_function_or_method): - # http://bugs.jython.org/issue1758319 - errors, - # CPython's unicode.__cmp__ is derived from type (and only # takes 1 arg) specials, Copied: branches/astwrite/Lib/test/test_zipfile.py (from rev 5630, trunk/jython/Lib/test/test_zipfile.py) =================================================================== --- branches/astwrite/Lib/test/test_zipfile.py (rev 0) +++ branches/astwrite/Lib/test/test_zipfile.py 2008-11-25 04:19:42 UTC (rev 5635) @@ -0,0 +1,375 @@ +# We can test part of the module without zlib. +try: + import zlib +except ImportError: + zlib = None + +import zipfile, os, unittest, sys, shutil + +from StringIO import StringIO +from tempfile import TemporaryFile + +from test.test_support import TESTFN, is_jython, run_unittest + +TESTFN2 = TESTFN + "2" + +class TestsWithSourceFile(unittest.TestCase): + def setUp(self): + line_gen = ("Test of zipfile line %d." % i for i in range(0, 1000)) + self.data = '\n'.join(line_gen) + + # Make a source file with some lines + fp = open(TESTFN, "wb") + fp.write(self.data) + fp.close() + + def zipTest(self, f, compression): + # Create the ZIP archive + zipfp = zipfile.ZipFile(f, "w", compression) + zipfp.write(TESTFN, "another"+os.extsep+"name") + zipfp.write(TESTFN, TESTFN) + zipfp.writestr("strfile", self.data) + zipfp.close() + + # Read the ZIP archive + zipfp = zipfile.ZipFile(f, "r", compression) + self.assertEqual(zipfp.read(TESTFN), self.data) + self.assertEqual(zipfp.read("another"+os.extsep+"name"), self.data) + self.assertEqual(zipfp.read("strfile"), self.data) + + # Print the ZIP directory + fp = StringIO() + stdout = sys.stdout + try: + sys.stdout = fp + + zipfp.printdir() + finally: + sys.stdout = stdout + + directory = fp.getvalue() + lines = directory.splitlines() + self.assertEquals(len(lines), 4) # Number of files + header + + self.assert_('File Name' in lines[0]) + self.assert_('Modified' in lines[0]) + self.assert_('Size' in lines[0]) + + fn, date, time, size = lines[1].split() + self.assertEquals(fn, 'another.name') + # XXX: timestamp is not tested + self.assertEquals(size, str(len(self.data))) + + # Check the namelist + names = zipfp.namelist() + self.assertEquals(len(names), 3) + self.assert_(TESTFN in names) + self.assert_("another"+os.extsep+"name" in names) + self.assert_("strfile" in names) + + # Check infolist + infos = zipfp.infolist() + names = [ i.filename for i in infos ] + self.assertEquals(len(names), 3) + self.assert_(TESTFN in names) + self.assert_("another"+os.extsep+"name" in names) + self.assert_("strfile" in names) + for i in infos: + self.assertEquals(i.file_size, len(self.data)) + + # check getinfo + for nm in (TESTFN, "another"+os.extsep+"name", "strfile"): + info = zipfp.getinfo(nm) + self.assertEquals(info.filename, nm) + self.assertEquals(info.file_size, len(self.data)) + + # Check that testzip doesn't raise an exception + zipfp.testzip() + + + zipfp.close() + + + + + def testStored(self): + for f in (TESTFN2, TemporaryFile(), StringIO()): + self.zipTest(f, zipfile.ZIP_STORED) + + if zlib: + def testDeflated(self): + for f in (TESTFN2, TemporaryFile(), StringIO()): + self.zipTest(f, zipfile.ZIP_DEFLATED) + + def testAbsoluteArcnames(self): + zipfp = zipfile.ZipFile(TESTFN2, "w", zipfile.ZIP_STORED) + zipfp.write(TESTFN, "/absolute") + zipfp.close() + + zipfp = zipfile.ZipFile(TESTFN2, "r", zipfile.ZIP_STORED) + self.assertEqual(zipfp.namelist(), ["absolute"]) + zipfp.close() + + + def tearDown(self): + os.remove(TESTFN) + os.remove(TESTFN2) + +class TestZip64InSmallFiles(unittest.TestCase): + # These tests test the ZIP64 functionality without using large files, + # see test_zipfile64 for proper tests. + + def setUp(self): + self._limit = zipfile.ZIP64_LIMIT + zipfile.ZIP64_LIMIT = 5 + + line_gen = ("Test of zipfile line %d." % i for i in range(0, 1000)) + self.data = '\n'.join(line_gen) + + # Make a source file with some lines + fp = open(TESTFN, "wb") + fp.write(self.data) + fp.close() + + def largeFileExceptionTest(self, f, compression): + zipfp = zipfile.ZipFile(f, "w", compression) + self.assertRaises(zipfile.LargeZipFile, + zipfp.write, TESTFN, "another"+os.extsep+"name") + zipfp.close() + + def largeFileExceptionTest2(self, f, compression): + zipfp = zipfile.ZipFile(f, "w", compression) + self.assertRaises(zipfile.LargeZipFile, + zipfp.writestr, "another"+os.extsep+"name", self.data) + zipfp.close() + + def testLargeFileException(self): + for f in (TESTFN2, TemporaryFile(), StringIO()): + self.largeFileExceptionTest(f, zipfile.ZIP_STORED) + self.largeFileExceptionTest2(f, zipfile.ZIP_STORED) + + def zipTest(self, f, compression): + # Create the ZIP archive + zipfp = zipfile.ZipFile(f, "w", compression, allowZip64=True) + zipfp.write(TESTFN, "another"+os.extsep+"name") + zipfp.write(TESTFN, TESTFN) + zipfp.writestr("strfile", self.data) + zipfp.close() + + # Read the ZIP archive + zipfp = zipfile.ZipFile(f, "r", compression) + self.assertEqual(zipfp.read(TESTFN), self.data) + self.assertEqual(zipfp.read("another"+os.extsep+"name"), self.data) + self.assertEqual(zipfp.read("strfile"), self.data) + + # Print the ZIP directory + fp = StringIO() + stdout = sys.stdout + try: + sys.stdout = fp + + zipfp.printdir() + finally: + sys.stdout = stdout + + directory = fp.getvalue() + lines = directory.splitlines() + self.assertEquals(len(lines), 4) # Number of files + header + + self.assert_('File Name' in lines[0]) + self.assert_('Modified' in lines[0]) + self.assert_('Size' in lines[0]) + + fn, date, time, size = lines[1].split() + self.assertEquals(fn, 'another.name') + # XXX: timestamp is not tested + self.assertEquals(size, str(len(self.data))) + + # Check the namelist + names = zipfp.namelist() + self.assertEquals(len(names), 3) + self.assert_(TESTFN in names) + self.assert_("another"+os.extsep+"name" in names) + self.assert_("strfile" in names) + + # Check infolist + infos = zipfp.infolist() + names = [ i.filename for i in infos ] + self.assertEquals(len(names), 3) + self.assert_(TESTFN in names) + self.assert_("another"+os.extsep+"name" in names) + self.assert_("strfile" in names) + for i in infos: + self.assertEquals(i.file_size, len(self.data)) + + # check getinfo + for nm in (TESTFN, "another"+os.extsep+"name", "strfile"): + info = zipfp.getinfo(nm) + self.assertEquals(info.filename, nm) + self.assertEquals(info.file_size, len(self.data)) + + # Check that testzip doesn't raise an exception + zipfp.testzip() + + + zipfp.close() + + def testStored(self): + for f in (TESTFN2, TemporaryFile(), StringIO()): + self.zipTest(f, zipfile.ZIP_STORED) + + + if zlib: + def testDeflated(self): + for f in (TESTFN2, TemporaryFile(), StringIO()): + self.zipTest(f, zipfile.ZIP_DEFLATED) + + def testAbsoluteArcnames(self): + zipfp = zipfile.ZipFile(TESTFN2, "w", zipfile.ZIP_STORED, allowZip64=True) + zipfp.write(TESTFN, "/absolute") + zipfp.close() + + zipfp = zipfile.ZipFile(TESTFN2, "r", zipfile.ZIP_STORED) + self.assertEqual(zipfp.namelist(), ["absolute"]) + zipfp.close() + + + def tearDown(self): + zipfile.ZIP64_LIMIT = self._limit + os.remove(TESTFN) + os.remove(TESTFN2) + +class PyZipFileTests(unittest.TestCase): + def testWritePyfile(self): + zipfp = zipfile.PyZipFile(TemporaryFile(), "w") + fn = __file__ + if fn.endswith('.pyc') or fn.endswith('.pyo'): + fn = fn[:-1] + elif fn.endswith('$py.class'): + fn = fn[:-9] + '.py' + + zipfp.writepy(fn) + + bn = os.path.basename(fn) + self.assert_(bn not in zipfp.namelist()) + if not is_jython: + self.assert_(bn + 'o' in zipfp.namelist() or bn + 'c' in zipfp.namelist()) + else: + self.assert_(bn[:-3] + '$py.class' in zipfp.namelist()) + zipfp.close() + + + zipfp = zipfile.PyZipFile(TemporaryFile(), "w") + fn = __file__ + if fn.endswith('.pyc') or fn.endswith('.pyo'): + fn = fn[:-1] + elif fn.endswith('$py.class'): + fn = fn[:-9] + '.py' + + zipfp.writepy(fn, "testpackage") + + bn = "%s/%s"%("testpackage", os.path.basename(fn)) + self.assert_(bn not in zipfp.namelist()) + if not is_jython: + self.assert_(bn + 'o' in zipfp.namelist() or bn + 'c' in zipfp.namelist()) + else: + self.assert_(bn[:-3] + '$py.class' in zipfp.namelist()) + zipfp.close() + + def testWritePythonPackage(self): + import email + packagedir = os.path.dirname(email.__file__) + + zipfp = zipfile.PyZipFile(TemporaryFile(), "w") + zipfp.writepy(packagedir) + + # Check for a couple of modules at different levels of the hieararchy + names = zipfp.namelist() + if not is_jython: + self.assert_('email/__init__.pyo' in names or 'email/__init__.pyc' in names) + self.assert_('email/mime/text.pyo' in names or 'email/mime/text.pyc' in names) + else: + self.assert_('email/__init__$py.class' in names) + self.assert_('email/mime/text$py.class' in names) + + def testWritePythonDirectory(self): + os.mkdir(TESTFN2) + try: + fp = open(os.path.join(TESTFN2, "mod1.py"), "w") + fp.write("print 42\n") + fp.close() + + fp = open(os.path.join(TESTFN2, "mod2.py"), "w") + fp.write("print 42 * 42\n") + fp.close() + + fp = open(os.path.join(TESTFN2, "mod2.txt"), "w") + fp.write("bla bla bla\n") + fp.close() + + zipfp = zipfile.PyZipFile(TemporaryFile(), "w") + zipfp.writepy(TESTFN2) + + names = zipfp.namelist() + if not is_jython: + self.assert_('mod1.pyc' in names or 'mod1.pyo' in names) + self.assert_('mod2.pyc' in names or 'mod2.pyo' in names) + else: + self.assert_('mod1$py.class' in names) + self.assert_('mod2$py.class' in names) + self.assert_('mod2.txt' not in names) + + finally: + shutil.rmtree(TESTFN2) + + + +class OtherTests(unittest.TestCase): + def testCloseErroneousFile(self): + # This test checks that the ZipFile constructor closes the file object + # it opens if there's an error in the file. If it doesn't, the traceback + # holds a reference to the ZipFile object and, indirectly, the file object. + # On Windows, this causes the os.unlink() call to fail because the + # underlying file is still open. This is SF bug #412214. + # + fp = open(TESTFN, "w") + fp.write("this is not a legal zip file\n") + fp.close() + try: + zf = zipfile.ZipFile(TESTFN) + except zipfile.BadZipfile: + os.unlink(TESTFN) + + def testNonExistentFileRaisesIOError(self): + # make sure we don't raise an AttributeError when a partially-constructed + # ZipFile instance is finalized; this tests for regression on SF tracker + # bug #403871. + + # The bug we're testing for caused an AttributeError to be raised + # when a ZipFile instance was created for a file that did not + # exist; the .fp member was not initialized but was needed by the + # __del__() method. Since the AttributeError is in the __del__(), + # it is ignored, but the user should be sufficiently annoyed by + # the message on the output that regression will be noticed + # quickly. + self.assertRaises(IOError, zipfile.ZipFile, TESTFN) + + def testClosedZipRaisesRuntimeError(self): + # Verify that testzip() doesn't swallow inappropriate exceptions. + data = StringIO() + zipf = zipfile.ZipFile(data, mode="w") + zipf.writestr("foo.txt", "O, for a Muse of Fire!") + zipf.close() + + # This is correct; calling .read on a closed ZipFile should throw + # a RuntimeError, and so should calling .testzip. An earlier + # version of .testzip would swallow this exception (and any other) + # and report that the first file in the archive was corrupt. + self.assertRaises(RuntimeError, zipf.testzip) + +def test_main(): + run_unittest(TestsWithSourceFile, TestZip64InSmallFiles, OtherTests, PyZipFileTests) + #run_unittest(TestZip64InSmallFiles) + +if __name__ == "__main__": + test_main() Copied: branches/astwrite/Lib/zipfile.py (from rev 5630, trunk/jython/Lib/zipfile.py) =================================================================== --- branches/astwrite/Lib/zipfile.py (rev 0) +++ branches/astwrite/Lib/zipfile.py 2008-11-25 04:19:42 UTC (rev 5635) @@ -0,0 +1,902 @@ +""" +Read and write ZIP files. +""" +import struct, os, time, sys +import binascii, cStringIO + +try: + import zlib # We may need its compression method +except ImportError: + zlib = None + +__all__ = ["BadZipfile", "error", "ZIP_STORED", "ZIP_DEFLATED", "is_zipfile", + "ZipInfo", "ZipFile", "PyZipFile", "LargeZipFile" ] + +is_jython = sys.platform.startswith('java') + +class BadZipfile(Exception): + pass + + +class LargeZipFile(Exception): + """ + Raised when writing a zipfile, the zipfile requires ZIP64 extensions + and those extensions are disabled. + """ + +error = BadZipfile # The exception raised by this module + +ZIP64_LIMIT= (1 << 31) - 1 + +# constants for Zip file compression methods +ZIP_STORED = 0 +ZIP_DEFLATED = 8 +# Other ZIP compression methods not supported + +# Here are some struct module formats for reading headers +structEndArchive = "<4s4H2LH" # 9 items, end of archive, 22 bytes +stringEndArchive = "PK\005\006" # magic number for end of archive record +structCentralDir = "<4s4B4HlLL5HLL"# 19 items, central directory, 46 bytes +stringCentralDir = "PK\001\002" # magic number for central directory +structFileHeader = "<4s2B4HlLL2H" # 12 items, file header record, 30 bytes +stringFileHeader = "PK\003\004" # magic number for file header +structEndArchive64Locator = "<4slql" # 4 items, locate Zip64 header, 20 bytes +stringEndArchive64Locator = "PK\x06\x07" # magic token for locator header +structEndArchive64 = "<4sqhhllqqqq" # 10 items, end of archive (Zip64), 56 bytes +stringEndArchive64 = "PK\x06\x06" # magic token for Zip64 header + + +# indexes of entries in the central directory structure +_CD_SIGNATURE = 0 +_CD_CREATE_VERSION = 1 +_CD_CREATE_SYSTEM = 2 +_CD_EXTRACT_VERSION = 3 +_CD_EXTRACT_SYSTEM = 4 # is this meaningful? +_CD_FLAG_BITS = 5 +_CD_COMPRESS_TYPE = 6 +_CD_TIME = 7 +_CD_DATE = 8 +_CD_CRC = 9 +_CD_COMPRESSED_SIZE = 10 +_CD_UNCOMPRESSED_SIZE = 11 +_CD_FILENAME_LENGTH = 12 +_CD_EXTRA_FIELD_LENGTH = 13 +_CD_COMMENT_LENGTH = 14 +_CD_DISK_NUMBER_START = 15 +_CD_INTERNAL_FILE_ATTRIBUTES = 16 +_CD_EXTERNAL_FILE_ATTRIBUTES = 17 +_CD_LOCAL_HEADER_OFFSET = 18 + +# indexes of entries in the local file header structure +_FH_SIGNATURE = 0 +_FH_EXTRACT_VERSION = 1 +_FH_EXTRACT_SYSTEM = 2 # is this meaningful? +_FH_GENERAL_PURPOSE_FLAG_BITS = 3 +_FH_COMPRESSION_METHOD = 4 +_FH_LAST_MOD_TIME = 5 +_FH_LAST_MOD_DATE = 6 +_FH_CRC = 7 +_FH_COMPRESSED_SIZE = 8 +_FH_UNCOMPRESSED_SIZE = 9 +_FH_FILENAME_LENGTH = 10 +_FH_EXTRA_FIELD_LENGTH = 11 + +def is_zipfile(filename): + """Quickly see if file is a ZIP file by checking the magic number.""" + try: + fpin = open(filename, "rb") + endrec = _EndRecData(fpin) + fpin.close() + if endrec: + return True # file has correct magic number + except IOError: + pass + return False + +def _EndRecData64(fpin, offset, endrec): + """ + Read the ZIP64 end-of-archive records and use that to update endrec + """ + locatorSize = struct.calcsize(structEndArchive64Locator) + fpin.seek(offset - locatorSize, 2) + data = fpin.read(locatorSize) + sig, diskno, reloff, disks = struct.unpack(structEndArchive64Locator, data) + if sig != stringEndArchive64Locator: + return endrec + + if diskno != 0 or disks != 1: + raise BadZipfile("zipfiles that span multiple disks are not supported") + + # Assume no 'zip64 extensible data' + endArchiveSize = struct.calcsize(structEndArchive64) + fpin.seek(offset - locatorSize - endArchiveSize, 2) + data = fpin.read(endArchiveSize) + sig, sz, create_version, read_version, disk_num, disk_dir, \ + dircount, dircount2, dirsize, diroffset = \ + struct.unpack(structEndArchive64, data) + if sig != stringEndArchive64: + return endrec + + # Update the original endrec using data from the ZIP64 record + endrec[1] = disk_num + endrec[2] = disk_dir + endrec[3] = dircount + endrec[4] = dircount2 + endrec[5] = dirsize + endrec[6] = diroffset + return endrec + + +def _EndRecData(fpin): + """Return data from the "End of Central Directory" record, or None. + + The data is a list of the nine items in the ZIP "End of central dir" + record followed by a tenth item, the file seek offset of this record.""" + fpin.seek(-22, 2) # Assume no archive comment. + filesize = fpin.tell() + 22 # Get file size + data = fpin.read() + if data[0:4] == stringEndArchive and data[-2:] == "\000\000": + endrec = struct.unpack(structEndArchive, data) + endrec = list(endrec) + endrec.append("") # Append the archive comment + endrec.append(filesize - 22) # Append the record start offset + if endrec[-4] == -1 or endrec[-4] == 0xffffffff: + return _EndRecData64(fpin, -22, endrec) + return endrec + # Search the last END_BLOCK bytes of the file for the record signature. + # The comment is appended to the ZIP file and has a 16 bit length. + # So the comment may be up to 64K long. We limit the search for the + # signature to a few Kbytes at the end of the file for efficiency. + # also, the signature must not appear in the comment. + END_BLOCK = min(filesize, 1024 * 4) + fpin.seek(filesize - END_BLOCK, 0) + data = fpin.read() + start = data.rfind(stringEndArchive) + if start >= 0: # Correct signature string was found + endrec = struct.unpack(structEndArchive, data[start:start+22]) + endrec = list(endrec) + comment = data[start+22:] + if endrec[7] == len(comment): # Comment length checks out + # Append the archive comment and start offset + endrec.append(comment) + endrec.append(filesize - END_BLOCK + start) + if endrec[-4] == -1 or endrec[-4] == 0xffffffff: + return _EndRecData64(fpin, - END_BLOCK + start, endrec) + return endrec + return # Error, return None + + +class ZipInfo (object): + """Class with attributes describing each file in the ZIP archive.""" + + __slots__ = ( + 'orig_filename', + 'filename', + 'date_time', + 'compress_type', + 'comment', + 'extra', + 'create_system', + 'create_version', + 'extract_version', + 'reserved', + 'flag_bits', + 'volume', + 'internal_attr', + 'external_attr', + 'header_offset', + 'CRC', + 'compress_size', + 'file_size', + ) + + def __init__(self, filename="NoName", date_time=(1980,1,1,0,0,0)): + self.orig_filename = filename # Original file name in archive + + # Terminate the file name at the first null byte. Null bytes in file + # names are used as tricks by viruses in archives. + null_byte = filename.find(chr(0)) + if null_byte >= 0: + filename = filename[0:null_byte] + # This is used to ensure paths in generated ZIP files always use + # forward slashes as the directory separator, as required by the + # ZIP format specification. + if os.sep != "/" and os.sep in filename: + filename = filename.replace(os.sep, "/") + + self.filename = filename # Normalized file name + self.date_time = date_time # year, month, day, hour, min, sec + # Standard values: + self.compress_type = ZIP_STORED # Type of compression for the file + self.comment = "" # Comment for each file + self.extra = "" # ZIP extra data + if sys.platform == 'win32': + self.create_system = 0 # System which created ZIP archive + else: + # Assume everything else is unix-y + self.create_system = 3 # System which created ZIP archive + self.create_version = 20 # Version which created ZIP archive + self.extract_version = 20 # Version needed to extract archive + self.reserved = 0 # Must be zero + self.flag_bits = 0 # ZIP flag bits + self.volume = 0 # Volume number of file header + self.internal_attr = 0 # Internal attributes + self.external_attr = 0 # External file attributes + # Other attributes are set by class ZipFile: + # header_offset Byte offset to the file header + # CRC CRC-32 of the uncompressed file + # compress_size Size of the compressed file + # file_size Size of the uncompressed file + + def FileHeader(self): + """Return the per-file header as a string.""" + dt = self.date_time + dosdate = (dt[0] - 1980) << 9 | dt[1] << 5 | dt[2] + dostime = dt[3] << 11 | dt[4] << 5 | (dt[5] // 2) + if self.flag_bits & 0x08: + # Set these to zero because we write them after the file data + CRC = compress_size = file_size = 0 + else: + CRC = self.CRC + compress_size = self.compress_size + file_size = self.file_size + + extra = self.extra + + if file_size > ZIP64_LIMIT or compress_size > ZIP64_LIMIT: + # File is larger than what fits into a 4 byte integer, + # fall back to the ZIP64 extension + fmt = '<hhqq' + extra = extra + struct.pack(fmt, + 1, struct.calcsize(fmt)-4, file_size, compress_size) + file_size = 0xffffffff # -1 + compress_size = 0xffffffff # -1 + self.extract_version = max(45, self.extract_version) + self.create_version = max(45, self.extract_version) + + header = struct.pack(structFileHeader, stringFileHeader, + self.extract_version, self.reserved, self.flag_bits, + self.compress_type, dostime, dosdate, CRC, + compress_size, file_size, + len(self.filename), len(extra)) + return header + self.filename + extra + + def _decodeExtra(self): + # Try to decode the extra field. + extra = self.extra + unpack = struct.unpack + while extra: + tp, ln = unpack('<hh', extra[:4]) + if tp == 1: + if ln >= 24: + counts = unpack('<qqq', extra[4:28]) + elif ln == 16: + counts = unpack('<qq', extra[4:20]) + elif ln == 8: + counts = unpack('<q', extra[4:12]) + elif ln == 0: + counts = () + else: + raise RuntimeError, "Corrupt extra field %s"%(ln,) + + idx = 0 + + # ZIP64 extension (large files and/or large archives) + if self.file_size == -1 or self.file_size == 0xFFFFFFFFL: + self.file_size = counts[idx] + idx += 1 + + if self.compress_size == -1 or self.compress_size == 0xFFFFFFFFL: + self.compress_size = counts[idx] + idx += 1 + + if self.header_offset == -1 or self.header_offset == 0xffffffffL: + old = self.header_offset + self.header_offset = counts[idx] + idx+=1 + + extra = extra[ln+4:] + + +class ZipFile: + """ Class with methods to open, read, write, close, list zip files. + + z = ZipFile(file, mode="r", compression=ZIP_STORED, allowZip64=True) + + file: Either the path to the file, or a file-like object. + If it is a path, the file will be opened and closed by ZipFile. + mode: The mode can be either read "r", write "w" or append "a". + compression: ZIP_STORED (no compression) or ZIP_DEFLATED (requires zlib). + allowZip64: if True ZipFile will create files with ZIP64 extensions when + needed, otherwise it will raise an exception when this would + be necessary. + + """ + + fp = None # Set here since __del__ checks it + + def __init__(self, file, mode="r", compression=ZIP_STORED, allowZip64=False): + """Open the ZIP file with mode read "r", write "w" or append "a".""" + self._allowZip64 = allowZip64 + self._didModify = False + if compression == ZIP_STORED: + pass + elif compression == ZIP_DEFLATED: + if not zlib: + raise RuntimeError,\ + "Compression requires the (missing) zlib module" + else: + raise RuntimeError, "That compression method is not supported" + self.debug = 0 # Level of printing: 0 through 3 + self.NameToInfo = {} # Find file info given name + self.filelist = [] # List of ZipInfo instances for archive + self.compression = compression # Method of compression + self.mode = key = mode.replace('b', '')[0] + + # Check if we were passed a file-like object + if isinstance(file, basestring): + self._filePassed = 0 + self.filename = file + modeDict = {'r' : 'rb', 'w': 'wb', 'a' : 'r+b'} + self.fp = open(file, modeDict[mode]) + else: + self._filePassed = 1 + self.fp = file + self.filename = getattr(file, 'name', None) + + if key == 'r': + self._GetContents() + elif key == 'w': + pass + elif key == 'a': + try: # See if file is a zip file + self._RealGetContents() + # seek to start of directory and overwrite + self.fp.seek(self.start_dir, 0) + except BadZipfile: # file is not a zip file, just append + self.fp.seek(0, 2) + else: + if not self._filePassed: + self.fp.close() + self.fp = None + raise RuntimeError, 'Mode must be "r", "w" or "a"' + + def _GetContents(self): + """Read the directory, making sure we close the file if the format + is bad.""" + try: + self._RealGetContents() + except BadZipfile: + if not self._filePassed: + self.fp.close() + self.fp = None + raise + + def _RealGetContents(self): + """Read in the table of contents for the ZIP file.""" + fp = self.fp + endrec = _EndRecData(fp) + if not endrec: + raise BadZipfile, "File is not a zip file" + if self.debug > 1: + print endrec + size_cd = endrec[5] # bytes in central directory + offset_cd = endrec[6] # offset of central directory + self.comment = endrec[8] # archive comment + # endrec[9] is the offset of the "End of Central Dir" record + if endrec[9] > ZIP64_LIMIT: + x = endrec[9] - size_cd - 56 - 20 + else: + x = endrec[9] - size_cd + # "concat" is zero, unless zip was concatenated to another file + concat = x - offset_cd + if self.debug > 2: + print "given, inferred, offset", offset_cd, x, concat + # self.start_dir: Position of start of central directory + self.start_dir = offset_cd + concat + fp.seek(self.start_dir, 0) + data = fp.read(size_cd) + fp = cStringIO.StringIO(data) + total = 0 + while total < size_cd: + centdir = fp.read(46) + total = total + 46 + if centdir[0:4] != stringCentralDir: + raise BadZipfile, "Bad magic number for central directory" + centdir = struct.unpack(structCentralDir, centdir) + if self.debug > 2: + print centdir + filename = fp.read(centdir[_CD_FILENAME_LENGTH]) + # Create ZipInfo instance to store file information + x = ZipInfo(filename) + x.extra = fp.read(centdir[_CD_EXTRA_FIELD_LENGTH]) + x.comment = fp.read(centdir[_CD_COMMENT_LENGTH]) + total = (total + centdir[_CD_FILENAME_LENGTH] + + centdir[_CD_EXTRA_FIELD_LENGTH] + + centdir[_CD_COMMENT_LENGTH]) + x.header_offset = centdir[_CD_LOCAL_HEADER_OFFSET] + (x.create_version, x.create_system, x.extract_version, x.reserved, + x.flag_bits, x.compress_type, t, d, + x.CRC, x.compress_size, x.file_size) = centdir[1:12] + x.volume, x.internal_attr, x.external_attr = centdir[15:18] + # Convert date/time code to (year, month, day, hour, min, sec) + x.date_time = ( (d>>9)+1980, (d>>5)&0xF, d&0x1F, + t>>11, (t>>5)&0x3F, (t&0x1F) * 2 ) + + x._decodeExtra() + x.header_offset = x.header_offset + concat + self.filelist.append(x) + self.NameToInfo[x.filename] = x + if self.debug > 2: + print "total", total + + + def namelist(self): + """Return a list of file names in the archive.""" + l = [] + for data in self.filelist: + l.append(data.filename) + return l + + def infolist(self): + """Return a list of class ZipInfo instances for files in the + archive.""" + return self.filelist + + def printdir(self): + """Print a table of contents for the zip file.""" + print "%-46s %19s %12s" % ("File Name", "Modified ", "Size") + for zinfo in self.filelist: + date = "%d-%02d-%02d %02d:%02d:%02d" % zinfo.date_time[:6] + print "%-46s %s %12d" % (zinfo.filename, date, zinfo.file_size) + + def testzip(self): + """Read all the files and check the CRC.""" + for zinfo in self.filelist: + try: + self.read(zinfo.filename) # Check CRC-32 + except BadZipfile: + return zinfo.filename + + + def getinfo(self, name): + """Return the instance of ZipInfo given 'name'.""" + return self.NameToInfo[name] + + def read(self, name): + """Return file bytes (as a string) for name.""" + if self.mode not in ("r", "a"): + raise RuntimeError, 'read() requires mode "r" or "a"' + if not self.fp: + raise RuntimeError, \ + "Attempt to read ZIP archive that was already closed" + zinfo = self.getinfo(name) + filepos = self.fp.tell() + + self.fp.seek(zinfo.header_offset, 0) + + # Skip the file header: + fheader = self.fp.read(30) + if fheader[0:4] != stringFileHeader: + raise BadZipfile, "Bad magic number for file header" + + fheader = struct.unpack(structFileHeader, fheader) + fname = self.fp.read(fheader[_FH_FILENAME_LENGTH]) + if fheader[_FH_EXTRA_FIELD_LENGTH]: + self.fp.read(fheader[_FH_EXTRA_FIELD_LENGTH]) + + if fname != zinfo.orig_filename: + raise BadZipfile, \ + 'File name in directory "%s" and header "%s" differ.' % ( + zinfo.orig_filename, fname) + + bytes = self.fp.read(zinfo.compress_size) + self.fp.seek(filepos, 0) + if zinfo.compress_type == ZIP_STORED: + pass + elif zinfo.compress_type == ZIP_DEFLATED: + if not zlib: + raise RuntimeError, \ + "De-compression requires the (missing) zlib module" + # zlib compress/decompress code by Jeremy Hylton of CNRI + dc = zlib.decompressobj(-15) + bytes = dc.decompress(bytes) + # need to feed in unused pad byte so that zlib won't choke + ex = dc.decompress('Z') + dc.flush() + if ex: + bytes = bytes + ex + else: + raise BadZipfile, \ + "Unsupported compression method %d for file %s" % \ + (zinfo.compress_type, name) + crc = binascii.crc32(bytes) + if crc != zinfo.CRC: + raise BadZipfile, "Bad CRC-32 for file %s" % name + return bytes + + def _writecheck(self, zinfo): + """Check for errors before writing a file to the archive.""" + if zinfo.filename in self.NameToInfo: + if self.debug: # Warning for duplicate names + print "Duplicate name:", zinfo.filename + if self.mode not in ("w", "a"): + raise RuntimeError, 'write() requires mode "w" or "a"' + if not self.fp: + raise RuntimeError, \ + "Attempt to write ZIP archive that was already closed" + if zinfo.compress_type == ZIP_DEFLATED and not zlib: + raise RuntimeError, \ + "Compression requires the (missing) zlib module" + if zinfo.compress_type not in (ZIP_STORED, ZIP_DEFLATED): + raise RuntimeError, \ + "That compression method is not supported" + if zinfo.file_size > ZIP64_LIMIT: + if not self._allowZip64: + raise LargeZipFile("Filesize would require ZIP64 extensions") + if zinfo.header_offset > ZIP64_LIMIT: + if not self._allowZip64: + raise LargeZipFile("Zipfile size would require ZIP64 extensions") + + def write(self, filename, arcname=None, compress_type=None): + """Put the bytes from filename into the archive under the name + arcname.""" + st = os.stat(filename) + mtime = time.localtime(st.st_mtime) + date_time = mtime[0:6] + # Create ZipInfo instance to store file information + if arcname is None: + arcname = filename + arcname = os.path.normpath(os.path.splitdrive(arcname)[1]) + while arcname[0] in (os.sep, os.altsep): + arcname = arcname[1:] + zinfo = ZipInfo(arcname, date_time) + zinfo.external_attr = (st[0] & 0xFFFF) << 16L # Unix attributes + if compress_type is None: + zinfo.compress_type = self.compression + else: + zinfo.compress_type = compress_type + + zinfo.file_size = st.st_size + zinfo.flag_bits = 0x00 + zinfo.header_offset = self.fp.tell() # Start of header bytes + + self._writecheck(zinfo) + self._didModify = True + fp = open(filename, "rb") + # Must overwrite CRC and sizes with correct data later + zinfo.CRC = CRC = 0 + zinfo.compress_size = compress_size = 0 + zinfo.file_size = file_size = 0 + self.fp.write(zinfo.FileHeader()) + if zinfo.compress_type == ZIP_DEFLATED: + cmpr = zlib.compressobj(zlib.Z_DEFAULT_COMPRESSION, + zlib.DEFLATED, -15) + else: + cmpr = None + while 1: + buf = fp.read(1024 * 8) + if not buf: + break + file_size = file_size + len(buf) + CRC = binascii.crc32(buf, CRC) + if cmpr: + buf = cmpr.compress(buf) + compress_size = compress_size + len(buf) + self.fp.write(buf) + fp.close() + if cmpr: + buf = cmpr.flush() + compress_size = compress_size + len(buf) + self.fp.write(buf) + zinfo.compress_size = compress_size + else: + zinfo.compress_size = file_size + zinfo.CRC = CRC + zinfo.file_size = file_size + # Seek backwards and write CRC and file sizes + position = self.fp.tell() # Preserve current position in file + self.fp.seek(zinfo.header_offset + 14, 0) + self.fp.write(struct.pack("<lLL", zinfo.CRC, zinfo.compress_size, + zinfo.file_size)) + self.fp.seek(position, 0) + self.filelist.append(zinfo) + self.NameToInfo[zinfo.filename] = zinfo + + def writestr(self, zinfo_or_arcname, bytes): + """Write a file into the archive. The contents is the string + 'bytes'. 'zinfo_or_arcname' is either a ZipInfo instance or + the name of the file in the archive.""" + if not isinstance(zinfo_or_arcname, ZipInfo): + zinfo = ZipInfo(filename=zinfo_or_arcname, + date_time=time.localtime(time.time())[:6]) + zinfo.compress_type = self.compression + else: + zinfo = zinfo_or_arcname + zinfo.file_size = len(bytes) # Uncompressed size + zinfo.header_offset = self.fp.tell() # Start of header bytes + self._writecheck(zinfo) + self._didModify = True + zinfo.CRC = binascii.crc32(bytes) # CRC-32 checksum + if zinfo.compress_type == ZIP_DEFLATED: + co = zlib.compressobj(zlib.Z_DEFAULT_COMPRESSION, + zlib.DEFLATED, -15) + bytes = co.compress(bytes) + co.flush() + zinfo.compress_size = len(bytes) # Compressed size + else: + zinfo.compress_size = zinfo.file_size + zinfo.header_offset = self.fp.tell() # Start of header bytes + self.fp.write(zinfo.FileHeader()) + self.fp.write(bytes) + self.fp.flush() + if zinfo.flag_bits & 0x08: + # Write CRC and file sizes after the file data + self.fp.write(struct.pack("<lLL", zinfo.CRC, zinfo.compress_size, + zinfo.file_size)) + self.filelist.append(zinfo) + self.NameToInfo[zinfo.filename] = zinfo + + def __del__(self): + """Call the "close()" method in case the user forgot.""" + self.close() + + def close(self): + """Close the file, and for mode "w" and "a" write the ending + records.""" + if self.fp is None: + return + + if self.mode in ("w", "a") and self._didModify: # write ending records + count = 0 + pos1 = self.fp.tell() + for zinfo in self.filelist: # write central directory + count = count + 1 + dt = zinfo.date_time + dosdate = (dt[0] - 1980) << 9 | dt[1] << 5 | dt[2] + dostime = dt[3] << 11 | dt[4] << 5 | (dt[5] // 2) + extra = [] + if zinfo.file_size > ZIP64_LIMIT \ + or zinfo.compress_size > ZIP64_LIMIT: + extra.append(zinfo.file_size) + extra.append(zinfo.compress_size) + file_size = 0xffffffff #-1 + compress_size = 0xffffffff #-1 + else: + file_size = zinfo.file_size + compress_size = zinfo.compress_size + + if zinfo.header_offset > ZIP64_LIMIT: + extra.append(zinfo.header_offset) + header_offset = -1 # struct "l" format: 32 one bits + else: + header_offset = zinfo.header_offset + + extra_data = zinfo.extra + if extra: + # Append a ZIP64 field to the extra's + extra_data = struct.pack( + '<hh' + 'q'*len(extra), + 1, 8*len(extra), *extra) + extra_data + + extract_version = max(45, zinfo.extract_version) + create_version = max(45, zinfo.create_version) + else: + extract_version = zinfo.extract_version + create_version = zinfo.create_version + + centdir = struct.pack(structCentralDir, + stringCentralDir, create_version, + zinfo.create_system, extract_version, zinfo.reserved, + zinfo.flag_bits, zinfo.compress_type, dostime, dosdate, + zinfo.CRC, compress_size, file_size, + len(zinfo.filename), len(extra_data), len(zinfo.comment), + 0, zinfo.internal_attr, zinfo.external_attr, + header_offset) + self.fp.write(centdir) + self.fp.write(zinfo.filename) + self.fp.write(extra_data) + self.fp.write(zinfo.comment) + + pos2 = self.fp.tell() + # Write end-of-zip-archive record + if pos1 > ZIP64_LIMIT: + # Need to write the ZIP64 end-of-archive records + zip64endrec = struct.pack( + structEndArchive64, stringEndArchive64, + 44, 45, 45, 0, 0, count, count, pos2 - pos1, pos1) + self.fp.write(zip64endrec) + + zip64locrec = struct.pack( + structEndArchive64Locator, + stringEndArchive64Locator, 0, pos2, 1) + self.fp.write(zip64locrec) + + # XXX Why is `pos3` computed next? It's never referenced. + pos3 = self.fp.tell() + endrec = struct.pack(structEndArchive, stringEndArchive, + 0, 0, count, count, pos2 - pos1, -1, 0) + self.fp.write(endrec) + + else: + endrec = struct.pack(structEndArchive, stringEndArchive, + 0, 0, count, count, pos2 - pos1, pos1, 0) + self.fp.write(endrec) + self.fp.flush() + if not self._filePassed: + self.fp.close() + self.fp = None + + +class PyZipFile(ZipFile): + """Class to create ZIP archives with Python library files and packages.""" + + def writepy(self, pathname, basename = ""): + """Add all files from "pathname" to the ZIP archive. + + If pathname is a package directory, search the directory and + all package subdirectories recursively for all *.py and enter + the modules into the archive. If pathname is a plain + directory, listdir *.py and enter all modules. Else, pathname + must be a Python *.py file and the module will be put into the + archive. Added modules are always module.pyo or module.pyc. + This method will compile the module.py into module.pyc if + necessary. + """ + dir, name = os.path.split(pathname) + if os.path.isdir(pathname): + initname = os.path.join(pathname, "__init__.py") + if os.path.isfile(initname): + # This is a package directory, add it + if basename: + basename = "%s/%s" % (basename, name) + else: + basename = name + if self.debug: + print "Adding package in", pathname, "as", basename + fname, arcname = self._get_codename(initname[0:-3], basename) + if self.debug: + print "Adding", arcname + self.write(fname, arcname) + dirlist = os.listdir(pathname) + dirlist.remove("__init__.py") + # Add all *.py files and package subdirectories + for filename in dirlist: + path = os.path.join(pathname, filename) + root, ext = os.path.splitext(filename) + if os.path.isdir(path): + if os.path.isfile(os.path.join(path, "__init__.py")): + # This is a package directory, add it + self.writepy(path, basename) # Recursive call + elif ext == ".py": + fname, arcname = self._get_codename(path[0:-3], + basename) + if self.debug: + print "Adding", arcname + self.write(fname, arcname) + else: + # This is NOT a package directory, add its files at top level + if self.debug: + print "Adding files from directory", pathname + for filename in os.listdir(pathname): + path = os.path.join(pathname, filename) + root, ext = os.path.splitext(filename) + if ext == ".py": + fname, arcname = self._get_codename(path[0:-3], + basename) + if self.debug: + print "Adding", arcname + self.write(fname, arcname) + else: + if pathname[-3:] != ".py": + raise RuntimeError, \ + 'Files added with writepy() must end with ".py"' + fname, arcname = self._get_codename(pathname[0:-3], basename) + if self.debug: + print "Adding file", arcname + self.write(fname, arcname) + + def _get_codename(self, pathname, basename): + """Return (filename, archivename) for the path. + + Given a module name path, return the correct file path and + archive name, compiling if necessary. For example, given + /python/lib/string, return (/python/lib/string.pyc, string). + """ + file_py = pathname + ".py" + file_pyc = pathname + (".pyc" if not is_jython else "$py.class") + file_pyo = pathname + ".pyo" + if os.path.isfile(file_pyo) and \ + os.stat(file_pyo).st_mtime >= os.stat(file_py).st_mtime: + fname = file_pyo # Use .pyo file + elif not os.path.isfile(file_pyc) or \ + os.stat(file_pyc).st_mtime < os.stat(file_py).st_mtime: + import py_compile + if self.debug: + print "Compiling", file_py + try: + py_compile.compile(file_py, file_pyc, None, True) + except py_compile.PyCompileError,err: + print err.msg + fname = file_pyc + else: + fname = file_pyc + archivename = os.path.split(fname)[1] + if basename: + archivename = "%s/%s" % (basename, archivename) + return (fname, archivename) + + +def main(args = None): + import textwrap + USAGE=textwrap.dedent("""\ + Usage: + zipfile.py -l zipfile.zip # Show listing of a zipfile + zipfile.py -t zipfile.zip # Test if a zipfile is valid + zipfile.py -e zipfile.zip target # Extract zipfile into target dir + zipfile.py -c zipfile.zip src ... # Create zipfile from sources + """) + if args is None: + args = sys.argv[1:] + + if not args or args[0] not in ('-l', '-c', '-e', '-t'): + print USAGE + sys.exit(1) + + if args[0] == '-l': + if len(args) != 2: + print USAGE + sys.exit(1) + zf = ZipFile(args[1], 'r') + zf.printdir() + zf.close() + + elif args[0] == '-t': + if len(args) != 2: + print USAGE + sys.exit(1) + zf = ZipFile(args[1], 'r') + zf.testzip() + print "Done testing" + + elif args[0] == '-e': + if len(args) != 3: + print USAGE + sys.exit(1) + + zf = ZipFile(args[1], 'r') + out = args[2] + for path in zf.namelist(): + if path.startswith('./'): + tgt = os.path.join(out, path[2:]) + else: + tgt = os.path.join(out, path) + + tgtdir = os.path.dirname(tgt) + if not os.path.exists(tgtdir): + os.makedirs(tgtdir) + fp = open(tgt, 'wb') + fp.write(zf.read(path)) + fp.close() + zf.close() + + elif args[0] == '-c': + if len(args) < 3: + print USAGE + sys.exit(1) + + def addToZip(zf, path, zippath): + if os.path.isfile(path): + zf.write(path, zippath, ZIP_DEFLATED) + elif os.path.isdir(path): + for nm in os.listdir(path): + addToZip(zf, + os.path.join(path, nm), os.path.join(zippath, nm)) + # else: ignore + + zf = ZipFile(args[1], 'w', allowZip64=True) + for src in args[2:]: + addToZip(zf, src, os.path.basename(src)) + + zf.close() + +if __name__ == "__main__": + main() Modified: branches/astwrite/build.xml =================================================================== --- branches/astwrite/build.xml 2008-11-25 03:03:43 UTC (rev 5634) +++ branches/astwrite/build.xml 2008-11-25 04:19:42 UTC (rev 5635) @@ -152,6 +152,7 @@ <property name="gensrc.dir" value="${output.dir}/gensrc" /> <property name="dist.dir" value="${work.dir}/dist" /> <property name="apidoc.dir" value="${dist.dir}/Doc/javadoc" /> + <property name="junit.reports" value="${dist.dir}/testreports" /> <!-- classpaths --> <path id="main.classpath"> @@ -761,14 +762,21 @@ </jar> </target> - <target name="test" depends="javatest,launchertest,regrtest"/> + <target name="test" depends="prepare-test,javatest,launchertest,regrtest"/> + <target name="prepare-test" depends="init"> + <!-- Clean any old test output --> + <delete dir="${junit.reports}"/> + </target> <target name="javatest" depends="compile,expose"> + <mkdir dir="${junit.reports}"/> <junit fork="true" printsummary="true"> + <formatter type="xml"/> <classpath refid="test.classpath"/> - <batchtest todir="${dist.dir}/testreports"> + <batchtest todir="${junit.reports}"> <fileset dir="${test.source.dir}" includes="**/*Test*.java"> <exclude name="javatests/**/*" /> <exclude name="**/InterpTestCase.java" /> + <exclude name="org/python/antlr/**" /> </fileset> </batchtest> </junit> @@ -786,6 +794,8 @@ <arg value="${dist.dir}/Lib/test/regrtest.py"/> <!-- Only run the tests that are expected to work on Jython --> <arg value="--expected"/> + <arg value="-j"/> + <arg value="${junit.reports}"/> </exec> </target> <target name="regrtest-windows" if="os.family.windows"> @@ -794,6 +804,8 @@ <arg value="${dist.dir}/Lib/test/regrtest.py"/> <!-- Only run the tests that are expected to work on Jython --> <arg value="--expected"/> + <arg value="-j"/> + <arg value="${junit.reports}"/> </exec> </target> Modified: branches/astwrite/src/org/python/core/Py.java =================================================================== --- branches/astwrite/src/org/python/core/Py.java 2008-11-25 03:03:43 UTC (rev 5634) +++ branches/astwrite/src/org/python/core/Py.java 2008-11-25 04:19:42 UTC (rev 5635) @@ -82,7 +82,9 @@ /** A Python string containing ' ' **/ public static PyString Space; /** Set if the type object is dynamically allocated */ - public static long TPFLAGS_HEAPTYPE; + public static long TPFLAGS_HEAPTYPE = 1L << 9; + /** Set if the type allows subclassing */ + public static long TPFLAGS_BASETYPE = 1L << 10; /** Builtin types that are used to setup PyObject. */ static final Set<Class> BOOTSTRAP_TYPES = new HashSet<Class>(4); Modified: branches/astwrite/src/org/python/core/PyBoolean.java =================================================================== --- branches/astwrite/src/org/python/core/PyBoolean.java 2008-11-25 03:03:43 UTC (rev 5634) +++ branches/astwrite/src/org/python/core/PyBoolean.java 2008-11-25 04:19:42 UTC (rev 5635) @@ -1,7 +1,5 @@ package org.python.core; -import java.io.Serializable; - import org.python.expose.ExposedMethod; import org.python.expose.ExposedNew; import org.python.expose.ExposedType; @@ -10,7 +8,7 @@ /** * A builtin python bool. */ -@ExposedType(name = "bool") +@ExposedType(name = "bool", isBaseType = false) public class PyBoolean extends PyInteger { public static final PyType TYPE = PyType.fromClass(PyBoolean.class); Modified: branches/astwrite/src/org/python/core/PyBuiltinCallable.java =================================================================== --- branches/astwrite/src/org/python/core/PyBuiltinCallable.java 2008-11-25 03:03:43 UTC (rev 5634) +++ branches/astwrite/src/org/python/core/PyBuiltinCallab... [truncated message content] |
From: <fwi...@us...> - 2008-11-25 04:24:42
|
Revision: 5636 http://jython.svn.sourceforge.net/jython/?rev=5636&view=rev Author: fwierzbicki Date: 2008-11-25 04:24:40 +0000 (Tue, 25 Nov 2008) Log Message: ----------- Creating an adapter package under antlr for obj->ast conversions. Modified Paths: -------------- branches/astwrite/ast/asdl_antlr.py Added Paths: ----------- branches/astwrite/src/org/python/antlr/adapter/ branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java branches/astwrite/src/org/python/antlr/adapter/AstObjectAdapter.java branches/astwrite/src/org/python/antlr/adapter/ListWrapper.java branches/astwrite/src/org/python/antlr/adapter/StmtListAdapter.java Removed Paths: ------------- branches/astwrite/src/org/python/antlr/AstAdapters.java branches/astwrite/src/org/python/antlr/AstObjectAdapter.java branches/astwrite/src/org/python/antlr/ListWrapper.java branches/astwrite/src/org/python/antlr/StmtListAdapter.java Modified: branches/astwrite/ast/asdl_antlr.py =================================================================== --- branches/astwrite/ast/asdl_antlr.py 2008-11-25 04:19:42 UTC (rev 5635) +++ branches/astwrite/ast/asdl_antlr.py 2008-11-25 04:24:40 UTC (rev 5636) @@ -57,9 +57,9 @@ print >> self.file, 'package org.python.antlr.ast;' if refersToPythonTree: print >> self.file, 'import java.util.ArrayList;' - print >> self.file, 'import org.python.antlr.AstAdapters;' print >> self.file, 'import org.python.antlr.PythonTree;' - print >> self.file, 'import org.python.antlr.ListWrapper;' + print >> self.file, 'import org.python.antlr.adapter.AstAdapters;' + print >> self.file, 'import org.python.antlr.adapter.ListWrapper;' print >> self.file, 'import org.antlr.runtime.CommonToken;' print >> self.file, 'import org.antlr.runtime.Token;' if useDataOutput: Deleted: branches/astwrite/src/org/python/antlr/AstAdapters.java =================================================================== --- branches/astwrite/src/org/python/antlr/AstAdapters.java 2008-11-25 04:19:42 UTC (rev 5635) +++ branches/astwrite/src/org/python/antlr/AstAdapters.java 2008-11-25 04:24:40 UTC (rev 5636) @@ -1,156 +0,0 @@ -package org.python.antlr; - -import org.python.antlr.ast.*; -import org.python.core.*; - -/** - * AstAdapter turns Python and Java objects into ast nodes. - */ -public class AstAdapters { - - public static java.util.List<aliasType> to_aliasList(Object o) { - return null; - } - - public static java.util.List<cmpopType> to_cmpopList(Object o) { - return null; - } - - public static java.util.List<comprehensionType> to_comprehensionList(Object o) { - return null; - } - - public static java.util.List<excepthandlerType> to_excepthandlerList(Object o) { - return null; - } - - public static java.util.List<exprType> to_exprList(Object o) { - return null; - } - - public static java.util.List<String> to_identifierList(Object o) { - return null; - } - - public static java.util.List<keywordType> to_keywordList(Object o) { - return null; - } - - public static java.util.List<sliceType> to_sliceList(Object o) { - return null; - } - - public static java.util.List<stmtType> to_stmtList(Object o) { - return null; - } - - public static exprType to_expr(Object o) { - if (o == null || o instanceof exprType) { - return (exprType)o; - } else if (o instanceof Integer) { - return new Num(new PyInteger((Integer)o)); - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to expr node"); - } - - public static int to_int(Object o) { - if (o == null || o instanceof Integer) { - return (Integer)o; - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to int node"); - } - - public static String to_identifier(Object o) { - if (o == null || o instanceof String) { - return (String)o; - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to identifier node"); - } - - public static expr_contextType to_expr_context(Object o) { - if (o == null || o instanceof expr_contextType) { - return (expr_contextType)o; - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to expr_context node"); - } - - public static sliceType to_slice(Object o) { - if (o == null || o instanceof sliceType) { - return (sliceType)o; - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to slice node"); - } - - public static stmtType to_stmt(Object o) { - if (o instanceof PyJavaInstance) { - o = ((PyJavaInstance)o).__tojava__(stmtType.class); - } - if (o == null || o instanceof stmtType) { - return (stmtType)o; - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to stmt node"); - } - - public static String to_string(Object o) { - if (o == null || o instanceof String) { - return (String)o; - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to string node"); - } - - public static operatorType to_operator(Object o) { - if (o == null || o instanceof operatorType) { - return (operatorType)o; - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to operator node"); - } - - public static boolopType to_boolop(Object o) { - if (o == null || o instanceof boolopType) { - return (boolopType)o; - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to boolop node"); - } - - public static argumentsType to_arguments(Object o) { - if (o == null || o instanceof argumentsType) { - return (argumentsType)o; - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to arguments node"); - } - - public static Object to_object(Object o) { - if (o == null || o instanceof Object) { - return (Object)o; - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to object node"); - } - - public static Boolean to_bool(Object o) { - if (o == null || o instanceof Boolean) { - return (Boolean)o; - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to Boolean node"); - } - - public static unaryopType to_unaryop(Object o) { - if (o == null || o instanceof unaryopType) { - return (unaryopType)o; - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to unaryop node"); - } - -} Deleted: branches/astwrite/src/org/python/antlr/AstObjectAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/AstObjectAdapter.java 2008-11-25 04:19:42 UTC (rev 5635) +++ branches/astwrite/src/org/python/antlr/AstObjectAdapter.java 2008-11-25 04:24:40 UTC (rev 5636) @@ -1,5 +0,0 @@ -package org.python.antlr; - -public interface AstObjectAdapter { - public Object adapt(Object o); -} Deleted: branches/astwrite/src/org/python/antlr/ListWrapper.java =================================================================== --- branches/astwrite/src/org/python/antlr/ListWrapper.java 2008-11-25 04:19:42 UTC (rev 5635) +++ branches/astwrite/src/org/python/antlr/ListWrapper.java 2008-11-25 04:24:40 UTC (rev 5636) @@ -1,219 +0,0 @@ -package org.python.antlr; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; -import org.python.core.PyObject; - -public class ListWrapper implements List { - - private List list; - private AstObjectAdapter adapter; - - public ListWrapper(List list) { - this.list = list; - } - - public ListWrapper(List list, AstObjectAdapter adapter) { - this.adapter = adapter; - this.list = list; - } - - public boolean containsAll(Collection c) { - return containsAll(c); - } - - public boolean removeAll(Collection c) { - return list.removeAll(c); - } - - public boolean retainAll(Collection c) { - return list.retainAll(c); - } - - public boolean add(Object e) { - return list.add(e); - } - - public void add(int index, Object e) { - list.add(index, e); - } - - public boolean addAll(Collection c) { - return list.addAll(c); - } - - public boolean addAll(int index, Collection c) { - return list.addAll(index, c); - } - - public void clear() { - list.clear(); - } - - public boolean contains(Object elem) { - return list.contains(elem); - } - - public Object get(int index) { - return list.get(index); - } - - public int indexOf(Object elem) { - return list.indexOf(elem); - } - - public boolean isEmpty() { - return list.isEmpty(); - } - - public int lastIndexOf(Object elem) { - return list.lastIndexOf(elem); - } - - public Object remove(int index) { - return list.remove(index); - } - - public boolean remove(Object o) { - return list.remove(o); - } - - public Object set(int index, Object element) { - return list.set(index, element); - } - - public int size() { - return list.size(); - } - - public Object[] toArray() { - return list.toArray(); - } - - public Object[] toArray(Object[] a) { - return list.toArray(a); - } - - public Iterator iterator() { - return list.iterator(); - } - - public ListIterator listIterator() { - return list.listIterator(); - } - - public ListIterator listIterator(int index) { - return list.listIterator(index); - } - - public List subList(int fromIndex, int toIndex) { - return list.subList(fromIndex, toIndex); - } - - public ListWrapper __add__(Object o) { - List newList = new ArrayList(); - newList.addAll(list); - newList.add(o); - return new ListWrapper(newList); - } - - public void __iadd__(PyObject o) { - extend(o); - } - - public int __len__() { - return list.size(); - } - - public boolean __contains__(Object o) { - return list.contains(o); - } - - public PyObject __imul__(PyObject o) { - throw new UnsupportedOperationException("Not supported yet."); - } - - public PyObject __iter__() { - throw new UnsupportedOperationException("Not supported yet."); - } - - public PyObject __mul__(PyObject o) { - throw new UnsupportedOperationException("Not supported yet."); - } - - public PyObject __radd__(PyObject o) { - throw new UnsupportedOperationException("Not supported yet."); - } - - public PyObject __rmul__(PyObject o) { - throw new UnsupportedOperationException("Not supported yet."); - } - - public void append(PyObject o) { - list.add(adapter.adapt(o)); - } - - public int count(PyObject o) { - throw new UnsupportedOperationException("Not supported yet."); - } - - protected void del(int i) { - throw new UnsupportedOperationException("Not supported yet."); - } - - protected void delRange(int start, int stop, int step) { - throw new UnsupportedOperationException("Not supported yet."); - } - - public void extend(PyObject o) { - throw new UnsupportedOperationException("Not supported yet."); - } - - public int index(PyObject o) { - throw new UnsupportedOperationException("Not supported yet."); - } - - public int index(PyObject o, int start) { - throw new UnsupportedOperationException("Not supported yet."); - } - - public int index(PyObject o, int start, int stop) { - throw new UnsupportedOperationException("Not supported yet."); - } - - public void insert(int index, PyObject o) { - throw new UnsupportedOperationException("Not supported yet."); - } - - public PyObject pop() { - throw new UnsupportedOperationException("Not supported yet."); - } - - public PyObject pop(int n) { - throw new UnsupportedOperationException("Not supported yet."); - } - - public void remove(PyObject o) { - throw new UnsupportedOperationException("Not supported yet."); - } - - public void reverse() { - throw new UnsupportedOperationException("Not supported yet."); - } - - public void sort(PyObject compare) { - throw new UnsupportedOperationException("Not supported yet."); - } - - public void sort() { - throw new UnsupportedOperationException("Not supported yet."); - } - - public void sort(PyObject cmp, PyObject key, PyObject reverse) { - throw new UnsupportedOperationException("Not supported yet."); - } - -} Deleted: branches/astwrite/src/org/python/antlr/StmtListAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/StmtListAdapter.java 2008-11-25 04:19:42 UTC (rev 5635) +++ branches/astwrite/src/org/python/antlr/StmtListAdapter.java 2008-11-25 04:24:40 UTC (rev 5636) @@ -1,22 +0,0 @@ -package org.python.antlr; - -import org.python.antlr.ast.stmtType; - -import java.util.ArrayList; -import java.util.List; - -public class StmtListAdapter implements AstObjectAdapter { - public Object adaptList(Object list) { - List<stmtType> s = new ArrayList<stmtType>(); - if (list instanceof List) { - for (Object o : (List)list) { - s.add(AstAdapters.to_stmt(o)); - } - } - return s; - } - - public Object adapt(Object o) { - return AstAdapters.to_stmt(o); - } -} Copied: branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java (from rev 5634, branches/astwrite/src/org/python/antlr/AstAdapters.java) =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java (rev 0) +++ branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java 2008-11-25 04:24:40 UTC (rev 5636) @@ -0,0 +1,156 @@ +package org.python.antlr.adapter; + +import org.python.antlr.ast.*; +import org.python.core.*; + +/** + * AstAdapter turns Python and Java objects into ast nodes. + */ +public class AstAdapters { + + public static java.util.List<aliasType> to_aliasList(Object o) { + return null; + } + + public static java.util.List<cmpopType> to_cmpopList(Object o) { + return null; + } + + public static java.util.List<comprehensionType> to_comprehensionList(Object o) { + return null; + } + + public static java.util.List<excepthandlerType> to_excepthandlerList(Object o) { + return null; + } + + public static java.util.List<exprType> to_exprList(Object o) { + return null; + } + + public static java.util.List<String> to_identifierList(Object o) { + return null; + } + + public static java.util.List<keywordType> to_keywordList(Object o) { + return null; + } + + public static java.util.List<sliceType> to_sliceList(Object o) { + return null; + } + + public static java.util.List<stmtType> to_stmtList(Object o) { + return null; + } + + public static exprType to_expr(Object o) { + if (o == null || o instanceof exprType) { + return (exprType)o; + } else if (o instanceof Integer) { + return new Num(new PyInteger((Integer)o)); + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to expr node"); + } + + public static int to_int(Object o) { + if (o == null || o instanceof Integer) { + return (Integer)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to int node"); + } + + public static String to_identifier(Object o) { + if (o == null || o instanceof String) { + return (String)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to identifier node"); + } + + public static expr_contextType to_expr_context(Object o) { + if (o == null || o instanceof expr_contextType) { + return (expr_contextType)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to expr_context node"); + } + + public static sliceType to_slice(Object o) { + if (o == null || o instanceof sliceType) { + return (sliceType)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to slice node"); + } + + public static stmtType to_stmt(Object o) { + if (o instanceof PyJavaInstance) { + o = ((PyJavaInstance)o).__tojava__(stmtType.class); + } + if (o == null || o instanceof stmtType) { + return (stmtType)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to stmt node"); + } + + public static String to_string(Object o) { + if (o == null || o instanceof String) { + return (String)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to string node"); + } + + public static operatorType to_operator(Object o) { + if (o == null || o instanceof operatorType) { + return (operatorType)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to operator node"); + } + + public static boolopType to_boolop(Object o) { + if (o == null || o instanceof boolopType) { + return (boolopType)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to boolop node"); + } + + public static argumentsType to_arguments(Object o) { + if (o == null || o instanceof argumentsType) { + return (argumentsType)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to arguments node"); + } + + public static Object to_object(Object o) { + if (o == null || o instanceof Object) { + return (Object)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to object node"); + } + + public static Boolean to_bool(Object o) { + if (o == null || o instanceof Boolean) { + return (Boolean)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to Boolean node"); + } + + public static unaryopType to_unaryop(Object o) { + if (o == null || o instanceof unaryopType) { + return (unaryopType)o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to unaryop node"); + } + +} Copied: branches/astwrite/src/org/python/antlr/adapter/AstObjectAdapter.java (from rev 5634, branches/astwrite/src/org/python/antlr/AstObjectAdapter.java) =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/AstObjectAdapter.java (rev 0) +++ branches/astwrite/src/org/python/antlr/adapter/AstObjectAdapter.java 2008-11-25 04:24:40 UTC (rev 5636) @@ -0,0 +1,5 @@ +package org.python.antlr.adapter; + +public interface AstObjectAdapter { + public Object adapt(Object o); +} Copied: branches/astwrite/src/org/python/antlr/adapter/ListWrapper.java (from rev 5634, branches/astwrite/src/org/python/antlr/ListWrapper.java) =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/ListWrapper.java (rev 0) +++ branches/astwrite/src/org/python/antlr/adapter/ListWrapper.java 2008-11-25 04:24:40 UTC (rev 5636) @@ -0,0 +1,219 @@ +package org.python.antlr.adapter; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.ListIterator; +import org.python.core.PyObject; + +public class ListWrapper implements List { + + private List list; + private AstObjectAdapter adapter; + + public ListWrapper(List list) { + this.list = list; + } + + public ListWrapper(List list, AstObjectAdapter adapter) { + this.adapter = adapter; + this.list = list; + } + + public boolean containsAll(Collection c) { + return containsAll(c); + } + + public boolean removeAll(Collection c) { + return list.removeAll(c); + } + + public boolean retainAll(Collection c) { + return list.retainAll(c); + } + + public boolean add(Object e) { + return list.add(e); + } + + public void add(int index, Object e) { + list.add(index, e); + } + + public boolean addAll(Collection c) { + return list.addAll(c); + } + + public boolean addAll(int index, Collection c) { + return list.addAll(index, c); + } + + public void clear() { + list.clear(); + } + + public boolean contains(Object elem) { + return list.contains(elem); + } + + public Object get(int index) { + return list.get(index); + } + + public int indexOf(Object elem) { + return list.indexOf(elem); + } + + public boolean isEmpty() { + return list.isEmpty(); + } + + public int lastIndexOf(Object elem) { + return list.lastIndexOf(elem); + } + + public Object remove(int index) { + return list.remove(index); + } + + public boolean remove(Object o) { + return list.remove(o); + } + + public Object set(int index, Object element) { + return list.set(index, element); + } + + public int size() { + return list.size(); + } + + public Object[] toArray() { + return list.toArray(); + } + + public Object[] toArray(Object[] a) { + return list.toArray(a); + } + + public Iterator iterator() { + return list.iterator(); + } + + public ListIterator listIterator() { + return list.listIterator(); + } + + public ListIterator listIterator(int index) { + return list.listIterator(index); + } + + public List subList(int fromIndex, int toIndex) { + return list.subList(fromIndex, toIndex); + } + + public ListWrapper __add__(Object o) { + List newList = new ArrayList(); + newList.addAll(list); + newList.add(o); + return new ListWrapper(newList); + } + + public void __iadd__(PyObject o) { + extend(o); + } + + public int __len__() { + return list.size(); + } + + public boolean __contains__(Object o) { + return list.contains(o); + } + + public PyObject __imul__(PyObject o) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public PyObject __iter__() { + throw new UnsupportedOperationException("Not supported yet."); + } + + public PyObject __mul__(PyObject o) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public PyObject __radd__(PyObject o) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public PyObject __rmul__(PyObject o) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public void append(PyObject o) { + list.add(adapter.adapt(o)); + } + + public int count(PyObject o) { + throw new UnsupportedOperationException("Not supported yet."); + } + + protected void del(int i) { + throw new UnsupportedOperationException("Not supported yet."); + } + + protected void delRange(int start, int stop, int step) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public void extend(PyObject o) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public int index(PyObject o) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public int index(PyObject o, int start) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public int index(PyObject o, int start, int stop) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public void insert(int index, PyObject o) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public PyObject pop() { + throw new UnsupportedOperationException("Not supported yet."); + } + + public PyObject pop(int n) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public void remove(PyObject o) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public void reverse() { + throw new UnsupportedOperationException("Not supported yet."); + } + + public void sort(PyObject compare) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public void sort() { + throw new UnsupportedOperationException("Not supported yet."); + } + + public void sort(PyObject cmp, PyObject key, PyObject reverse) { + throw new UnsupportedOperationException("Not supported yet."); + } + +} Copied: branches/astwrite/src/org/python/antlr/adapter/StmtListAdapter.java (from rev 5634, branches/astwrite/src/org/python/antlr/StmtListAdapter.java) =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/StmtListAdapter.java (rev 0) +++ branches/astwrite/src/org/python/antlr/adapter/StmtListAdapter.java 2008-11-25 04:24:40 UTC (rev 5636) @@ -0,0 +1,22 @@ +package org.python.antlr.adapter; + +import org.python.antlr.ast.stmtType; + +import java.util.ArrayList; +import java.util.List; + +public class StmtListAdapter implements AstObjectAdapter { + public Object adaptList(Object list) { + List<stmtType> s = new ArrayList<stmtType>(); + if (list instanceof List) { + for (Object o : (List)list) { + s.add(AstAdapters.to_stmt(o)); + } + } + return s; + } + + public Object adapt(Object o) { + return AstAdapters.to_stmt(o); + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fwi...@us...> - 2008-11-26 03:42:11
|
Revision: 5641 http://jython.svn.sourceforge.net/jython/?rev=5641&view=rev Author: fwierzbicki Date: 2008-11-26 03:42:02 +0000 (Wed, 26 Nov 2008) Log Message: ----------- Round out the ast adapters. Modified Paths: -------------- branches/astwrite/ast/asdl_antlr.py branches/astwrite/src/org/python/antlr/PythonTree.java branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java branches/astwrite/src/org/python/antlr/adapter/ListWrapper.java branches/astwrite/src/org/python/antlr/ast/Assign.java branches/astwrite/src/org/python/antlr/ast/BoolOp.java branches/astwrite/src/org/python/antlr/ast/Call.java branches/astwrite/src/org/python/antlr/ast/ClassDef.java branches/astwrite/src/org/python/antlr/ast/Compare.java branches/astwrite/src/org/python/antlr/ast/Delete.java branches/astwrite/src/org/python/antlr/ast/Dict.java branches/astwrite/src/org/python/antlr/ast/ExtSlice.java branches/astwrite/src/org/python/antlr/ast/For.java branches/astwrite/src/org/python/antlr/ast/FunctionDef.java branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java branches/astwrite/src/org/python/antlr/ast/Global.java branches/astwrite/src/org/python/antlr/ast/If.java branches/astwrite/src/org/python/antlr/ast/Import.java branches/astwrite/src/org/python/antlr/ast/ImportFrom.java branches/astwrite/src/org/python/antlr/ast/Interactive.java branches/astwrite/src/org/python/antlr/ast/List.java branches/astwrite/src/org/python/antlr/ast/ListComp.java branches/astwrite/src/org/python/antlr/ast/Module.java branches/astwrite/src/org/python/antlr/ast/Print.java branches/astwrite/src/org/python/antlr/ast/Suite.java branches/astwrite/src/org/python/antlr/ast/TryExcept.java branches/astwrite/src/org/python/antlr/ast/TryFinally.java branches/astwrite/src/org/python/antlr/ast/Tuple.java branches/astwrite/src/org/python/antlr/ast/While.java branches/astwrite/src/org/python/antlr/ast/With.java branches/astwrite/src/org/python/antlr/ast/argumentsType.java branches/astwrite/src/org/python/antlr/ast/comprehensionType.java branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java Added Paths: ----------- branches/astwrite/src/org/python/antlr/adapter/AliasAdapter.java branches/astwrite/src/org/python/antlr/adapter/AstAdapter.java branches/astwrite/src/org/python/antlr/adapter/CmpopAdapter.java branches/astwrite/src/org/python/antlr/adapter/ComprehensionAdapter.java branches/astwrite/src/org/python/antlr/adapter/ExcepthandlerAdapter.java branches/astwrite/src/org/python/antlr/adapter/ExprAdapter.java branches/astwrite/src/org/python/antlr/adapter/IdentifierAdapter.java branches/astwrite/src/org/python/antlr/adapter/KeywordAdapter.java branches/astwrite/src/org/python/antlr/adapter/SliceAdapter.java branches/astwrite/src/org/python/antlr/adapter/StmtAdapter.java Removed Paths: ------------- branches/astwrite/src/org/python/antlr/adapter/AstObjectAdapter.java branches/astwrite/src/org/python/antlr/adapter/StmtListAdapter.java Modified: branches/astwrite/ast/asdl_antlr.py =================================================================== --- branches/astwrite/ast/asdl_antlr.py 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/ast/asdl_antlr.py 2008-11-26 03:42:02 UTC (rev 5641) @@ -422,7 +422,7 @@ self.emit("}", depth) self.emit("public Object get%s() {" % (str(field.name).capitalize()), depth) if field.seq: - self.emit("return new ListWrapper(%s);" % field.name, depth+1) + self.emit("return new ListWrapper(%s, AstAdapters.%sAdapter);" % (field.name, field.type), depth+1) else: self.emit("return %s;" % field.name, depth+1) self.emit("}", depth) Modified: branches/astwrite/src/org/python/antlr/PythonTree.java =================================================================== --- branches/astwrite/src/org/python/antlr/PythonTree.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/PythonTree.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -85,7 +85,7 @@ if ( getChildCount()>0 ) { return getChild(0).getLine(); } - return 0; + return 1; } return token.getLine(); } Added: branches/astwrite/src/org/python/antlr/adapter/AliasAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/AliasAdapter.java (rev 0) +++ branches/astwrite/src/org/python/antlr/adapter/AliasAdapter.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -0,0 +1,34 @@ +package org.python.antlr.adapter; + +import org.python.core.Py; +import org.python.core.PyJavaInstance; + +import org.python.antlr.ast.aliasType; + +import java.util.ArrayList; +import java.util.List; + +public class AliasAdapter implements AstAdapter { + + public Object adapt(Object o) { + if (o == null) { + return o; + } + if (o instanceof PyJavaInstance) { + o = ((PyJavaInstance)o).__tojava__(aliasType.class); + } + if (o instanceof aliasType) { + return o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to alias node"); + } + + public Object adaptIter(Object iter) { + List<aliasType> aliases = new ArrayList<aliasType>(); + for(Object o : (Iterable)iter) { + aliases.add((aliasType)adapt(o)); + } + return aliases; + } +} Copied: branches/astwrite/src/org/python/antlr/adapter/AstAdapter.java (from rev 5636, branches/astwrite/src/org/python/antlr/adapter/AstObjectAdapter.java) =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/AstAdapter.java (rev 0) +++ branches/astwrite/src/org/python/antlr/adapter/AstAdapter.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -0,0 +1,13 @@ +package org.python.antlr.adapter; + +/** + * AstAdapters turn Objects into Ast nodes. + */ +public interface AstAdapter { + + /** + * @return Ast node version of o. + */ + public abstract Object adapt(Object o); + +} Modified: branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -3,55 +3,59 @@ import org.python.antlr.ast.*; import org.python.core.*; +import java.util.ArrayList; /** * AstAdapter turns Python and Java objects into ast nodes. */ public class AstAdapters { + public static AliasAdapter aliasAdapter = new AliasAdapter(); + public static CmpopAdapter cmpopAdapter = new CmpopAdapter(); + public static ComprehensionAdapter comprehensionAdapter = new ComprehensionAdapter(); + public static ExcepthandlerAdapter excepthandlerAdapter = new ExcepthandlerAdapter(); + public static ExprAdapter exprAdapter = new ExprAdapter(); + public static IdentifierAdapter identifierAdapter = new IdentifierAdapter(); + public static KeywordAdapter keywordAdapter = new KeywordAdapter(); + public static SliceAdapter sliceAdapter = new SliceAdapter(); + public static StmtAdapter stmtAdapter = new StmtAdapter(); public static java.util.List<aliasType> to_aliasList(Object o) { - return null; + return (java.util.List<aliasType>)aliasAdapter.adaptIter(o); } public static java.util.List<cmpopType> to_cmpopList(Object o) { - return null; + return (java.util.List<cmpopType>)cmpopAdapter.adaptIter(o); } public static java.util.List<comprehensionType> to_comprehensionList(Object o) { - return null; + return (java.util.List<comprehensionType>)comprehensionAdapter.adaptIter(o); } public static java.util.List<excepthandlerType> to_excepthandlerList(Object o) { - return null; + return (java.util.List<excepthandlerType>)excepthandlerAdapter.adaptIter(o); } public static java.util.List<exprType> to_exprList(Object o) { - return null; + return (java.util.List<exprType>)exprAdapter.adaptIter(o); } public static java.util.List<String> to_identifierList(Object o) { - return null; + return (java.util.List<String>)identifierAdapter.adaptIter(o); } public static java.util.List<keywordType> to_keywordList(Object o) { - return null; + return (java.util.List<keywordType>)keywordAdapter.adaptIter(o); } public static java.util.List<sliceType> to_sliceList(Object o) { - return null; + return (java.util.List<sliceType>)sliceAdapter.adaptIter(o); } public static java.util.List<stmtType> to_stmtList(Object o) { - return null; + return (java.util.List<stmtType>)stmtAdapter.adaptIter(o); } public static exprType to_expr(Object o) { - if (o == null || o instanceof exprType) { - return (exprType)o; - } else if (o instanceof Integer) { - return new Num(new PyInteger((Integer)o)); - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to expr node"); + return (exprType)exprAdapter.adapt(o); } public static int to_int(Object o) { @@ -63,11 +67,7 @@ } public static String to_identifier(Object o) { - if (o == null || o instanceof String) { - return (String)o; - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to identifier node"); + return (String)identifierAdapter.adapt(o); } public static expr_contextType to_expr_context(Object o) { @@ -79,22 +79,11 @@ } public static sliceType to_slice(Object o) { - if (o == null || o instanceof sliceType) { - return (sliceType)o; - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to slice node"); + return (sliceType)sliceAdapter.adapt(o); } public static stmtType to_stmt(Object o) { - if (o instanceof PyJavaInstance) { - o = ((PyJavaInstance)o).__tojava__(stmtType.class); - } - if (o == null || o instanceof stmtType) { - return (stmtType)o; - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to stmt node"); + return (stmtType)stmtAdapter.adapt(o); } public static String to_string(Object o) { @@ -129,12 +118,9 @@ throw Py.TypeError("Can't convert " + o.getClass().getName() + " to arguments node"); } + //XXX: clearly this isn't necessary -- need to adjust the code generation. public static Object to_object(Object o) { - if (o == null || o instanceof Object) { - return (Object)o; - } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to object node"); + return o; } public static Boolean to_bool(Object o) { Deleted: branches/astwrite/src/org/python/antlr/adapter/AstObjectAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/AstObjectAdapter.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/adapter/AstObjectAdapter.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -1,5 +0,0 @@ -package org.python.antlr.adapter; - -public interface AstObjectAdapter { - public Object adapt(Object o); -} Added: branches/astwrite/src/org/python/antlr/adapter/CmpopAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/CmpopAdapter.java (rev 0) +++ branches/astwrite/src/org/python/antlr/adapter/CmpopAdapter.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -0,0 +1,34 @@ +package org.python.antlr.adapter; + +import org.python.core.Py; +import org.python.core.PyJavaInstance; + +import org.python.antlr.ast.cmpopType; + +import java.util.ArrayList; +import java.util.List; + +public class CmpopAdapter implements AstAdapter { + + public Object adapt(Object o) { + if (o == null) { + return o; + } + if (o instanceof PyJavaInstance) { + o = ((PyJavaInstance)o).__tojava__(cmpopType.class); + } + if (o instanceof cmpopType) { + return o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to cmpop node"); + } + + public Object adaptIter(Object iter) { + List<cmpopType> cmpops = new ArrayList<cmpopType>(); + for(Object o : (Iterable)iter) { + cmpops.add((cmpopType)adapt(o)); + } + return cmpops; + } +} Added: branches/astwrite/src/org/python/antlr/adapter/ComprehensionAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/ComprehensionAdapter.java (rev 0) +++ branches/astwrite/src/org/python/antlr/adapter/ComprehensionAdapter.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -0,0 +1,34 @@ +package org.python.antlr.adapter; + +import org.python.core.Py; +import org.python.core.PyJavaInstance; + +import org.python.antlr.ast.comprehensionType; + +import java.util.ArrayList; +import java.util.List; + +public class ComprehensionAdapter implements AstAdapter { + + public Object adapt(Object o) { + if (o == null) { + return o; + } + if (o instanceof PyJavaInstance) { + o = ((PyJavaInstance)o).__tojava__(comprehensionType.class); + } + if (o instanceof comprehensionType) { + return o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to comprehension node"); + } + + public Object adaptIter(Object iter) { + List<comprehensionType> comprehensions = new ArrayList<comprehensionType>(); + for(Object o : (Iterable)iter) { + comprehensions.add((comprehensionType)adapt(o)); + } + return comprehensions; + } +} Added: branches/astwrite/src/org/python/antlr/adapter/ExcepthandlerAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/ExcepthandlerAdapter.java (rev 0) +++ branches/astwrite/src/org/python/antlr/adapter/ExcepthandlerAdapter.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -0,0 +1,37 @@ +package org.python.antlr.adapter; + +import org.python.core.Py; +import org.python.core.PyJavaInstance; + +import org.python.antlr.ast.excepthandlerType; +import org.python.antlr.ast.Num; + +import java.util.ArrayList; +import java.util.List; + +public class ExcepthandlerAdapter implements AstAdapter { + + public Object adapt(Object o) { + if (o == null) { + return o; + } + if (o instanceof PyJavaInstance) { + o = ((PyJavaInstance)o).__tojava__(excepthandlerType.class); + } + if (o instanceof excepthandlerType) { + return o; + } + + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to excepthandler node"); + } + + public Object adaptIter(Object iter) { + List<excepthandlerType> excepthandlers = new ArrayList<excepthandlerType>(); + for(Object o : (Iterable)iter) { + excepthandlers.add((excepthandlerType)adapt(o)); + } + return excepthandlers; + } + +} Added: branches/astwrite/src/org/python/antlr/adapter/ExprAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/ExprAdapter.java (rev 0) +++ branches/astwrite/src/org/python/antlr/adapter/ExprAdapter.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -0,0 +1,40 @@ +package org.python.antlr.adapter; + +import org.python.core.Py; +import org.python.core.PyInteger; +import org.python.core.PyJavaInstance; + +import org.python.antlr.ast.exprType; +import org.python.antlr.ast.Num; + +import java.util.ArrayList; +import java.util.List; + +public class ExprAdapter implements AstAdapter { + + public Object adapt(Object o) { + if (o == null) { + return o; + } + if (o instanceof PyJavaInstance) { + o = ((PyJavaInstance)o).__tojava__(exprType.class); + } + if (o instanceof exprType) { + return o; + } else if (o instanceof Integer) { + return new Num(new PyInteger((Integer)o)); + } + + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to expr node"); + } + + public Object adaptIter(Object iter) { + List<exprType> exprs = new ArrayList<exprType>(); + for(Object o : (Iterable)iter) { + exprs.add((exprType)adapt(o)); + } + return exprs; + } + +} Added: branches/astwrite/src/org/python/antlr/adapter/IdentifierAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/IdentifierAdapter.java (rev 0) +++ branches/astwrite/src/org/python/antlr/adapter/IdentifierAdapter.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -0,0 +1,36 @@ +package org.python.antlr.adapter; + +import org.python.core.Py; +import org.python.core.PyJavaInstance; + +import org.python.antlr.ast.Num; + +import java.util.ArrayList; +import java.util.List; + +public class IdentifierAdapter implements AstAdapter { + + public Object adapt(Object o) { + if (o == null) { + return o; + } + if (o instanceof PyJavaInstance) { + o = ((PyJavaInstance)o).__tojava__(String.class); + } + if (o instanceof String) { + return o; + } + + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to identifier node"); + } + + public Object adaptIter(Object iter) { + List<String> identifiers = new ArrayList<String>(); + for(Object o : (Iterable)iter) { + identifiers.add((String)adapt(o)); + } + return identifiers; + } + +} Added: branches/astwrite/src/org/python/antlr/adapter/KeywordAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/KeywordAdapter.java (rev 0) +++ branches/astwrite/src/org/python/antlr/adapter/KeywordAdapter.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -0,0 +1,35 @@ +package org.python.antlr.adapter; + +import org.python.core.Py; +import org.python.core.PyJavaInstance; + +import org.python.antlr.ast.keywordType; + +import java.util.ArrayList; +import java.util.List; + +public class KeywordAdapter implements AstAdapter { + + public Object adapt(Object o) { + if (o == null) { + return o; + } + if (o instanceof PyJavaInstance) { + o = ((PyJavaInstance)o).__tojava__(keywordType.class); + } + if (o instanceof keywordType) { + return o; + } + + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to keyword node"); + } + + public Object adaptIter(Object iter) { + List<keywordType> keywords = new ArrayList<keywordType>(); + for(Object o : (Iterable)iter) { + keywords.add((keywordType)adapt(o)); + } + return keywords; + } +} Modified: branches/astwrite/src/org/python/antlr/adapter/ListWrapper.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/ListWrapper.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/adapter/ListWrapper.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -5,18 +5,23 @@ import java.util.Iterator; import java.util.List; import java.util.ListIterator; + +import org.python.core.Py; import org.python.core.PyObject; public class ListWrapper implements List { private List list; - private AstObjectAdapter adapter; + private AstAdapter adapter; public ListWrapper(List list) { + if (list == null) { + throw Py.TypeError("AST list can't be None"); + } this.list = list; } - public ListWrapper(List list, AstObjectAdapter adapter) { + public ListWrapper(List list, AstAdapter adapter) { this.adapter = adapter; this.list = list; } Added: branches/astwrite/src/org/python/antlr/adapter/SliceAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/SliceAdapter.java (rev 0) +++ branches/astwrite/src/org/python/antlr/adapter/SliceAdapter.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -0,0 +1,37 @@ +package org.python.antlr.adapter; + +import org.python.core.Py; +import org.python.core.PyJavaInstance; + +import org.python.antlr.ast.sliceType; +import org.python.antlr.ast.Num; + +import java.util.ArrayList; +import java.util.List; + +public class SliceAdapter implements AstAdapter { + + public Object adapt(Object o) { + if (o == null) { + return o; + } + if (o instanceof PyJavaInstance) { + o = ((PyJavaInstance)o).__tojava__(sliceType.class); + } + if (o instanceof sliceType) { + return o; + } + + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to slice node"); + } + + public Object adaptIter(Object iter) { + List<sliceType> slices = new ArrayList<sliceType>(); + for(Object o : (Iterable)iter) { + slices.add((sliceType)adapt(o)); + } + return slices; + } + +} Copied: branches/astwrite/src/org/python/antlr/adapter/StmtAdapter.java (from rev 5636, branches/astwrite/src/org/python/antlr/adapter/StmtListAdapter.java) =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/StmtAdapter.java (rev 0) +++ branches/astwrite/src/org/python/antlr/adapter/StmtAdapter.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -0,0 +1,34 @@ +package org.python.antlr.adapter; + +import org.python.core.Py; +import org.python.core.PyJavaInstance; + +import org.python.antlr.ast.stmtType; + +import java.util.ArrayList; +import java.util.List; + +public class StmtAdapter implements AstAdapter { + + public Object adapt(Object o) { + if (o == null) { + return o; + } + if (o instanceof PyJavaInstance) { + o = ((PyJavaInstance)o).__tojava__(stmtType.class); + } + if (o instanceof stmtType) { + return o; + } + //FIXME: investigate the right exception + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to stmt node"); + } + + public Object adaptIter(Object iter) { + List<stmtType> stmts = new ArrayList<stmtType>(); + for(Object o : (Iterable)iter) { + stmts.add((stmtType)adapt(o)); + } + return stmts; + } +} Deleted: branches/astwrite/src/org/python/antlr/adapter/StmtListAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/StmtListAdapter.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/adapter/StmtListAdapter.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -1,22 +0,0 @@ -package org.python.antlr.adapter; - -import org.python.antlr.ast.stmtType; - -import java.util.ArrayList; -import java.util.List; - -public class StmtListAdapter implements AstObjectAdapter { - public Object adaptList(Object list) { - List<stmtType> s = new ArrayList<stmtType>(); - if (list instanceof List) { - for (Object o : (List)list) { - s.add(AstAdapters.to_stmt(o)); - } - } - return s; - } - - public Object adapt(Object o) { - return AstAdapters.to_stmt(o); - } -} Modified: branches/astwrite/src/org/python/antlr/ast/Assign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -15,7 +15,7 @@ return targets; } public Object getTargets() { - return new ListWrapper(targets); + return new ListWrapper(targets, AstAdapters.exprAdapter); } public void setTargets(Object targets) { this.targets = AstAdapters.to_exprList(targets); Modified: branches/astwrite/src/org/python/antlr/ast/BoolOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -26,7 +26,7 @@ return values; } public Object getValues() { - return new ListWrapper(values); + return new ListWrapper(values, AstAdapters.exprAdapter); } public void setValues(Object values) { this.values = AstAdapters.to_exprList(values); Modified: branches/astwrite/src/org/python/antlr/ast/Call.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Call.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/ast/Call.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -26,7 +26,7 @@ return args; } public Object getArgs() { - return new ListWrapper(args); + return new ListWrapper(args, AstAdapters.exprAdapter); } public void setArgs(Object args) { this.args = AstAdapters.to_exprList(args); @@ -37,7 +37,7 @@ return keywords; } public Object getKeywords() { - return new ListWrapper(keywords); + return new ListWrapper(keywords, AstAdapters.keywordAdapter); } public void setKeywords(Object keywords) { this.keywords = AstAdapters.to_keywordList(keywords); Modified: branches/astwrite/src/org/python/antlr/ast/ClassDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -26,7 +26,7 @@ return bases; } public Object getBases() { - return new ListWrapper(bases); + return new ListWrapper(bases, AstAdapters.exprAdapter); } public void setBases(Object bases) { this.bases = AstAdapters.to_exprList(bases); @@ -37,7 +37,7 @@ return body; } public Object getBody() { - return new ListWrapper(body); + return new ListWrapper(body, AstAdapters.stmtAdapter); } public void setBody(Object body) { this.body = AstAdapters.to_stmtList(body); @@ -48,7 +48,7 @@ return decorators; } public Object getDecorators() { - return new ListWrapper(decorators); + return new ListWrapper(decorators, AstAdapters.exprAdapter); } public void setDecorators(Object decorators) { this.decorators = AstAdapters.to_exprList(decorators); Modified: branches/astwrite/src/org/python/antlr/ast/Compare.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -26,7 +26,7 @@ return ops; } public Object getOps() { - return new ListWrapper(ops); + return new ListWrapper(ops, AstAdapters.cmpopAdapter); } public void setOps(Object ops) { this.ops = AstAdapters.to_cmpopList(ops); @@ -37,7 +37,7 @@ return comparators; } public Object getComparators() { - return new ListWrapper(comparators); + return new ListWrapper(comparators, AstAdapters.exprAdapter); } public void setComparators(Object comparators) { this.comparators = AstAdapters.to_exprList(comparators); Modified: branches/astwrite/src/org/python/antlr/ast/Delete.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -15,7 +15,7 @@ return targets; } public Object getTargets() { - return new ListWrapper(targets); + return new ListWrapper(targets, AstAdapters.exprAdapter); } public void setTargets(Object targets) { this.targets = AstAdapters.to_exprList(targets); Modified: branches/astwrite/src/org/python/antlr/ast/Dict.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -15,7 +15,7 @@ return keys; } public Object getKeys() { - return new ListWrapper(keys); + return new ListWrapper(keys, AstAdapters.exprAdapter); } public void setKeys(Object keys) { this.keys = AstAdapters.to_exprList(keys); @@ -26,7 +26,7 @@ return values; } public Object getValues() { - return new ListWrapper(values); + return new ListWrapper(values, AstAdapters.exprAdapter); } public void setValues(Object values) { this.values = AstAdapters.to_exprList(values); Modified: branches/astwrite/src/org/python/antlr/ast/ExtSlice.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -15,7 +15,7 @@ return dims; } public Object getDims() { - return new ListWrapper(dims); + return new ListWrapper(dims, AstAdapters.sliceAdapter); } public void setDims(Object dims) { this.dims = AstAdapters.to_sliceList(dims); Modified: branches/astwrite/src/org/python/antlr/ast/For.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/For.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/ast/For.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -37,7 +37,7 @@ return body; } public Object getBody() { - return new ListWrapper(body); + return new ListWrapper(body, AstAdapters.stmtAdapter); } public void setBody(Object body) { this.body = AstAdapters.to_stmtList(body); @@ -48,7 +48,7 @@ return orelse; } public Object getOrelse() { - return new ListWrapper(orelse); + return new ListWrapper(orelse, AstAdapters.stmtAdapter); } public void setOrelse(Object orelse) { this.orelse = AstAdapters.to_stmtList(orelse); Modified: branches/astwrite/src/org/python/antlr/ast/FunctionDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -37,7 +37,7 @@ return body; } public Object getBody() { - return new ListWrapper(body); + return new ListWrapper(body, AstAdapters.stmtAdapter); } public void setBody(Object body) { this.body = AstAdapters.to_stmtList(body); @@ -48,7 +48,7 @@ return decorators; } public Object getDecorators() { - return new ListWrapper(decorators); + return new ListWrapper(decorators, AstAdapters.exprAdapter); } public void setDecorators(Object decorators) { this.decorators = AstAdapters.to_exprList(decorators); Modified: branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -26,7 +26,7 @@ return generators; } public Object getGenerators() { - return new ListWrapper(generators); + return new ListWrapper(generators, AstAdapters.comprehensionAdapter); } public void setGenerators(Object generators) { this.generators = AstAdapters.to_comprehensionList(generators); Modified: branches/astwrite/src/org/python/antlr/ast/Global.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Global.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/ast/Global.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -15,7 +15,7 @@ return names; } public Object getNames() { - return new ListWrapper(names); + return new ListWrapper(names, AstAdapters.identifierAdapter); } public void setNames(Object names) { this.names = AstAdapters.to_identifierList(names); Modified: branches/astwrite/src/org/python/antlr/ast/If.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/If.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/ast/If.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -26,7 +26,7 @@ return body; } public Object getBody() { - return new ListWrapper(body); + return new ListWrapper(body, AstAdapters.stmtAdapter); } public void setBody(Object body) { this.body = AstAdapters.to_stmtList(body); @@ -37,7 +37,7 @@ return orelse; } public Object getOrelse() { - return new ListWrapper(orelse); + return new ListWrapper(orelse, AstAdapters.stmtAdapter); } public void setOrelse(Object orelse) { this.orelse = AstAdapters.to_stmtList(orelse); Modified: branches/astwrite/src/org/python/antlr/ast/Import.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Import.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/ast/Import.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -15,7 +15,7 @@ return names; } public Object getNames() { - return new ListWrapper(names); + return new ListWrapper(names, AstAdapters.aliasAdapter); } public void setNames(Object names) { this.names = AstAdapters.to_aliasList(names); Modified: branches/astwrite/src/org/python/antlr/ast/ImportFrom.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ImportFrom.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/ast/ImportFrom.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -26,7 +26,7 @@ return names; } public Object getNames() { - return new ListWrapper(names); + return new ListWrapper(names, AstAdapters.aliasAdapter); } public void setNames(Object names) { this.names = AstAdapters.to_aliasList(names); Modified: branches/astwrite/src/org/python/antlr/ast/Interactive.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Interactive.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/ast/Interactive.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -15,7 +15,7 @@ return body; } public Object getBody() { - return new ListWrapper(body); + return new ListWrapper(body, AstAdapters.stmtAdapter); } public void setBody(Object body) { this.body = AstAdapters.to_stmtList(body); Modified: branches/astwrite/src/org/python/antlr/ast/List.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/List.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/ast/List.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -15,7 +15,7 @@ return elts; } public Object getElts() { - return new ListWrapper(elts); + return new ListWrapper(elts, AstAdapters.exprAdapter); } public void setElts(Object elts) { this.elts = AstAdapters.to_exprList(elts); Modified: branches/astwrite/src/org/python/antlr/ast/ListComp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ListComp.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/ast/ListComp.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -26,7 +26,7 @@ return generators; } public Object getGenerators() { - return new ListWrapper(generators); + return new ListWrapper(generators, AstAdapters.comprehensionAdapter); } public void setGenerators(Object generators) { this.generators = AstAdapters.to_comprehensionList(generators); Modified: branches/astwrite/src/org/python/antlr/ast/Module.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Module.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/ast/Module.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -15,7 +15,7 @@ return body; } public Object getBody() { - return new ListWrapper(body); + return new ListWrapper(body, AstAdapters.stmtAdapter); } public void setBody(Object body) { this.body = AstAdapters.to_stmtList(body); Modified: branches/astwrite/src/org/python/antlr/ast/Print.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Print.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/ast/Print.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -26,7 +26,7 @@ return values; } public Object getValues() { - return new ListWrapper(values); + return new ListWrapper(values, AstAdapters.exprAdapter); } public void setValues(Object values) { this.values = AstAdapters.to_exprList(values); Modified: branches/astwrite/src/org/python/antlr/ast/Suite.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Suite.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/ast/Suite.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -15,7 +15,7 @@ return body; } public Object getBody() { - return new ListWrapper(body); + return new ListWrapper(body, AstAdapters.stmtAdapter); } public void setBody(Object body) { this.body = AstAdapters.to_stmtList(body); Modified: branches/astwrite/src/org/python/antlr/ast/TryExcept.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/TryExcept.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/ast/TryExcept.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -15,7 +15,7 @@ return body; } public Object getBody() { - return new ListWrapper(body); + return new ListWrapper(body, AstAdapters.stmtAdapter); } public void setBody(Object body) { this.body = AstAdapters.to_stmtList(body); @@ -26,7 +26,7 @@ return handlers; } public Object getHandlers() { - return new ListWrapper(handlers); + return new ListWrapper(handlers, AstAdapters.excepthandlerAdapter); } public void setHandlers(Object handlers) { this.handlers = AstAdapters.to_excepthandlerList(handlers); @@ -37,7 +37,7 @@ return orelse; } public Object getOrelse() { - return new ListWrapper(orelse); + return new ListWrapper(orelse, AstAdapters.stmtAdapter); } public void setOrelse(Object orelse) { this.orelse = AstAdapters.to_stmtList(orelse); Modified: branches/astwrite/src/org/python/antlr/ast/TryFinally.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/TryFinally.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/ast/TryFinally.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -15,7 +15,7 @@ return body; } public Object getBody() { - return new ListWrapper(body); + return new ListWrapper(body, AstAdapters.stmtAdapter); } public void setBody(Object body) { this.body = AstAdapters.to_stmtList(body); @@ -26,7 +26,7 @@ return finalbody; } public Object getFinalbody() { - return new ListWrapper(finalbody); + return new ListWrapper(finalbody, AstAdapters.stmtAdapter); } public void setFinalbody(Object finalbody) { this.finalbody = AstAdapters.to_stmtList(finalbody); Modified: branches/astwrite/src/org/python/antlr/ast/Tuple.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Tuple.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/ast/Tuple.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -15,7 +15,7 @@ return elts; } public Object getElts() { - return new ListWrapper(elts); + return new ListWrapper(elts, AstAdapters.exprAdapter); } public void setElts(Object elts) { this.elts = AstAdapters.to_exprList(elts); Modified: branches/astwrite/src/org/python/antlr/ast/While.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/While.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/ast/While.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -26,7 +26,7 @@ return body; } public Object getBody() { - return new ListWrapper(body); + return new ListWrapper(body, AstAdapters.stmtAdapter); } public void setBody(Object body) { this.body = AstAdapters.to_stmtList(body); @@ -37,7 +37,7 @@ return orelse; } public Object getOrelse() { - return new ListWrapper(orelse); + return new ListWrapper(orelse, AstAdapters.stmtAdapter); } public void setOrelse(Object orelse) { this.orelse = AstAdapters.to_stmtList(orelse); Modified: branches/astwrite/src/org/python/antlr/ast/With.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/With.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/ast/With.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -37,7 +37,7 @@ return body; } public Object getBody() { - return new ListWrapper(body); + return new ListWrapper(body, AstAdapters.stmtAdapter); } public void setBody(Object body) { this.body = AstAdapters.to_stmtList(body); Modified: branches/astwrite/src/org/python/antlr/ast/argumentsType.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/argumentsType.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/ast/argumentsType.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -15,7 +15,7 @@ return args; } public Object getArgs() { - return new ListWrapper(args); + return new ListWrapper(args, AstAdapters.exprAdapter); } public void setArgs(Object args) { this.args = AstAdapters.to_exprList(args); @@ -48,7 +48,7 @@ return defaults; } public Object getDefaults() { - return new ListWrapper(defaults); + return new ListWrapper(defaults, AstAdapters.exprAdapter); } public void setDefaults(Object defaults) { this.defaults = AstAdapters.to_exprList(defaults); Modified: branches/astwrite/src/org/python/antlr/ast/comprehensionType.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/comprehensionType.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/ast/comprehensionType.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -37,7 +37,7 @@ return ifs; } public Object getIfs() { - return new ListWrapper(ifs); + return new ListWrapper(ifs, AstAdapters.exprAdapter); } public void setIfs(Object ifs) { this.ifs = AstAdapters.to_exprList(ifs); Modified: branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java 2008-11-25 21:09:57 UTC (rev 5640) +++ branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java 2008-11-26 03:42:02 UTC (rev 5641) @@ -37,7 +37,7 @@ return body; } public Object getBody() { - return new ListWrapper(body); + return new ListWrapper(body, AstAdapters.stmtAdapter); } public void setBody(Object body) { this.body = AstAdapters.to_stmtList(body); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fwi...@us...> - 2008-11-26 05:19:44
|
Revision: 5642 http://jython.svn.sourceforge.net/jython/?rev=5642&view=rev Author: fwierzbicki Date: 2008-11-26 05:19:41 +0000 (Wed, 26 Nov 2008) Log Message: ----------- Applied Geoffrey French's collection fixes as this gets me further along in my experiments and I expect Geoffrey's fixes will make it into trunk via the java-newsytle branch. I'm not planning to do a direct merge from this branch back to trunk anyway. Thanks Geoffrey for the patch! Modified Paths: -------------- branches/astwrite/Lib/test/test_ast.py branches/astwrite/src/org/python/antlr/adapter/ExprAdapter.java branches/astwrite/src/org/python/antlr/adapter/ListWrapper.java branches/astwrite/src/org/python/core/AbstractArray.java branches/astwrite/src/org/python/core/CollectionProxy.java branches/astwrite/src/org/python/core/PyInstance.java branches/astwrite/src/org/python/core/PyList.java Modified: branches/astwrite/Lib/test/test_ast.py =================================================================== --- branches/astwrite/Lib/test/test_ast.py 2008-11-26 03:42:02 UTC (rev 5641) +++ branches/astwrite/Lib/test/test_ast.py 2008-11-26 05:19:41 UTC (rev 5642) @@ -34,7 +34,7 @@ return t elif isinstance(t, ast_list): return [to_tuple(e) for e in t] - result = [t.__class__.__name__] + result = [get_class_name(t)] if hasattr(t, 'lineno') and hasattr(t, 'col_offset'): result.append((t.lineno, t.col_offset)) if t._fields is None: @@ -219,17 +219,17 @@ def test_dump(self): node = ast.parse('spam(eggs, "and cheese")') self.assertEqual(ast.dump(node), - "Module(body=[Expr(value=Call(func=Name(id='spam', ctx=Load()), " - "args=[Name(id='eggs', ctx=Load()), Str(s='and cheese')], " + u"Module(body=[Expr(value=Call(func=Name(id=u'spam', ctx=Load()), " + "args=[Name(id=u'eggs', ctx=Load()), Str(s='and cheese')], " "keywords=[], starargs=None, kwargs=None))])" ) self.assertEqual(ast.dump(node, annotate_fields=False), - "Module([Expr(Call(Name('spam', Load()), [Name('eggs', Load()), " + "Module([Expr(Call(Name(u'spam', Load()), [Name(u'eggs', Load()), " "Str('and cheese')], [], None, None))])" ) self.assertEqual(ast.dump(node, include_attributes=True), - "Module(body=[Expr(value=Call(func=Name(id='spam', ctx=Load(), " - "lineno=1, col_offset=0), args=[Name(id='eggs', ctx=Load(), " + "Module(body=[Expr(value=Call(func=Name(id=u'spam', ctx=Load(), " + "lineno=1, col_offset=0), args=[Name(id=u'eggs', ctx=Load(), " "lineno=1, col_offset=5), Str(s='and cheese', lineno=1, " "col_offset=11)], keywords=[], starargs=None, kwargs=None, " "lineno=1, col_offset=0), lineno=1, col_offset=0)])" Modified: branches/astwrite/src/org/python/antlr/adapter/ExprAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/ExprAdapter.java 2008-11-26 03:42:02 UTC (rev 5641) +++ branches/astwrite/src/org/python/antlr/adapter/ExprAdapter.java 2008-11-26 05:19:41 UTC (rev 5642) @@ -2,10 +2,12 @@ import org.python.core.Py; import org.python.core.PyInteger; +import org.python.core.PyString; import org.python.core.PyJavaInstance; import org.python.antlr.ast.exprType; import org.python.antlr.ast.Num; +import org.python.antlr.ast.Str; import java.util.ArrayList; import java.util.List; @@ -23,6 +25,8 @@ return o; } else if (o instanceof Integer) { return new Num(new PyInteger((Integer)o)); + } else if (o instanceof String) { + return new Str(new PyString((String)o)); } //FIXME: investigate the right exception Modified: branches/astwrite/src/org/python/antlr/adapter/ListWrapper.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/ListWrapper.java 2008-11-26 03:42:02 UTC (rev 5641) +++ branches/astwrite/src/org/python/antlr/adapter/ListWrapper.java 2008-11-26 05:19:41 UTC (rev 5642) @@ -8,6 +8,7 @@ import org.python.core.Py; import org.python.core.PyObject; +import org.python.core.PySequence; public class ListWrapper implements List { @@ -15,15 +16,15 @@ private AstAdapter adapter; public ListWrapper(List list) { + this(list, null); + } + + public ListWrapper(List list, AstAdapter adapter) { if (list == null) { throw Py.TypeError("AST list can't be None"); } this.list = list; - } - - public ListWrapper(List list, AstAdapter adapter) { this.adapter = adapter; - this.list = list; } public boolean containsAll(Collection c) { @@ -118,6 +119,7 @@ return list.subList(fromIndex, toIndex); } + /* public ListWrapper __add__(Object o) { List newList = new ArrayList(); newList.addAll(list); @@ -125,10 +127,6 @@ return new ListWrapper(newList); } - public void __iadd__(PyObject o) { - extend(o); - } - public int __len__() { return list.size(); } @@ -138,87 +136,91 @@ } public PyObject __imul__(PyObject o) { - throw new UnsupportedOperationException("Not supported yet."); + throw new UnsupportedOperationException("1 Not supported yet."); } public PyObject __iter__() { - throw new UnsupportedOperationException("Not supported yet."); + throw new UnsupportedOperationException("2 Not supported yet."); } public PyObject __mul__(PyObject o) { - throw new UnsupportedOperationException("Not supported yet."); + throw new UnsupportedOperationException("3 Not supported yet."); } public PyObject __radd__(PyObject o) { - throw new UnsupportedOperationException("Not supported yet."); + throw new UnsupportedOperationException("4 Not supported yet."); } public PyObject __rmul__(PyObject o) { - throw new UnsupportedOperationException("Not supported yet."); + throw new UnsupportedOperationException("5 Not supported yet."); } + */ public void append(PyObject o) { list.add(adapter.adapt(o)); } public int count(PyObject o) { - throw new UnsupportedOperationException("Not supported yet."); + throw new UnsupportedOperationException("6 Not supported yet."); } protected void del(int i) { - throw new UnsupportedOperationException("Not supported yet."); + throw new UnsupportedOperationException("7 Not supported yet."); } protected void delRange(int start, int stop, int step) { - throw new UnsupportedOperationException("Not supported yet."); + throw new UnsupportedOperationException("8 Not supported yet."); } public void extend(PyObject o) { - throw new UnsupportedOperationException("Not supported yet."); + throw new UnsupportedOperationException("9 Not supported yet."); } public int index(PyObject o) { - throw new UnsupportedOperationException("Not supported yet."); + throw new UnsupportedOperationException("10 Not supported yet."); } public int index(PyObject o, int start) { - throw new UnsupportedOperationException("Not supported yet."); + throw new UnsupportedOperationException("11 Not supported yet."); } public int index(PyObject o, int start, int stop) { - throw new UnsupportedOperationException("Not supported yet."); + throw new UnsupportedOperationException("12 Not supported yet."); } public void insert(int index, PyObject o) { - throw new UnsupportedOperationException("Not supported yet."); + throw new UnsupportedOperationException("13 Not supported yet."); } public PyObject pop() { - throw new UnsupportedOperationException("Not supported yet."); + throw new UnsupportedOperationException("14 Not supported yet."); } public PyObject pop(int n) { - throw new UnsupportedOperationException("Not supported yet."); + throw new UnsupportedOperationException("15 Not supported yet."); } public void remove(PyObject o) { - throw new UnsupportedOperationException("Not supported yet."); + throw new UnsupportedOperationException("16 Not supported yet."); } public void reverse() { - throw new UnsupportedOperationException("Not supported yet."); + throw new UnsupportedOperationException("17 Not supported yet."); } public void sort(PyObject compare) { - throw new UnsupportedOperationException("Not supported yet."); + throw new UnsupportedOperationException("18 Not supported yet."); } public void sort() { - throw new UnsupportedOperationException("Not supported yet."); + throw new UnsupportedOperationException("19 Not supported yet."); } public void sort(PyObject cmp, PyObject key, PyObject reverse) { - throw new UnsupportedOperationException("Not supported yet."); + throw new UnsupportedOperationException("20 Not supported yet."); } - + + public String toString() { + return list.toString(); + } } Modified: branches/astwrite/src/org/python/core/AbstractArray.java =================================================================== --- branches/astwrite/src/org/python/core/AbstractArray.java 2008-11-26 03:42:02 UTC (rev 5641) +++ branches/astwrite/src/org/python/core/AbstractArray.java 2008-11-26 05:19:41 UTC (rev 5642) @@ -383,7 +383,7 @@ } throw new IndexOutOfBoundsException("start and stop must follow: 0 <= start <= stop <= " + - (this.size - 1) + ", but found start= " + start + " and stop=" + stop); + this.size + ", but found start= " + start + " and stop=" + stop); } /** Modified: branches/astwrite/src/org/python/core/CollectionProxy.java =================================================================== --- branches/astwrite/src/org/python/core/CollectionProxy.java 2008-11-26 03:42:02 UTC (rev 5641) +++ branches/astwrite/src/org/python/core/CollectionProxy.java 2008-11-26 05:19:41 UTC (rev 5642) @@ -2,6 +2,7 @@ package org.python.core; +import java.util.Arrays; import java.util.Collection; import java.util.Dictionary; import java.util.Enumeration; @@ -17,6 +18,9 @@ if (object == null) return NoProxy; + if (object instanceof Vector) { + return new VectorProxy(((Vector) object)); + } if (object instanceof List) { return new ListProxy(((List) object)); } @@ -31,9 +35,6 @@ } - if (object instanceof Vector) { - return new VectorProxy(((Vector) object)); - } if (object instanceof Enumeration) { return new EnumerationProxy(((Enumeration) object)); } @@ -112,10 +113,13 @@ } } -class VectorProxy extends CollectionProxy { - Vector proxy; - public VectorProxy(Vector proxy) { + + +class ListProxy extends CollectionProxy { + List proxy; + + public ListProxy(List proxy) { this.proxy = proxy; } @@ -124,71 +128,222 @@ } public PyObject __finditem__(int key) { + int k = key < 0 ? key + this.proxy.size() : key; try { - return Py.java2py(this.proxy.elementAt(key)); - } catch (ArrayIndexOutOfBoundsException exc) { - return null; + return Py.java2py(this.proxy.get(k)); + } catch (IndexOutOfBoundsException exc) { + throw Py.IndexError("index out of range: " + String.valueOf(key)); } } + protected PyObject __finditem__(int start, int stop, int step, int n) { + if(step > 0 && stop < start) { + stop = start; + } + PyObject[] newList = new PyObject[n]; + if(step == 1) { + for (int i = start; i < stop; i++) + { + newList[i-start] = Py.java2py(this.proxy.get(i)); + } + return new PyList(newList); + } + int j = 0; + for(int i = start; j < n; i += step) { + newList[j] = Py.java2py(this.proxy.get(i)); + j++; + } + return new PyList(newList); + } + public PyObject __finditem__(PyObject key) { if (key instanceof PyInteger) { return __finditem__(((PyInteger) key).getValue()); + } else if (key instanceof PySlice) { + PySlice slice = (PySlice)key; + int indices[] = slice.indicesEx(this.proxy.size()); + return __finditem__(indices[0], indices[1], indices[2], indices[3]); } else { - throw Py.TypeError("only integer keys accepted"); + throw Py.TypeError("only integer or slice keys accepted"); } } + public void __setitem__(int key, PyObject value) { + int k = key < 0 ? key + this.proxy.size() : key; + try { + this.proxy.set(k, Py.tojava(value, Object.class)); + } catch (IndexOutOfBoundsException exc) { + throw Py.IndexError("assignment index out of range: " + String.valueOf(key)); + } + } + public void __setitem__(PyObject key, PyObject value) { if (key instanceof PyInteger) { - this.proxy.setElementAt(Py.tojava(value, Object.class), - ((PyInteger) key).getValue()); + __setitem__(((PyInteger) key).getValue(), value); + } else if (key instanceof PySlice) { + PySlice slice = (PySlice)key; + int indices[] = slice.indicesEx(this.proxy.size()); + __setitem__(slice, indices[0], indices[1], indices[2], indices[3], value); } else { throw Py.TypeError("only integer keys accepted"); } } + public void __delitem__(int key) { + int k = key < 0 ? key + this.proxy.size() : key; + try { + this.proxy.remove(k); + } catch (IndexOutOfBoundsException exc) { + throw Py.IndexError("assignment index out of range: " + String.valueOf(key)); + } + } + + protected void __delitem__(int start, int stop, int step, int n) { + if(step == 1) { + for (int i = stop - 1; i >= start; i--) { + this.proxy.remove(i); + } + } else if(step > 1) { + for(int i = start; i < stop; i += step) { + this.proxy.remove(i); + i--; + stop--; + } + } else if(step < 0) { + for(int i = start; i >= 0 && i >= stop; i += step) { + this.proxy.remove(i); + } + } + } + public void __delitem__(PyObject key) { if (key instanceof PyInteger) { - this.proxy.removeElementAt(((PyInteger) key).getValue()); + __delitem__(((PyInteger) key).getValue()); + } else if (key instanceof PySlice) { + PySlice slice = (PySlice)key; + int indices[] = slice.indicesEx(this.proxy.size()); + __delitem__(indices[0], indices[1], indices[2], indices[3]); } else { throw Py.TypeError("only integer keys accepted"); } } -} -class DictionaryProxy extends CollectionProxy { - Dictionary proxy; - public DictionaryProxy(Dictionary proxy) { - this.proxy = proxy; + + + protected void __setitem__(PySlice slice, int start, int stop, int step, int n, PyObject value) { + if(stop < start) { + stop = start; + } + if(value instanceof PySequence) { + PySequence sequence = (PySequence) value; + setslicePySequence(slice, start, stop, step, n, sequence); + } else if(value instanceof List) { + List list = (List)value.__tojava__(List.class); + if(list != null && list != Py.NoConversion) { + setsliceList(slice, start, stop, step, list); + } + } else { + setsliceIterable(slice, start, stop, step, n, value); + } } - public int __len__() { - return this.proxy.size(); + protected void setslicePySequence(PySlice slice, int start, int stop, int step, int n, PySequence value) { + if(slice.step != Py.None) { + if(n != value.__len__()) { + throw Py.ValueError("attempt to assign sequence of size " + value.__len__() + " to extended slice of size " + n); + } + } + if(step == 1) { + PyObject[] srcArray; + Object[] jArray; + + if(value instanceof PySequenceList) { + srcArray = ((PySequenceList)value).getArray(); + } else { + srcArray = Py.unpackSequence(value, value.__len__()); + } + jArray = new Object[srcArray.length]; + for (int i = 0; i < srcArray.length; i++) { + jArray[i] = Py.tojava(srcArray[i], Object.class); + } + List sub = this.proxy.subList(start, stop); + sub.clear(); + this.proxy.addAll( start, Arrays.asList(jArray) ); + } else if(step != 0) { + for (int i = 0, j = start; i < n; i++, j += step) { + this.proxy.set(j, Py.tojava(value.pyget(i), Object.class)); + } + } } - public PyObject __finditem__(int key) { - throw Py.TypeError("loop over non-sequence"); + protected void setsliceList(PySlice slice, int start, int stop, int step, List value) { + if(step != 1) { + throw Py.TypeError("setslice with java.util.List and step != 1 not supported yet"); + } + int n = value.size(); + for(int i = 0; i < n; i++) { + this.proxy.add(i + start, value.get(i)); + } } - public PyObject __finditem__(PyObject key) { - return Py.java2py(this.proxy.get(Py.tojava(key, Object.class))); + protected void setsliceIterable(PySlice slice, int start, int stop, int step, int n, PyObject value) { + PyObject[] seq; + try { + seq = Py.make_array(value); + } catch (PyException pye) { + if (Py.matchException(pye, Py.TypeError)) { + throw Py.TypeError("can only assign an iterable"); + } + throw pye; + } + setslicePySequence(slice, start, stop, step, n, new PyList(seq)); } +} - public void __setitem__(PyObject key, PyObject value) { - this.proxy.put(Py.tojava(key, Object.class), Py.tojava(value, - Object.class)); + + + +class VectorProxy extends ListProxy { + public VectorProxy(Vector proxy) { + super(proxy); } - public void __delitem__(PyObject key) { - this.proxy.remove(Py.tojava(key, Object.class)); + public PyObject __finditem__(int key) { + int k = key < 0 ? key + this.proxy.size() : key; + try { + return Py.java2py(((Vector)this.proxy).elementAt(k)); + } catch (IndexOutOfBoundsException exc) { + throw Py.IndexError("index out of range: " + String.valueOf(key)); + } } + + public void __setitem__(int key, PyObject value) { + int k = key < 0 ? key + this.proxy.size() : key; + try { + ((Vector)this.proxy).setElementAt(Py.tojava(value, Object.class), k); + } catch (IndexOutOfBoundsException exc) { + throw Py.IndexError("assignment index out of range: " + String.valueOf(key)); + } + } + + public void __delitem__(int key) { + int k = key < 0 ? key + this.proxy.size() : key; + try { + ((Vector)this.proxy).removeElementAt(k); + } catch (IndexOutOfBoundsException exc) { + throw Py.IndexError("assignment index out of range: " + String.valueOf(key)); + } + } } -class ListProxy extends CollectionProxy { - List proxy; - public ListProxy(List proxy) { + + + +class DictionaryProxy extends CollectionProxy { + Dictionary proxy; + + public DictionaryProxy(Dictionary proxy) { this.proxy = proxy; } @@ -197,46 +352,22 @@ } public PyObject __finditem__(int key) { - try { - return Py.java2py(this.proxy.get(key)); - } catch (IndexOutOfBoundsException exc) { - return null; - } + throw Py.TypeError("loop over non-sequence"); } public PyObject __finditem__(PyObject key) { - if (key instanceof PyInteger) { - return __finditem__(((PyInteger) key).getValue()); - } else { - throw Py.TypeError("only integer keys accepted"); - } + return Py.java2py(this.proxy.get(Py.tojava(key, Object.class))); } - public void __setitem__(int key, PyObject value) { - this.proxy.set(key, Py.tojava(value, Object.class)); - } - public void __setitem__(PyObject key, PyObject value) { - if (key instanceof PyInteger) { - __setitem__(((PyInteger) key).getValue(), value); - } else { - throw Py.TypeError("only integer keys accepted"); - } + this.proxy.put(Py.tojava(key, Object.class), Py.tojava(value, + Object.class)); } - public void __delitem__(int key) { - this.proxy.remove(key); - } - public void __delitem__(PyObject key) { - if (key instanceof PyInteger) { - __delitem__(((PyInteger) key).getValue()); - } else { - throw Py.TypeError("only integer keys accepted"); - } + this.proxy.remove(Py.tojava(key, Object.class)); } } - class MapProxy extends CollectionProxy { Map proxy; Modified: branches/astwrite/src/org/python/core/PyInstance.java =================================================================== --- branches/astwrite/src/org/python/core/PyInstance.java 2008-11-26 03:42:02 UTC (rev 5641) +++ branches/astwrite/src/org/python/core/PyInstance.java 2008-11-26 05:19:41 UTC (rev 5642) @@ -10,6 +10,10 @@ public class PyInstance extends PyObject { + // Collection proxy invoke no method found error code - return an error + // code instead of using slower exceptions + public static PyObject collectionProxyNoMethodError = new PyObject(); + // xxx doc, final name public transient PyClass instclass; @@ -251,6 +255,61 @@ return __findattr__("__index__") != null; } + + public PyObject iinvoke_collectionProxy(String name) { + PyObject f = ifindlocal(name); + if (f == null) { + f = ifindclass(name, false); + if (f != null) { + if (f instanceof PyFunction) { + return f.__call__(this); + } else { + f = f.__get__(this, instclass); + } + } + } + if (f == null) f = ifindfunction(name); + if (f == null) return collectionProxyNoMethodError; + return f.__call__(); + } + + public PyObject iinvoke_collectionProxy(String name, PyObject arg1) { + PyObject f = ifindlocal(name); + if (f == null) { + f = ifindclass(name, false); + if (f != null) { + if (f instanceof PyFunction) { + return f.__call__(this, arg1); + } else { + f = f.__get__(this, instclass); + } + } + } + if (f == null) f = ifindfunction(name); + if (f == null) return collectionProxyNoMethodError; + return f.__call__(arg1); + } + + public PyObject iinvoke_collectionProxy(String name, PyObject arg1, PyObject arg2) { + PyObject f = ifindlocal(name); + if (f == null) { + f = ifindclass(name, false); + if (f != null) { + if (f instanceof PyFunction) { + return f.__call__(this, arg1, arg2); + } else { + f = f.__get__(this, instclass); + } + } + } + if (f == null) f = ifindfunction(name); + if (f == null) return collectionProxyNoMethodError; + return f.__call__(arg1, arg2); + } + + + + public PyObject invoke(String name) { PyObject f = ifindlocal(name); if (f == null) { @@ -548,16 +607,18 @@ } catch (PyException exc) { } if (meth == null) { - // Copied form __len__() - CollectionProxy proxy = getCollection(); - if (proxy != CollectionProxy.NoProxy) { - return proxy.__len__() != 0 ? true : false; - } try { meth = __findattr__("__len__"); } catch (PyException exc) { } - if (meth == null) - return true; + if (meth == null) { + // Copied form __len__() + CollectionProxy proxy = getCollection(); + if (proxy != CollectionProxy.NoProxy) { + return proxy.__len__() != 0 ? true : false; + } else { + return true; + } + } } PyObject ret = meth.__call__(); @@ -573,22 +634,21 @@ } public int __len__() { - CollectionProxy proxy = getCollection(); - if (proxy != CollectionProxy.NoProxy) { - return proxy.__len__(); + PyObject ret = iinvoke_collectionProxy("__len__"); + if (ret == collectionProxyNoMethodError) { + CollectionProxy proxy = getCollection(); + if (proxy != CollectionProxy.NoProxy) { + return proxy.__len__(); + } else { + noAttributeError("__len__"); + } } - - PyObject ret = invoke("__len__"); if (ret instanceof PyInteger) return ((PyInteger)ret).getValue(); throw Py.TypeError("__len__() should return an int"); } public PyObject __finditem__(int key) { - CollectionProxy proxy = getCollection(); - if (proxy != CollectionProxy.NoProxy) { - return proxy.__finditem__(key); - } return __finditem__(new PyInteger(key)); } @@ -614,13 +674,9 @@ } public PyObject __finditem__(PyObject key) { - CollectionProxy proxy = getCollection(); - if (proxy != CollectionProxy.NoProxy) { - return proxy.__finditem__(key); - } - + PyObject ret = null; try { - return invoke("__getitem__", key); + ret = iinvoke_collectionProxy("__getitem__", key); } catch (PyException e) { if (Py.matchException(e, Py.IndexError)) return null; @@ -628,36 +684,64 @@ return null; throw e; } + + if (ret == collectionProxyNoMethodError) { + CollectionProxy proxy = getCollection(); + if (proxy != CollectionProxy.NoProxy) { + return proxy.__finditem__(key); + } else { + noAttributeError("__getitem__"); + } + } + + return ret; } public PyObject __getitem__(PyObject key) { - CollectionProxy proxy = getCollection(); - if (proxy != CollectionProxy.NoProxy) { - PyObject ret = proxy.__finditem__(key); - if (ret == null) { - throw Py.KeyError(key.toString()); + PyObject ret = iinvoke_collectionProxy("__getitem__", key); + + if (ret == collectionProxyNoMethodError) { + CollectionProxy proxy = getCollection(); + if (proxy != CollectionProxy.NoProxy) { + ret = proxy.__finditem__(key); + if (ret == null) { + throw Py.KeyError(key.toString()); + } + return ret; + } else { + noAttributeError("__getitem__"); } - return ret; } - return invoke("__getitem__", key); + + return ret; } public void __setitem__(PyObject key, PyObject value) { - CollectionProxy proxy = getCollection(); - if (proxy != CollectionProxy.NoProxy) { - proxy.__setitem__(key, value); - return; + PyObject ret = iinvoke_collectionProxy("__setitem__", key, value); + + if (ret == collectionProxyNoMethodError) { + CollectionProxy proxy = getCollection(); + if (proxy != CollectionProxy.NoProxy) { + proxy.__setitem__(key, value); + return; + } else { + noAttributeError("__setitem__"); + } } - invoke("__setitem__", key, value); } public void __delitem__(PyObject key) { - CollectionProxy proxy = getCollection(); - if (proxy != CollectionProxy.NoProxy) { - proxy.__delitem__(key); - return; + PyObject ret = iinvoke_collectionProxy("__delitem__", key); + + if (ret == collectionProxyNoMethodError) { + CollectionProxy proxy = getCollection(); + if (proxy != CollectionProxy.NoProxy) { + proxy.__delitem__(key); + return; + } else { + noAttributeError("__delitem__"); + } } - invoke("__delitem__", key); } public PyObject __getslice__(PyObject start, PyObject stop, PyObject step) { @@ -688,16 +772,18 @@ } public PyObject __iter__() { - PyObject iter = getCollectionIter(); - if (iter != null) { - return iter; - } PyObject func = __findattr__("__iter__"); if (func != null) return func.__call__(); func = __findattr__("__getitem__"); - if (func == null) - return super.__iter__(); + if (func == null) { + PyObject iter = getCollectionIter(); + if (iter != null) { + return iter; + } else { + return super.__iter__(); + } + } return new PySequenceIter(this); } Modified: branches/astwrite/src/org/python/core/PyList.java =================================================================== --- branches/astwrite/src/org/python/core/PyList.java 2008-11-26 03:42:02 UTC (rev 5641) +++ branches/astwrite/src/org/python/core/PyList.java 2008-11-26 05:19:41 UTC (rev 5642) @@ -114,7 +114,9 @@ protected void delRange(int start, int stop, int step) { if(step == 1) { - remove(start, stop); + if ( stop > start ) { + remove(start, stop); + } } else if(step > 1) { for(int i = start; i < stop; i += step) { remove(i); @@ -164,13 +166,7 @@ otherArray = otherArray.clone(); } list.replaceSubArray(start, stop, otherArray, 0, n); - } else if(step > 1) { - int n = value.__len__(); - for(int i = 0, j = 0; i < n; i++, j += step) { - list.pyset(j + start, value.pyget(i)); - } - } else if(step < 0) { - int n = value.__len__(); + } else if(step != 0) { if(value == this) { PyList newseq = new PyList(); PyObject iter = value.__iter__(); @@ -179,7 +175,8 @@ } value = newseq; } - for(int i = 0, j = list.size() - 1; i < n; i++, j += step) { + int n = value.__len__(); + for (int i = 0, j = start; i < n; i++, j += step) { list.pyset(j, value.pyget(i)); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fwi...@us...> - 2008-11-26 19:43:32
|
Revision: 5643 http://jython.svn.sourceforge.net/jython/?rev=5643&view=rev Author: fwierzbicki Date: 2008-11-26 19:43:27 +0000 (Wed, 26 Nov 2008) Log Message: ----------- Migrated to Python.asdl from CPython 2.6. Modified Paths: -------------- branches/astwrite/Lib/inspect.py branches/astwrite/Lib/test/test_ast.py branches/astwrite/ast/Python.asdl branches/astwrite/ast/asdl_antlr.py branches/astwrite/grammar/Python.g branches/astwrite/src/org/python/antlr/adapter/ExcepthandlerAdapter.java branches/astwrite/src/org/python/antlr/ast/ClassDef.java branches/astwrite/src/org/python/antlr/ast/FunctionDef.java branches/astwrite/src/org/python/antlr/ast/VisitorBase.java branches/astwrite/src/org/python/antlr/ast/VisitorIF.java branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java branches/astwrite/src/org/python/compiler/CodeCompiler.java branches/astwrite/src/org/python/compiler/ScopesCompiler.java Added Paths: ----------- branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java Modified: branches/astwrite/Lib/inspect.py =================================================================== --- branches/astwrite/Lib/inspect.py 2008-11-26 05:19:41 UTC (rev 5642) +++ branches/astwrite/Lib/inspect.py 2008-11-26 19:43:27 UTC (rev 5643) @@ -315,6 +315,13 @@ return None if not isinstance(doc, types.StringTypes): return None + return cleandoc(doc) + +def cleandoc(doc): + """Clean up indentation from docstrings. + + Any whitespace that can be uniformly removed from the second line + onwards is removed.""" try: lines = string.split(string.expandtabs(doc), '\n') except UnicodeError: Modified: branches/astwrite/Lib/test/test_ast.py =================================================================== --- branches/astwrite/Lib/test/test_ast.py 2008-11-26 05:19:41 UTC (rev 5642) +++ branches/astwrite/Lib/test/test_ast.py 2008-11-26 19:43:27 UTC (rev 5643) @@ -250,12 +250,12 @@ [ast.Str('eggs')], [], None, None))) self.assertEqual(src, ast.fix_missing_locations(src)) self.assertEqual(ast.dump(src, include_attributes=True), - "Module(body=[Expr(value=Call(func=Name(id='write', ctx=Load(), " + u"Module(body=[Expr(value=Call(func=Name(id=u'write', ctx=Load(), " "lineno=1, col_offset=0), args=[Str(s='spam', lineno=1, " "col_offset=6)], keywords=[], starargs=None, kwargs=None, " "lineno=1, col_offset=0), lineno=1, col_offset=0), " - "Expr(value=Call(func=Name(id='spam', ctx=Load(), lineno=1, " - "col_offset=0), args=[Str(s='eggs', lineno=1, col_offset=0)], " + "Expr(value=Call(func=Name(id=u'spam', ctx=Load(), lineno=1, " + "col_offset=0), args=[Str(s=u'eggs', lineno=1, col_offset=0)], " "keywords=[], starargs=None, kwargs=None, lineno=1, " "col_offset=0), lineno=1, col_offset=0)])" ) @@ -280,11 +280,11 @@ node = ast.parse("spam(23, 42, eggs='leek')", mode='eval') self.assertEqual(len(list(ast.iter_child_nodes(node.body))), 4) iterator = ast.iter_child_nodes(node.body) - self.assertEqual(next(iterator).id, 'spam') - self.assertEqual(next(iterator).n, 23) - self.assertEqual(next(iterator).n, 42) - self.assertEqual(ast.dump(next(iterator)), - "keyword(arg='eggs', value=Str(s='leek'))" + self.assertEqual(iterator.next().id, 'spam') + self.assertEqual(iterator.next().n, 23) + self.assertEqual(iterator.next().n, 42) + self.assertEqual(ast.dump(iterator.next()), + u"keyword(arg=u'eggs', value=Str(s='leek'))" ) def test_get_docstring(self): Modified: branches/astwrite/ast/Python.asdl =================================================================== --- branches/astwrite/ast/Python.asdl 2008-11-26 05:19:41 UTC (rev 5642) +++ branches/astwrite/ast/Python.asdl 2008-11-26 19:43:27 UTC (rev 5643) @@ -1,6 +1,6 @@ -- ASDL's five builtin types are identifier, int, string, object, bool -module Python version "$Revision: 53731 $" +module Python version "$Revision: 62047 $" { mod = Module(stmt* body) | Interactive(stmt* body) @@ -10,9 +10,8 @@ | Suite(stmt* body) stmt = FunctionDef(identifier name, arguments args, - stmt* body, expr* decorators) - | ClassDef(identifier name, expr* bases, - stmt* body, expr* decorators) + stmt* body, expr* decorator_list) + | ClassDef(identifier name, expr* bases, stmt* body, expr *decorator_list) | Return(expr? value) | Delete(expr* targets) @@ -29,6 +28,7 @@ | With(expr context_expr, expr? optional_vars, stmt* body) -- 'type' is a bad name + -- changed to 'type' to excepttype for Jython | Raise(expr? excepttype, expr? inst, expr? tback) | TryExcept(stmt* body, excepthandler* handlers, stmt* orelse) | TryFinally(stmt* body, stmt* finalbody) @@ -99,11 +99,9 @@ comprehension = (expr target, expr iter, expr* ifs) -- not sure what to call the first argument for raise and except - -- TODO(jhylton): Figure out if there is a better way to handle - -- lineno and col_offset fields, particularly when - -- ast is exposed to Python. - excepthandler = (expr? excepttype, expr? name, stmt* body, int lineno, - int col_offset) + -- changed to 'type' to excepttype for Jython + excepthandler = ExceptHandler(expr? excepttype, expr? name, stmt* body) + attributes (int lineno, int col_offset) arguments = (expr* args, identifier? vararg, identifier? kwarg, expr* defaults) Modified: branches/astwrite/ast/asdl_antlr.py =================================================================== --- branches/astwrite/ast/asdl_antlr.py 2008-11-26 05:19:41 UTC (rev 5642) +++ branches/astwrite/ast/asdl_antlr.py 2008-11-26 19:43:27 UTC (rev 5643) @@ -134,7 +134,7 @@ self.visit(type.value, type.name, depth) def visitSum(self, sum, name, depth): - if sum.simple: + if sum.simple and not name == "excepthandler": self.simple_sum(sum, name, depth) else: self.sum_with_constructor(sum, name, depth) @@ -261,7 +261,7 @@ self.emit("}", depth + 1) self.emit("", 0) - if str(name) in ('stmt', 'expr'): + if str(name) in ('stmt', 'expr', 'excepthandler'): # The lineno property self.emit("private int lineno = -1;", depth + 1) self.emit("public int getLineno() {", depth + 1) @@ -290,6 +290,7 @@ self.emit("}", depth + 1) self.emit("", 0) + self.emit("}", depth) self.close() Modified: branches/astwrite/grammar/Python.g =================================================================== --- branches/astwrite/grammar/Python.g 2008-11-26 05:19:41 UTC (rev 5642) +++ branches/astwrite/grammar/Python.g 2008-11-26 19:43:27 UTC (rev 5643) @@ -102,7 +102,7 @@ import org.python.antlr.ast.Delete; import org.python.antlr.ast.Dict; import org.python.antlr.ast.Ellipsis; -import org.python.antlr.ast.excepthandlerType; +import org.python.antlr.ast.ExceptHandler; import org.python.antlr.ast.Exec; import org.python.antlr.ast.Expr; import org.python.antlr.ast.Expression; @@ -918,8 +918,8 @@ //except_clause: 'except' [test [',' test]] except_clause : EXCEPT (t1=test[expr_contextType.Load] (COMMA t2=test[expr_contextType.Store])?)? COLON suite[!$suite.isEmpty() && $suite::continueIllegal] - -> ^(EXCEPT<excepthandlerType>[$EXCEPT, actions.castExpr($t1.tree), actions.castExpr($t2.tree), - actions.castStmts($suite.stypes), $EXCEPT.getLine(), $EXCEPT.getCharPositionInLine()]) + -> ^(EXCEPT<ExceptHandler>[$EXCEPT, actions.castExpr($t1.tree), actions.castExpr($t2.tree), + actions.castStmts($suite.stypes)]) ; //suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT Modified: branches/astwrite/src/org/python/antlr/adapter/ExcepthandlerAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/ExcepthandlerAdapter.java 2008-11-26 05:19:41 UTC (rev 5642) +++ branches/astwrite/src/org/python/antlr/adapter/ExcepthandlerAdapter.java 2008-11-26 19:43:27 UTC (rev 5643) @@ -3,7 +3,7 @@ import org.python.core.Py; import org.python.core.PyJavaInstance; -import org.python.antlr.ast.excepthandlerType; +import org.python.antlr.ast.ExceptHandler; import org.python.antlr.ast.Num; import java.util.ArrayList; @@ -16,9 +16,9 @@ return o; } if (o instanceof PyJavaInstance) { - o = ((PyJavaInstance)o).__tojava__(excepthandlerType.class); + o = ((PyJavaInstance)o).__tojava__(ExceptHandler.class); } - if (o instanceof excepthandlerType) { + if (o instanceof ExceptHandler) { return o; } @@ -27,9 +27,9 @@ } public Object adaptIter(Object iter) { - List<excepthandlerType> excepthandlers = new ArrayList<excepthandlerType>(); + List<ExceptHandler> excepthandlers = new ArrayList<ExceptHandler>(); for(Object o : (Iterable)iter) { - excepthandlers.add((excepthandlerType)adapt(o)); + excepthandlers.add((ExceptHandler)adapt(o)); } return excepthandlers; } Modified: branches/astwrite/src/org/python/antlr/ast/ClassDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-11-26 05:19:41 UTC (rev 5642) +++ branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-11-26 19:43:27 UTC (rev 5643) @@ -43,32 +43,34 @@ this.body = AstAdapters.to_stmtList(body); } - private java.util.List<exprType> decorators; - public java.util.List<exprType> getInternalDecorators() { - return decorators; + private java.util.List<exprType> decorator_list; + public java.util.List<exprType> getInternalDecorator_list() { + return decorator_list; } - public Object getDecorators() { - return new ListWrapper(decorators, AstAdapters.exprAdapter); + public Object getDecorator_list() { + return new ListWrapper(decorator_list, AstAdapters.exprAdapter); } - public void setDecorators(Object decorators) { - this.decorators = AstAdapters.to_exprList(decorators); + public void setDecorator_list(Object decorator_list) { + this.decorator_list = AstAdapters.to_exprList(decorator_list); } private final static String[] fields = new String[] {"name", "bases", - "body", "decorators"}; + "body", + "decorator_list"}; public String[] get_fields() { return fields; } public ClassDef() {} - public ClassDef(Object name, Object bases, Object body, Object decorators) { + public ClassDef(Object name, Object bases, Object body, Object + decorator_list) { setName(name); setBases(bases); setBody(body); - setDecorators(decorators); + setDecorator_list(decorator_list); } public ClassDef(Token token, String name, java.util.List<exprType> bases, - java.util.List<stmtType> body, java.util.List<exprType> decorators) { + java.util.List<stmtType> body, java.util.List<exprType> decorator_list) { super(token); this.name = name; this.bases = bases; @@ -85,18 +87,18 @@ for(PythonTree t : this.body) { addChild(t); } - this.decorators = decorators; - if (decorators == null) { - this.decorators = new ArrayList<exprType>(); + this.decorator_list = decorator_list; + if (decorator_list == null) { + this.decorator_list = new ArrayList<exprType>(); } - for(PythonTree t : this.decorators) { + for(PythonTree t : this.decorator_list) { addChild(t); } } public ClassDef(Integer ttype, Token token, String name, java.util.List<exprType> bases, java.util.List<stmtType> body, - java.util.List<exprType> decorators) { + java.util.List<exprType> decorator_list) { super(ttype, token); this.name = name; this.bases = bases; @@ -113,17 +115,18 @@ for(PythonTree t : this.body) { addChild(t); } - this.decorators = decorators; - if (decorators == null) { - this.decorators = new ArrayList<exprType>(); + this.decorator_list = decorator_list; + if (decorator_list == null) { + this.decorator_list = new ArrayList<exprType>(); } - for(PythonTree t : this.decorators) { + for(PythonTree t : this.decorator_list) { addChild(t); } } public ClassDef(PythonTree tree, String name, java.util.List<exprType> - bases, java.util.List<stmtType> body, java.util.List<exprType> decorators) { + bases, java.util.List<stmtType> body, java.util.List<exprType> + decorator_list) { super(tree); this.name = name; this.bases = bases; @@ -140,11 +143,11 @@ for(PythonTree t : this.body) { addChild(t); } - this.decorators = decorators; - if (decorators == null) { - this.decorators = new ArrayList<exprType>(); + this.decorator_list = decorator_list; + if (decorator_list == null) { + this.decorator_list = new ArrayList<exprType>(); } - for(PythonTree t : this.decorators) { + for(PythonTree t : this.decorator_list) { addChild(t); } } @@ -164,8 +167,8 @@ sb.append("body="); sb.append(dumpThis(body)); sb.append(","); - sb.append("decorators="); - sb.append(dumpThis(decorators)); + sb.append("decorator_list="); + sb.append(dumpThis(decorator_list)); sb.append(","); sb.append(")"); return sb.toString(); @@ -188,8 +191,8 @@ t.accept(visitor); } } - if (decorators != null) { - for (PythonTree t : decorators) { + if (decorator_list != null) { + for (PythonTree t : decorator_list) { if (t != null) t.accept(visitor); } Added: branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java 2008-11-26 19:43:27 UTC (rev 5643) @@ -0,0 +1,166 @@ +// Autogenerated AST node +package org.python.antlr.ast; +import java.util.ArrayList; +import org.python.antlr.PythonTree; +import org.python.antlr.adapter.AstAdapters; +import org.python.antlr.adapter.ListWrapper; +import org.antlr.runtime.CommonToken; +import org.antlr.runtime.Token; +import java.io.DataOutputStream; +import java.io.IOException; + +public class ExceptHandler extends excepthandlerType { + private exprType excepttype; + public exprType getInternalExcepttype() { + return excepttype; + } + public Object getExcepttype() { + return excepttype; + } + public void setExcepttype(Object excepttype) { + this.excepttype = AstAdapters.to_expr(excepttype); + } + + private exprType name; + public exprType getInternalName() { + return name; + } + public Object getName() { + return name; + } + public void setName(Object name) { + this.name = AstAdapters.to_expr(name); + } + + private java.util.List<stmtType> body; + public java.util.List<stmtType> getInternalBody() { + return body; + } + public Object getBody() { + return new ListWrapper(body, AstAdapters.stmtAdapter); + } + public void setBody(Object body) { + this.body = AstAdapters.to_stmtList(body); + } + + + private final static String[] fields = new String[] {"excepttype", "name", + "body"}; + public String[] get_fields() { return fields; } + + public ExceptHandler() {} + public ExceptHandler(Object excepttype, Object name, Object body) { + setExcepttype(excepttype); + setName(name); + setBody(body); + } + + public ExceptHandler(Token token, exprType excepttype, exprType name, + java.util.List<stmtType> body) { + super(token); + this.excepttype = excepttype; + addChild(excepttype); + this.name = name; + addChild(name); + this.body = body; + if (body == null) { + this.body = new ArrayList<stmtType>(); + } + for(PythonTree t : this.body) { + addChild(t); + } + } + + public ExceptHandler(Integer ttype, Token token, exprType excepttype, + exprType name, java.util.List<stmtType> body) { + super(ttype, token); + this.excepttype = excepttype; + addChild(excepttype); + this.name = name; + addChild(name); + this.body = body; + if (body == null) { + this.body = new ArrayList<stmtType>(); + } + for(PythonTree t : this.body) { + addChild(t); + } + } + + public ExceptHandler(PythonTree tree, exprType excepttype, exprType name, + java.util.List<stmtType> body) { + super(tree); + this.excepttype = excepttype; + addChild(excepttype); + this.name = name; + addChild(name); + this.body = body; + if (body == null) { + this.body = new ArrayList<stmtType>(); + } + for(PythonTree t : this.body) { + addChild(t); + } + } + + public String toString() { + return "ExceptHandler"; + } + + public String toStringTree() { + StringBuffer sb = new StringBuffer("ExceptHandler("); + sb.append("excepttype="); + sb.append(dumpThis(excepttype)); + sb.append(","); + sb.append("name="); + sb.append(dumpThis(name)); + sb.append(","); + sb.append("body="); + sb.append(dumpThis(body)); + sb.append(","); + sb.append(")"); + return sb.toString(); + } + + public <R> R accept(VisitorIF<R> visitor) throws Exception { + return visitor.visitExceptHandler(this); + } + + public void traverse(VisitorIF visitor) throws Exception { + if (excepttype != null) + excepttype.accept(visitor); + if (name != null) + name.accept(visitor); + if (body != null) { + for (PythonTree t : body) { + if (t != null) + t.accept(visitor); + } + } + } + + private int lineno = -1; + public int getLineno() { + if (lineno != -1) { + return lineno; + } + return getLine(); + } + + public void setLineno(int num) { + lineno = num; + } + + private int col_offset = -1; + public int getCol_offset() { + if (col_offset != -1) { + return col_offset; + } + return getCharPositionInLine(); + } + + public void setCol_offset(int num) { + col_offset = num; + } + +} Modified: branches/astwrite/src/org/python/antlr/ast/FunctionDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-11-26 05:19:41 UTC (rev 5642) +++ branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-11-26 19:43:27 UTC (rev 5643) @@ -43,33 +43,34 @@ this.body = AstAdapters.to_stmtList(body); } - private java.util.List<exprType> decorators; - public java.util.List<exprType> getInternalDecorators() { - return decorators; + private java.util.List<exprType> decorator_list; + public java.util.List<exprType> getInternalDecorator_list() { + return decorator_list; } - public Object getDecorators() { - return new ListWrapper(decorators, AstAdapters.exprAdapter); + public Object getDecorator_list() { + return new ListWrapper(decorator_list, AstAdapters.exprAdapter); } - public void setDecorators(Object decorators) { - this.decorators = AstAdapters.to_exprList(decorators); + public void setDecorator_list(Object decorator_list) { + this.decorator_list = AstAdapters.to_exprList(decorator_list); } private final static String[] fields = new String[] {"name", "args", - "body", "decorators"}; + "body", + "decorator_list"}; public String[] get_fields() { return fields; } public FunctionDef() {} public FunctionDef(Object name, Object args, Object body, Object - decorators) { + decorator_list) { setName(name); setArgs(args); setBody(body); - setDecorators(decorators); + setDecorator_list(decorator_list); } public FunctionDef(Token token, String name, argumentsType args, - java.util.List<stmtType> body, java.util.List<exprType> decorators) { + java.util.List<stmtType> body, java.util.List<exprType> decorator_list) { super(token); this.name = name; this.args = args; @@ -80,17 +81,18 @@ for(PythonTree t : this.body) { addChild(t); } - this.decorators = decorators; - if (decorators == null) { - this.decorators = new ArrayList<exprType>(); + this.decorator_list = decorator_list; + if (decorator_list == null) { + this.decorator_list = new ArrayList<exprType>(); } - for(PythonTree t : this.decorators) { + for(PythonTree t : this.decorator_list) { addChild(t); } } public FunctionDef(Integer ttype, Token token, String name, argumentsType - args, java.util.List<stmtType> body, java.util.List<exprType> decorators) { + args, java.util.List<stmtType> body, java.util.List<exprType> + decorator_list) { super(ttype, token); this.name = name; this.args = args; @@ -101,17 +103,17 @@ for(PythonTree t : this.body) { addChild(t); } - this.decorators = decorators; - if (decorators == null) { - this.decorators = new ArrayList<exprType>(); + this.decorator_list = decorator_list; + if (decorator_list == null) { + this.decorator_list = new ArrayList<exprType>(); } - for(PythonTree t : this.decorators) { + for(PythonTree t : this.decorator_list) { addChild(t); } } public FunctionDef(PythonTree tree, String name, argumentsType args, - java.util.List<stmtType> body, java.util.List<exprType> decorators) { + java.util.List<stmtType> body, java.util.List<exprType> decorator_list) { super(tree); this.name = name; this.args = args; @@ -122,11 +124,11 @@ for(PythonTree t : this.body) { addChild(t); } - this.decorators = decorators; - if (decorators == null) { - this.decorators = new ArrayList<exprType>(); + this.decorator_list = decorator_list; + if (decorator_list == null) { + this.decorator_list = new ArrayList<exprType>(); } - for(PythonTree t : this.decorators) { + for(PythonTree t : this.decorator_list) { addChild(t); } } @@ -146,8 +148,8 @@ sb.append("body="); sb.append(dumpThis(body)); sb.append(","); - sb.append("decorators="); - sb.append(dumpThis(decorators)); + sb.append("decorator_list="); + sb.append(dumpThis(decorator_list)); sb.append(","); sb.append(")"); return sb.toString(); @@ -166,8 +168,8 @@ t.accept(visitor); } } - if (decorators != null) { - for (PythonTree t : decorators) { + if (decorator_list != null) { + for (PythonTree t : decorator_list) { if (t != null) t.accept(visitor); } Modified: branches/astwrite/src/org/python/antlr/ast/VisitorBase.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/VisitorBase.java 2008-11-26 05:19:41 UTC (rev 5642) +++ branches/astwrite/src/org/python/antlr/ast/VisitorBase.java 2008-11-26 19:43:27 UTC (rev 5643) @@ -308,6 +308,12 @@ return ret; } + public R visitExceptHandler(ExceptHandler node) throws Exception { + R ret = unhandled_node(node); + traverse(node); + return ret; + } + abstract protected R unhandled_node(PythonTree node) throws Exception; abstract public void traverse(PythonTree node) throws Exception; } Modified: branches/astwrite/src/org/python/antlr/ast/VisitorIF.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/VisitorIF.java 2008-11-26 05:19:41 UTC (rev 5642) +++ branches/astwrite/src/org/python/antlr/ast/VisitorIF.java 2008-11-26 19:43:27 UTC (rev 5643) @@ -52,4 +52,5 @@ public R visitSlice(Slice node) throws Exception; public R visitExtSlice(ExtSlice node) throws Exception; public R visitIndex(Index node) throws Exception; + public R visitExceptHandler(ExceptHandler node) throws Exception; } Modified: branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java 2008-11-26 05:19:41 UTC (rev 5642) +++ branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java 2008-11-26 19:43:27 UTC (rev 5643) @@ -6,177 +6,26 @@ import org.python.antlr.adapter.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; -import java.io.DataOutputStream; -import java.io.IOException; -public class excepthandlerType extends PythonTree { - private exprType excepttype; - public exprType getInternalExcepttype() { - return excepttype; - } - public Object getExcepttype() { - return excepttype; - } - public void setExcepttype(Object excepttype) { - this.excepttype = AstAdapters.to_expr(excepttype); - } +public abstract class excepthandlerType extends PythonTree { - private exprType name; - public exprType getInternalName() { - return name; - } - public Object getName() { - return name; - } - public void setName(Object name) { - this.name = AstAdapters.to_expr(name); - } + private final static String[] attributes = new String[] {"lineno", + "col_offset"}; + public String[] get_attributes() { return attributes; } - private java.util.List<stmtType> body; - public java.util.List<stmtType> getInternalBody() { - return body; + public excepthandlerType() { } - public Object getBody() { - return new ListWrapper(body, AstAdapters.stmtAdapter); - } - public void setBody(Object body) { - this.body = AstAdapters.to_stmtList(body); - } - private Integer lineno; - public Integer getInternalLineno() { - return lineno; + public excepthandlerType(int ttype, Token token) { + super(ttype, token); } - public Object getLineno() { - return lineno; - } - public void setLineno(Object lineno) { - this.lineno = AstAdapters.to_int(lineno); - } - private Integer col_offset; - public Integer getInternalCol_offset() { - return col_offset; - } - public Object getCol_offset() { - return col_offset; - } - public void setCol_offset(Object col_offset) { - this.col_offset = AstAdapters.to_int(col_offset); - } - - - private final static String[] fields = new String[] {"excepttype", "name", - "body", "lineno", - "col_offset"}; - public String[] get_fields() { return fields; } - - public excepthandlerType() {} - public excepthandlerType(Object excepttype, Object name, Object body, - Object lineno, Object col_offset) { - setExcepttype(excepttype); - setName(name); - setBody(body); - setLineno(lineno); - setCol_offset(col_offset); - } - - public excepthandlerType(Token token, exprType excepttype, exprType name, - java.util.List<stmtType> body, Integer lineno, Integer col_offset) { + public excepthandlerType(Token token) { super(token); - this.excepttype = excepttype; - addChild(excepttype); - this.name = name; - addChild(name); - this.body = body; - if (body == null) { - this.body = new ArrayList<stmtType>(); - } - for(PythonTree t : this.body) { - addChild(t); - } - this.lineno = lineno; - this.col_offset = col_offset; } - public excepthandlerType(Integer ttype, Token token, exprType excepttype, - exprType name, java.util.List<stmtType> body, Integer lineno, Integer - col_offset) { - super(ttype, token); - this.excepttype = excepttype; - addChild(excepttype); - this.name = name; - addChild(name); - this.body = body; - if (body == null) { - this.body = new ArrayList<stmtType>(); - } - for(PythonTree t : this.body) { - addChild(t); - } - this.lineno = lineno; - this.col_offset = col_offset; + public excepthandlerType(PythonTree node) { + super(node); } - public excepthandlerType(PythonTree tree, exprType excepttype, exprType - name, java.util.List<stmtType> body, Integer lineno, Integer col_offset) { - super(tree); - this.excepttype = excepttype; - addChild(excepttype); - this.name = name; - addChild(name); - this.body = body; - if (body == null) { - this.body = new ArrayList<stmtType>(); - } - for(PythonTree t : this.body) { - addChild(t); - } - this.lineno = lineno; - this.col_offset = col_offset; - } - - public String toString() { - return "excepthandler"; - } - - public String toStringTree() { - StringBuffer sb = new StringBuffer("excepthandler("); - sb.append("excepttype="); - sb.append(dumpThis(excepttype)); - sb.append(","); - sb.append("name="); - sb.append(dumpThis(name)); - sb.append(","); - sb.append("body="); - sb.append(dumpThis(body)); - sb.append(","); - sb.append("lineno="); - sb.append(dumpThis(lineno)); - sb.append(","); - sb.append("col_offset="); - sb.append(dumpThis(col_offset)); - sb.append(","); - sb.append(")"); - return sb.toString(); - } - - public <R> R accept(VisitorIF<R> visitor) throws Exception { - traverse(visitor); - return null; - } - - public void traverse(VisitorIF visitor) throws Exception { - if (excepttype != null) - excepttype.accept(visitor); - if (name != null) - name.accept(visitor); - if (body != null) { - for (PythonTree t : body) { - if (t != null) - t.accept(visitor); - } - } - } - } Modified: branches/astwrite/src/org/python/compiler/CodeCompiler.java =================================================================== --- branches/astwrite/src/org/python/compiler/CodeCompiler.java 2008-11-26 05:19:41 UTC (rev 5642) +++ branches/astwrite/src/org/python/compiler/CodeCompiler.java 2008-11-26 19:43:27 UTC (rev 5643) @@ -27,6 +27,7 @@ import org.python.antlr.ast.Delete; import org.python.antlr.ast.Dict; import org.python.antlr.ast.Ellipsis; +import org.python.antlr.ast.ExceptHandler; import org.python.antlr.ast.Exec; import org.python.antlr.ast.Expr; import org.python.antlr.ast.Expression; @@ -419,7 +420,7 @@ } set(new Name(node,node.getInternalName(), expr_contextType.Store)); - doDecorators(node,node.getInternalDecorators(), node.getInternalName()); + doDecorators(node,node.getInternalDecorator_list(), node.getInternalName()); return null; } @@ -1124,7 +1125,7 @@ throws Exception { for (int i = 0; i < node.getInternalHandlers().size(); i++) { - excepthandlerType handler = node.getInternalHandlers().get(i); + ExceptHandler handler = (ExceptHandler)node.getInternalHandlers().get(i); //setline(name); Label end_of_self = new Label(); @@ -2024,7 +2025,7 @@ //Assign this new class to the given name set(new Name(node,node.getInternalName(), expr_contextType.Store)); - doDecorators(node,node.getInternalDecorators(), node.getInternalName()); + doDecorators(node,node.getInternalDecorator_list(), node.getInternalName()); return null; } Modified: branches/astwrite/src/org/python/compiler/ScopesCompiler.java =================================================================== --- branches/astwrite/src/org/python/compiler/ScopesCompiler.java 2008-11-26 05:19:41 UTC (rev 5642) +++ branches/astwrite/src/org/python/compiler/ScopesCompiler.java 2008-11-26 19:43:27 UTC (rev 5643) @@ -130,7 +130,7 @@ visit(defaults.get(i)); } - List<exprType> decs = node.getInternalDecorators(); + List<exprType> decs = node.getInternalDecorator_list(); for (int i = decs.size() - 1; i >= 0; i--) { visit(decs.get(i)); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fwi...@us...> - 2008-11-29 04:59:25
|
Revision: 5660 http://jython.svn.sourceforge.net/jython/?rev=5660&view=rev Author: fwierzbicki Date: 2008-11-29 04:59:20 +0000 (Sat, 29 Nov 2008) Log Message: ----------- Movement towards a PyObject-centric ast. Modified Paths: -------------- branches/astwrite/CoreExposed.includes branches/astwrite/ast/asdl_antlr.py branches/astwrite/src/org/python/antlr/AST.java branches/astwrite/src/org/python/antlr/GrammarActions.java branches/astwrite/src/org/python/antlr/ParseException.java branches/astwrite/src/org/python/antlr/PythonErrorNode.java branches/astwrite/src/org/python/antlr/PythonTree.java branches/astwrite/src/org/python/antlr/PythonTreeAdaptor.java branches/astwrite/src/org/python/antlr/ast/Assert.java branches/astwrite/src/org/python/antlr/ast/Assign.java branches/astwrite/src/org/python/antlr/ast/Attribute.java branches/astwrite/src/org/python/antlr/ast/AugAssign.java branches/astwrite/src/org/python/antlr/ast/BinOp.java branches/astwrite/src/org/python/antlr/ast/BoolOp.java branches/astwrite/src/org/python/antlr/ast/Break.java branches/astwrite/src/org/python/antlr/ast/Call.java branches/astwrite/src/org/python/antlr/ast/ClassDef.java branches/astwrite/src/org/python/antlr/ast/Compare.java branches/astwrite/src/org/python/antlr/ast/Continue.java branches/astwrite/src/org/python/antlr/ast/Delete.java branches/astwrite/src/org/python/antlr/ast/Dict.java branches/astwrite/src/org/python/antlr/ast/Ellipsis.java branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java branches/astwrite/src/org/python/antlr/ast/Exec.java branches/astwrite/src/org/python/antlr/ast/Expr.java branches/astwrite/src/org/python/antlr/ast/Expression.java branches/astwrite/src/org/python/antlr/ast/ExtSlice.java branches/astwrite/src/org/python/antlr/ast/For.java branches/astwrite/src/org/python/antlr/ast/FunctionDef.java branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java branches/astwrite/src/org/python/antlr/ast/Global.java branches/astwrite/src/org/python/antlr/ast/If.java branches/astwrite/src/org/python/antlr/ast/IfExp.java branches/astwrite/src/org/python/antlr/ast/Import.java branches/astwrite/src/org/python/antlr/ast/ImportFrom.java branches/astwrite/src/org/python/antlr/ast/Index.java branches/astwrite/src/org/python/antlr/ast/Interactive.java branches/astwrite/src/org/python/antlr/ast/Lambda.java branches/astwrite/src/org/python/antlr/ast/List.java branches/astwrite/src/org/python/antlr/ast/ListComp.java branches/astwrite/src/org/python/antlr/ast/Module.java branches/astwrite/src/org/python/antlr/ast/Name.java branches/astwrite/src/org/python/antlr/ast/Num.java branches/astwrite/src/org/python/antlr/ast/Pass.java branches/astwrite/src/org/python/antlr/ast/Print.java branches/astwrite/src/org/python/antlr/ast/Raise.java branches/astwrite/src/org/python/antlr/ast/Repr.java branches/astwrite/src/org/python/antlr/ast/Return.java branches/astwrite/src/org/python/antlr/ast/Slice.java branches/astwrite/src/org/python/antlr/ast/Str.java branches/astwrite/src/org/python/antlr/ast/Subscript.java branches/astwrite/src/org/python/antlr/ast/Suite.java branches/astwrite/src/org/python/antlr/ast/TryExcept.java branches/astwrite/src/org/python/antlr/ast/TryFinally.java branches/astwrite/src/org/python/antlr/ast/Tuple.java branches/astwrite/src/org/python/antlr/ast/UnaryOp.java branches/astwrite/src/org/python/antlr/ast/VisitorBase.java branches/astwrite/src/org/python/antlr/ast/While.java branches/astwrite/src/org/python/antlr/ast/With.java branches/astwrite/src/org/python/antlr/ast/Yield.java branches/astwrite/src/org/python/antlr/ast/aliasType.java branches/astwrite/src/org/python/antlr/ast/argumentsType.java branches/astwrite/src/org/python/antlr/ast/boolopType.java branches/astwrite/src/org/python/antlr/ast/cmpopType.java branches/astwrite/src/org/python/antlr/ast/comprehensionType.java branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java branches/astwrite/src/org/python/antlr/ast/exprType.java branches/astwrite/src/org/python/antlr/ast/expr_contextType.java branches/astwrite/src/org/python/antlr/ast/keywordType.java branches/astwrite/src/org/python/antlr/ast/modType.java branches/astwrite/src/org/python/antlr/ast/operatorType.java branches/astwrite/src/org/python/antlr/ast/sliceType.java branches/astwrite/src/org/python/antlr/ast/stmtType.java branches/astwrite/src/org/python/antlr/ast/unaryopType.java branches/astwrite/src/org/python/compiler/ScopesCompiler.java branches/astwrite/src/org/python/modules/Setup.java Added Paths: ----------- branches/astwrite/src/org/python/antlr/ast/AstModule.java Removed Paths: ------------- branches/astwrite/Lib/_ast.py Modified: branches/astwrite/CoreExposed.includes =================================================================== --- branches/astwrite/CoreExposed.includes 2008-11-29 00:48:32 UTC (rev 5659) +++ branches/astwrite/CoreExposed.includes 2008-11-29 04:59:20 UTC (rev 5660) @@ -1,3 +1,5 @@ +org/python/antlr/AST.class +org/python/antlr/ast/AsmModule.class org/python/core/PyArray.class org/python/core/PyBaseString.class org/python/core/PyBaseException.class Deleted: branches/astwrite/Lib/_ast.py =================================================================== --- branches/astwrite/Lib/_ast.py 2008-11-29 00:48:32 UTC (rev 5659) +++ branches/astwrite/Lib/_ast.py 2008-11-29 04:59:20 UTC (rev 5660) @@ -1,79 +0,0 @@ -from org.python.antlr.ast.boolopType import And,Or -from org.python.antlr.ast.operatorType import Add,Sub,Mult,Div,FloorDiv,Mod,LShift,RShift,BitOr,BitAnd,BitXor,Pow -from org.python.antlr.ast.cmpopType import Eq,Gt,GtE,In,Is,IsNot,Lt,LtE,NotEq,NotIn -from org.python.antlr.ast.unaryopType import Invert,Not,UAdd,USub -from org.python.core.PyTableCode import PyCF_ONLY_AST -from org.python.antlr.ast.expr_contextType import Load, Store, Del, AugLoad, AugStore, Param - -from org.python.antlr import AST - -from org.python.antlr.ast import Assert -from org.python.antlr.ast import Assign -from org.python.antlr.ast import Attribute -from org.python.antlr.ast import AugAssign -from org.python.antlr.ast import BinOp -from org.python.antlr.ast import BoolOp -from org.python.antlr.ast import Break -from org.python.antlr.ast import Call -from org.python.antlr.ast import ClassDef -from org.python.antlr.ast import Compare -from org.python.antlr.ast import Continue -from org.python.antlr.ast import Delete -from org.python.antlr.ast import Dict -from org.python.antlr.ast import Ellipsis -from org.python.antlr.ast import Exec -from org.python.antlr.ast import Expr -from org.python.antlr.ast import Expression -from org.python.antlr.ast import ExtSlice -from org.python.antlr.ast import For -from org.python.antlr.ast import FunctionDef -from org.python.antlr.ast import GeneratorExp -from org.python.antlr.ast import Global -from org.python.antlr.ast import If -from org.python.antlr.ast import IfExp -from org.python.antlr.ast import Import -from org.python.antlr.ast import ImportFrom -from org.python.antlr.ast import Index -from org.python.antlr.ast import Interactive -from org.python.antlr.ast import Lambda -from org.python.antlr.ast import List -from org.python.antlr.ast import ListComp -from org.python.antlr.ast import Module -from org.python.antlr.ast import Name -from org.python.antlr.ast import Num -from org.python.antlr.ast import Pass -from org.python.antlr.ast import Print -from org.python.antlr.ast import Raise -from org.python.antlr.ast import Repr -from org.python.antlr.ast import Return -from org.python.antlr.ast import Slice -from org.python.antlr.ast import Str -from org.python.antlr.ast import Subscript -from org.python.antlr.ast import Suite -from org.python.antlr.ast import TryExcept -from org.python.antlr.ast import TryFinally -from org.python.antlr.ast import Tuple -from org.python.antlr.ast import UnaryOp -#from org.python.antlr.ast import Unicode -from org.python.antlr.ast import While -from org.python.antlr.ast import With -from org.python.antlr.ast import Yield - -import org.python.antlr.ast.aliasType as alias -import org.python.antlr.ast.argumentsType as arguments -import org.python.antlr.ast.boolopType as boolop -import org.python.antlr.ast.cmpopType as cmpop -import org.python.antlr.ast.comprehensionType as comprehension -import org.python.antlr.ast.excepthandlerType as excepthandler -import org.python.antlr.ast.exprType as expr -import org.python.antlr.ast.expr_contextType as expr_context -import org.python.antlr.ast.keywordType as keyword -import org.python.antlr.ast.modType as mod -import org.python.antlr.ast.operatorType as operator -import org.python.antlr.ast.sliceType as slice -import org.python.antlr.ast.stmtType as stmt -import org.python.antlr.ast.unaryopType as unaryop - -#Set to the same value as the CPython version we are targetting. -#note that this number comes from the revision number in CPython's repository. -__version__ = 43614 Modified: branches/astwrite/ast/asdl_antlr.py =================================================================== --- branches/astwrite/ast/asdl_antlr.py 2008-11-29 00:48:32 UTC (rev 5659) +++ branches/astwrite/ast/asdl_antlr.py 2008-11-29 04:59:20 UTC (rev 5660) @@ -56,15 +56,24 @@ print >> self.file, "// Autogenerated AST node" print >> self.file, 'package org.python.antlr.ast;' if refersToPythonTree: - print >> self.file, 'import java.util.ArrayList;' print >> self.file, 'import org.python.antlr.PythonTree;' print >> self.file, 'import org.python.antlr.adapter.AstAdapters;' print >> self.file, 'import org.python.antlr.adapter.ListWrapper;' print >> self.file, 'import org.antlr.runtime.CommonToken;' print >> self.file, 'import org.antlr.runtime.Token;' + print >> self.file, 'import org.python.core.Py;' + print >> self.file, 'import org.python.core.PyObject;' + print >> self.file, 'import org.python.core.PyType;' + print >> self.file, 'import org.python.expose.ExposedGet;' + print >> self.file, 'import org.python.expose.ExposedMethod;' + print >> self.file, 'import org.python.expose.ExposedNew;' + print >> self.file, 'import org.python.expose.ExposedSet;' + print >> self.file, 'import org.python.expose.ExposedType;' + if useDataOutput: print >> self.file, 'import java.io.DataOutputStream;' print >> self.file, 'import java.io.IOException;' + print >> self.file, 'import java.util.ArrayList;' print >> self.file def close(self): @@ -143,7 +152,7 @@ self.open("%sType" % name, refersToPythonTree=0) self.emit('import org.python.antlr.AST;', depth) self.emit('', 0) - self.emit("public enum %(name)sType implements AST {" % locals(), depth) + self.emit("public enum %(name)sType {" % locals(), depth) self.emit("UNDEFINED,", depth + 1) for i in range(len(sum.types) - 1): type = sum.types[i] @@ -199,6 +208,10 @@ self.emit("}", depth+1) self.emit("", 0) + self.emit("public %(name)sType(PyType subType) {" % locals(), depth+1) + self.emit("}", depth+1) + self.emit("", 0) + self.emit("public %(name)sType(int ttype, Token token) {" % locals(), depth+1) self.emit("super(ttype, token);", depth+2) self.emit("}", depth+1) @@ -223,6 +236,7 @@ self.open("%sType" % name, useDataOutput=1) self.emit("public class %(name)sType extends PythonTree {" % locals(), depth) + self.emit("public static final PyType TYPE = PyType.fromClass(%sType.class);" % name, depth + 1); for f in product.fields: self.visit(f, depth + 1) self.emit("", depth) @@ -245,8 +259,10 @@ s = "implements %s " % ", ".join(ifaces) else: s = "" + self.emit('@ExposedType(name = "_ast.%s", base = PyObject.class)' % cons.name, depth); self.emit("public class %s extends %sType %s{" % (cons.name, name, s), depth) + self.emit("public static final PyType TYPE = PyType.fromClass(%s.class);" % cons.name, depth); for f in cons.fields: self.visit(f, depth + 1) self.emit("", depth) @@ -377,8 +393,18 @@ def javaConstructors(self, type, clsname, ctorname, fields, depth): if len(fields) > 0: - self.emit("public %s() {}" % (ctorname), depth) + self.emit("public %s() {" % (ctorname), depth) + self.emit("this(TYPE);", depth + 1) + self.emit("}", depth) + self.emit("public %s(PyType subType) {" % (ctorname), depth) + self.emit("super(subType);", depth + 1) + self.emit("}", depth) + + self.emit("@ExposedNew", depth) + self.emit("@ExposedMethod", depth) + self.emit("public void Module___init__(PyObject[] args, String[] keywords) {}", depth) + fpargs = ", ".join(["Object %s" % f.name for f in fields]) self.emit("public %s(%s) {" % (ctorname, fpargs), depth) for f in fields: @@ -421,17 +447,23 @@ str(field.name).capitalize()), depth) self.emit("return %s;" % field.name, depth+1) self.emit("}", depth) - self.emit("public Object get%s() {" % (str(field.name).capitalize()), depth) + self.emit('@ExposedGet(name = "%s")' % field.name, depth) + self.emit("public PyObject get%s() {" % (str(field.name).capitalize()), depth) if field.seq: - self.emit("return new ListWrapper(%s, AstAdapters.%sAdapter);" % (field.name, field.type), depth+1) + #FIXME: temporary + #self.emit("return new ListWrapper(%s, AstAdapters.%sAdapter);" % (field.name, field.type), depth+1) + self.emit("return Py.None;", depth+1) else: - self.emit("return %s;" % field.name, depth+1) + #FIXME: temporary + #self.emit("return %s;" % field.name, depth+1) + self.emit("return Py.None;", depth+1) self.emit("}", depth) + self.emit('@ExposedSet(name = "%s")' % field.name, depth) self.emit("public void set%s(Object %s) {" % (str(field.name).capitalize(), field.name), depth) if field.seq: #self.emit("this.%s = new %s(" % (field.name, self.javaType(field)), depth+1) - self.emit("this.%s = AstAdapters.to_%sList(%s);" % (field.name, str(field.type), field.name), depth+1) + self.emit("//FJW this.%s = AstAdapters.to_%sList(%s);" % (field.name, str(field.type), field.name), depth+1) else: self.emit("this.%s = AstAdapters.to_%s(%s);" % (field.name, str(field.type), field.name), depth+1) self.emit("}", depth) Modified: branches/astwrite/src/org/python/antlr/AST.java =================================================================== --- branches/astwrite/src/org/python/antlr/AST.java 2008-11-29 00:48:32 UTC (rev 5659) +++ branches/astwrite/src/org/python/antlr/AST.java 2008-11-29 04:59:20 UTC (rev 5660) @@ -1,8 +1,12 @@ package org.python.antlr; -public interface AST { +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.AST", base = PyObject.class) +public abstract class AST extends PyObject { + public static final PyType TYPE = PyType.fromClass(AST.class); public static String[] emptyStringArray = new String[0]; - public String[] get_attributes(); - public String[] get_fields(); } Modified: branches/astwrite/src/org/python/antlr/GrammarActions.java =================================================================== --- branches/astwrite/src/org/python/antlr/GrammarActions.java 2008-11-29 00:48:32 UTC (rev 5659) +++ branches/astwrite/src/org/python/antlr/GrammarActions.java 2008-11-29 04:59:20 UTC (rev 5660) @@ -308,7 +308,7 @@ return value; } - void recurseSetContext(Tree tree, expr_contextType context) { + void recurseSetContext(PythonTree tree, expr_contextType context) { if (tree instanceof Context) { ((Context)tree).setContext(context); } Modified: branches/astwrite/src/org/python/antlr/ParseException.java =================================================================== --- branches/astwrite/src/org/python/antlr/ParseException.java 2008-11-29 00:48:32 UTC (rev 5659) +++ branches/astwrite/src/org/python/antlr/ParseException.java 2008-11-29 04:59:20 UTC (rev 5660) @@ -38,7 +38,7 @@ public ParseException(String message, PythonTree n) { this(message, n.getLine(), n.getCharPositionInLine()); this.node = n; - this.token = n.token; + this.token = n.getToken(); } public ParseException(String message, RecognitionException r) { Modified: branches/astwrite/src/org/python/antlr/PythonErrorNode.java =================================================================== --- branches/astwrite/src/org/python/antlr/PythonErrorNode.java 2008-11-29 00:48:32 UTC (rev 5659) +++ branches/astwrite/src/org/python/antlr/PythonErrorNode.java 2008-11-29 04:59:20 UTC (rev 5660) @@ -24,7 +24,7 @@ return errorNode.isNil(); } - public int getType() { + public int getAntlrType() { return errorNode.getType(); } Modified: branches/astwrite/src/org/python/antlr/PythonTree.java =================================================================== --- branches/astwrite/src/org/python/antlr/PythonTree.java 2008-11-29 00:48:32 UTC (rev 5659) +++ branches/astwrite/src/org/python/antlr/PythonTree.java 2008-11-29 04:59:20 UTC (rev 5660) @@ -1,35 +1,50 @@ package org.python.antlr; -import org.antlr.runtime.tree.BaseTree; -import org.antlr.runtime.tree.Tree; +import org.python.core.PyObject; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; +import org.antlr.runtime.tree.CommonTree; +import org.python.core.PyType; import org.python.antlr.ast.VisitorIF; -public class PythonTree extends BaseTree implements AST { +import java.util.ArrayList; +import java.util.List; +public class PythonTree extends AST { + public boolean from_future_checked = false; private int charStartIndex = -1; private int charStopIndex = -1; - + private CommonTree node; + private PythonTree parent; + /** A single token is the payload */ - public Token token; + //private Token token; /** What token indexes bracket all tokens associated with this node * and below? */ - protected int startIndex=-1, stopIndex=-1; + //protected int startIndex=-1, stopIndex=-1; /** Who is the parent node of this node; if null, implies node is root */ - public PythonTree parent; + //private PythonTree parent; /** What index is this node in the child list? Range: 0..n-1 */ - public int childIndex = -1; + //private int childIndex = -1; public PythonTree() { + node = new CommonTree(); } + public PythonTree(PyType subType) { + node = new CommonTree(); + } + + public PythonTree(Token t) { + node = new CommonTree(t); + } + public PythonTree(int ttype, Token t) { CommonToken c = new CommonToken(ttype, t.getText()); c.setLine(t.getLine()); @@ -38,59 +53,51 @@ c.setChannel(t.getChannel()); c.setStartIndex(((CommonToken)t).getStartIndex()); c.setStopIndex(((CommonToken)t).getStopIndex()); - token = c; + node = new CommonTree(c); } - public PythonTree(Token t) { - this.token = t; + public PythonTree(PythonTree tree) { + node = new CommonTree(tree.getNode()); + charStartIndex = tree.getCharStartIndex(); + charStopIndex = tree.getCharStopIndex(); } + + public CommonTree getNode() { + return node; + } - public PythonTree(PythonTree node) { - super(node); - token = node.token; - startIndex = node.startIndex; - stopIndex = node.stopIndex; - charStartIndex = node.getCharStartIndex(); - charStopIndex = node.getCharStopIndex(); - } - public Token getToken() { - return token; + return node.getToken(); } - public Tree dupNode() { + public PythonTree dupNode() { return new PythonTree(this); } public boolean isNil() { - return token==null; + return node.isNil(); } - public int getType() { - if (token==null) { - return Token.INVALID_TOKEN_TYPE; - } - return token.getType(); + public int getAntlrType() { + return node.getType(); } public String getText() { - if (token==null) { - return null; - } - return token.getText(); + return node.getText(); } public int getLine() { - if (token==null || token.getLine()==0) { + if (node.getToken()==null || node.getToken().getLine()==0) { if ( getChildCount()>0 ) { return getChild(0).getLine(); } return 1; } - return token.getLine(); + return node.getToken().getLine(); } public int getCharPositionInLine() { + Token token = node.getToken(); if (token==null || token.getCharPositionInLine()==-1) { if (getChildCount()>0) { return getChild(0).getCharPositionInLine(); @@ -107,46 +114,24 @@ } public int getTokenStartIndex() { - if ( startIndex==-1 && token!=null ) { - return token.getTokenIndex(); - } - return startIndex; + return node.getTokenStartIndex(); } public void setTokenStartIndex(int index) { - startIndex = index; + node.setTokenStartIndex(index); } public int getTokenStopIndex() { - if ( stopIndex==-1 && token!=null ) { - return token.getTokenIndex(); - } - return stopIndex; + return node.getTokenStopIndex(); } public void setTokenStopIndex(int index) { - stopIndex = index; + node.setTokenStopIndex(index); } - public int getChildIndex() { - return childIndex; - } - - public Tree getParent() { - return parent; - } - - public void setParent(Tree t) { - this.parent = (PythonTree)t; - } - - public void setChildIndex(int index) { - this.childIndex = index; - } - public int getCharStartIndex() { - if (charStartIndex == -1 && token != null) { - return ((CommonToken)token).getStartIndex(); + if (charStartIndex == -1 && node.getToken() != null) { + return ((CommonToken)node.getToken()).getStartIndex(); } return charStartIndex ; } @@ -166,8 +151,8 @@ */ public int getCharStopIndex() { - if (charStopIndex == -1 && token != null) { - return ((CommonToken)token).getStopIndex() + 1; + if (charStopIndex == -1 && node.getToken() != null) { + return ((CommonToken)node.getToken()).getStopIndex() + 1; } return charStopIndex; } @@ -176,24 +161,36 @@ charStopIndex = index; } + public int getChildIndex() { + return node.getChildIndex(); + } + + public PythonTree getParent() { + return parent; + } + + public void setParent(PythonTree t) { + this.parent = t; + } + + public void setChildIndex(int index) { + node.setChildIndex(index); + } + public String toString() { if (isNil()) { return "None"; } - if ( getType()==Token.INVALID_TOKEN_TYPE ) { + if ( getAntlrType()==Token.INVALID_TOKEN_TYPE ) { return "<errornode>"; } - if ( token==null ) { + if ( node.getToken()==null ) { return null; } - return token.getText() + "(" + this.getLine() + "," + this.getCharPositionInLine() + ")"; + return node.getToken().getText() + "(" + this.getLine() + "," + this.getCharPositionInLine() + ")"; } - public String info() { - return this.getCharStartIndex() + ":" + this.getCharStopIndex(); - } - public String toStringTree() { if (children == null || children.size() == 0) { return this.toString();// + "[" + this.info() + "]"; @@ -205,7 +202,7 @@ buf.append(' '); } for (int i = 0; children != null && i < children.size(); i++) { - BaseTree t = (BaseTree)children.get(i); + PythonTree t = (PythonTree)children.get(i); if (i > 0) { buf.append(' '); } @@ -260,4 +257,205 @@ public String[] get_attributes() { return emptyStringArray; } + + //Copied from org.antlr.runtime.tree.BaseTree + protected List children; + + public PythonTree getChild(int i) { + if ( children==null || i>=children.size() ) { + return null; + } + return (PythonTree)children.get(i); + } + + /** Get the children internal List; note that if you directly mess with + * the list, do so at your own risk. + */ + public List getChildren() { + return children; + } + + public PythonTree getFirstChildWithType(int type) { + for (int i = 0; children!=null && i < children.size(); i++) { + PythonTree t = (PythonTree) children.get(i); + if ( t.getAntlrType()==type ) { + return t; + } + } + return null; + } + + public int getChildCount() { + if ( children==null ) { + return 0; + } + return children.size(); + } + + /** Add t as child of this node. + * + * Warning: if t has no children, but child does + * and child isNil then this routine moves children to t via + * t.children = child.children; i.e., without copying the array. + */ + public void addChild(PythonTree t) { + //System.out.println("add child "+t.toStringTree()+" "+this.toStringTree()); + //System.out.println("existing children: "+children); + if ( t==null ) { + return; // do nothing upon addChild(null) + } + PythonTree childTree = (PythonTree)t; + if ( childTree.isNil() ) { // t is an empty node possibly with children + if ( this.children!=null && this.children == childTree.children ) { + throw new RuntimeException("attempt to add child list to itself"); + } + // just add all of childTree's children to this + if ( childTree.children!=null ) { + if ( this.children!=null ) { // must copy, this has children already + int n = childTree.children.size(); + for (int i = 0; i < n; i++) { + PythonTree c = (PythonTree)childTree.children.get(i); + this.children.add(c); + // handle double-link stuff for each child of nil root + c.setParent(this); + c.setChildIndex(children.size()-1); + } + } + else { + // no children for this but t has children; just set pointer + // call general freshener routine + this.children = childTree.children; + this.freshenParentAndChildIndexes(); + } + } + } + else { // child is not nil (don't care about children) + if ( children==null ) { + children = createChildrenList(); // create children list on demand + } + children.add(t); + childTree.setParent(this); + childTree.setChildIndex(children.size()-1); + } + // System.out.println("now children are: "+children); + } + + /** Add all elements of kids list as children of this node */ + public void addChildren(List kids) { + for (int i = 0; i < kids.size(); i++) { + PythonTree t = (PythonTree) kids.get(i); + addChild(t); + } + } + + public void setChild(int i, PythonTree t) { + if ( t==null ) { + return; + } + if ( t.isNil() ) { + throw new IllegalArgumentException("Can't set single child to a list"); + } + if ( children==null ) { + children = createChildrenList(); + } + children.set(i, t); + t.setParent(this); + t.setChildIndex(i); + } + + public Object deleteChild(int i) { + if ( children==null ) { + return null; + } + PythonTree killed = (PythonTree)children.remove(i); + // walk rest and decrement their child indexes + this.freshenParentAndChildIndexes(i); + return killed; + } + + /** Delete children from start to stop and replace with t even if t is + * a list (nil-root tree). num of children can increase or decrease. + * For huge child lists, inserting children can force walking rest of + * children to set their childindex; could be slow. + */ + public void replaceChildren(int startChildIndex, int stopChildIndex, Object t) { + /* + System.out.println("replaceChildren "+startChildIndex+", "+stopChildIndex+ + " with "+((PythonTree)t).toStringTree()); + System.out.println("in="+toStringTree()); + */ + if ( children==null ) { + throw new IllegalArgumentException("indexes invalid; no children in list"); + } + int replacingHowMany = stopChildIndex - startChildIndex + 1; + int replacingWithHowMany; + PythonTree newTree = (PythonTree)t; + List newChildren = null; + // normalize to a list of children to add: newChildren + if ( newTree.isNil() ) { + newChildren = newTree.children; + } + else { + newChildren = new ArrayList(1); + newChildren.add(newTree); + } + replacingWithHowMany = newChildren.size(); + int numNewChildren = newChildren.size(); + int delta = replacingHowMany - replacingWithHowMany; + // if same number of nodes, do direct replace + if ( delta == 0 ) { + int j = 0; // index into new children + for (int i=startChildIndex; i<=stopChildIndex; i++) { + PythonTree child = (PythonTree)newChildren.get(j); + children.set(i, child); + child.setParent(this); + child.setChildIndex(i); + j++; + } + } + else if ( delta > 0 ) { // fewer new nodes than there were + // set children and then delete extra + for (int j=0; j<numNewChildren; j++) { + children.set(startChildIndex+j, newChildren.get(j)); + } + int indexToDelete = startChildIndex+numNewChildren; + for (int c=indexToDelete; c<=stopChildIndex; c++) { + // delete same index, shifting everybody down each time + PythonTree killed = (PythonTree)children.remove(indexToDelete); + } + freshenParentAndChildIndexes(startChildIndex); + } + else { // more new nodes than were there before + // fill in as many children as we can (replacingHowMany) w/o moving data + for (int j=0; j<replacingHowMany; j++) { + children.set(startChildIndex+j, newChildren.get(j)); + } + int numToInsert = replacingWithHowMany-replacingHowMany; + for (int j=replacingHowMany; j<replacingWithHowMany; j++) { + children.add(startChildIndex+j, newChildren.get(j)); + } + freshenParentAndChildIndexes(startChildIndex); + } + //System.out.println("out="+toStringTree()); + } + + /** Override in a subclass to change the impl of children list */ + protected List createChildrenList() { + return new ArrayList(); + } + + /** Set the parent and child index values for all child of t */ + public void freshenParentAndChildIndexes() { + freshenParentAndChildIndexes(0); + } + + public void freshenParentAndChildIndexes(int offset) { + int n = getChildCount(); + for (int c = offset; c < n; c++) { + PythonTree child = (PythonTree)getChild(c); + child.setChildIndex(c); + child.setParent(this); + } + } + } Modified: branches/astwrite/src/org/python/antlr/PythonTreeAdaptor.java =================================================================== --- branches/astwrite/src/org/python/antlr/PythonTreeAdaptor.java 2008-11-29 00:48:32 UTC (rev 5659) +++ branches/astwrite/src/org/python/antlr/PythonTreeAdaptor.java 2008-11-29 04:59:20 UTC (rev 5660) @@ -49,6 +49,104 @@ if (t == null) { return null; } - return create(((PythonTree) t).token); + return create(((PythonTree) t).getToken()); } + + public boolean isNil(Object tree) { + return ((PythonTree)tree).isNil(); + } + + public void addChild(Object t, Object child) { + if ( t!=null && child!=null ) { + ((PythonTree)t).addChild((PythonTree)child); + } + } + + public Object becomeRoot(Object newRoot, Object oldRoot) { + //System.out.println("becomeroot new "+newRoot.toString()+" old "+oldRoot); + PythonTree newRootTree = (PythonTree)newRoot; + PythonTree oldRootTree = (PythonTree)oldRoot; + if ( oldRoot==null ) { + return newRoot; + } + // handle ^(nil real-node) + if ( newRootTree.isNil() ) { + int nc = newRootTree.getChildCount(); + if ( nc==1 ) newRootTree = (PythonTree)newRootTree.getChild(0); + else if ( nc >1 ) { + // TODO: make tree run time exceptions hierarchy + throw new RuntimeException("more than one node as root (TODO: make exception hierarchy)"); + } + } + // add oldRoot to newRoot; addChild takes care of case where oldRoot + // is a flat list (i.e., nil-rooted tree). All children of oldRoot + // are added to newRoot. + newRootTree.addChild(oldRootTree); + return newRootTree; + } + + public Object rulePostProcessing(Object root) { + //System.out.println("rulePostProcessing: "+((PythonTree)root).toStringTree()); + PythonTree r = (PythonTree)root; + if ( r!=null && r.isNil() ) { + if ( r.getChildCount()==0 ) { + r = null; + } + else if ( r.getChildCount()==1 ) { + r = (PythonTree)r.getChild(0); + // whoever invokes rule will set parent and child index + r.setParent(null); + r.setChildIndex(-1); + } + } + return r; + } + + public Object create(int tokenType, Token fromToken) { + fromToken = createToken(fromToken); + //((ClassicToken)fromToken).setType(tokenType); + fromToken.setType(tokenType); + PythonTree t = (PythonTree)create(fromToken); + return t; + } + + public Object create(int tokenType, Token fromToken, String text) { + fromToken = createToken(fromToken); + fromToken.setType(tokenType); + fromToken.setText(text); + PythonTree t = (PythonTree)create(fromToken); + return t; + } + + public Object create(int tokenType, String text) { + Token fromToken = createToken(tokenType, text); + PythonTree t = (PythonTree)create(fromToken); + return t; + } + + public int getType(Object t) { + ((PythonTree)t).getType(); + return 0; + } + + public String getText(Object t) { + return ((PythonTree)t).getText(); + } + + public Object getChild(Object t, int i) { + return ((PythonTree)t).getChild(i); + } + + public void setChild(Object t, int i, Object child) { + ((PythonTree)t).setChild(i, (PythonTree)child); + } + + public Object deleteChild(Object t, int i) { + return ((PythonTree)t).deleteChild(i); + } + + public int getChildCount(Object t) { + return ((PythonTree)t).getChildCount(); + } + } Modified: branches/astwrite/src/org/python/antlr/ast/Assert.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-11-29 00:48:32 UTC (rev 5659) +++ branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-11-29 04:59:20 UTC (rev 5660) @@ -1,22 +1,34 @@ // Autogenerated AST node package org.python.antlr.ast; -import java.util.ArrayList; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; import org.python.antlr.adapter.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; +import org.python.core.Py; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedGet; +import org.python.expose.ExposedMethod; +import org.python.expose.ExposedNew; +import org.python.expose.ExposedSet; +import org.python.expose.ExposedType; import java.io.DataOutputStream; import java.io.IOException; +import java.util.ArrayList; +@ExposedType(name = "_ast.Assert", base = PyObject.class) public class Assert extends stmtType { +public static final PyType TYPE = PyType.fromClass(Assert.class); private exprType test; public exprType getInternalTest() { return test; } - public Object getTest() { - return test; + @ExposedGet(name = "test") + public PyObject getTest() { + return Py.None; } + @ExposedSet(name = "test") public void setTest(Object test) { this.test = AstAdapters.to_expr(test); } @@ -25,9 +37,11 @@ public exprType getInternalMsg() { return msg; } - public Object getMsg() { - return msg; + @ExposedGet(name = "msg") + public PyObject getMsg() { + return Py.None; } + @ExposedSet(name = "msg") public void setMsg(Object msg) { this.msg = AstAdapters.to_expr(msg); } @@ -36,7 +50,15 @@ private final static String[] fields = new String[] {"test", "msg"}; public String[] get_fields() { return fields; } - public Assert() {} + public Assert() { + this(TYPE); + } + public Assert(PyType subType) { + super(subType); + } + @ExposedNew + @ExposedMethod + public void Module___init__(PyObject[] args, String[] keywords) {} public Assert(Object test, Object msg) { setTest(test); setMsg(msg); Modified: branches/astwrite/src/org/python/antlr/ast/Assign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-11-29 00:48:32 UTC (rev 5659) +++ branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-11-29 04:59:20 UTC (rev 5660) @@ -1,33 +1,47 @@ // Autogenerated AST node package org.python.antlr.ast; -import java.util.ArrayList; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; import org.python.antlr.adapter.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; +import org.python.core.Py; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedGet; +import org.python.expose.ExposedMethod; +import org.python.expose.ExposedNew; +import org.python.expose.ExposedSet; +import org.python.expose.ExposedType; import java.io.DataOutputStream; import java.io.IOException; +import java.util.ArrayList; +@ExposedType(name = "_ast.Assign", base = PyObject.class) public class Assign extends stmtType { +public static final PyType TYPE = PyType.fromClass(Assign.class); private java.util.List<exprType> targets; public java.util.List<exprType> getInternalTargets() { return targets; } - public Object getTargets() { - return new ListWrapper(targets, AstAdapters.exprAdapter); + @ExposedGet(name = "targets") + public PyObject getTargets() { + return Py.None; } + @ExposedSet(name = "targets") public void setTargets(Object targets) { - this.targets = AstAdapters.to_exprList(targets); + //FJW this.targets = AstAdapters.to_exprList(targets); } private exprType value; public exprType getInternalValue() { return value; } - public Object getValue() { - return value; + @ExposedGet(name = "value") + public PyObject getValue() { + return Py.None; } + @ExposedSet(name = "value") public void setValue(Object value) { this.value = AstAdapters.to_expr(value); } @@ -36,7 +50,15 @@ private final static String[] fields = new String[] {"targets", "value"}; public String[] get_fields() { return fields; } - public Assign() {} + public Assign() { + this(TYPE); + } + public Assign(PyType subType) { + super(subType); + } + @ExposedNew + @ExposedMethod + public void Module___init__(PyObject[] args, String[] keywords) {} public Assign(Object targets, Object value) { setTargets(targets); setValue(value); Added: branches/astwrite/src/org/python/antlr/ast/AstModule.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AstModule.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/AstModule.java 2008-11-29 04:59:20 UTC (rev 5660) @@ -0,0 +1,86 @@ +package org.python.antlr.ast; + +import org.python.core.ClassDictInit; +import org.python.core.imp; +import org.python.core.Py; +import org.python.core.PyObject; +import org.python.core.PyType; + +import org.python.antlr.AST; +import org.python.core.exceptions; + +public class AstModule implements ClassDictInit { + + private AstModule() {} + + public static void classDictInit(PyObject dict) { + dict.__setitem__("AST", AST.TYPE); + dict.__setitem__("Module", Module.TYPE); + dict.__setitem__("Assert", Assert.TYPE); + dict.__setitem__("Assign", Assign.TYPE); + dict.__setitem__("Attribute", AugAssign.TYPE); + dict.__setitem__("AugAssign", AugAssign.TYPE); + dict.__setitem__("BinOp", BinOp.TYPE); + dict.__setitem__("BoolOp", BoolOp.TYPE); + dict.__setitem__("Break", Break.TYPE); + dict.__setitem__("Call", Call.TYPE); + dict.__setitem__("ClassDef", ClassDef.TYPE); + dict.__setitem__("Compare", Compare.TYPE); + dict.__setitem__("Continue", Continue.TYPE); + dict.__setitem__("Delete", Delete.TYPE); + dict.__setitem__("Dict", Dict.TYPE); + dict.__setitem__("Ellipsis", Ellipsis.TYPE); +// dict.__setitem__("ErrorExpr", ErrorExpr.TYPE); +// dict.__setitem__("ErrorMod", ErrorMod.TYPE); +// dict.__setitem__("ErrorSlice", ErrorSlice.TYPE); +// dict.__setitem__("ErrorStmt", ErrorStmt.TYPE); + dict.__setitem__("ExceptHandler", ExceptHandler.TYPE); + dict.__setitem__("Exec", Exec.TYPE); + dict.__setitem__("Expr", Expr.TYPE); + dict.__setitem__("Expression", Expression.TYPE); + dict.__setitem__("ExtSlice", ExtSlice.TYPE); + dict.__setitem__("For", For.TYPE); + dict.__setitem__("FunctionDef", FunctionDef.TYPE); + dict.__setitem__("GeneratorExp", GeneratorExp.TYPE); + dict.__setitem__("Global", Global.TYPE); + dict.__setitem__("If", If.TYPE); + dict.__setitem__("IfExp", IfExp.TYPE); + dict.__setitem__("Import", Import.TYPE); + dict.__setitem__("ImportFrom", ImportFrom.TYPE); + dict.__setitem__("Index", Index.TYPE); + dict.__setitem__("Interactive", Interactive.TYPE); + dict.__setitem__("Lambda", Lambda.TYPE); + dict.__setitem__("List", List.TYPE); + dict.__setitem__("ListComp", ListComp.TYPE); + dict.__setitem__("Module", Module.TYPE); + dict.__setitem__("Name", Name.TYPE); + dict.__setitem__("Num", Num.TYPE); + dict.__setitem__("Pass", Pass.TYPE); + dict.__setitem__("Print", Print.TYPE); + dict.__setitem__("Raise", Raise.TYPE); + dict.__setitem__("Repr", Repr.TYPE); + dict.__setitem__("Return", Return.TYPE); + dict.__setitem__("Slice", Slice.TYPE); + dict.__setitem__("Str", Str.TYPE); + dict.__setitem__("Subscript", Subscript.TYPE); + dict.__setitem__("Suite", Suite.TYPE); + dict.__setitem__("TryExcept", TryExcept.TYPE); + dict.__setitem__("TryFinally", TryFinally.TYPE); + dict.__setitem__("Tuple", Tuple.TYPE); + dict.__setitem__("UnaryOp", UnaryOp.TYPE); + dict.__setitem__("While", While.TYPE); + dict.__setitem__("With", With.TYPE); + dict.__setitem__("Yield", Yield.TYPE); + dict.__setitem__("alias", aliasType.TYPE); + dict.__setitem__("arguments", argumentsType.TYPE); + dict.__setitem__("comprehension", comprehensionType.TYPE); + dict.__setitem__("excepthandler", excepthandlerType.TYPE); + dict.__setitem__("expr", exprType.TYPE); + dict.__setitem__("keyword", keywordType.TYPE); + dict.__setitem__("mod", modType.TYPE); + dict.__setitem__("slice", sliceType.TYPE); + dict.__setitem__("stmt", stmtType.TYPE); + dict.__setitem__("operator", imp.importName("org.python.antlr.ast.operatorType", false)); + dict.__setitem__("Add", imp.importName("org.python.antlr.ast.operatorType.Add", false)); + } +} Modified: branches/astwrite/src/org/python/antlr/ast/Attribute.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-11-29 00:48:32 UTC (rev 5659) +++ branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-11-29 04:59:20 UTC (rev 5660) @@ -1,22 +1,34 @@ // Autogenerated AST node package org.python.antlr.ast; -import java.util.ArrayList; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; import org.python.antlr.adapter.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; +import org.python.core.Py; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedGet; +import org.python.expose.ExposedMethod; +import org.python.expose.ExposedNew; +import org.python.expose.ExposedSet; +import org.python.expose.ExposedType; import java.io.DataOutputStream; import java.io.IOException; +import java.util.ArrayList; +@ExposedType(name = "_ast.Attribute", base = PyObject.class) public class Attribute extends exprType implements Context { +public static final PyType TYPE = PyType.fromClass(Attribute.class); private exprType value; public exprType getInternalValue() { return value; } - public Object getValue() { - return value; + @ExposedGet(name = "value") + public PyObject getValue() { + return Py.None; } + @ExposedSet(name = "value") public void setValue(Object value) { this.value = AstAdapters.to_expr(value); } @@ -25,9 +37,11 @@ public String getInternalAttr() { return attr; } - public Object getAttr() { - return attr; + @ExposedGet(name = "attr") + public PyObject getAttr() { + return Py.None; } + @ExposedSet(name = "attr") public void setAttr(Object attr) { this.attr = AstAdapters.to_identifier(attr); } @@ -36,9 +50,11 @@ public expr_contextType getInternalCtx() { return ctx; } - public Object getCtx() { - return ctx; + @ExposedGet(name = "ctx") + public PyObject getCtx() { + return Py.None; } + @ExposedSet(name = "ctx") public void setCtx(Object ctx) { this.ctx = AstAdapters.to_expr_context(ctx); } @@ -48,7 +64,15 @@ "ctx"}; public String[] get_fields() { return fields; } - public Attribute() {} + public Attribute() { + this(TYPE); + } + public Attribute(PyType subType) { + super(subType); + } + @ExposedNew + @ExposedMethod + public void Module___init__(PyObject[] args, String[] keywords) {} public Attribute(Object value, Object attr, Object ctx) { setValue(value); setAttr(attr); Modified: branches/astwrite/src/org/python/antlr/ast/AugAssign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-11-29 00:48:32 UTC (rev 5659) +++ branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-11-29 04:59:20 UTC (rev 5660) @@ -1,22 +1,34 @@ // Autogenerated AST node package org.python.antlr.ast; -import java.util.ArrayList; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; import org.python.antlr.adapter.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; +import org.python.core.Py; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedGet; +import org.python.expose.ExposedMethod; +import org.python.expose.ExposedNew; +import org.python.expose.ExposedSet; +import org.python.expose.ExposedType; import java.io.DataOutputStream; import java.io.IOException; +import java.util.ArrayList; +@ExposedType(name = "_ast.AugAssign", base = PyObject.class) public class AugAssign extends stmtType { +public static final PyType TYPE = PyType.fromClass(AugAssign.class); private exprType target; public exprType getInternalTarget() { return target; } - public Object getTarget() { - return target; + @ExposedGet(name = "target") + public PyObject getTarget() { + return Py.None; } + @ExposedSet(name = "target") public void setTarget(Object target) { this.target = AstAdapters.to_expr(target); } @@ -25,9 +37,11 @@ public operatorType getInternalOp() { return op; } - public Object getOp() { - return op; + @ExposedGet(name = "op") + public PyObject getOp() { + return Py.None; } + @ExposedSet(name = "op") public void setOp(Object op) { this.op = AstAdapters.to_operator(op); } @@ -36,9 +50,11 @@ public exprType getInternalValue() { return value; } - public Object getValue() { - return value; + @ExposedGet(name = "value") + public PyObject getValue() { + return Py.None; } + @ExposedSet(name = "value") public void setValue(Object value) { this.value = AstAdapters.to_expr(value); } @@ -48,7 +64,15 @@ "value"}; public String[] get_fields() { return fields; } - public AugAssign() {} + public AugAssign() { + this(TYPE); + } + public AugAssign(PyType subType) { + super(subType); + } + @ExposedNew + @ExposedMethod + public void Module___init__(PyObject[] args, String[] keywords) {} public AugAssign(Object target, Object op, Object value) { setTarget(target); setOp(op); Modified: branches/astwrite/src/org/python/antlr/ast/BinOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-11-29 00:48:32 UTC (rev 5659) +++ branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-11-29 04:59:20 UTC (rev 5660) @@ -1,22 +1,34 @@ // Autogenerated AST node package org.python.antlr.ast; -import java.util.ArrayList; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; import org.python.antlr.adapter.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; +import org.python.core.Py; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedGet; +import org.python.expose.ExposedMethod; +import org.python.expose.ExposedNew; +import org.python.expose.ExposedSet; +import org.python.expose.ExposedType; import java.io.DataOutputStream; import java.io.IOException; +import java.util.ArrayList; +@ExposedType(name = "_ast.BinOp", base = PyObject.class) public class BinOp extends exprType { +public static final PyType TYPE = PyType.fromClass(BinOp.class); private exprType left; public exprType getInternalLeft() { return left; } - public Object getLeft() { - return left; + @ExposedGet(name = "left") + public PyObject getLeft() { + return Py.None; } + @ExposedSet(name = "left") public void setLeft(Object left) { this.left = AstAdapters.to_expr(left); } @@ -25,9 +37,11 @@ public operatorType getInternalOp() { return op; } - public Object getOp() { - return op; + @ExposedGet(name = "op") + public PyObject getOp() { + return Py.None; } + @ExposedSet(name = "op") public void setOp(Object op) { this.op = AstAdapters.to_operator(op); } @@ -36,9 +50,11 @@ public exprType getInternalRight() { return right; } - public Object getRight() { - return right; + @ExposedGet(name = "right") + public PyObject getRight() { + return Py.None; } + @ExposedSet(name = "right") public void setRight(Object right) { this.right = AstAdapters.to_expr(right); } @@ -47,7 +63,15 @@ private final static String[] fields = new String[] {"left", "op", "right"}; public String[] get_fields() { return fields; } - public BinOp() {} + public BinOp() { + this(TYPE); + } + public BinOp(PyType subType) { + super(subType); + } + @ExposedNew + @ExposedMethod + public void Module___init__(PyObject[] args, String[] keywords) {} public BinOp(Object left, Object op, Object right) { setLeft(left); setOp(op); Modified: branches/astwrite/src/org/python/antlr/ast/BoolOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-11-29 00:48:32 UTC (rev 5659) +++ branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-11-29 04:59:20 UTC (rev 5660) @@ -1,22 +1,34 @@ // Autogenerated AST node package org.python.antlr.ast; -import java.util.ArrayList; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; import org.python.antlr.adapter.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; +import org.python.core.Py; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedGet; +import org.python.expose.ExposedMethod; +import org.python.expose.ExposedNew; +import org.python.expose.ExposedSet; +import org.python.expose.ExposedType; import java.io.DataOutputStream; import java.io.IOException; +import java.util.ArrayList; +@ExposedType(name = "_ast.BoolOp", base = PyObject.class) public class BoolOp extends exprType { +public static final PyType TYPE = PyType.fromClass(BoolOp.class); private boolopType op; public boolopType getInternalOp() { return op; } - public Object getOp() { - return op; + @ExposedGet(name = "op") + public PyObject getOp() { + return Py.None; } + @ExposedSet(name = "op") public void setOp(Object op) { this.op = AstAdapters.to_boolop(op); } @@ -25,18 +37,28 @@ public java.util.List<exprType> getInternalValues() { return values; } - public Object getValues() { - return new ListWrapper(values, AstAdapters.exprAdapter); + @ExposedGet(name = "values") + public PyObject getValues() { + return Py.None; } + @ExposedSet(name = "values") public void setValues(Object values) { - this.values = AstAdapters.to_exprList(values); + //FJW this.values = AstAdapters.to_exprList(values); } private final static String[] fields = new String[] {"op", "values"}; public String[] get_fields() { return fields; } - public BoolOp() {} + public BoolOp() { + this(TYPE); + } + public BoolOp(PyType subType) { + super(subType); + } + @ExposedNew + @ExposedMethod + public void Module___init__(PyObject[] args, String[] keywords) {} public BoolOp(Object op, Object values) { setOp(op); setValues(values); Modified: branches/astwrite/src/org/python/antlr/ast/Break.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Break.java 2008-11-29 00:48:32 UTC (rev 5659) +++ branches/astwrite/src/org/python/antlr/ast/Break.java 2008-11-29 04:59:20 UTC (rev 5660) @@ -1,15 +1,25 @@ // Autogenerated AST node package org.python.antlr.ast; -import java.util.ArrayList; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; import org.python.antlr.adapter.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; +import org.python.core.Py; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedGet; +import org.python.expose.ExposedMethod; +import org.python.expose.ExposedNew; +import org.python.expose.ExposedSet; +import org.python.expose.ExposedType; import java.io.DataOutputStream; import java.io.IOException; +import java.util.ArrayList; +@ExposedType(name = "_ast.Break", base = PyObject.class) public class Break extends stmtType { +public static final PyType TYPE = PyType.fromClass(Break.class); public Break(Token token) { super(token); Modified: branches/astwrite/src/org/python/antlr/ast/Call.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Call.java 2008-11-29 00:48:32 UTC (rev 5659) +++ branches/astwrite/src/org/python/antlr/ast/Call.java 2008-11-29 04:59:20 UTC (rev 5660) @@ -1,22 +1,34 @@ // Autogenerated AST node package org.python.antlr.ast; -import java.util.ArrayList; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; import org.python.antlr.adapter.ListWrapper; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; +import org.python.core.Py; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedGet; +import org.python.expose.ExposedMethod; +import org.python.expose.ExposedNew; +import org.python.expose.ExposedSet; +import org.python.expose.ExposedType; import java.io.DataOutputStream; import java.io.IOException; +import java.util.ArrayList; +@ExposedType(name = "_ast.Call", base = PyObject.class) public class Call extends exprType { +public static final PyType TYPE = PyType.fromClass(Call.class); private exprType func; public exprType getInternalFunc() { return func; } - public Object getFunc() { - return func; + @ExposedGet(name = "func") + public PyObject getFunc() { + return Py.None; } + @ExposedSet(name = "func") public void setFunc(Object func) { this.func = AstAdapters.to_expr(func); } @@ -25,31 +37,37 @@ public java.util.List<exprType> getInternalArgs() { return args; } - public Object getArgs() { - return new ListWrapper(args, AstAdapters.exprAdapter); + @ExposedGet(name = "args") + public PyObject getArgs() { + return Py.None; } + @ExposedSet(name = "args") public void setArgs(Object args) { - this.args = AstAdapters.to_exprList(args); + //FJW this.args = AstAdapters.to_exprList(args); } private java.util.List<keywordType> keywords; public java.util.List<keywordType> getInternalKeywords() { return keywords; } - public Object getKeywords() { - return new ListWrapper(keywords, AstAdapters.keywordAdapter); + @ExposedGet(name = "keywords") + public PyObject getKeywords() { + return Py.None; } + @ExposedSet(name = "keywords") public void setKeywords(Object keywords) { - this.keywords = AstAdapters.to_keywordList(keywords); + //FJW this.keywords = AstAdapters.to_keywordList(keywords); } private exprType starargs; public exprType getInternalStarargs() { return starargs; } - public Object getStarargs() { - return starargs; + @ExposedGet(name = "starargs") + public PyObject getStarargs() { + return Py.None; } + @ExposedSet(name = "starargs") public void setStarargs(Object starargs) { this.starargs = AstAdapters.to_expr(starargs); } @@ -58,9 +76,11 @@ public exprType getInternalKwargs() { return kwargs; } - public Object getKwargs() { - return kwargs; + @ExposedGet(name = "kwargs") + public PyObject getKwargs() { + return Py.None; } + @ExposedSet(name = "kwargs") public void setKwargs(Object kwargs) { this.kwargs = AstAdapters.to_expr(kwargs); } @@ -71,7 +91,15 @@ "starargs", "kwargs"}; public String[] get_fields() { return fields; } - public Call() {} + public Call() { + this(TYPE); + } + public Call(PyType subType) { + super(subType); + } + @ExposedNew + @ExposedMethod + public void Module___init__(PyObject[] args, String[] keywords) {} public Call(Object func, Object args, Object keywords, Object starargs, Object kwargs) { setFunc(func); Modified: branches/astwrite/src/org/python/antlr/ast/ClassDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-11-29 00:48:32 UTC (rev 5659) +++ branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-11-29 04:59:20 UTC (rev 5660) @@ -1,22 +1,34 @@ // Autogenerated AST node package org.python.antlr.ast; -import java.util.ArrayList; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; import org.python.antlr.adapter.ListWrapper; import org.antlr.runtime.CommonToke... [truncated message content] |
From: <fwi...@us...> - 2008-12-02 03:31:51
|
Revision: 5672 http://jython.svn.sourceforge.net/jython/?rev=5672&view=rev Author: fwierzbicki Date: 2008-12-02 03:31:45 +0000 (Tue, 02 Dec 2008) Log Message: ----------- Finally some real progress on PyObject backed ast nodes. Reverted back to 2.5 style test_ast.py as a middle step on the way to 2.6 style test_ast.py. Modified Paths: -------------- branches/astwrite/Lib/test/test_ast.py branches/astwrite/ast/asdl_antlr.py branches/astwrite/grammar/Python.g branches/astwrite/src/org/python/antlr/adapter/AliasAdapter.java branches/astwrite/src/org/python/antlr/adapter/AstAdapter.java branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java branches/astwrite/src/org/python/antlr/adapter/CmpopAdapter.java branches/astwrite/src/org/python/antlr/adapter/ComprehensionAdapter.java branches/astwrite/src/org/python/antlr/adapter/ExcepthandlerAdapter.java branches/astwrite/src/org/python/antlr/adapter/ExprAdapter.java branches/astwrite/src/org/python/antlr/adapter/IdentifierAdapter.java branches/astwrite/src/org/python/antlr/adapter/KeywordAdapter.java branches/astwrite/src/org/python/antlr/adapter/SliceAdapter.java branches/astwrite/src/org/python/antlr/adapter/StmtAdapter.java branches/astwrite/src/org/python/antlr/ast/Assert.java branches/astwrite/src/org/python/antlr/ast/Assign.java branches/astwrite/src/org/python/antlr/ast/AstModule.java branches/astwrite/src/org/python/antlr/ast/Attribute.java branches/astwrite/src/org/python/antlr/ast/AugAssign.java branches/astwrite/src/org/python/antlr/ast/BinOp.java branches/astwrite/src/org/python/antlr/ast/BoolOp.java branches/astwrite/src/org/python/antlr/ast/Break.java branches/astwrite/src/org/python/antlr/ast/Call.java branches/astwrite/src/org/python/antlr/ast/ClassDef.java branches/astwrite/src/org/python/antlr/ast/Compare.java branches/astwrite/src/org/python/antlr/ast/Continue.java branches/astwrite/src/org/python/antlr/ast/Delete.java branches/astwrite/src/org/python/antlr/ast/Dict.java branches/astwrite/src/org/python/antlr/ast/Ellipsis.java branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java branches/astwrite/src/org/python/antlr/ast/Exec.java branches/astwrite/src/org/python/antlr/ast/Expr.java branches/astwrite/src/org/python/antlr/ast/Expression.java branches/astwrite/src/org/python/antlr/ast/ExtSlice.java branches/astwrite/src/org/python/antlr/ast/For.java branches/astwrite/src/org/python/antlr/ast/FunctionDef.java branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java branches/astwrite/src/org/python/antlr/ast/Global.java branches/astwrite/src/org/python/antlr/ast/If.java branches/astwrite/src/org/python/antlr/ast/IfExp.java branches/astwrite/src/org/python/antlr/ast/Import.java branches/astwrite/src/org/python/antlr/ast/ImportFrom.java branches/astwrite/src/org/python/antlr/ast/Index.java branches/astwrite/src/org/python/antlr/ast/Interactive.java branches/astwrite/src/org/python/antlr/ast/Lambda.java branches/astwrite/src/org/python/antlr/ast/List.java branches/astwrite/src/org/python/antlr/ast/ListComp.java branches/astwrite/src/org/python/antlr/ast/Module.java branches/astwrite/src/org/python/antlr/ast/Name.java branches/astwrite/src/org/python/antlr/ast/Num.java branches/astwrite/src/org/python/antlr/ast/Pass.java branches/astwrite/src/org/python/antlr/ast/Print.java branches/astwrite/src/org/python/antlr/ast/Raise.java branches/astwrite/src/org/python/antlr/ast/Repr.java branches/astwrite/src/org/python/antlr/ast/Return.java branches/astwrite/src/org/python/antlr/ast/Slice.java branches/astwrite/src/org/python/antlr/ast/Str.java branches/astwrite/src/org/python/antlr/ast/Subscript.java branches/astwrite/src/org/python/antlr/ast/Suite.java branches/astwrite/src/org/python/antlr/ast/TryExcept.java branches/astwrite/src/org/python/antlr/ast/TryFinally.java branches/astwrite/src/org/python/antlr/ast/Tuple.java branches/astwrite/src/org/python/antlr/ast/UnaryOp.java branches/astwrite/src/org/python/antlr/ast/VisitorBase.java branches/astwrite/src/org/python/antlr/ast/While.java branches/astwrite/src/org/python/antlr/ast/With.java branches/astwrite/src/org/python/antlr/ast/Yield.java branches/astwrite/src/org/python/antlr/ast/aliasType.java branches/astwrite/src/org/python/antlr/ast/argumentsType.java branches/astwrite/src/org/python/antlr/ast/cmpopType.java branches/astwrite/src/org/python/antlr/ast/comprehensionType.java branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java branches/astwrite/src/org/python/antlr/ast/exprType.java branches/astwrite/src/org/python/antlr/ast/keywordType.java branches/astwrite/src/org/python/antlr/ast/modType.java branches/astwrite/src/org/python/antlr/ast/sliceType.java branches/astwrite/src/org/python/antlr/ast/stmtType.java Added Paths: ----------- branches/astwrite/src/org/python/core/AstList.java Removed Paths: ------------- branches/astwrite/src/org/python/antlr/adapter/ListWrapper.java Modified: branches/astwrite/Lib/test/test_ast.py =================================================================== --- branches/astwrite/Lib/test/test_ast.py 2008-12-01 23:33:55 UTC (rev 5671) +++ branches/astwrite/Lib/test/test_ast.py 2008-12-02 03:31:45 UTC (rev 5672) @@ -1,49 +1,36 @@ -import sys, itertools, unittest -from test import test_support +#Taken and modified from CPython's release25-maint branch, revision 62446. +import sys,os, itertools import ast -if sys.platform.startswith('java'): - import java.util.List - - ast_list = java.util.List - get_symbol_key = lambda op: op - - def get_class_name(t): - result = t.__class__.__name__ +def get_class_name(t): + result = t.__class__.__name__ + if os.name.startswith('java'): if result in ("expr_contextType", - "boolopType", - "unaryopType", - "cmpopType", - "operatorType"): - result = str(t) - if result == "AugLoad": - result = "Load" - elif result == "AugStore": - result = "Store" - elif result.endswith("Type"): - result = result[:-4] - return result + "boolopType", + "unaryopType", + "cmpopType", + "operatorType"): + result = t.name() + else: + result = result.split(".")[-1] + if result.endswith("Type"): + result = result[:-4] + return result -else: - ast_list = list - get_symbol_key = type - get_class_name = lambda node: node.__class__.__name__ - def to_tuple(t): if t is None or isinstance(t, (basestring, int, long, complex)): return t - elif isinstance(t, ast_list): + elif hasattr(t, '__iter__'): return [to_tuple(e) for e in t] result = [get_class_name(t)] if hasattr(t, 'lineno') and hasattr(t, 'col_offset'): result.append((t.lineno, t.col_offset)) - if t._fields is None: + if not hasattr(t, '_fields') or t._fields is None: return tuple(result) for f in t._fields: result.append(to_tuple(getattr(t, f))) return tuple(result) - # These tests are compiled through "exec" # There should be atleast one test per statement exec_tests = [ @@ -147,189 +134,59 @@ # TODO: expr_context, slice, boolop, operator, unaryop, cmpop, comprehension # excepthandler, arguments, keywords, alias -class AST_Tests(unittest.TestCase): +if __name__=='__main__' and sys.argv[1:] == ['-g']: + for statements, kind in ((exec_tests, "exec"), (single_tests, "single"), + (eval_tests, "eval")): + print kind+"_results = [" + for s in statements: + print repr(to_tuple(compile(s, "?", kind, 0x400)))+"," + print "]" + print "run_tests()" + raise SystemExit - def _assert_order(self, ast_node, parent_pos): - if not isinstance(ast_node, ast.AST) or ast_node._fields is None: +def test_order(ast_node, parent_pos): + + if (not isinstance(ast_node, ast.AST) + or not hasattr(ast_node, '_fields') + or ast_node._fields == None): return - if isinstance(ast_node, (ast.expr, ast.stmt, ast.excepthandler)): - node_pos = (ast_node.lineno, ast_node.col_offset) - self.assert_(node_pos >= parent_pos) - parent_pos = (ast_node.lineno, ast_node.col_offset) - for name in ast_node._fields: - value = getattr(ast_node, name) - if isinstance(value, ast_list): - for child in value: - self._assert_order(child, parent_pos) - elif value is not None: - self._assert_order(value, parent_pos) + if isinstance(ast_node, (ast.expr, ast.stmt, ast.excepthandler)): + node_pos = (ast_node.lineno, ast_node.col_offset) + assert node_pos >= parent_pos, (node_pos, parent_pos) + parent_pos = (ast_node.lineno, ast_node.col_offset) + for name in ast_node._fields: + value = getattr(ast_node, name) + if hasattr(value, '__iter__'): + for child in value: + test_order(child, parent_pos) + elif value != None: + test_order(value, parent_pos) - def test_snippets(self): - for input, output, kind in ((exec_tests, exec_results, "exec"), - (single_tests, single_results, "single"), - (eval_tests, eval_results, "eval")): - for i, o in itertools.izip(input, output): - ast_tree = compile(i, "?", kind, ast.PyCF_ONLY_AST) - self.assertEquals(to_tuple(ast_tree), o) - self._assert_order(ast_tree, (0, 0)) +def run_tests(): + for input, output, kind in ((exec_tests, exec_results, "exec"), + (single_tests, single_results, "single"), + (eval_tests, eval_results, "eval")): + for i, o in itertools.izip(input, output): + ast_tree = compile(i, "?", kind, 0x400) + assert to_tuple(ast_tree) == o, "expected %s, got %s" % ( + o, to_tuple(ast_tree)) + test_order(ast_tree, (0, 0)) - def test_nodeclasses(self): - x = ast.BinOp(1, ast.Add, 3, lineno=0) - self.assertEquals(x.left.n, 1) - self.assertEquals(x.op, ast.Add) - self.assertEquals(x.right.n, 3) - self.assertEquals(x.lineno, 0) - - # node raises exception when not given enough arguments - self.assertRaises(TypeError, ast.BinOp, 1, 2) - - # can set attributes through kwargs too - x = ast.BinOp(left=1, op=ast.Add, right=3, lineno=0) - self.assertEquals(x.left.n, 1) - self.assertEquals(x.op, ast.Add) - self.assertEquals(x.right.n, 3) - self.assertEquals(x.lineno, 0) - - # this used to fail because Sub._fields was None - x = ast.Sub() - - def test_pickling(self): - import pickle - mods = [pickle] - try: - import cPickle - mods.append(cPickle) - except ImportError: - pass - protocols = [0, 1, 2] - for mod in mods: - for protocol in protocols: - for ast in (compile(i, "?", "exec", 0x400) for i in exec_tests): - ast2 = mod.loads(mod.dumps(ast, protocol)) - self.assertEquals(to_tuple(ast2), to_tuple(ast)) - - -class ASTHelpers_Test(unittest.TestCase): - - def test_parse(self): - a = ast.parse('foo(1 + 1)') - b = compile('foo(1 + 1)', '<unknown>', 'exec', ast.PyCF_ONLY_AST) - self.assertEqual(ast.dump(a), ast.dump(b)) - - def test_dump(self): - node = ast.parse('spam(eggs, "and cheese")') - self.assertEqual(ast.dump(node), - u"Module(body=[Expr(value=Call(func=Name(id=u'spam', ctx=Load()), " - "args=[Name(id=u'eggs', ctx=Load()), Str(s='and cheese')], " - "keywords=[], starargs=None, kwargs=None))])" - ) - self.assertEqual(ast.dump(node, annotate_fields=False), - "Module([Expr(Call(Name(u'spam', Load()), [Name(u'eggs', Load()), " - "Str('and cheese')], [], None, None))])" - ) - self.assertEqual(ast.dump(node, include_attributes=True), - "Module(body=[Expr(value=Call(func=Name(id=u'spam', ctx=Load(), " - "lineno=1, col_offset=0), args=[Name(id=u'eggs', ctx=Load(), " - "lineno=1, col_offset=5), Str(s='and cheese', lineno=1, " - "col_offset=11)], keywords=[], starargs=None, kwargs=None, " - "lineno=1, col_offset=0), lineno=1, col_offset=0)])" - ) - - def test_copy_location(self): - src = ast.parse('1 + 1', mode='eval') - src.body.right = ast.copy_location(ast.Num(2), src.body.right) - self.assertEqual(ast.dump(src, include_attributes=True), - 'Expression(body=BinOp(left=Num(n=1, lineno=1, col_offset=0), ' - 'op=Add(), right=Num(n=2, lineno=1, col_offset=4), lineno=1, ' - 'col_offset=0))' - ) - - def test_fix_missing_locations(self): - src = ast.parse('write("spam")') - src.body.append(ast.Expr(ast.Call(ast.Name('spam', ast.Load()), - [ast.Str('eggs')], [], None, None))) - self.assertEqual(src, ast.fix_missing_locations(src)) - self.assertEqual(ast.dump(src, include_attributes=True), - u"Module(body=[Expr(value=Call(func=Name(id=u'write', ctx=Load(), " - "lineno=1, col_offset=0), args=[Str(s='spam', lineno=1, " - "col_offset=6)], keywords=[], starargs=None, kwargs=None, " - "lineno=1, col_offset=0), lineno=1, col_offset=0), " - "Expr(value=Call(func=Name(id=u'spam', ctx=Load(), lineno=1, " - "col_offset=0), args=[Str(s=u'eggs', lineno=1, col_offset=0)], " - "keywords=[], starargs=None, kwargs=None, lineno=1, " - "col_offset=0), lineno=1, col_offset=0)])" - ) - - def test_increment_lineno(self): - src = ast.parse('1 + 1', mode='eval') - self.assertEqual(ast.increment_lineno(src, n=3), src) - self.assertEqual(ast.dump(src, include_attributes=True), - 'Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), ' - 'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, ' - 'col_offset=0))' - ) - - def test_iter_fields(self): - node = ast.parse('foo()', mode='eval') - d = dict(ast.iter_fields(node.body)) - self.assertEqual(d.pop('func').id, 'foo') - self.assertEqual(d, {'keywords': [], 'kwargs': None, - 'args': [], 'starargs': None}) - - def test_iter_child_nodes(self): - node = ast.parse("spam(23, 42, eggs='leek')", mode='eval') - self.assertEqual(len(list(ast.iter_child_nodes(node.body))), 4) - iterator = ast.iter_child_nodes(node.body) - self.assertEqual(iterator.next().id, 'spam') - self.assertEqual(iterator.next().n, 23) - self.assertEqual(iterator.next().n, 42) - self.assertEqual(ast.dump(iterator.next()), - u"keyword(arg=u'eggs', value=Str(s='leek'))" - ) - - def test_get_docstring(self): - node = ast.parse('def foo():\n """line one\n line two"""') - self.assertEqual(ast.get_docstring(node.body[0]), - 'line one\nline two') - - def test_literal_eval(self): - self.assertEqual(ast.literal_eval('[1, 2, 3]'), [1, 2, 3]) - self.assertEqual(ast.literal_eval('{"foo": 42}'), {"foo": 42}) - self.assertEqual(ast.literal_eval('(True, False, None)'), (True, False, None)) - self.assertRaises(ValueError, ast.literal_eval, 'foo()') - - -def test_main(): - test_support.run_unittest(AST_Tests, ASTHelpers_Test) - -def main(): - if __name__ != '__main__': - return - if sys.argv[1:] == ['-g']: - for statements, kind in ((exec_tests, "exec"), (single_tests, "single"), - (eval_tests, "eval")): - print kind+"_results = [" - for s in statements: - print repr(to_tuple(compile(s, "?", kind, 0x400)))+"," - print "]" - print "main()" - raise SystemExit - test_main() - +# XXX: AugStore added for Jython. Short term it is too hard to emit just "Store" as CPython does. #### EVERYTHING BELOW IS GENERATED ##### exec_results = [ ('Module', [('FunctionDef', (1, 0), 'f', ('arguments', [], None, None, []), [('Pass', (1, 9))], [])]), -('Module', [('ClassDef', (1, 0), 'C', [], [('Pass', (1, 8))], [])]), +('Module', [('ClassDef', (1, 0), 'C', [], [('Pass', (1, 8))],[])]), ('Module', [('FunctionDef', (1, 0), 'f', ('arguments', [], None, None, []), [('Return', (1, 8), ('Num', (1, 15), 1))], [])]), ('Module', [('Delete', (1, 0), [('Name', (1, 4), 'v', ('Del',))])]), ('Module', [('Assign', (1, 0), [('Name', (1, 0), 'v', ('Store',))], ('Num', (1, 4), 1))]), -('Module', [('AugAssign', (1, 0), ('Name', (1, 0), 'v', ('Store',)), ('Add',), ('Num', (1, 5), 1))]), +('Module', [('AugAssign', (1, 0), ('Name', (1, 0), 'v', ('AugStore',)), ('Add',), ('Num', (1, 5), 1))]), ('Module', [('Print', (1, 0), ('Name', (1, 8), 'f', ('Load',)), [('Num', (1, 11), 1)], False)]), ('Module', [('For', (1, 0), ('Name', (1, 4), 'v', ('Store',)), ('Name', (1, 9), 'v', ('Load',)), [('Pass', (1, 11))], [])]), ('Module', [('While', (1, 0), ('Name', (1, 6), 'v', ('Load',)), [('Pass', (1, 8))], [])]), ('Module', [('If', (1, 0), ('Name', (1, 3), 'v', ('Load',)), [('Pass', (1, 5))], [])]), ('Module', [('Raise', (1, 0), ('Name', (1, 6), 'Exception', ('Load',)), ('Str', (1, 17), 'string'), None)]), -('Module', [('TryExcept', (1, 0), [('Pass', (2, 2))], [('ExceptHandler', (3, 0), ('Name', (3, 7), 'Exception', ('Load',)), None, [('Pass', (4, 2))])], [])]), +('Module', [('TryExcept', (1, 0), [('Pass', (2, 2))], [('excepthandler', (3, 0), ('Name', (3, 7), 'Exception', ('Load',)), None, [('Pass', (4, 2))], 3, 0)], [])]), ('Module', [('TryFinally', (1, 0), [('Pass', (2, 2))], [('Pass', (4, 2))])]), ('Module', [('Assert', (1, 0), ('Name', (1, 7), 'v', ('Load',)), None)]), ('Module', [('Import', (1, 0), [('alias', 'sys', None)])]), @@ -364,4 +221,4 @@ ('Expression', ('Tuple', (1, 0), [('Num', (1, 0), 1), ('Num', (1, 2), 2), ('Num', (1, 4), 3)], ('Load',))), ('Expression', ('Call', (1, 0), ('Attribute', (1, 0), ('Attribute', (1, 0), ('Attribute', (1, 0), ('Name', (1, 0), 'a', ('Load',)), 'b', ('Load',)), 'c', ('Load',)), 'd', ('Load',)), [('Subscript', (1, 8), ('Attribute', (1, 8), ('Name', (1, 8), 'a', ('Load',)), 'b', ('Load',)), ('Slice', ('Num', (1, 12), 1), ('Num', (1, 14), 2), None), ('Load',))], [], None, None)), ] -main() +run_tests() Modified: branches/astwrite/ast/asdl_antlr.py =================================================================== --- branches/astwrite/ast/asdl_antlr.py 2008-12-01 23:33:55 UTC (rev 5671) +++ branches/astwrite/ast/asdl_antlr.py 2008-12-02 03:31:45 UTC (rev 5672) @@ -56,13 +56,14 @@ print >> self.file, "// Autogenerated AST node" print >> self.file, 'package org.python.antlr.ast;' if refersToPythonTree: + print >> self.file, 'import org.antlr.runtime.CommonToken;' + print >> self.file, 'import org.antlr.runtime.Token;' print >> self.file, 'import org.python.antlr.PythonTree;' print >> self.file, 'import org.python.antlr.adapter.AstAdapters;' - print >> self.file, 'import org.python.antlr.adapter.ListWrapper;' - print >> self.file, 'import org.antlr.runtime.CommonToken;' - print >> self.file, 'import org.antlr.runtime.Token;' + print >> self.file, 'import org.python.core.AstList;' print >> self.file, 'import org.python.core.Py;' print >> self.file, 'import org.python.core.PyObject;' + print >> self.file, 'import org.python.core.PyString;' print >> self.file, 'import org.python.core.PyType;' print >> self.file, 'import org.python.expose.ExposedGet;' print >> self.file, 'import org.python.expose.ExposedMethod;' @@ -201,6 +202,7 @@ self.emit("public abstract class %(name)sType extends PythonTree {" % locals(), depth) self.emit("", 0) + self.emit("public static final PyType TYPE = PyType.fromClass(%sType.class);" % name, depth + 1); self.attributes(sum, depth); @@ -405,7 +407,7 @@ self.emit("@ExposedMethod", depth) self.emit("public void Module___init__(PyObject[] args, String[] keywords) {}", depth) - fpargs = ", ".join(["Object %s" % f.name for f in fields]) + fpargs = ", ".join(["PyObject %s" % f.name for f in fields]) self.emit("public %s(%s) {" % (ctorname, fpargs), depth) for f in fields: self.emit("set%s(%s);" % (str(f.name).capitalize(), @@ -450,16 +452,26 @@ self.emit('@ExposedGet(name = "%s")' % field.name, depth) self.emit("public PyObject get%s() {" % (str(field.name).capitalize()), depth) if field.seq: - #FIXME: temporary - #self.emit("return new ListWrapper(%s, AstAdapters.%sAdapter);" % (field.name, field.type), depth+1) - self.emit("return Py.None;", depth+1) + self.emit("return new AstList(%s, AstAdapters.%sAdapter);" % (field.name, field.type), depth+1) else: - #FIXME: temporary - #self.emit("return %s;" % field.name, depth+1) - self.emit("return Py.None;", depth+1) + if str(field.type) == 'identifier': + self.emit("if (%s == null) return Py.None;" % field.name, depth+1) + self.emit("return new PyString(%s);" % field.name, depth+1) + elif str(field.type) == 'string' or str(field.type) == 'object': + self.emit("return (PyObject)%s;" % field.name, depth+1) + elif str(field.type) == 'bool': + self.emit("if (%s) return Py.True;" % field.name, depth+1) + self.emit("return Py.False;" % field.name, depth+1) + elif str(field.type) == 'int': + self.emit("return Py.newInteger(%s);" % field.name, depth+1) + elif field.typedef.simple: + self.emit("return Py.None;//(%s);" % field.name, depth+1) + else: + self.emit("return %s;" % field.name, depth+1) + #self.emit("return Py.None;", depth+1) self.emit("}", depth) self.emit('@ExposedSet(name = "%s")' % field.name, depth) - self.emit("public void set%s(Object %s) {" % (str(field.name).capitalize(), + self.emit("public void set%s(PyObject %s) {" % (str(field.name).capitalize(), field.name), depth) if field.seq: #self.emit("this.%s = new %s(" % (field.name, self.javaType(field)), depth+1) Modified: branches/astwrite/grammar/Python.g =================================================================== --- branches/astwrite/grammar/Python.g 2008-12-01 23:33:55 UTC (rev 5671) +++ branches/astwrite/grammar/Python.g 2008-12-02 03:31:45 UTC (rev 5672) @@ -145,6 +145,7 @@ import org.python.antlr.ast.With; import org.python.antlr.ast.Yield; import org.python.core.Py; +import org.python.core.PyObject; import org.python.core.PyString; import org.python.core.PyUnicode; @@ -1189,16 +1190,16 @@ } if (o instanceof Call) { Call c = (Call)o; - c.setFunc($etype); + c.setFunc((PyObject)$etype); $etype = c; } else if (o instanceof Subscript) { Subscript c = (Subscript)o; - c.setValue($etype); + c.setValue((PyObject)$etype); $etype = c; } else if (o instanceof Attribute) { Attribute c = (Attribute)o; c.setCharStartIndex($etype.getCharStartIndex()); - c.setValue($etype); + c.setValue((PyObject)$etype); $etype = c; } } Modified: branches/astwrite/src/org/python/antlr/adapter/AliasAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/AliasAdapter.java 2008-12-01 23:33:55 UTC (rev 5671) +++ branches/astwrite/src/org/python/antlr/adapter/AliasAdapter.java 2008-12-02 03:31:45 UTC (rev 5672) @@ -1,6 +1,7 @@ package org.python.antlr.adapter; import org.python.core.Py; +import org.python.core.PyObject; import org.python.core.PyJavaInstance; import org.python.antlr.ast.aliasType; @@ -10,13 +11,10 @@ public class AliasAdapter implements AstAdapter { - public Object adapt(Object o) { + public Object py2ast(PyObject o) { if (o == null) { return o; } - if (o instanceof PyJavaInstance) { - o = ((PyJavaInstance)o).__tojava__(aliasType.class); - } if (o instanceof aliasType) { return o; } @@ -24,10 +22,14 @@ throw Py.TypeError("Can't convert " + o.getClass().getName() + " to alias node"); } - public Object adaptIter(Object iter) { + public PyObject ast2py(Object o) { + return (PyObject)o; + } + + public List iter2ast(PyObject iter) { List<aliasType> aliases = new ArrayList<aliasType>(); for(Object o : (Iterable)iter) { - aliases.add((aliasType)adapt(o)); + aliases.add((aliasType)py2ast((PyObject)(PyObject)o)); } return aliases; } Modified: branches/astwrite/src/org/python/antlr/adapter/AstAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/AstAdapter.java 2008-12-01 23:33:55 UTC (rev 5671) +++ branches/astwrite/src/org/python/antlr/adapter/AstAdapter.java 2008-12-02 03:31:45 UTC (rev 5672) @@ -1,13 +1,15 @@ package org.python.antlr.adapter; +import org.python.core.PyObject; + +import java.util.List; /** * AstAdapters turn Objects into Ast nodes. */ public interface AstAdapter { - /** - * @return Ast node version of o. - */ - public abstract Object adapt(Object o); + PyObject ast2py(Object o); + Object py2ast(PyObject o); + List iter2ast(PyObject o); } Modified: branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java 2008-12-01 23:33:55 UTC (rev 5671) +++ branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java 2008-12-02 03:31:45 UTC (rev 5672) @@ -18,44 +18,44 @@ public static SliceAdapter sliceAdapter = new SliceAdapter(); public static StmtAdapter stmtAdapter = new StmtAdapter(); - public static java.util.List<aliasType> to_aliasList(Object o) { - return (java.util.List<aliasType>)aliasAdapter.adaptIter(o); + public static java.util.List<aliasType> to_aliasList(PyObject o) { + return (java.util.List<aliasType>)aliasAdapter.iter2ast(o); } - public static java.util.List<cmpopType> to_cmpopList(Object o) { - return (java.util.List<cmpopType>)cmpopAdapter.adaptIter(o); + public static java.util.List<cmpopType> to_cmpopList(PyObject o) { + return (java.util.List<cmpopType>)cmpopAdapter.iter2ast(o); } - public static java.util.List<comprehensionType> to_comprehensionList(Object o) { - return (java.util.List<comprehensionType>)comprehensionAdapter.adaptIter(o); + public static java.util.List<comprehensionType> to_comprehensionList(PyObject o) { + return (java.util.List<comprehensionType>)comprehensionAdapter.iter2ast(o); } - public static java.util.List<excepthandlerType> to_excepthandlerList(Object o) { - return (java.util.List<excepthandlerType>)excepthandlerAdapter.adaptIter(o); + public static java.util.List<excepthandlerType> to_excepthandlerList(PyObject o) { + return (java.util.List<excepthandlerType>)excepthandlerAdapter.iter2ast(o); } - public static java.util.List<exprType> to_exprList(Object o) { - return (java.util.List<exprType>)exprAdapter.adaptIter(o); + public static java.util.List<exprType> to_exprList(PyObject o) { + return (java.util.List<exprType>)exprAdapter.iter2ast(o); } - public static java.util.List<String> to_identifierList(Object o) { - return (java.util.List<String>)identifierAdapter.adaptIter(o); + public static java.util.List<String> to_identifierList(PyObject o) { + return (java.util.List<String>)identifierAdapter.iter2ast(o); } - public static java.util.List<keywordType> to_keywordList(Object o) { - return (java.util.List<keywordType>)keywordAdapter.adaptIter(o); + public static java.util.List<keywordType> to_keywordList(PyObject o) { + return (java.util.List<keywordType>)keywordAdapter.iter2ast(o); } - public static java.util.List<sliceType> to_sliceList(Object o) { - return (java.util.List<sliceType>)sliceAdapter.adaptIter(o); + public static java.util.List<sliceType> to_sliceList(PyObject o) { + return (java.util.List<sliceType>)sliceAdapter.iter2ast(o); } - public static java.util.List<stmtType> to_stmtList(Object o) { - return (java.util.List<stmtType>)stmtAdapter.adaptIter(o); + public static java.util.List<stmtType> to_stmtList(PyObject o) { + return (java.util.List<stmtType>)stmtAdapter.iter2ast(o); } - public static exprType to_expr(Object o) { - return (exprType)exprAdapter.adapt(o); + public static exprType to_expr(PyObject o) { + return (exprType)exprAdapter.py2ast(o); } public static int to_int(Object o) { @@ -66,8 +66,8 @@ throw Py.TypeError("Can't convert " + o.getClass().getName() + " to int node"); } - public static String to_identifier(Object o) { - return (String)identifierAdapter.adapt(o); + public static String to_identifier(PyObject o) { + return (String)identifierAdapter.py2ast(o); } public static expr_contextType to_expr_context(Object o) { @@ -78,12 +78,12 @@ throw Py.TypeError("Can't convert " + o.getClass().getName() + " to expr_context node"); } - public static sliceType to_slice(Object o) { - return (sliceType)sliceAdapter.adapt(o); + public static sliceType to_slice(PyObject o) { + return (sliceType)sliceAdapter.py2ast(o); } - public static stmtType to_stmt(Object o) { - return (stmtType)stmtAdapter.adapt(o); + public static stmtType to_stmt(PyObject o) { + return (stmtType)stmtAdapter.py2ast(o); } public static String to_string(Object o) { Modified: branches/astwrite/src/org/python/antlr/adapter/CmpopAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/CmpopAdapter.java 2008-12-01 23:33:55 UTC (rev 5671) +++ branches/astwrite/src/org/python/antlr/adapter/CmpopAdapter.java 2008-12-02 03:31:45 UTC (rev 5672) @@ -1,6 +1,7 @@ package org.python.antlr.adapter; import org.python.core.Py; +import org.python.core.PyObject; import org.python.core.PyJavaInstance; import org.python.antlr.ast.cmpopType; @@ -10,24 +11,23 @@ public class CmpopAdapter implements AstAdapter { - public Object adapt(Object o) { + public Object py2ast(PyObject o) { if (o == null) { return o; } - if (o instanceof PyJavaInstance) { - o = ((PyJavaInstance)o).__tojava__(cmpopType.class); - } - if (o instanceof cmpopType) { - return o; - } + return o; //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to cmpop node"); + //throw Py.TypeError("Can't convert " + o.getClass().getName() + " to cmpop node"); } - public Object adaptIter(Object iter) { + public PyObject ast2py(Object o) { + return (PyObject)o; + } + + public List iter2ast(PyObject iter) { List<cmpopType> cmpops = new ArrayList<cmpopType>(); for(Object o : (Iterable)iter) { - cmpops.add((cmpopType)adapt(o)); + cmpops.add((cmpopType)py2ast((PyObject)o)); } return cmpops; } Modified: branches/astwrite/src/org/python/antlr/adapter/ComprehensionAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/ComprehensionAdapter.java 2008-12-01 23:33:55 UTC (rev 5671) +++ branches/astwrite/src/org/python/antlr/adapter/ComprehensionAdapter.java 2008-12-02 03:31:45 UTC (rev 5672) @@ -1,6 +1,7 @@ package org.python.antlr.adapter; import org.python.core.Py; +import org.python.core.PyObject; import org.python.core.PyJavaInstance; import org.python.antlr.ast.comprehensionType; @@ -10,13 +11,10 @@ public class ComprehensionAdapter implements AstAdapter { - public Object adapt(Object o) { + public Object py2ast(PyObject o) { if (o == null) { return o; } - if (o instanceof PyJavaInstance) { - o = ((PyJavaInstance)o).__tojava__(comprehensionType.class); - } if (o instanceof comprehensionType) { return o; } @@ -24,10 +22,14 @@ throw Py.TypeError("Can't convert " + o.getClass().getName() + " to comprehension node"); } - public Object adaptIter(Object iter) { + public PyObject ast2py(Object o) { + return (PyObject)o; + } + + public List iter2ast(PyObject iter) { List<comprehensionType> comprehensions = new ArrayList<comprehensionType>(); for(Object o : (Iterable)iter) { - comprehensions.add((comprehensionType)adapt(o)); + comprehensions.add((comprehensionType)py2ast((PyObject)o)); } return comprehensions; } Modified: branches/astwrite/src/org/python/antlr/adapter/ExcepthandlerAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/ExcepthandlerAdapter.java 2008-12-01 23:33:55 UTC (rev 5671) +++ branches/astwrite/src/org/python/antlr/adapter/ExcepthandlerAdapter.java 2008-12-02 03:31:45 UTC (rev 5672) @@ -1,6 +1,7 @@ package org.python.antlr.adapter; import org.python.core.Py; +import org.python.core.PyObject; import org.python.core.PyJavaInstance; import org.python.antlr.ast.ExceptHandler; @@ -11,13 +12,10 @@ public class ExcepthandlerAdapter implements AstAdapter { - public Object adapt(Object o) { + public Object py2ast(PyObject o) { if (o == null) { return o; } - if (o instanceof PyJavaInstance) { - o = ((PyJavaInstance)o).__tojava__(ExceptHandler.class); - } if (o instanceof ExceptHandler) { return o; } @@ -26,10 +24,14 @@ throw Py.TypeError("Can't convert " + o.getClass().getName() + " to excepthandler node"); } - public Object adaptIter(Object iter) { + public PyObject ast2py(Object o) { + return (PyObject)o; + } + + public List iter2ast(PyObject iter) { List<ExceptHandler> excepthandlers = new ArrayList<ExceptHandler>(); for(Object o : (Iterable)iter) { - excepthandlers.add((ExceptHandler)adapt(o)); + excepthandlers.add((ExceptHandler)py2ast((PyObject)o)); } return excepthandlers; } Modified: branches/astwrite/src/org/python/antlr/adapter/ExprAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/ExprAdapter.java 2008-12-01 23:33:55 UTC (rev 5671) +++ branches/astwrite/src/org/python/antlr/adapter/ExprAdapter.java 2008-12-02 03:31:45 UTC (rev 5672) @@ -1,9 +1,14 @@ package org.python.antlr.adapter; import org.python.core.Py; +import org.python.core.PyComplex; +import org.python.core.PyFloat; import org.python.core.PyInteger; +import org.python.core.PyLong; +import org.python.core.PyJavaInstance; +import org.python.core.PyObject; import org.python.core.PyString; -import org.python.core.PyJavaInstance; +import org.python.core.PyUnicode; import org.python.antlr.ast.exprType; import org.python.antlr.ast.Num; @@ -13,30 +18,31 @@ import java.util.List; public class ExprAdapter implements AstAdapter { - - public Object adapt(Object o) { + + public Object py2ast(PyObject o) { if (o == null) { return o; } - if (o instanceof PyJavaInstance) { - o = ((PyJavaInstance)o).__tojava__(exprType.class); - } if (o instanceof exprType) { return o; - } else if (o instanceof Integer) { - return new Num(new PyInteger((Integer)o)); - } else if (o instanceof String) { - return new Str(new PyString((String)o)); + } else if (o instanceof PyInteger || o instanceof PyLong || o instanceof PyFloat || o instanceof PyComplex) { + return new Num(o); + } else if (o instanceof PyString || o instanceof PyUnicode) { + return new Str(o); } //FIXME: investigate the right exception throw Py.TypeError("Can't convert " + o.getClass().getName() + " to expr node"); } - public Object adaptIter(Object iter) { + public PyObject ast2py(Object o) { + return (PyObject)o; + } + + public List iter2ast(PyObject iter) { List<exprType> exprs = new ArrayList<exprType>(); for(Object o : (Iterable)iter) { - exprs.add((exprType)adapt(o)); + exprs.add((exprType)py2ast((PyObject)o)); } return exprs; } Modified: branches/astwrite/src/org/python/antlr/adapter/IdentifierAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/IdentifierAdapter.java 2008-12-01 23:33:55 UTC (rev 5671) +++ branches/astwrite/src/org/python/antlr/adapter/IdentifierAdapter.java 2008-12-02 03:31:45 UTC (rev 5672) @@ -2,6 +2,7 @@ import org.python.core.Py; import org.python.core.PyJavaInstance; +import org.python.core.PyObject; import org.python.antlr.ast.Num; @@ -10,25 +11,18 @@ public class IdentifierAdapter implements AstAdapter { - public Object adapt(Object o) { - if (o == null) { - return o; - } - if (o instanceof PyJavaInstance) { - o = ((PyJavaInstance)o).__tojava__(String.class); - } - if (o instanceof String) { - return o; - } + public Object py2ast(PyObject o) { + return o.toString(); + } - //FIXME: investigate the right exception - throw Py.TypeError("Can't convert " + o.getClass().getName() + " to identifier node"); + public PyObject ast2py(Object o) { + return (PyObject)o; } - public Object adaptIter(Object iter) { + public List iter2ast(PyObject iter) { List<String> identifiers = new ArrayList<String>(); for(Object o : (Iterable)iter) { - identifiers.add((String)adapt(o)); + identifiers.add((String)py2ast((PyObject)o)); } return identifiers; } Modified: branches/astwrite/src/org/python/antlr/adapter/KeywordAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/KeywordAdapter.java 2008-12-01 23:33:55 UTC (rev 5671) +++ branches/astwrite/src/org/python/antlr/adapter/KeywordAdapter.java 2008-12-02 03:31:45 UTC (rev 5672) @@ -2,6 +2,7 @@ import org.python.core.Py; import org.python.core.PyJavaInstance; +import org.python.core.PyObject; import org.python.antlr.ast.keywordType; @@ -10,13 +11,10 @@ public class KeywordAdapter implements AstAdapter { - public Object adapt(Object o) { + public Object py2ast(PyObject o) { if (o == null) { return o; } - if (o instanceof PyJavaInstance) { - o = ((PyJavaInstance)o).__tojava__(keywordType.class); - } if (o instanceof keywordType) { return o; } @@ -25,10 +23,14 @@ throw Py.TypeError("Can't convert " + o.getClass().getName() + " to keyword node"); } - public Object adaptIter(Object iter) { + public PyObject ast2py(Object o) { + return (PyObject)o; + } + + public List iter2ast(PyObject iter) { List<keywordType> keywords = new ArrayList<keywordType>(); for(Object o : (Iterable)iter) { - keywords.add((keywordType)adapt(o)); + keywords.add((keywordType)py2ast((PyObject)o)); } return keywords; } Deleted: branches/astwrite/src/org/python/antlr/adapter/ListWrapper.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/ListWrapper.java 2008-12-01 23:33:55 UTC (rev 5671) +++ branches/astwrite/src/org/python/antlr/adapter/ListWrapper.java 2008-12-02 03:31:45 UTC (rev 5672) @@ -1,226 +0,0 @@ -package org.python.antlr.adapter; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; - -import org.python.core.Py; -import org.python.core.PyObject; -import org.python.core.PySequence; - -public class ListWrapper implements List { - - private List list; - private AstAdapter adapter; - - public ListWrapper(List list) { - this(list, null); - } - - public ListWrapper(List list, AstAdapter adapter) { - if (list == null) { - throw Py.TypeError("AST list can't be None"); - } - this.list = list; - this.adapter = adapter; - } - - public boolean containsAll(Collection c) { - return containsAll(c); - } - - public boolean removeAll(Collection c) { - return list.removeAll(c); - } - - public boolean retainAll(Collection c) { - return list.retainAll(c); - } - - public boolean add(Object e) { - return list.add(e); - } - - public void add(int index, Object e) { - list.add(index, e); - } - - public boolean addAll(Collection c) { - return list.addAll(c); - } - - public boolean addAll(int index, Collection c) { - return list.addAll(index, c); - } - - public void clear() { - list.clear(); - } - - public boolean contains(Object elem) { - return list.contains(elem); - } - - public Object get(int index) { - return list.get(index); - } - - public int indexOf(Object elem) { - return list.indexOf(elem); - } - - public boolean isEmpty() { - return list.isEmpty(); - } - - public int lastIndexOf(Object elem) { - return list.lastIndexOf(elem); - } - - public Object remove(int index) { - return list.remove(index); - } - - public boolean remove(Object o) { - return list.remove(o); - } - - public Object set(int index, Object element) { - return list.set(index, element); - } - - public int size() { - return list.size(); - } - - public Object[] toArray() { - return list.toArray(); - } - - public Object[] toArray(Object[] a) { - return list.toArray(a); - } - - public Iterator iterator() { - return list.iterator(); - } - - public ListIterator listIterator() { - return list.listIterator(); - } - - public ListIterator listIterator(int index) { - return list.listIterator(index); - } - - public List subList(int fromIndex, int toIndex) { - return list.subList(fromIndex, toIndex); - } - - /* - public ListWrapper __add__(Object o) { - List newList = new ArrayList(); - newList.addAll(list); - newList.add(o); - return new ListWrapper(newList); - } - - public int __len__() { - return list.size(); - } - - public boolean __contains__(Object o) { - return list.contains(o); - } - - public PyObject __imul__(PyObject o) { - throw new UnsupportedOperationException("1 Not supported yet."); - } - - public PyObject __iter__() { - throw new UnsupportedOperationException("2 Not supported yet."); - } - - public PyObject __mul__(PyObject o) { - throw new UnsupportedOperationException("3 Not supported yet."); - } - - public PyObject __radd__(PyObject o) { - throw new UnsupportedOperationException("4 Not supported yet."); - } - - public PyObject __rmul__(PyObject o) { - throw new UnsupportedOperationException("5 Not supported yet."); - } - */ - - public void append(PyObject o) { - list.add(adapter.adapt(o)); - } - - public int count(PyObject o) { - throw new UnsupportedOperationException("6 Not supported yet."); - } - - protected void del(int i) { - throw new UnsupportedOperationException("7 Not supported yet."); - } - - protected void delRange(int start, int stop, int step) { - throw new UnsupportedOperationException("8 Not supported yet."); - } - - public void extend(PyObject o) { - throw new UnsupportedOperationException("9 Not supported yet."); - } - - public int index(PyObject o) { - throw new UnsupportedOperationException("10 Not supported yet."); - } - - public int index(PyObject o, int start) { - throw new UnsupportedOperationException("11 Not supported yet."); - } - - public int index(PyObject o, int start, int stop) { - throw new UnsupportedOperationException("12 Not supported yet."); - } - - public void insert(int index, PyObject o) { - throw new UnsupportedOperationException("13 Not supported yet."); - } - - public PyObject pop() { - throw new UnsupportedOperationException("14 Not supported yet."); - } - - public PyObject pop(int n) { - throw new UnsupportedOperationException("15 Not supported yet."); - } - - public void remove(PyObject o) { - throw new UnsupportedOperationException("16 Not supported yet."); - } - - public void reverse() { - throw new UnsupportedOperationException("17 Not supported yet."); - } - - public void sort(PyObject compare) { - throw new UnsupportedOperationException("18 Not supported yet."); - } - - public void sort() { - throw new UnsupportedOperationException("19 Not supported yet."); - } - - public void sort(PyObject cmp, PyObject key, PyObject reverse) { - throw new UnsupportedOperationException("20 Not supported yet."); - } - - public String toString() { - return list.toString(); - } -} Modified: branches/astwrite/src/org/python/antlr/adapter/SliceAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/SliceAdapter.java 2008-12-01 23:33:55 UTC (rev 5671) +++ branches/astwrite/src/org/python/antlr/adapter/SliceAdapter.java 2008-12-02 03:31:45 UTC (rev 5672) @@ -2,6 +2,7 @@ import org.python.core.Py; import org.python.core.PyJavaInstance; +import org.python.core.PyObject; import org.python.antlr.ast.sliceType; import org.python.antlr.ast.Num; @@ -11,13 +12,10 @@ public class SliceAdapter implements AstAdapter { - public Object adapt(Object o) { + public Object py2ast(PyObject o) { if (o == null) { return o; } - if (o instanceof PyJavaInstance) { - o = ((PyJavaInstance)o).__tojava__(sliceType.class); - } if (o instanceof sliceType) { return o; } @@ -26,10 +24,14 @@ throw Py.TypeError("Can't convert " + o.getClass().getName() + " to slice node"); } - public Object adaptIter(Object iter) { + public PyObject ast2py(Object o) { + return (PyObject)o; + } + + public List iter2ast(PyObject iter) { List<sliceType> slices = new ArrayList<sliceType>(); for(Object o : (Iterable)iter) { - slices.add((sliceType)adapt(o)); + slices.add((sliceType)py2ast((PyObject)o)); } return slices; } Modified: branches/astwrite/src/org/python/antlr/adapter/StmtAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/StmtAdapter.java 2008-12-01 23:33:55 UTC (rev 5671) +++ branches/astwrite/src/org/python/antlr/adapter/StmtAdapter.java 2008-12-02 03:31:45 UTC (rev 5672) @@ -2,6 +2,7 @@ import org.python.core.Py; import org.python.core.PyJavaInstance; +import org.python.core.PyObject; import org.python.antlr.ast.stmtType; @@ -10,13 +11,10 @@ public class StmtAdapter implements AstAdapter { - public Object adapt(Object o) { + public Object py2ast(PyObject o) { if (o == null) { return o; } - if (o instanceof PyJavaInstance) { - o = ((PyJavaInstance)o).__tojava__(stmtType.class); - } if (o instanceof stmtType) { return o; } @@ -24,10 +22,14 @@ throw Py.TypeError("Can't convert " + o.getClass().getName() + " to stmt node"); } - public Object adaptIter(Object iter) { + public PyObject ast2py(Object o) { + return (PyObject)o; + } + + public List iter2ast(PyObject iter) { List<stmtType> stmts = new ArrayList<stmtType>(); for(Object o : (Iterable)iter) { - stmts.add((stmtType)adapt(o)); + stmts.add((stmtType)py2ast((PyObject)o)); } return stmts; } Modified: branches/astwrite/src/org/python/antlr/ast/Assert.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-12-01 23:33:55 UTC (rev 5671) +++ branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-12-02 03:31:45 UTC (rev 5672) @@ -1,12 +1,13 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.antlr.runtime.CommonToken; +import org.antlr.runtime.Token; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; -import org.python.antlr.adapter.ListWrapper; -import org.antlr.runtime.CommonToken; -import org.antlr.runtime.Token; +import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; +import org.python.core.PyString; import org.python.core.PyType; import org.python.expose.ExposedGet; import org.python.expose.ExposedMethod; @@ -26,10 +27,10 @@ } @ExposedGet(name = "test") public PyObject getTest() { - return Py.None; + return test; } @ExposedSet(name = "test") - public void setTest(Object test) { + public void setTest(PyObject test) { this.test = AstAdapters.to_expr(test); } @@ -39,10 +40,10 @@ } @ExposedGet(name = "msg") public PyObject getMsg() { - return Py.None; + return msg; } @ExposedSet(name = "msg") - public void setMsg(Object msg) { + public void setMsg(PyObject msg) { this.msg = AstAdapters.to_expr(msg); } @@ -59,7 +60,7 @@ @ExposedNew @ExposedMethod public void Module___init__(PyObject[] args, String[] keywords) {} - public Assert(Object test, Object msg) { + public Assert(PyObject test, PyObject msg) { setTest(test); setMsg(msg); } Modified: branches/astwrite/src/org/python/antlr/ast/Assign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-12-01 23:33:55 UTC (rev 5671) +++ branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-12-02 03:31:45 UTC (rev 5672) @@ -1,12 +1,13 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.antlr.runtime.CommonToken; +import org.antlr.runtime.Token; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; -import org.python.antlr.adapter.ListWrapper; -import org.antlr.runtime.CommonToken; -import org.antlr.runtime.Token; +import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; +import org.python.core.PyString; import org.python.core.PyType; import org.python.expose.ExposedGet; import org.python.expose.ExposedMethod; @@ -26,10 +27,10 @@ } @ExposedGet(name = "targets") public PyObject getTargets() { - return Py.None; + return new AstList(targets, AstAdapters.exprAdapter); } @ExposedSet(name = "targets") - public void setTargets(Object targets) { + public void setTargets(PyObject targets) { //FJW this.targets = AstAdapters.to_exprList(targets); } @@ -39,10 +40,10 @@ } @ExposedGet(name = "value") public PyObject getValue() { - return Py.None; + return value; } @ExposedSet(name = "value") - public void setValue(Object value) { + public void setValue(PyObject value) { this.value = AstAdapters.to_expr(value); } @@ -59,7 +60,7 @@ @ExposedNew @ExposedMethod public void Module___init__(PyObject[] args, String[] keywords) {} - public Assign(Object targets, Object value) { + public Assign(PyObject targets, PyObject value) { setTargets(targets); setValue(value); } Modified: branches/astwrite/src/org/python/antlr/ast/AstModule.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AstModule.java 2008-12-01 23:33:55 UTC (rev 5671) +++ branches/astwrite/src/org/python/antlr/ast/AstModule.java 2008-12-02 03:31:45 UTC (rev 5672) @@ -3,7 +3,10 @@ import org.python.core.ClassDictInit; import org.python.core.imp; import org.python.core.Py; +import org.python.core.PyInteger; import org.python.core.PyObject; +import org.python.core.PyString; +import org.python.core.PyTableCode; import org.python.core.PyType; import org.python.antlr.AST; @@ -14,6 +17,11 @@ private AstModule() {} public static void classDictInit(PyObject dict) { + dict.__setitem__("__doc__", Py.None); + dict.__setitem__("__name__", new PyString("_ast")); + dict.__setitem__("__version__", new PyString("62047")); + dict.__setitem__("PyCF_ONLY_AST", new PyInteger(PyTableCode.PyCF_ONLY_AST)); + dict.__setitem__("AST", AST.TYPE); dict.__setitem__("Module", Module.TYPE); dict.__setitem__("Assert", Assert.TYPE); @@ -80,7 +88,51 @@ dict.__setitem__("mod", modType.TYPE); dict.__setitem__("slice", sliceType.TYPE); dict.__setitem__("stmt", stmtType.TYPE); + dict.__setitem__("operator", imp.importName("org.python.antlr.ast.operatorType", false)); dict.__setitem__("Add", imp.importName("org.python.antlr.ast.operatorType.Add", false)); + dict.__setitem__("Sub", imp.importName("org.python.antlr.ast.operatorType.Sub", false)); + dict.__setitem__("Mult", imp.importName("org.python.antlr.ast.operatorType.Mult", false)); + dict.__setitem__("Div", imp.importName("org.python.antlr.ast.operatorType.Div", false)); + dict.__setitem__("FloorDiv", imp.importName("org.python.antlr.ast.operatorType.FloorDiv", false)); + dict.__setitem__("Mod", imp.importName("org.python.antlr.ast.operatorType.Mod", false)); + dict.__setitem__("LShift", imp.importName("org.python.antlr.ast.operatorType.LShift", false)); + dict.__setitem__("RShift", imp.importName("org.python.antlr.ast.operatorType.RShift", false)); + dict.__setitem__("BitOr", imp.importName("org.python.antlr.ast.operatorType.BitOr", false)); + dict.__setitem__("BitAnd", imp.importName("org.python.antlr.ast.operatorType.BitAnd", false)); + dict.__setitem__("BitXor", imp.importName("org.python.antlr.ast.operatorType.BitXor", false)); + dict.__setitem__("Pow", imp.importName("org.python.antlr.ast.operatorType.Pow", false)); + + dict.__setitem__("boolop", imp.importName("org.python.antlr.ast.boolopType", false)); + dict.__setitem__("And", imp.importName("org.python.antlr.ast.boolopType.And", false)); + dict.__setitem__("Or", imp.importName("org.python.antlr.ast.boolopType.Or", false)); + + dict.__setitem__("cmpop", imp.importName("org.python.antlr.ast.cmpopType", false)); + dict.__setitem__("Eq", imp.importName("org.python.antlr.ast.cmpopType.Eq", false)); + dict.__setitem__("Gt", imp.importName("org.python.antlr.ast.cmpopType.Gt", false)); + dict.__setitem__("GtE", imp.importName("org.python.antlr.ast.cmpopType.GtE", false)); + dict.__setitem__("In", imp.importName("org.python.antlr.ast.cmpopType.In", false)); + dict.__setitem__("Is", imp.importName("org.python.antlr.ast.cmpopType.Is", false)); + dict.__setitem__("IsNot", imp.importName("org.python.antlr.ast.cmpopType.IsNot", false)); + dict.__setitem__("Lt", imp.importName("org.python.antlr.ast.cmpopType.Lt", false)); + dict.__setitem__("LtE", imp.importName("org.python.antlr.ast.cmpopType.LtE", false)); + dict.__setitem__("NotEq", imp.importName("org.python.antlr.ast.cmpopType.NotEq", false)); + dict.__setitem__("NotIn", imp.importName("org.python.antlr.ast.cmpopType.NotIn", false)); + + dict.__setitem__("expr_context", imp.importName("org.python.antlr.ast.expr_contextType", false)); + dict.__setitem__("Load", imp.importName("org.python.antlr.ast.expr_contextType.Load", false)); + dict.__setitem__("Store", imp.importName("org.python.antlr.ast.expr_contextType.Store", false)); + dict.__setitem__("Del", imp.importName("org.python.antlr.ast.expr_contextType.Del", false)); + dict.__setitem__("AugLoad", imp.importName("org.python.antlr.ast.expr_contextType.AugLoad", false)); + dict.__setitem__("AugStore", imp.importName("org.python.antlr.ast.expr_contextType.AugStore", false)); + dict.__setitem__("Param", imp.importName("org.python.antlr.ast.expr_contextType.Param", false)); + + dict.__setitem__("unaryop", imp.importName("org.python.antlr.ast.unaryopType", false)); + dict.__setitem__("Invert", imp.importName("org.python.antlr.ast.unaryopType.Invert", false)); + dict.__setitem__("Not", imp.importName("org.python.antlr.ast.unaryopType.Not", false)); + dict.__setitem__("UAdd", imp.importName("org.python.antlr.ast.unaryopType.UAdd", false)); + dict.__setitem__("USub", imp.importName("org.python.antlr.ast.unaryopType.USub", false)); + + dict.__setitem__("classDictInit", null); } } Modified: branches/astwrite/src/org/python/antlr/ast/Attribute.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-12-01 23:33:55 UTC (rev 5671) +++ branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-12-02 03:31:45 UTC (rev 5672) @@ -1,12 +1,13 @@ // Autogenerated AST node package org.python.antlr.ast; +import org.antlr.runtime.CommonToken; +import org.antlr.runtime.Token; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; -import org.python.antlr.adapter.ListWrapper; -import org.antlr.runtime.CommonToken; -import org.antlr.runtime.Token; +import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; +import org.python.core.PyString; import org.python.core.PyType; import org.python.expose.ExposedGet; import org.python.expose.ExposedMethod; @@ -26,10 +27,10 @@ } @ExposedGet(name = "value") public PyObject getValue() { - return Py.None; + return value; } @ExposedSet(name = ... [truncated message content] |
From: <fwi...@us...> - 2008-12-02 13:55:58
|
Revision: 5677 http://jython.svn.sourceforge.net/jython/?rev=5677&view=rev Author: fwierzbicki Date: 2008-12-02 13:55:51 +0000 (Tue, 02 Dec 2008) Log Message: ----------- Generating a bunch of PyObject stubs for the enums in ast. Exposing needed elements to Python. Modified Paths: -------------- branches/astwrite/CoreExposed.includes branches/astwrite/ast/asdl_antlr.py branches/astwrite/src/org/python/antlr/ast/Assert.java branches/astwrite/src/org/python/antlr/ast/Assign.java branches/astwrite/src/org/python/antlr/ast/Attribute.java branches/astwrite/src/org/python/antlr/ast/AugAssign.java branches/astwrite/src/org/python/antlr/ast/BinOp.java branches/astwrite/src/org/python/antlr/ast/BoolOp.java branches/astwrite/src/org/python/antlr/ast/Break.java branches/astwrite/src/org/python/antlr/ast/Call.java branches/astwrite/src/org/python/antlr/ast/ClassDef.java branches/astwrite/src/org/python/antlr/ast/Compare.java branches/astwrite/src/org/python/antlr/ast/Continue.java branches/astwrite/src/org/python/antlr/ast/Delete.java branches/astwrite/src/org/python/antlr/ast/Dict.java branches/astwrite/src/org/python/antlr/ast/Ellipsis.java branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java branches/astwrite/src/org/python/antlr/ast/Exec.java branches/astwrite/src/org/python/antlr/ast/Expr.java branches/astwrite/src/org/python/antlr/ast/Expression.java branches/astwrite/src/org/python/antlr/ast/ExtSlice.java branches/astwrite/src/org/python/antlr/ast/For.java branches/astwrite/src/org/python/antlr/ast/FunctionDef.java branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java branches/astwrite/src/org/python/antlr/ast/Global.java branches/astwrite/src/org/python/antlr/ast/If.java branches/astwrite/src/org/python/antlr/ast/IfExp.java branches/astwrite/src/org/python/antlr/ast/Import.java branches/astwrite/src/org/python/antlr/ast/ImportFrom.java branches/astwrite/src/org/python/antlr/ast/Index.java branches/astwrite/src/org/python/antlr/ast/Interactive.java branches/astwrite/src/org/python/antlr/ast/Lambda.java branches/astwrite/src/org/python/antlr/ast/List.java branches/astwrite/src/org/python/antlr/ast/ListComp.java branches/astwrite/src/org/python/antlr/ast/Module.java branches/astwrite/src/org/python/antlr/ast/Name.java branches/astwrite/src/org/python/antlr/ast/Num.java branches/astwrite/src/org/python/antlr/ast/Pass.java branches/astwrite/src/org/python/antlr/ast/Print.java branches/astwrite/src/org/python/antlr/ast/Raise.java branches/astwrite/src/org/python/antlr/ast/Repr.java branches/astwrite/src/org/python/antlr/ast/Return.java branches/astwrite/src/org/python/antlr/ast/Slice.java branches/astwrite/src/org/python/antlr/ast/Str.java branches/astwrite/src/org/python/antlr/ast/Subscript.java branches/astwrite/src/org/python/antlr/ast/Suite.java branches/astwrite/src/org/python/antlr/ast/TryExcept.java branches/astwrite/src/org/python/antlr/ast/TryFinally.java branches/astwrite/src/org/python/antlr/ast/Tuple.java branches/astwrite/src/org/python/antlr/ast/UnaryOp.java branches/astwrite/src/org/python/antlr/ast/While.java branches/astwrite/src/org/python/antlr/ast/With.java branches/astwrite/src/org/python/antlr/ast/Yield.java branches/astwrite/src/org/python/antlr/ast/aliasType.java branches/astwrite/src/org/python/antlr/ast/argumentsType.java branches/astwrite/src/org/python/antlr/ast/boolopType.java branches/astwrite/src/org/python/antlr/ast/cmpopType.java branches/astwrite/src/org/python/antlr/ast/comprehensionType.java branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java branches/astwrite/src/org/python/antlr/ast/exprType.java branches/astwrite/src/org/python/antlr/ast/expr_contextType.java branches/astwrite/src/org/python/antlr/ast/keywordType.java branches/astwrite/src/org/python/antlr/ast/modType.java branches/astwrite/src/org/python/antlr/ast/operatorType.java branches/astwrite/src/org/python/antlr/ast/sliceType.java branches/astwrite/src/org/python/antlr/ast/stmtType.java branches/astwrite/src/org/python/antlr/ast/unaryopType.java Added Paths: ----------- branches/astwrite/src/org/python/antlr/ast/Add.java branches/astwrite/src/org/python/antlr/ast/And.java branches/astwrite/src/org/python/antlr/ast/AugLoad.java branches/astwrite/src/org/python/antlr/ast/AugStore.java branches/astwrite/src/org/python/antlr/ast/BitAnd.java branches/astwrite/src/org/python/antlr/ast/BitOr.java branches/astwrite/src/org/python/antlr/ast/BitXor.java branches/astwrite/src/org/python/antlr/ast/Del.java branches/astwrite/src/org/python/antlr/ast/Div.java branches/astwrite/src/org/python/antlr/ast/Eq.java branches/astwrite/src/org/python/antlr/ast/Gt.java branches/astwrite/src/org/python/antlr/ast/GtE.java branches/astwrite/src/org/python/antlr/ast/In.java branches/astwrite/src/org/python/antlr/ast/Invert.java branches/astwrite/src/org/python/antlr/ast/Is.java branches/astwrite/src/org/python/antlr/ast/IsNot.java branches/astwrite/src/org/python/antlr/ast/LShift.java branches/astwrite/src/org/python/antlr/ast/Load.java branches/astwrite/src/org/python/antlr/ast/Lt.java branches/astwrite/src/org/python/antlr/ast/LtE.java branches/astwrite/src/org/python/antlr/ast/Mod.java branches/astwrite/src/org/python/antlr/ast/Mult.java branches/astwrite/src/org/python/antlr/ast/Not.java branches/astwrite/src/org/python/antlr/ast/NotEq.java branches/astwrite/src/org/python/antlr/ast/Pow.java branches/astwrite/src/org/python/antlr/ast/RShift.java branches/astwrite/src/org/python/antlr/ast/Store.java branches/astwrite/src/org/python/antlr/ast/Sub.java branches/astwrite/src/org/python/antlr/ast/UAdd.java Modified: branches/astwrite/CoreExposed.includes =================================================================== --- branches/astwrite/CoreExposed.includes 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/CoreExposed.includes 2008-12-02 13:55:51 UTC (rev 5677) @@ -1,5 +1,3 @@ -org/python/antlr/AST.class -org/python/antlr/ast/AsmModule.class org/python/core/PyArray.class org/python/core/PyBaseString.class org/python/core/PyBaseException.class @@ -57,3 +55,51 @@ org/python/modules/zipimport/zipimporter.class org/python/modules/PyStruct.class org/python/modules/PyTeeIterator.class +org/python/antlr/AST.class +org/python/antlr/ast/AsmModule.class +org/python/antlr/ast/And.class +org/python/antlr/ast/BitXor.class +org/python/antlr/ast/Gt.class +org/python/antlr/ast/AugLoad.class +org/python/antlr/ast/Mult.class +org/python/antlr/ast/NotEq.class +org/python/antlr/ast/LShift.class +org/python/antlr/ast/IsNot.class +org/python/antlr/ast/RShift.class +org/python/antlr/ast/Eq.class +org/python/antlr/ast/BitOr.class +org/python/antlr/ast/Div.class +org/python/antlr/ast/LtE.class +org/python/antlr/ast/Store.class +org/python/antlr/ast/Not.class +org/python/antlr/ast/BitAnd.class +org/python/antlr/ast/In.class +org/python/antlr/ast/UAdd.class +org/python/antlr/ast/GtE.class +org/python/antlr/ast/Lt.class +org/python/antlr/ast/Mod.class +org/python/antlr/ast/Sub.class +org/python/antlr/ast/Del.class +org/python/antlr/ast/Pow.class +org/python/antlr/ast/Invert.class +org/python/antlr/ast/Is.class +org/python/antlr/ast/Load.class +org/python/antlr/ast/Add.class +org/python/antlr/ast/AugStore.class +org/python/antlr/ast/Delete.class +org/python/antlr/ast/GeneratorExp.class +org/python/antlr/ast/Import.class +org/python/antlr/ast/comprehensionType.class +org/python/antlr/ast/With.class +org/python/antlr/ast/Module.class +org/python/antlr/ast/Global.class +org/python/antlr/ast/Dict.class +org/python/antlr/ast/ClassDef.class +org/python/antlr/ast/ExceptHandler.class +org/python/antlr/ast/TryExcept.class +org/python/antlr/ast/Tuple.class +org/python/antlr/ast/ListComp.class +org/python/antlr/ast/TryFinally.class +org/python/antlr/ast/If.class +org/python/antlr/ast/ImportFrom.class + Modified: branches/astwrite/ast/asdl_antlr.py =================================================================== --- branches/astwrite/ast/asdl_antlr.py 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/ast/asdl_antlr.py 2008-12-02 13:55:51 UTC (rev 5677) @@ -146,6 +146,7 @@ def visitSum(self, sum, name, depth): if sum.simple and not name == "excepthandler": self.simple_sum(sum, name, depth) + self.simple_sum_wrappers(sum, name, depth) else: self.sum_with_constructor(sum, name, depth) @@ -160,13 +161,39 @@ self.emit("%s," % type.name, depth + 1) self.emit("%s;" % sum.types[len(sum.types) - 1].name, depth + 1) - self.attributes(sum, depth, True); + #XXX + #self.attributes(sum, depth, True); self.emit("public %sType __call__() { return this; }" % name, depth + 1) self.emit("}", depth) self.close() + def simple_sum_wrappers(self, sum, name, depth): + for i in range(len(sum.types) - 1): + type = sum.types[i] + self.open("%s" % type.name, refersToPythonTree=0) + self.emit('import org.python.antlr.AST;', depth) + self.emit('import org.python.core.PyObject;', depth) + self.emit('import org.python.core.PyType;', depth) + self.emit('import org.python.expose.ExposedType;', depth) + self.emit('', 0) + self.emit('@ExposedType(name = "_ast.%s", base = PyObject.class)' % type.name, depth) + self.emit("public class %s extends AST {" % type.name, depth) + self.emit('public static final PyType TYPE = PyType.fromClass(%s.class);' % type.name, depth + 1) + + self.emit('public int asIndex() {', depth + 1) + self.emit('return asIndex(null);', depth + 2) + self.emit("}", depth + 1) + + self.emit('public int asIndex(PyObject error) {', depth + 1) + self.emit('return %s;' % str(i), depth + 2) + self.emit("}", depth + 1) + + self.emit("}", depth) + self.close() + + def attributes(self, obj, depth, always_emit=False): field_list = [] if hasattr(obj, "fields"): @@ -175,10 +202,12 @@ if len(field_list) > 0: self.emit("private final static String[] fields = new String[] {%s};" % ", ".join(field_list), depth+1) + self.emit('@ExposedGet(name = "_fields")', depth) self.emit("public String[] get_fields() { return fields; }", depth+1) self.emit("", 0) elif always_emit: self.emit("private final static String[] fields = new String[0];", depth+1) + self.emit('@ExposedGet(name = "_fields")', depth) self.emit("public String[] get_fields() { return fields; }", depth+1) self.emit("", 0) @@ -189,16 +218,19 @@ if len(att_list) > 0: self.emit("private final static String[] attributes = new String[] {%s};" % ", ".join(att_list), depth+1) + self.emit('@ExposedGet(name = "_attributes")', depth) self.emit("public String[] get_attributes() { return attributes; }", depth+1) self.emit("", 0) elif always_emit: self.emit("private final static String[] attributes = new String[0];", depth+1) + self.emit('@ExposedGet(name = "_attributes")', depth) self.emit("public String[] get_attributes() { return attributes; }", depth+1) self.emit("", 0) def sum_with_constructor(self, sum, name, depth): self.open("%sType" % name) + self.emit('@ExposedType(name = "_ast.%s", base = PyObject.class)' % name, depth) self.emit("public abstract class %(name)sType extends PythonTree {" % locals(), depth) self.emit("", 0) @@ -237,6 +269,7 @@ def visitProduct(self, product, name, depth): self.open("%sType" % name, useDataOutput=1) + self.emit('@ExposedType(name = "_ast.%s", base = PyObject.class)' % name, depth) self.emit("public class %(name)sType extends PythonTree {" % locals(), depth) self.emit("public static final PyType TYPE = PyType.fromClass(%sType.class);" % name, depth + 1); for f in product.fields: @@ -282,6 +315,7 @@ if str(name) in ('stmt', 'expr', 'excepthandler'): # The lineno property self.emit("private int lineno = -1;", depth + 1) + self.emit('@ExposedGet(name = "lineno")', depth) self.emit("public int getLineno() {", depth + 1) self.emit("if (lineno != -1) {", depth + 2); self.emit("return lineno;", depth + 3); @@ -289,6 +323,7 @@ self.emit('return getLine();', depth + 2) self.emit("}", depth + 1) self.emit("", 0) + self.emit('@ExposedSet(name = "lineno")', depth) self.emit("public void setLineno(int num) {", depth + 1) self.emit("lineno = num;", depth + 2); self.emit("}", depth + 1) @@ -296,6 +331,7 @@ # The col_offset property self.emit("private int col_offset = -1;", depth + 1) + self.emit('@ExposedGet(name = "col_offset")', depth) self.emit("public int getCol_offset() {", depth + 1) self.emit("if (col_offset != -1) {", depth + 2); self.emit("return col_offset;", depth + 3); @@ -303,6 +339,7 @@ self.emit('return getCharPositionInLine();', depth + 2) self.emit("}", depth + 1) self.emit("", 0) + self.emit('@ExposedSet(name = "col_offset")', depth) self.emit("public void setCol_offset(int num) {", depth + 1) self.emit("col_offset = num;", depth + 2); self.emit("}", depth + 1) @@ -344,6 +381,7 @@ self.javaConstructors(type, clsname, ctorname, fields, depth) # The toString() method + self.emit('@ExposedGet(name = "repr")', depth) self.emit("public String toString() {", depth) self.emit('return "%s";' % clsname, depth+1) self.emit("}", depth) @@ -475,7 +513,7 @@ field.name), depth) if field.seq: #self.emit("this.%s = new %s(" % (field.name, self.javaType(field)), depth+1) - self.emit("//FJW this.%s = AstAdapters.to_%sList(%s);" % (field.name, str(field.type), field.name), depth+1) + self.emit("this.%s = AstAdapters.to_%sList(%s);" % (field.name, str(field.type), field.name), depth+1) else: self.emit("this.%s = AstAdapters.to_%s(%s);" % (field.name, str(field.type), field.name), depth+1) self.emit("}", depth) Added: branches/astwrite/src/org/python/antlr/ast/Add.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Add.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/Add.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.Add", base = PyObject.class) +public class Add extends AST { + public static final PyType TYPE = PyType.fromClass(Add.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 0; + } +} Added: branches/astwrite/src/org/python/antlr/ast/And.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/And.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/And.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.And", base = PyObject.class) +public class And extends AST { + public static final PyType TYPE = PyType.fromClass(And.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 0; + } +} Modified: branches/astwrite/src/org/python/antlr/ast/Assert.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -49,6 +49,7 @@ private final static String[] fields = new String[] {"test", "msg"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public Assert() { @@ -89,6 +90,7 @@ addChild(msg); } + @ExposedGet(name = "repr") public String toString() { return "Assert"; } @@ -117,6 +119,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -124,11 +127,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -136,6 +141,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/Assign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -31,7 +31,7 @@ } @ExposedSet(name = "targets") public void setTargets(PyObject targets) { - //FJW this.targets = AstAdapters.to_exprList(targets); + this.targets = AstAdapters.to_exprList(targets); } private exprType value; @@ -49,6 +49,7 @@ private final static String[] fields = new String[] {"targets", "value"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public Assign() { @@ -107,6 +108,7 @@ addChild(value); } + @ExposedGet(name = "repr") public String toString() { return "Assign"; } @@ -139,6 +141,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -146,11 +149,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -158,6 +163,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/Attribute.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -64,6 +64,7 @@ private final static String[] fields = new String[] {"value", "attr", "ctx"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public Attribute() { @@ -108,6 +109,7 @@ this.ctx = ctx; } + @ExposedGet(name = "repr") public String toString() { return "Attribute"; } @@ -141,6 +143,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -148,11 +151,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -160,6 +165,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/AugAssign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -63,6 +63,7 @@ private final static String[] fields = new String[] {"target", "op", "value"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public AugAssign() { @@ -110,6 +111,7 @@ addChild(value); } + @ExposedGet(name = "repr") public String toString() { return "AugAssign"; } @@ -141,6 +143,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -148,11 +151,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -160,6 +165,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Added: branches/astwrite/src/org/python/antlr/ast/AugLoad.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugLoad.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/AugLoad.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.AugLoad", base = PyObject.class) +public class AugLoad extends AST { + public static final PyType TYPE = PyType.fromClass(AugLoad.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 3; + } +} Added: branches/astwrite/src/org/python/antlr/ast/AugStore.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugStore.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/AugStore.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.AugStore", base = PyObject.class) +public class AugStore extends AST { + public static final PyType TYPE = PyType.fromClass(AugStore.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 4; + } +} Modified: branches/astwrite/src/org/python/antlr/ast/BinOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -62,6 +62,7 @@ private final static String[] fields = new String[] {"left", "op", "right"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public BinOp() { @@ -108,6 +109,7 @@ addChild(right); } + @ExposedGet(name = "repr") public String toString() { return "BinOp"; } @@ -139,6 +141,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -146,11 +149,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -158,6 +163,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Added: branches/astwrite/src/org/python/antlr/ast/BitAnd.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BitAnd.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/BitAnd.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.BitAnd", base = PyObject.class) +public class BitAnd extends AST { + public static final PyType TYPE = PyType.fromClass(BitAnd.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 10; + } +} Added: branches/astwrite/src/org/python/antlr/ast/BitOr.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BitOr.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/BitOr.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.BitOr", base = PyObject.class) +public class BitOr extends AST { + public static final PyType TYPE = PyType.fromClass(BitOr.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 8; + } +} Added: branches/astwrite/src/org/python/antlr/ast/BitXor.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BitXor.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/BitXor.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.BitXor", base = PyObject.class) +public class BitXor extends AST { + public static final PyType TYPE = PyType.fromClass(BitXor.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 9; + } +} Modified: branches/astwrite/src/org/python/antlr/ast/BoolOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -44,11 +44,12 @@ } @ExposedSet(name = "values") public void setValues(PyObject values) { - //FJW this.values = AstAdapters.to_exprList(values); + this.values = AstAdapters.to_exprList(values); } private final static String[] fields = new String[] {"op", "values"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public BoolOp() { @@ -103,6 +104,7 @@ } } + @ExposedGet(name = "repr") public String toString() { return "BoolOp"; } @@ -133,6 +135,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -140,11 +143,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -152,6 +157,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/Break.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Break.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/Break.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -34,6 +34,7 @@ super(tree); } + @ExposedGet(name = "repr") public String toString() { return "Break"; } @@ -52,6 +53,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -59,11 +61,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -71,6 +75,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/Call.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Call.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/Call.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -44,7 +44,7 @@ } @ExposedSet(name = "args") public void setArgs(PyObject args) { - //FJW this.args = AstAdapters.to_exprList(args); + this.args = AstAdapters.to_exprList(args); } private java.util.List<keywordType> keywords; @@ -57,7 +57,7 @@ } @ExposedSet(name = "keywords") public void setKeywords(PyObject keywords) { - //FJW this.keywords = AstAdapters.to_keywordList(keywords); + this.keywords = AstAdapters.to_keywordList(keywords); } private exprType starargs; @@ -90,6 +90,7 @@ private final static String[] fields = new String[] {"func", "args", "keywords", "starargs", "kwargs"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public Call() { @@ -186,6 +187,7 @@ addChild(kwargs); } + @ExposedGet(name = "repr") public String toString() { return "Call"; } @@ -237,6 +239,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -244,11 +247,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -256,6 +261,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/ClassDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -45,7 +45,7 @@ } @ExposedSet(name = "bases") public void setBases(PyObject bases) { - //FJW this.bases = AstAdapters.to_exprList(bases); + this.bases = AstAdapters.to_exprList(bases); } private java.util.List<stmtType> body; @@ -58,7 +58,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - //FJW this.body = AstAdapters.to_stmtList(body); + this.body = AstAdapters.to_stmtList(body); } private java.util.List<exprType> decorator_list; @@ -71,13 +71,14 @@ } @ExposedSet(name = "decorator_list") public void setDecorator_list(PyObject decorator_list) { - //FJW this.decorator_list = AstAdapters.to_exprList(decorator_list); + this.decorator_list = AstAdapters.to_exprList(decorator_list); } private final static String[] fields = new String[] {"name", "bases", "body", "decorator_list"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public ClassDef() { @@ -180,6 +181,7 @@ } } + @ExposedGet(name = "repr") public String toString() { return "ClassDef"; } @@ -228,6 +230,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -235,11 +238,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -247,6 +252,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/Compare.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -44,7 +44,7 @@ } @ExposedSet(name = "ops") public void setOps(PyObject ops) { - //FJW this.ops = AstAdapters.to_cmpopList(ops); + this.ops = AstAdapters.to_cmpopList(ops); } private java.util.List<exprType> comparators; @@ -57,12 +57,13 @@ } @ExposedSet(name = "comparators") public void setComparators(PyObject comparators) { - //FJW this.comparators = AstAdapters.to_exprList(comparators); + this.comparators = AstAdapters.to_exprList(comparators); } private final static String[] fields = new String[] {"left", "ops", "comparators"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public Compare() { @@ -125,6 +126,7 @@ } } + @ExposedGet(name = "repr") public String toString() { return "Compare"; } @@ -160,6 +162,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -167,11 +170,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -179,6 +184,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/Continue.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Continue.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/Continue.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -34,6 +34,7 @@ super(tree); } + @ExposedGet(name = "repr") public String toString() { return "Continue"; } @@ -52,6 +53,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -59,11 +61,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -71,6 +75,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Added: branches/astwrite/src/org/python/antlr/ast/Del.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Del.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/Del.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.Del", base = PyObject.class) +public class Del extends AST { + public static final PyType TYPE = PyType.fromClass(Del.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 2; + } +} Modified: branches/astwrite/src/org/python/antlr/ast/Delete.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -31,11 +31,12 @@ } @ExposedSet(name = "targets") public void setTargets(PyObject targets) { - //FJW this.targets = AstAdapters.to_exprList(targets); + this.targets = AstAdapters.to_exprList(targets); } private final static String[] fields = new String[] {"targets"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public Delete() { @@ -85,6 +86,7 @@ } } + @ExposedGet(name = "repr") public String toString() { return "Delete"; } @@ -112,6 +114,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -119,11 +122,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -131,6 +136,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/Dict.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -31,7 +31,7 @@ } @ExposedSet(name = "keys") public void setKeys(PyObject keys) { - //FJW this.keys = AstAdapters.to_exprList(keys); + this.keys = AstAdapters.to_exprList(keys); } private java.util.List<exprType> values; @@ -44,11 +44,12 @@ } @ExposedSet(name = "values") public void setValues(PyObject values) { - //FJW this.values = AstAdapters.to_exprList(values); + this.values = AstAdapters.to_exprList(values); } private final static String[] fields = new String[] {"keys", "values"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public Dict() { @@ -122,6 +123,7 @@ } } + @ExposedGet(name = "repr") public String toString() { return "Dict"; } @@ -158,6 +160,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -165,11 +168,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -177,6 +182,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Added: branches/astwrite/src/org/python/antlr/ast/Div.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Div.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/Div.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.Div", base = PyObject.class) +public class Div extends AST { + public static final PyType TYPE = PyType.fromClass(Div.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 3; + } +} Modified: branches/astwrite/src/org/python/antlr/ast/Ellipsis.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Ellipsis.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/Ellipsis.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -34,6 +34,7 @@ super(tree); } + @ExposedGet(name = "repr") public String toString() { return "Ellipsis"; } Added: branches/astwrite/src/org/python/antlr/ast/Eq.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Eq.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/Eq.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.Eq", base = PyObject.class) +public class Eq extends AST { + public static final PyType TYPE = PyType.fromClass(Eq.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 0; + } +} Modified: branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -57,12 +57,13 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - //FJW this.body = AstAdapters.to_stmtList(body); + this.body = AstAdapters.to_stmtList(body); } private final static String[] fields = new String[] {"excepttype", "name", "body"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public ExceptHandler() { @@ -128,6 +129,7 @@ } } + @ExposedGet(name = "repr") public String toString() { return "ExceptHandler"; } @@ -165,6 +167,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -172,11 +175,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -184,6 +189,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/Exec.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -63,6 +63,7 @@ private final static String[] fields = new String[] {"body", "globals", "locals"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public Exec() { @@ -112,6 +113,7 @@ addChild(locals); } + @ExposedGet(name = "repr") public String toString() { return "Exec"; } @@ -145,6 +147,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -152,11 +155,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -164,6 +169,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/Expr.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -36,6 +36,7 @@ private final static String[] fields = new String[] {"value"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public Expr() { @@ -69,6 +70,7 @@ addChild(value); } + @ExposedGet(name = "repr") public String toString() { return "Expr"; } @@ -92,6 +94,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -99,11 +102,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -111,6 +116,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/Expression.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Expression.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/Expression.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -36,6 +36,7 @@ private final static String[] fields = new String[] {"body"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public Expression() { @@ -69,6 +70,7 @@ addChild(body); } + @ExposedGet(name = "repr") public String toString() { return "Expression"; } Modified: branches/astwrite/src/org/python/antlr/ast/ExtSlice.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -31,11 +31,12 @@ } @ExposedSet(name = "dims") public void setDims(PyObject dims) { - //FJW this.dims = AstAdapters.to_sliceList(dims); + this.dims = AstAdapters.to_sliceList(dims); } private final static String[] fields = new String[] {"dims"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public ExtSlice() { @@ -85,6 +86,7 @@ } } + @ExposedGet(name = "repr") public String toString() { return "ExtSlice"; } Modified: branches/astwrite/src/org/python/antlr/ast/For.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/For.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/For.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -57,7 +57,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - //FJW this.body = AstAdapters.to_stmtList(body); + this.body = AstAdapters.to_stmtList(body); } private java.util.List<stmtType> orelse; @@ -70,12 +70,13 @@ } @ExposedSet(name = "orelse") public void setOrelse(PyObject orelse) { - //FJW this.orelse = AstAdapters.to_stmtList(orelse); + this.orelse = AstAdapters.to_stmtList(orelse); } private final static String[] fields = new String[] {"target", "iter", "body", "orelse"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public For() { @@ -163,6 +164,7 @@ } } + @ExposedGet(name = "repr") public String toString() { return "For"; } @@ -209,6 +211,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -216,11 +219,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -228,6 +233,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/FunctionDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -58,7 +58,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - //FJW this.body = AstAdapters.to_stmtList(body); + this.body = AstAdapters.to_stmtList(body); } private java.util.List<exprType> decorator_list; @@ -71,13 +71,14 @@ } @ExposedSet(name = "decorator_list") public void setDecorator_list(PyObject decorator_list) { - //FJW this.decorator_list = AstAdapters.to_exprList(decorator_list); + this.decorator_list = AstAdapters.to_exprList(decorator_list); } private final static String[] fields = new String[] {"name", "args", "body", "decorator_list"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public FunctionDef() { @@ -161,6 +162,7 @@ } } + @ExposedGet(name = "repr") public String toString() { return "FunctionDef"; } @@ -205,6 +207,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -212,11 +215,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -224,6 +229,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -44,11 +44,12 @@ } @ExposedSet(name = "generators") public void setGenerators(PyObject generators) { - //FJW this.generators = AstAdapters.to_comprehensionList(generators); + this.generators = AstAdapters.to_comprehensionList(generators); } private final static String[] fields = new String[] {"elt", "generators"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public GeneratorExp() { @@ -107,6 +108,7 @@ } } + @ExposedGet(name = "repr") public String toString() { return "GeneratorExp"; } @@ -139,6 +141,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -146,11 +149,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -158,6 +163,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/Global.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Global.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/Global.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -31,11 +31,12 @@ } @ExposedSet(name = "names") public void setNames(PyObject names) { - //FJW this.names = AstAdapters.to_identifierList(names); + this.names = AstAdapters.to_identifierList(names); } private final static String[] fields = new String[] {"names"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public Global() { @@ -66,6 +67,7 @@ this.names = names; } + @ExposedGet(name = "repr") public String toString() { return "Global"; } @@ -87,6 +89,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -94,11 +97,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -106,6 +111,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Added: branches/astwrite/src/org/python/antlr/ast/Gt.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Gt.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/Gt.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.Gt", base = PyObject.class) +public class Gt extends AST { + public static final PyType TYPE = PyType.fromClass(Gt.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 4; + } +} Added: branches/astwrite/src/org/python/antlr/ast/GtE.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/GtE.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/GtE.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.GtE", base = PyObject.class) +public class GtE extends AST { + public static final PyType TYPE = PyType.fromClass(GtE.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 5; + } +} Modified: branches/astwrite/src/org/python/antlr/ast/If.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/If.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/If.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -44,7 +44,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - //FJW this.body = AstAdapters.to_stmtList(body); + this.body = AstAdapters.to_stmtList(body); } private java.util.List<stmtType> orelse; @@ -57,12 +57,13 @@ } @ExposedSet(name = "orelse") public void setOrelse(PyObject orelse) { - //FJW this.orelse = AstAdapters.to_stmtList(orelse); + this.orelse = AstAdapters.to_stmtList(orelse); } private final static String[] fields = new String[] {"test", "body", "orelse"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public If() { @@ -143,6 +144,7 @@ } } + @ExposedGet(name = "repr") public String toString() { return "If"; } @@ -184,6 +186,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -191,11 +194,13 @@ return getLine(); } +@ExposedSet(name = "lineno") ... [truncated message content] |
From: <fwi...@us...> - 2008-12-02 22:23:37
|
Revision: 5678 http://jython.svn.sourceforge.net/jython/?rev=5678&view=rev Author: fwierzbicki Date: 2008-12-02 22:23:33 +0000 (Tue, 02 Dec 2008) Log Message: ----------- Much better support for PyObjects to represent the ast enums. Modified Paths: -------------- branches/astwrite/CoreExposed.includes branches/astwrite/ast/asdl_antlr.py branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java branches/astwrite/src/org/python/antlr/ast/Add.java branches/astwrite/src/org/python/antlr/ast/And.java branches/astwrite/src/org/python/antlr/ast/Assert.java branches/astwrite/src/org/python/antlr/ast/Assign.java branches/astwrite/src/org/python/antlr/ast/Attribute.java branches/astwrite/src/org/python/antlr/ast/AugAssign.java branches/astwrite/src/org/python/antlr/ast/AugLoad.java branches/astwrite/src/org/python/antlr/ast/AugStore.java branches/astwrite/src/org/python/antlr/ast/BinOp.java branches/astwrite/src/org/python/antlr/ast/BitAnd.java branches/astwrite/src/org/python/antlr/ast/BitOr.java branches/astwrite/src/org/python/antlr/ast/BitXor.java branches/astwrite/src/org/python/antlr/ast/BoolOp.java branches/astwrite/src/org/python/antlr/ast/Call.java branches/astwrite/src/org/python/antlr/ast/ClassDef.java branches/astwrite/src/org/python/antlr/ast/Compare.java branches/astwrite/src/org/python/antlr/ast/Del.java branches/astwrite/src/org/python/antlr/ast/Delete.java branches/astwrite/src/org/python/antlr/ast/Dict.java branches/astwrite/src/org/python/antlr/ast/Div.java branches/astwrite/src/org/python/antlr/ast/Eq.java branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java branches/astwrite/src/org/python/antlr/ast/Exec.java branches/astwrite/src/org/python/antlr/ast/Expr.java branches/astwrite/src/org/python/antlr/ast/Expression.java branches/astwrite/src/org/python/antlr/ast/ExtSlice.java branches/astwrite/src/org/python/antlr/ast/For.java branches/astwrite/src/org/python/antlr/ast/FunctionDef.java branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java branches/astwrite/src/org/python/antlr/ast/Global.java branches/astwrite/src/org/python/antlr/ast/Gt.java branches/astwrite/src/org/python/antlr/ast/GtE.java branches/astwrite/src/org/python/antlr/ast/If.java branches/astwrite/src/org/python/antlr/ast/IfExp.java branches/astwrite/src/org/python/antlr/ast/Import.java branches/astwrite/src/org/python/antlr/ast/ImportFrom.java branches/astwrite/src/org/python/antlr/ast/In.java branches/astwrite/src/org/python/antlr/ast/Index.java branches/astwrite/src/org/python/antlr/ast/Interactive.java branches/astwrite/src/org/python/antlr/ast/Invert.java branches/astwrite/src/org/python/antlr/ast/Is.java branches/astwrite/src/org/python/antlr/ast/IsNot.java branches/astwrite/src/org/python/antlr/ast/LShift.java branches/astwrite/src/org/python/antlr/ast/Lambda.java branches/astwrite/src/org/python/antlr/ast/List.java branches/astwrite/src/org/python/antlr/ast/ListComp.java branches/astwrite/src/org/python/antlr/ast/Load.java branches/astwrite/src/org/python/antlr/ast/Lt.java branches/astwrite/src/org/python/antlr/ast/LtE.java branches/astwrite/src/org/python/antlr/ast/Mod.java branches/astwrite/src/org/python/antlr/ast/Module.java branches/astwrite/src/org/python/antlr/ast/Mult.java branches/astwrite/src/org/python/antlr/ast/Name.java branches/astwrite/src/org/python/antlr/ast/Not.java branches/astwrite/src/org/python/antlr/ast/NotEq.java branches/astwrite/src/org/python/antlr/ast/Num.java branches/astwrite/src/org/python/antlr/ast/Pow.java branches/astwrite/src/org/python/antlr/ast/Print.java branches/astwrite/src/org/python/antlr/ast/RShift.java branches/astwrite/src/org/python/antlr/ast/Raise.java branches/astwrite/src/org/python/antlr/ast/Repr.java branches/astwrite/src/org/python/antlr/ast/Return.java branches/astwrite/src/org/python/antlr/ast/Slice.java branches/astwrite/src/org/python/antlr/ast/Store.java branches/astwrite/src/org/python/antlr/ast/Str.java branches/astwrite/src/org/python/antlr/ast/Sub.java branches/astwrite/src/org/python/antlr/ast/Subscript.java branches/astwrite/src/org/python/antlr/ast/Suite.java branches/astwrite/src/org/python/antlr/ast/TryExcept.java branches/astwrite/src/org/python/antlr/ast/TryFinally.java branches/astwrite/src/org/python/antlr/ast/Tuple.java branches/astwrite/src/org/python/antlr/ast/UAdd.java branches/astwrite/src/org/python/antlr/ast/UnaryOp.java branches/astwrite/src/org/python/antlr/ast/While.java branches/astwrite/src/org/python/antlr/ast/With.java branches/astwrite/src/org/python/antlr/ast/Yield.java branches/astwrite/src/org/python/antlr/ast/aliasType.java branches/astwrite/src/org/python/antlr/ast/argumentsType.java branches/astwrite/src/org/python/antlr/ast/comprehensionType.java branches/astwrite/src/org/python/antlr/ast/keywordType.java Modified: branches/astwrite/CoreExposed.includes =================================================================== --- branches/astwrite/CoreExposed.includes 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/CoreExposed.includes 2008-12-02 22:23:33 UTC (rev 5678) @@ -102,4 +102,17 @@ org/python/antlr/ast/TryFinally.class org/python/antlr/ast/If.class org/python/antlr/ast/ImportFrom.class +org/python/antlr/ast/FunctionDef.class +org/python/antlr/ast/argumentsType.class +org/python/antlr/ast/List.class +org/python/antlr/ast/Interactive.class +org/python/antlr/ast/ExtSlice.class +org/python/antlr/ast/Compare.class +org/python/antlr/ast/While.class +org/python/antlr/ast/Call.class +org/python/antlr/ast/Assign.class +org/python/antlr/ast/For.class +org/python/antlr/ast/Suite.class +org/python/antlr/ast/BoolOp.class +org/python/antlr/ast/Print.class Modified: branches/astwrite/ast/asdl_antlr.py =================================================================== --- branches/astwrite/ast/asdl_antlr.py 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/ast/asdl_antlr.py 2008-12-02 22:23:33 UTC (rev 5678) @@ -170,7 +170,7 @@ self.close() def simple_sum_wrappers(self, sum, name, depth): - for i in range(len(sum.types) - 1): + for i in range(len(sum.types)): type = sum.types[i] self.open("%s" % type.name, refersToPythonTree=0) self.emit('import org.python.antlr.AST;', depth) @@ -187,7 +187,7 @@ self.emit("}", depth + 1) self.emit('public int asIndex(PyObject error) {', depth + 1) - self.emit('return %s;' % str(i), depth + 2) + self.emit('return %s;' % str(i + 1), depth + 2) self.emit("}", depth + 1) self.emit("}", depth) @@ -503,7 +503,7 @@ elif str(field.type) == 'int': self.emit("return Py.newInteger(%s);" % field.name, depth+1) elif field.typedef.simple: - self.emit("return Py.None;//(%s);" % field.name, depth+1) + self.emit("return AstAdapters.%s2py(%s);" % (field.name, field.name), depth+1) else: self.emit("return %s;" % field.name, depth+1) #self.emit("return Py.None;", depth+1) @@ -513,9 +513,9 @@ field.name), depth) if field.seq: #self.emit("this.%s = new %s(" % (field.name, self.javaType(field)), depth+1) - self.emit("this.%s = AstAdapters.to_%sList(%s);" % (field.name, str(field.type), field.name), depth+1) + self.emit("this.%s = AstAdapters.py2%sList(%s);" % (field.name, str(field.type), field.name), depth+1) else: - self.emit("this.%s = AstAdapters.to_%s(%s);" % (field.name, str(field.type), field.name), depth+1) + self.emit("this.%s = AstAdapters.py2%s(%s);" % (field.name, str(field.type), field.name), depth+1) self.emit("}", depth) self.emit("", 0) Modified: branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -18,47 +18,47 @@ public static SliceAdapter sliceAdapter = new SliceAdapter(); public static StmtAdapter stmtAdapter = new StmtAdapter(); - public static java.util.List<aliasType> to_aliasList(PyObject o) { + public static java.util.List<aliasType> py2aliasList(PyObject o) { return (java.util.List<aliasType>)aliasAdapter.iter2ast(o); } - public static java.util.List<cmpopType> to_cmpopList(PyObject o) { + public static java.util.List<cmpopType> py2cmpopList(PyObject o) { return (java.util.List<cmpopType>)cmpopAdapter.iter2ast(o); } - public static java.util.List<comprehensionType> to_comprehensionList(PyObject o) { + public static java.util.List<comprehensionType> py2comprehensionList(PyObject o) { return (java.util.List<comprehensionType>)comprehensionAdapter.iter2ast(o); } - public static java.util.List<excepthandlerType> to_excepthandlerList(PyObject o) { + public static java.util.List<excepthandlerType> py2excepthandlerList(PyObject o) { return (java.util.List<excepthandlerType>)excepthandlerAdapter.iter2ast(o); } - public static java.util.List<exprType> to_exprList(PyObject o) { + public static java.util.List<exprType> py2exprList(PyObject o) { return (java.util.List<exprType>)exprAdapter.iter2ast(o); } - public static java.util.List<String> to_identifierList(PyObject o) { + public static java.util.List<String> py2identifierList(PyObject o) { return (java.util.List<String>)identifierAdapter.iter2ast(o); } - public static java.util.List<keywordType> to_keywordList(PyObject o) { + public static java.util.List<keywordType> py2keywordList(PyObject o) { return (java.util.List<keywordType>)keywordAdapter.iter2ast(o); } - public static java.util.List<sliceType> to_sliceList(PyObject o) { + public static java.util.List<sliceType> py2sliceList(PyObject o) { return (java.util.List<sliceType>)sliceAdapter.iter2ast(o); } - public static java.util.List<stmtType> to_stmtList(PyObject o) { + public static java.util.List<stmtType> py2stmtList(PyObject o) { return (java.util.List<stmtType>)stmtAdapter.iter2ast(o); } - public static exprType to_expr(PyObject o) { + public static exprType py2expr(PyObject o) { return (exprType)exprAdapter.py2ast(o); } - public static int to_int(Object o) { + public static int py2int(Object o) { if (o == null || o instanceof Integer) { return (Integer)o; } @@ -66,11 +66,11 @@ throw Py.TypeError("Can't convert " + o.getClass().getName() + " to int node"); } - public static String to_identifier(PyObject o) { + public static String py2identifier(PyObject o) { return (String)identifierAdapter.py2ast(o); } - public static expr_contextType to_expr_context(Object o) { + public static expr_contextType py2expr_context(Object o) { if (o == null || o instanceof expr_contextType) { return (expr_contextType)o; } @@ -78,15 +78,15 @@ throw Py.TypeError("Can't convert " + o.getClass().getName() + " to expr_context node"); } - public static sliceType to_slice(PyObject o) { + public static sliceType py2slice(PyObject o) { return (sliceType)sliceAdapter.py2ast(o); } - public static stmtType to_stmt(PyObject o) { + public static stmtType py2stmt(PyObject o) { return (stmtType)stmtAdapter.py2ast(o); } - public static String to_string(Object o) { + public static String py2string(Object o) { if (o == null || o instanceof String) { return (String)o; } @@ -94,7 +94,7 @@ throw Py.TypeError("Can't convert " + o.getClass().getName() + " to string node"); } - public static operatorType to_operator(Object o) { + public static operatorType py2operator(Object o) { if (o == null || o instanceof operatorType) { return (operatorType)o; } @@ -102,7 +102,80 @@ throw Py.TypeError("Can't convert " + o.getClass().getName() + " to operator node"); } - public static boolopType to_boolop(Object o) { + public static PyObject op2py(operatorType o) { + switch (o) { + case Add: + return new Add(); + case Sub: + return new Sub(); + case Mult: + return new Mult(); + case Div: + return new Div(); + case Mod: + return new Mod(); + case Pow: + return new Pow(); + case LShift: + return new LShift(); + case RShift: + return new RShift(); + case BitOr: + return new BitOr(); + case BitXor: + return new BitXor(); + case BitAnd: + return new BitAnd(); + case FloorDiv: + return new FloorDiv(); + } + return Py.None; + } + + public static PyObject op2py(boolopType o) { + switch (o) { + case And: + return new And(); + case Or: + return new Or(); + } + return Py.None; + } + + public static PyObject op2py(unaryopType o) { + switch (o) { + case Invert: + return new Invert(); + case Not: + return new Not(); + case UAdd: + return new UAdd(); + case USub: + return new USub(); + } + return Py.None; + } + + + public static PyObject ctx2py(expr_contextType o) { + switch (o) { + case Load: + return new Load(); + case Store: + return new Store(); + case Del: + return new Del(); + case AugLoad: + return new AugLoad(); + case AugStore: + return new AugStore(); + case Param: + return new Param(); + } + return Py.None; + } + + public static boolopType py2boolop(Object o) { if (o == null || o instanceof boolopType) { return (boolopType)o; } @@ -110,7 +183,7 @@ throw Py.TypeError("Can't convert " + o.getClass().getName() + " to boolop node"); } - public static argumentsType to_arguments(Object o) { + public static argumentsType py2arguments(Object o) { if (o == null || o instanceof argumentsType) { return (argumentsType)o; } @@ -119,11 +192,11 @@ } //XXX: clearly this isn't necessary -- need to adjust the code generation. - public static Object to_object(Object o) { + public static Object py2object(Object o) { return o; } - public static Boolean to_bool(Object o) { + public static Boolean py2bool(Object o) { if (o == null || o instanceof Boolean) { return (Boolean)o; } @@ -131,7 +204,7 @@ throw Py.TypeError("Can't convert " + o.getClass().getName() + " to Boolean node"); } - public static unaryopType to_unaryop(Object o) { + public static unaryopType py2unaryop(Object o) { if (o == null || o instanceof unaryopType) { return (unaryopType)o; } Modified: branches/astwrite/src/org/python/antlr/ast/Add.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Add.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Add.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 0; + return 1; } } Modified: branches/astwrite/src/org/python/antlr/ast/And.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/And.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/And.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 0; + return 1; } } Modified: branches/astwrite/src/org/python/antlr/ast/Assert.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "test") public void setTest(PyObject test) { - this.test = AstAdapters.to_expr(test); + this.test = AstAdapters.py2expr(test); } private exprType msg; @@ -44,7 +44,7 @@ } @ExposedSet(name = "msg") public void setMsg(PyObject msg) { - this.msg = AstAdapters.to_expr(msg); + this.msg = AstAdapters.py2expr(msg); } Modified: branches/astwrite/src/org/python/antlr/ast/Assign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "targets") public void setTargets(PyObject targets) { - this.targets = AstAdapters.to_exprList(targets); + this.targets = AstAdapters.py2exprList(targets); } private exprType value; @@ -44,7 +44,7 @@ } @ExposedSet(name = "value") public void setValue(PyObject value) { - this.value = AstAdapters.to_expr(value); + this.value = AstAdapters.py2expr(value); } Modified: branches/astwrite/src/org/python/antlr/ast/Attribute.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "value") public void setValue(PyObject value) { - this.value = AstAdapters.to_expr(value); + this.value = AstAdapters.py2expr(value); } private String attr; @@ -45,7 +45,7 @@ } @ExposedSet(name = "attr") public void setAttr(PyObject attr) { - this.attr = AstAdapters.to_identifier(attr); + this.attr = AstAdapters.py2identifier(attr); } private expr_contextType ctx; @@ -54,11 +54,11 @@ } @ExposedGet(name = "ctx") public PyObject getCtx() { - return Py.None;//(ctx); + return AstAdapters.ctx2py(ctx); } @ExposedSet(name = "ctx") public void setCtx(PyObject ctx) { - this.ctx = AstAdapters.to_expr_context(ctx); + this.ctx = AstAdapters.py2expr_context(ctx); } Modified: branches/astwrite/src/org/python/antlr/ast/AugAssign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "target") public void setTarget(PyObject target) { - this.target = AstAdapters.to_expr(target); + this.target = AstAdapters.py2expr(target); } private operatorType op; @@ -40,11 +40,11 @@ } @ExposedGet(name = "op") public PyObject getOp() { - return Py.None;//(op); + return AstAdapters.op2py(op); } @ExposedSet(name = "op") public void setOp(PyObject op) { - this.op = AstAdapters.to_operator(op); + this.op = AstAdapters.py2operator(op); } private exprType value; @@ -57,7 +57,7 @@ } @ExposedSet(name = "value") public void setValue(PyObject value) { - this.value = AstAdapters.to_expr(value); + this.value = AstAdapters.py2expr(value); } Modified: branches/astwrite/src/org/python/antlr/ast/AugLoad.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugLoad.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/AugLoad.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 3; + return 4; } } Modified: branches/astwrite/src/org/python/antlr/ast/AugStore.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugStore.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/AugStore.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 4; + return 5; } } Modified: branches/astwrite/src/org/python/antlr/ast/BinOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "left") public void setLeft(PyObject left) { - this.left = AstAdapters.to_expr(left); + this.left = AstAdapters.py2expr(left); } private operatorType op; @@ -40,11 +40,11 @@ } @ExposedGet(name = "op") public PyObject getOp() { - return Py.None;//(op); + return AstAdapters.op2py(op); } @ExposedSet(name = "op") public void setOp(PyObject op) { - this.op = AstAdapters.to_operator(op); + this.op = AstAdapters.py2operator(op); } private exprType right; @@ -57,7 +57,7 @@ } @ExposedSet(name = "right") public void setRight(PyObject right) { - this.right = AstAdapters.to_expr(right); + this.right = AstAdapters.py2expr(right); } Modified: branches/astwrite/src/org/python/antlr/ast/BitAnd.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BitAnd.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/BitAnd.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 10; + return 11; } } Modified: branches/astwrite/src/org/python/antlr/ast/BitOr.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BitOr.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/BitOr.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 8; + return 9; } } Modified: branches/astwrite/src/org/python/antlr/ast/BitXor.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BitXor.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/BitXor.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 9; + return 10; } } Modified: branches/astwrite/src/org/python/antlr/ast/BoolOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -27,11 +27,11 @@ } @ExposedGet(name = "op") public PyObject getOp() { - return Py.None;//(op); + return AstAdapters.op2py(op); } @ExposedSet(name = "op") public void setOp(PyObject op) { - this.op = AstAdapters.to_boolop(op); + this.op = AstAdapters.py2boolop(op); } private java.util.List<exprType> values; @@ -44,7 +44,7 @@ } @ExposedSet(name = "values") public void setValues(PyObject values) { - this.values = AstAdapters.to_exprList(values); + this.values = AstAdapters.py2exprList(values); } Modified: branches/astwrite/src/org/python/antlr/ast/Call.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Call.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Call.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "func") public void setFunc(PyObject func) { - this.func = AstAdapters.to_expr(func); + this.func = AstAdapters.py2expr(func); } private java.util.List<exprType> args; @@ -44,7 +44,7 @@ } @ExposedSet(name = "args") public void setArgs(PyObject args) { - this.args = AstAdapters.to_exprList(args); + this.args = AstAdapters.py2exprList(args); } private java.util.List<keywordType> keywords; @@ -57,7 +57,7 @@ } @ExposedSet(name = "keywords") public void setKeywords(PyObject keywords) { - this.keywords = AstAdapters.to_keywordList(keywords); + this.keywords = AstAdapters.py2keywordList(keywords); } private exprType starargs; @@ -70,7 +70,7 @@ } @ExposedSet(name = "starargs") public void setStarargs(PyObject starargs) { - this.starargs = AstAdapters.to_expr(starargs); + this.starargs = AstAdapters.py2expr(starargs); } private exprType kwargs; @@ -83,7 +83,7 @@ } @ExposedSet(name = "kwargs") public void setKwargs(PyObject kwargs) { - this.kwargs = AstAdapters.to_expr(kwargs); + this.kwargs = AstAdapters.py2expr(kwargs); } Modified: branches/astwrite/src/org/python/antlr/ast/ClassDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -32,7 +32,7 @@ } @ExposedSet(name = "name") public void setName(PyObject name) { - this.name = AstAdapters.to_identifier(name); + this.name = AstAdapters.py2identifier(name); } private java.util.List<exprType> bases; @@ -45,7 +45,7 @@ } @ExposedSet(name = "bases") public void setBases(PyObject bases) { - this.bases = AstAdapters.to_exprList(bases); + this.bases = AstAdapters.py2exprList(bases); } private java.util.List<stmtType> body; @@ -58,7 +58,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - this.body = AstAdapters.to_stmtList(body); + this.body = AstAdapters.py2stmtList(body); } private java.util.List<exprType> decorator_list; @@ -71,7 +71,7 @@ } @ExposedSet(name = "decorator_list") public void setDecorator_list(PyObject decorator_list) { - this.decorator_list = AstAdapters.to_exprList(decorator_list); + this.decorator_list = AstAdapters.py2exprList(decorator_list); } Modified: branches/astwrite/src/org/python/antlr/ast/Compare.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "left") public void setLeft(PyObject left) { - this.left = AstAdapters.to_expr(left); + this.left = AstAdapters.py2expr(left); } private java.util.List<cmpopType> ops; @@ -44,7 +44,7 @@ } @ExposedSet(name = "ops") public void setOps(PyObject ops) { - this.ops = AstAdapters.to_cmpopList(ops); + this.ops = AstAdapters.py2cmpopList(ops); } private java.util.List<exprType> comparators; @@ -57,7 +57,7 @@ } @ExposedSet(name = "comparators") public void setComparators(PyObject comparators) { - this.comparators = AstAdapters.to_exprList(comparators); + this.comparators = AstAdapters.py2exprList(comparators); } Modified: branches/astwrite/src/org/python/antlr/ast/Del.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Del.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Del.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 2; + return 3; } } Modified: branches/astwrite/src/org/python/antlr/ast/Delete.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "targets") public void setTargets(PyObject targets) { - this.targets = AstAdapters.to_exprList(targets); + this.targets = AstAdapters.py2exprList(targets); } Modified: branches/astwrite/src/org/python/antlr/ast/Dict.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "keys") public void setKeys(PyObject keys) { - this.keys = AstAdapters.to_exprList(keys); + this.keys = AstAdapters.py2exprList(keys); } private java.util.List<exprType> values; @@ -44,7 +44,7 @@ } @ExposedSet(name = "values") public void setValues(PyObject values) { - this.values = AstAdapters.to_exprList(values); + this.values = AstAdapters.py2exprList(values); } Modified: branches/astwrite/src/org/python/antlr/ast/Div.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Div.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Div.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 3; + return 4; } } Modified: branches/astwrite/src/org/python/antlr/ast/Eq.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Eq.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Eq.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 0; + return 1; } } Modified: branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "excepttype") public void setExcepttype(PyObject excepttype) { - this.excepttype = AstAdapters.to_expr(excepttype); + this.excepttype = AstAdapters.py2expr(excepttype); } private exprType name; @@ -44,7 +44,7 @@ } @ExposedSet(name = "name") public void setName(PyObject name) { - this.name = AstAdapters.to_expr(name); + this.name = AstAdapters.py2expr(name); } private java.util.List<stmtType> body; @@ -57,7 +57,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - this.body = AstAdapters.to_stmtList(body); + this.body = AstAdapters.py2stmtList(body); } Modified: branches/astwrite/src/org/python/antlr/ast/Exec.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - this.body = AstAdapters.to_expr(body); + this.body = AstAdapters.py2expr(body); } private exprType globals; @@ -44,7 +44,7 @@ } @ExposedSet(name = "globals") public void setGlobals(PyObject globals) { - this.globals = AstAdapters.to_expr(globals); + this.globals = AstAdapters.py2expr(globals); } private exprType locals; @@ -57,7 +57,7 @@ } @ExposedSet(name = "locals") public void setLocals(PyObject locals) { - this.locals = AstAdapters.to_expr(locals); + this.locals = AstAdapters.py2expr(locals); } Modified: branches/astwrite/src/org/python/antlr/ast/Expr.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "value") public void setValue(PyObject value) { - this.value = AstAdapters.to_expr(value); + this.value = AstAdapters.py2expr(value); } Modified: branches/astwrite/src/org/python/antlr/ast/Expression.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Expression.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Expression.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - this.body = AstAdapters.to_expr(body); + this.body = AstAdapters.py2expr(body); } Modified: branches/astwrite/src/org/python/antlr/ast/ExtSlice.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "dims") public void setDims(PyObject dims) { - this.dims = AstAdapters.to_sliceList(dims); + this.dims = AstAdapters.py2sliceList(dims); } Modified: branches/astwrite/src/org/python/antlr/ast/For.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/For.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/For.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "target") public void setTarget(PyObject target) { - this.target = AstAdapters.to_expr(target); + this.target = AstAdapters.py2expr(target); } private exprType iter; @@ -44,7 +44,7 @@ } @ExposedSet(name = "iter") public void setIter(PyObject iter) { - this.iter = AstAdapters.to_expr(iter); + this.iter = AstAdapters.py2expr(iter); } private java.util.List<stmtType> body; @@ -57,7 +57,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - this.body = AstAdapters.to_stmtList(body); + this.body = AstAdapters.py2stmtList(body); } private java.util.List<stmtType> orelse; @@ -70,7 +70,7 @@ } @ExposedSet(name = "orelse") public void setOrelse(PyObject orelse) { - this.orelse = AstAdapters.to_stmtList(orelse); + this.orelse = AstAdapters.py2stmtList(orelse); } Modified: branches/astwrite/src/org/python/antlr/ast/FunctionDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -32,7 +32,7 @@ } @ExposedSet(name = "name") public void setName(PyObject name) { - this.name = AstAdapters.to_identifier(name); + this.name = AstAdapters.py2identifier(name); } private argumentsType args; @@ -45,7 +45,7 @@ } @ExposedSet(name = "args") public void setArgs(PyObject args) { - this.args = AstAdapters.to_arguments(args); + this.args = AstAdapters.py2arguments(args); } private java.util.List<stmtType> body; @@ -58,7 +58,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - this.body = AstAdapters.to_stmtList(body); + this.body = AstAdapters.py2stmtList(body); } private java.util.List<exprType> decorator_list; @@ -71,7 +71,7 @@ } @ExposedSet(name = "decorator_list") public void setDecorator_list(PyObject decorator_list) { - this.decorator_list = AstAdapters.to_exprList(decorator_list); + this.decorator_list = AstAdapters.py2exprList(decorator_list); } Modified: branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "elt") public void setElt(PyObject elt) { - this.elt = AstAdapters.to_expr(elt); + this.elt = AstAdapters.py2expr(elt); } private java.util.List<comprehensionType> generators; @@ -44,7 +44,7 @@ } @ExposedSet(name = "generators") public void setGenerators(PyObject generators) { - this.generators = AstAdapters.to_comprehensionList(generators); + this.generators = AstAdapters.py2comprehensionList(generators); } Modified: branches/astwrite/src/org/python/antlr/ast/Global.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Global.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Global.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "names") public void setNames(PyObject names) { - this.names = AstAdapters.to_identifierList(names); + this.names = AstAdapters.py2identifierList(names); } Modified: branches/astwrite/src/org/python/antlr/ast/Gt.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Gt.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Gt.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 4; + return 5; } } Modified: branches/astwrite/src/org/python/antlr/ast/GtE.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/GtE.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/GtE.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 5; + return 6; } } Modified: branches/astwrite/src/org/python/antlr/ast/If.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/If.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/If.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "test") public void setTest(PyObject test) { - this.test = AstAdapters.to_expr(test); + this.test = AstAdapters.py2expr(test); } private java.util.List<stmtType> body; @@ -44,7 +44,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - this.body = AstAdapters.to_stmtList(body); + this.body = AstAdapters.py2stmtList(body); } private java.util.List<stmtType> orelse; @@ -57,7 +57,7 @@ } @ExposedSet(name = "orelse") public void setOrelse(PyObject orelse) { - this.orelse = AstAdapters.to_stmtList(orelse); + this.orelse = AstAdapters.py2stmtList(orelse); } Modified: branches/astwrite/src/org/python/antlr/ast/IfExp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/IfExp.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/IfExp.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "test") public void setTest(PyObject test) { - this.test = AstAdapters.to_expr(test); + this.test = AstAdapters.py2expr(test); } private exprType body; @@ -44,7 +44,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - this.body = AstAdapters.to_expr(body); + this.body = AstAdapters.py2expr(body); } private exprType orelse; @@ -57,7 +57,7 @@ } @ExposedSet(name = "orelse") public void setOrelse(PyObject orelse) { - this.orelse = AstAdapters.to_expr(orelse); + this.orelse = AstAdapters.py2expr(orelse); } Modified: branches/astwrite/src/org/python/antlr/ast/Import.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Import.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Import.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "names") public void setNames(PyObject names) { - this.names = AstAdapters.to_aliasList(names); + this.names = AstAdapters.py2aliasList(names); } Modified: branches/astwrite/src/org/python/antlr/ast/ImportFrom.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ImportFrom.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/ImportFrom.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -32,7 +32,7 @@ } @ExposedSet(name = "module") public void setModule(PyObject module) { - this.module = AstAdapters.to_identifier(module); + this.module = AstAdapters.py2identifier(module); } private java.util.List<aliasType> names; @@ -45,7 +45,7 @@ } @ExposedSet(name = "names") public void setNames(PyObject names) { - this.names = AstAdapters.to_aliasList(names); + this.names = AstAdapters.py2aliasList(names); } private Integer level; @@ -58,7 +58,7 @@ } @ExposedSet(name = "level") public void setLevel(PyObject level) { - this.level = AstAdapters.to_int(level); + this.level = AstAdapters.py2int(level); } Modified: branches/astwrite/src/org/python/antlr/ast/In.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/In.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/In.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 8; + return 9; } } Modified: branches/astwrite/src/org/python/antlr/ast/Index.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Index.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Index.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "value") public void setValue(PyObject value) { - this.value = AstAdapters.to_expr(value); + this.value = AstAdapters.py2expr(value); } Modified: branches/astwrite/src/org/python/antlr/ast/Interactive.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Interactive.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Interactive.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - this.body = AstAdapters.to_stmtList(body); + this.body = AstAdapters.py2stmtList(body); } Modified: branches/astwrite/src/org/python/antlr/ast/Invert.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Invert.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Invert.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 0; + return 1; } } Modified: branches/astwrite/src/org/python/antlr/ast/Is.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Is.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Is.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 6; + return 7; } } Modified: branches/astwrite/src/org/python/antlr/ast/IsNot.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/IsNot.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/IsNot.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 7; + return 8; } } Modified: branches/astwrite/src/org/python/antlr/ast/LShift.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/LShift.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/LShift.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 6; + return 7; } } Modified: branches/astwrite/src/org/python/antlr/ast/Lambda.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Lambda.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Lambda.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "args") public void setArgs(PyObject args) { - this.args = AstAdapters.to_arguments(args); + this.args = AstAdapters.py2arguments(args); } private exprType body; @@ -44,7 +44,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - this.body = AstAdapters.to_expr(body); + this.body = AstAdapters.py2expr(body); } Modified: branches/astwrite/src/org/python/antlr/ast/List.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/List.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/List.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "elts") public void setElts(PyObject elts) { - this.elts = AstAdapters.to_exprList(elts); + this.elts = AstAdapters.py2exprList(elts); } private expr_contextType ctx; @@ -40,11 +40,11 @@ } @ExposedGet(name = "ctx") public PyObject getCtx() { - return Py.None;//(ctx); + return AstAdapters.ctx2py(ctx); } @ExposedSet(name = "ctx") public void setCtx(PyObject ctx) { - this.ctx = AstAdapters.to_expr_context(ctx); + this.ctx = AstAdapters.py2expr_context(ctx); } Modified: branches/astwrite/src/org/python/antlr/ast/ListComp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ListComp.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/ListComp.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "elt") public void setElt(PyObject elt) { - this.elt = AstAdapters.to_expr(elt); + this.elt = AstAdapters.py2expr(elt); } private java.util.List<comprehensionType> generators; @@ -44,7 +44,7 @@ } @ExposedSet(name = "generators") public void setGenerators(PyObject generators) { - this.generators = AstAdapters.to_comprehensionList(generators); + this.generators = AstAdapters.py2comprehensionList(generators); } Modified: branches/astwrite/src/org/python/antlr/ast/Load.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Load.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Load.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 0; + return 1; } } Modified: branches/astwrite/src/org/python/antlr/ast/Lt.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Lt.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Lt.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 2; + return 3; } } Modified: branches/astwrite/src/org/python/antlr/ast/LtE.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/LtE.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/LtE.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 3; + return 4; } } Modified: branches/astwrite/src/org/python/antlr/ast/Mod.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Mod.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Mod.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 4; + return 5; } } Modified: branches/astwrite/src/org/python/antlr/ast/Module.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Module.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Module.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - this.body = AstAdapters.to_stmtList(body); + this.body = AstAdapters.py2stmtList(body); } Modified: branches/astwrite/src/org/python/antlr/ast/Mult.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Mult.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Mult.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 2; + return 3; } } Modified: branches/astwrite/src/org/python/antlr/ast/Name.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Name.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Name.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -32,7 +32,7 @@ } @ExposedSet(name = "id") public void setId(PyObject id) { - this.id = AstAdapters.to_identifier(id); + this.id = AstAdapters.py2identifier(id); } private expr_contextType ctx; @@ -41,11 +41,11 @@ } @ExposedGet(name = "ctx") public PyObject getCtx() { - return Py.None;//(ctx); + return AstAdapters.ctx2py(ctx); } @ExposedSet(name = "ctx") public void setCtx(PyObject ctx) { - this.ctx = AstAdapters.to_expr_context(ctx); + this.ctx = AstAdapters.py2expr_context(ctx); } Modified: branches/astwrite/src/org/python/antlr/ast/Not.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Not.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Not.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 1; + return 2; } } Modified: branches/astwrite/src/org/python/antlr/ast/NotEq.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/NotEq.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/NotEq.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 1; + return 2; } } Modified: branches/astwrite/src/org/python/antlr/ast/Num.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Num.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Num.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "n") public void setN(PyObject n) { - this.n = AstAdapters.to_object(n); + this.n = AstAdapters.py2object(n); } Modified: branches/astwrite/src/org/python/antlr/ast/Pow.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Pow.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Pow.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 5; + return 6; } } Modified: branches/astwrite/src/org/python/antlr/ast/Print.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Print.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Print.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "dest") public void setDest(PyObject dest) { - this.dest = AstAdapters.to_expr(dest); + this.dest = AstAdapters.py2expr(dest); } private java.util.List<exprType> values; @@ -44,7 +44,7 @@ } @ExposedSet(name = "values") public void setValues(PyObject values) { - this.values = AstAdapters.to_exprList(values); + this.values = AstAdapters.py2exprList(values); } private Boolean nl; @@ -58,7 +58,7 @@ } @ExposedSet(name = "nl") public void setNl(PyObject nl) { - this.nl = AstAdapters.to_bool(nl); + this.nl = AstAdapters.py2bool(nl); } Modified: branches/astwrite/src/org/python/antlr/ast/RShift.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/RShift.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/RShift.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 7; + return 8; } } Modified: branches/astwrite/src/org/python/antlr/ast/Raise.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Raise.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Raise.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "excepttype") public void setExcepttype(PyObject excepttype) { - this.excepttype = AstAdapters.to_expr(excepttype); + this.excepttype = AstAdapters.py2expr(excepttype); } private exprType inst; @@ -44,7 +44,7 @@ } @ExposedSet(name = "inst") public void setInst(PyObject inst) { - this.inst = AstAdapters.to_expr(inst); + this.inst = AstAdapters.py2expr(inst); } private exprType tback; @@ -57,7 +57,7 @@ } @ExposedSet(name = "tback") public void setTback(PyObject tback) { - this.tback = AstAdapters.to_expr(tback); + this.tback = AstAdapters.py2expr(tback); } Modified: branches/astwrite/src/org/python/antlr/ast/Repr.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Repr.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Repr.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "value") public void setValue(PyObject value) { - this.value = AstAdapters.to_expr(value); + this.value = AstAdapters.py2expr(value); } Modified: branches/astwrite/src/org/python/antlr/ast/Return.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Return.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Return.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "value") public void setValue(PyObject value) { - this.value = AstAdapters.to_expr(value); + this.value = AstAdapters.py2expr(value); } Modified: branches/astwrite/src/org/python/antlr/ast/Slice.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Slice.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Slice.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "lower") public void setLower(PyObject lower) { - this.lower = AstAdapters.to_expr(lower); + this.lower = AstAdapters.py2expr(lower); } private exprType upper; @@ -44,7 +44,7 @@ } @ExposedSet(name = "upper") public void setUpper(PyObject upper) { - this.upper = AstAdapters.to_expr(upper); + this.upper = AstAdapters.py2expr(upper); } private exprType step; @@ -57,7 +57,7 @@ } @ExposedSet(name = "step") public void setStep(PyObject step) { - this.step = AstAdapters.to_expr(step); + this.step = AstAdapters.py2expr(step); } Modified: branches/astwrite/src/org/python/antlr/ast/Store.java =================================================================== --- branches/astwrite/src/org/py... [truncated message content] |
From: <fwi...@us...> - 2008-12-03 04:38:08
|
Revision: 5679 http://jython.svn.sourceforge.net/jython/?rev=5679&view=rev Author: fwierzbicki Date: 2008-12-03 04:38:04 +0000 (Wed, 03 Dec 2008) Log Message: ----------- Enough to get a slightly modified Python 2.5 test_ast.py to pass. Modified Paths: -------------- branches/astwrite/Lib/test/test_ast.py branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java branches/astwrite/src/org/python/antlr/adapter/CmpopAdapter.java branches/astwrite/src/org/python/antlr/adapter/IdentifierAdapter.java branches/astwrite/src/org/python/core/AstList.java Added Paths: ----------- branches/astwrite/src/org/python/antlr/ast/FloorDiv.java branches/astwrite/src/org/python/antlr/ast/NotIn.java branches/astwrite/src/org/python/antlr/ast/Or.java branches/astwrite/src/org/python/antlr/ast/Param.java branches/astwrite/src/org/python/antlr/ast/USub.java Modified: branches/astwrite/Lib/test/test_ast.py =================================================================== --- branches/astwrite/Lib/test/test_ast.py 2008-12-02 22:23:33 UTC (rev 5678) +++ branches/astwrite/Lib/test/test_ast.py 2008-12-03 04:38:04 UTC (rev 5679) @@ -2,27 +2,12 @@ import sys,os, itertools import ast -def get_class_name(t): - result = t.__class__.__name__ - if os.name.startswith('java'): - if result in ("expr_contextType", - "boolopType", - "unaryopType", - "cmpopType", - "operatorType"): - result = t.name() - else: - result = result.split(".")[-1] - if result.endswith("Type"): - result = result[:-4] - return result - def to_tuple(t): if t is None or isinstance(t, (basestring, int, long, complex)): return t elif hasattr(t, '__iter__'): return [to_tuple(e) for e in t] - result = [get_class_name(t)] + result = [t.__class__.__name__] if hasattr(t, 'lineno') and hasattr(t, 'col_offset'): result.append((t.lineno, t.col_offset)) if not hasattr(t, '_fields') or t._fields is None: @@ -186,11 +171,11 @@ ('Module', [('While', (1, 0), ('Name', (1, 6), 'v', ('Load',)), [('Pass', (1, 8))], [])]), ('Module', [('If', (1, 0), ('Name', (1, 3), 'v', ('Load',)), [('Pass', (1, 5))], [])]), ('Module', [('Raise', (1, 0), ('Name', (1, 6), 'Exception', ('Load',)), ('Str', (1, 17), 'string'), None)]), -('Module', [('TryExcept', (1, 0), [('Pass', (2, 2))], [('excepthandler', (3, 0), ('Name', (3, 7), 'Exception', ('Load',)), None, [('Pass', (4, 2))], 3, 0)], [])]), +('Module', [('TryExcept', (1, 0), [('Pass', (2, 2))], [('ExceptHandler', (3, 0), ('Name', (3, 7), 'Exception', ('Load',)), None, [('Pass', (4, 2))])], [])]), ('Module', [('TryFinally', (1, 0), [('Pass', (2, 2))], [('Pass', (4, 2))])]), ('Module', [('Assert', (1, 0), ('Name', (1, 7), 'v', ('Load',)), None)]), -('Module', [('Import', (1, 0), [('alias', 'sys', None)])]), -('Module', [('ImportFrom', (1, 0), 'sys', [('alias', 'v', None)], 0)]), +('Module', [('Import', (1, 0), [('aliasType', 'sys', None)])]), +('Module', [('ImportFrom', (1, 0), 'sys', [('aliasType', 'v', None)], 0)]), ('Module', [('Exec', (1, 0), ('Str', (1, 5), 'v'), None, None)]), ('Module', [('Global', (1, 0), ['v'])]), ('Module', [('Expr', (1, 0), ('Num', (1, 0), 1))]), @@ -210,7 +195,7 @@ ('Expression', ('ListComp', (1, 1), ('Name', (1, 1), 'a', ('Load',)), [('comprehension', ('Name', (1, 7), 'b', ('Store',)), ('Name', (1, 12), 'c', ('Load',)), [('Name', (1, 17), 'd', ('Load',))])])), ('Expression', ('GeneratorExp', (1, 1), ('Name', (1, 1), 'a', ('Load',)), [('comprehension', ('Name', (1, 7), 'b', ('Store',)), ('Name', (1, 12), 'c', ('Load',)), [('Name', (1, 17), 'd', ('Load',))])])), ('Expression', ('Compare', (1, 0), ('Num', (1, 0), 1), [('Lt',), ('Lt',)], [('Num', (1, 4), 2), ('Num', (1, 8), 3)])), -('Expression', ('Call', (1, 0), ('Name', (1, 0), 'f', ('Load',)), [('Num', (1, 2), 1), ('Num', (1, 4), 2)], [('keyword', 'c', ('Num', (1, 8), 3))], ('Name', (1, 11), 'd', ('Load',)), ('Name', (1, 15), 'e', ('Load',)))), +('Expression', ('Call', (1, 0), ('Name', (1, 0), 'f', ('Load',)), [('Num', (1, 2), 1), ('Num', (1, 4), 2)], [('keywordType', 'c', ('Num', (1, 8), 3))], ('Name', (1, 11), 'd', ('Load',)), ('Name', (1, 15), 'e', ('Load',)))), ('Expression', ('Repr', (1, 0), ('Name', (1, 1), 'v', ('Load',)))), ('Expression', ('Num', (1, 0), 10L)), ('Expression', ('Str', (1, 0), 'string')), Modified: branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java 2008-12-02 22:23:33 UTC (rev 5678) +++ branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java 2008-12-03 04:38:04 UTC (rev 5679) @@ -142,6 +142,10 @@ return Py.None; } + public static PyObject op2py(cmpopType o) { + return cmpopAdapter.ast2py(o); + } + public static PyObject op2py(unaryopType o) { switch (o) { case Invert: Modified: branches/astwrite/src/org/python/antlr/adapter/CmpopAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/CmpopAdapter.java 2008-12-02 22:23:33 UTC (rev 5678) +++ branches/astwrite/src/org/python/antlr/adapter/CmpopAdapter.java 2008-12-03 04:38:04 UTC (rev 5679) @@ -5,6 +5,16 @@ import org.python.core.PyJavaInstance; import org.python.antlr.ast.cmpopType; +import org.python.antlr.ast.Eq; +import org.python.antlr.ast.NotEq; +import org.python.antlr.ast.Lt; +import org.python.antlr.ast.LtE; +import org.python.antlr.ast.Gt; +import org.python.antlr.ast.GtE; +import org.python.antlr.ast.Is; +import org.python.antlr.ast.IsNot; +import org.python.antlr.ast.In; +import org.python.antlr.ast.NotIn; import java.util.ArrayList; import java.util.List; @@ -21,7 +31,29 @@ } public PyObject ast2py(Object o) { - return (PyObject)o; + switch ((cmpopType)o) { + case Eq: + return new Eq(); + case NotEq: + return new NotEq(); + case Lt: + return new Lt(); + case LtE: + return new LtE(); + case Gt: + return new Gt(); + case GtE: + return new GtE(); + case Is: + return new Is(); + case IsNot: + return new IsNot(); + case In: + return new In(); + case NotIn: + return new NotIn(); + } + return Py.None; } public List iter2ast(PyObject iter) { Modified: branches/astwrite/src/org/python/antlr/adapter/IdentifierAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/IdentifierAdapter.java 2008-12-02 22:23:33 UTC (rev 5678) +++ branches/astwrite/src/org/python/antlr/adapter/IdentifierAdapter.java 2008-12-03 04:38:04 UTC (rev 5679) @@ -3,6 +3,7 @@ import org.python.core.Py; import org.python.core.PyJavaInstance; import org.python.core.PyObject; +import org.python.core.PyString; import org.python.antlr.ast.Num; @@ -16,7 +17,7 @@ } public PyObject ast2py(Object o) { - return (PyObject)o; + return new PyString(o.toString()); } public List iter2ast(PyObject iter) { Added: branches/astwrite/src/org/python/antlr/ast/FloorDiv.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/FloorDiv.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/FloorDiv.java 2008-12-03 04:38:04 UTC (rev 5679) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.FloorDiv", base = PyObject.class) +public class FloorDiv extends AST { + public static final PyType TYPE = PyType.fromClass(FloorDiv.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 12; + } +} Added: branches/astwrite/src/org/python/antlr/ast/NotIn.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/NotIn.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/NotIn.java 2008-12-03 04:38:04 UTC (rev 5679) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.NotIn", base = PyObject.class) +public class NotIn extends AST { + public static final PyType TYPE = PyType.fromClass(NotIn.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 10; + } +} Added: branches/astwrite/src/org/python/antlr/ast/Or.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Or.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/Or.java 2008-12-03 04:38:04 UTC (rev 5679) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.Or", base = PyObject.class) +public class Or extends AST { + public static final PyType TYPE = PyType.fromClass(Or.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 2; + } +} Added: branches/astwrite/src/org/python/antlr/ast/Param.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Param.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/Param.java 2008-12-03 04:38:04 UTC (rev 5679) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.Param", base = PyObject.class) +public class Param extends AST { + public static final PyType TYPE = PyType.fromClass(Param.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 6; + } +} Added: branches/astwrite/src/org/python/antlr/ast/USub.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/USub.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/USub.java 2008-12-03 04:38:04 UTC (rev 5679) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.USub", base = PyObject.class) +public class USub extends AST { + public static final PyType TYPE = PyType.fromClass(USub.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 4; + } +} Modified: branches/astwrite/src/org/python/core/AstList.java =================================================================== --- branches/astwrite/src/org/python/core/AstList.java 2008-12-02 22:23:33 UTC (rev 5678) +++ branches/astwrite/src/org/python/core/AstList.java 2008-12-03 04:38:04 UTC (rev 5679) @@ -515,7 +515,10 @@ } public PyObject pyget(int index) { - return (PyObject)data.get(index); + if (adapter == null) { + return (PyObject)data.get(index); + } + return adapter.ast2py(data.get(index)); } public PyObject pyset(int index, PyObject element) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fwi...@us...> - 2008-12-03 17:59:23
|
Revision: 5683 http://jython.svn.sourceforge.net/jython/?rev=5683&view=rev Author: fwierzbicki Date: 2008-12-03 17:59:13 +0000 (Wed, 03 Dec 2008) Log Message: ----------- Now working on Python 2.6 style test_ast again. Modified Paths: -------------- branches/astwrite/Lib/test/test_ast.py branches/astwrite/ast/asdl_antlr.py branches/astwrite/src/org/python/antlr/AST.java branches/astwrite/src/org/python/antlr/PythonTree.java branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java branches/astwrite/src/org/python/antlr/ast/Add.java branches/astwrite/src/org/python/antlr/ast/And.java branches/astwrite/src/org/python/antlr/ast/Assert.java branches/astwrite/src/org/python/antlr/ast/Assign.java branches/astwrite/src/org/python/antlr/ast/AstModule.java branches/astwrite/src/org/python/antlr/ast/Attribute.java branches/astwrite/src/org/python/antlr/ast/AugAssign.java branches/astwrite/src/org/python/antlr/ast/AugLoad.java branches/astwrite/src/org/python/antlr/ast/AugStore.java branches/astwrite/src/org/python/antlr/ast/BinOp.java branches/astwrite/src/org/python/antlr/ast/BitAnd.java branches/astwrite/src/org/python/antlr/ast/BitOr.java branches/astwrite/src/org/python/antlr/ast/BitXor.java branches/astwrite/src/org/python/antlr/ast/BoolOp.java branches/astwrite/src/org/python/antlr/ast/Break.java branches/astwrite/src/org/python/antlr/ast/Call.java branches/astwrite/src/org/python/antlr/ast/ClassDef.java branches/astwrite/src/org/python/antlr/ast/Compare.java branches/astwrite/src/org/python/antlr/ast/Continue.java branches/astwrite/src/org/python/antlr/ast/Del.java branches/astwrite/src/org/python/antlr/ast/Delete.java branches/astwrite/src/org/python/antlr/ast/Dict.java branches/astwrite/src/org/python/antlr/ast/Div.java branches/astwrite/src/org/python/antlr/ast/Ellipsis.java branches/astwrite/src/org/python/antlr/ast/Eq.java branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java branches/astwrite/src/org/python/antlr/ast/Exec.java branches/astwrite/src/org/python/antlr/ast/Expr.java branches/astwrite/src/org/python/antlr/ast/Expression.java branches/astwrite/src/org/python/antlr/ast/ExtSlice.java branches/astwrite/src/org/python/antlr/ast/FloorDiv.java branches/astwrite/src/org/python/antlr/ast/For.java branches/astwrite/src/org/python/antlr/ast/FunctionDef.java branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java branches/astwrite/src/org/python/antlr/ast/Global.java branches/astwrite/src/org/python/antlr/ast/Gt.java branches/astwrite/src/org/python/antlr/ast/GtE.java branches/astwrite/src/org/python/antlr/ast/If.java branches/astwrite/src/org/python/antlr/ast/IfExp.java branches/astwrite/src/org/python/antlr/ast/Import.java branches/astwrite/src/org/python/antlr/ast/ImportFrom.java branches/astwrite/src/org/python/antlr/ast/In.java branches/astwrite/src/org/python/antlr/ast/Index.java branches/astwrite/src/org/python/antlr/ast/Interactive.java branches/astwrite/src/org/python/antlr/ast/Invert.java branches/astwrite/src/org/python/antlr/ast/Is.java branches/astwrite/src/org/python/antlr/ast/IsNot.java branches/astwrite/src/org/python/antlr/ast/LShift.java branches/astwrite/src/org/python/antlr/ast/Lambda.java branches/astwrite/src/org/python/antlr/ast/List.java branches/astwrite/src/org/python/antlr/ast/ListComp.java branches/astwrite/src/org/python/antlr/ast/Load.java branches/astwrite/src/org/python/antlr/ast/Lt.java branches/astwrite/src/org/python/antlr/ast/LtE.java branches/astwrite/src/org/python/antlr/ast/Mod.java branches/astwrite/src/org/python/antlr/ast/Module.java branches/astwrite/src/org/python/antlr/ast/Mult.java branches/astwrite/src/org/python/antlr/ast/Name.java branches/astwrite/src/org/python/antlr/ast/Not.java branches/astwrite/src/org/python/antlr/ast/NotEq.java branches/astwrite/src/org/python/antlr/ast/NotIn.java branches/astwrite/src/org/python/antlr/ast/Num.java branches/astwrite/src/org/python/antlr/ast/Or.java branches/astwrite/src/org/python/antlr/ast/Param.java branches/astwrite/src/org/python/antlr/ast/Pass.java branches/astwrite/src/org/python/antlr/ast/Pow.java branches/astwrite/src/org/python/antlr/ast/Print.java branches/astwrite/src/org/python/antlr/ast/RShift.java branches/astwrite/src/org/python/antlr/ast/Raise.java branches/astwrite/src/org/python/antlr/ast/Repr.java branches/astwrite/src/org/python/antlr/ast/Return.java branches/astwrite/src/org/python/antlr/ast/Slice.java branches/astwrite/src/org/python/antlr/ast/Store.java branches/astwrite/src/org/python/antlr/ast/Str.java branches/astwrite/src/org/python/antlr/ast/Sub.java branches/astwrite/src/org/python/antlr/ast/Subscript.java branches/astwrite/src/org/python/antlr/ast/Suite.java branches/astwrite/src/org/python/antlr/ast/TryExcept.java branches/astwrite/src/org/python/antlr/ast/TryFinally.java branches/astwrite/src/org/python/antlr/ast/Tuple.java branches/astwrite/src/org/python/antlr/ast/UAdd.java branches/astwrite/src/org/python/antlr/ast/USub.java branches/astwrite/src/org/python/antlr/ast/UnaryOp.java branches/astwrite/src/org/python/antlr/ast/VisitorBase.java branches/astwrite/src/org/python/antlr/ast/While.java branches/astwrite/src/org/python/antlr/ast/With.java branches/astwrite/src/org/python/antlr/ast/Yield.java branches/astwrite/src/org/python/antlr/ast/aliasType.java branches/astwrite/src/org/python/antlr/ast/argumentsType.java branches/astwrite/src/org/python/antlr/ast/boolopType.java branches/astwrite/src/org/python/antlr/ast/cmpopType.java branches/astwrite/src/org/python/antlr/ast/comprehensionType.java branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java branches/astwrite/src/org/python/antlr/ast/exprType.java branches/astwrite/src/org/python/antlr/ast/expr_contextType.java branches/astwrite/src/org/python/antlr/ast/keywordType.java branches/astwrite/src/org/python/antlr/ast/modType.java branches/astwrite/src/org/python/antlr/ast/operatorType.java branches/astwrite/src/org/python/antlr/ast/sliceType.java branches/astwrite/src/org/python/antlr/ast/stmtType.java branches/astwrite/src/org/python/antlr/ast/unaryopType.java branches/astwrite/src/org/python/core/AstList.java Modified: branches/astwrite/Lib/test/test_ast.py =================================================================== --- branches/astwrite/Lib/test/test_ast.py 2008-12-03 14:43:11 UTC (rev 5682) +++ branches/astwrite/Lib/test/test_ast.py 2008-12-03 17:59:13 UTC (rev 5683) @@ -1,21 +1,22 @@ -#Taken and modified from CPython's release25-maint branch, revision 62446. -import sys,os, itertools +import sys, itertools, unittest +from test import test_support import ast def to_tuple(t): if t is None or isinstance(t, (basestring, int, long, complex)): return t - elif hasattr(t, '__iter__'): + elif hasattr(t, "__iter__"): return [to_tuple(e) for e in t] result = [t.__class__.__name__] if hasattr(t, 'lineno') and hasattr(t, 'col_offset'): result.append((t.lineno, t.col_offset)) - if not hasattr(t, '_fields') or t._fields is None: + if t._fields is None: return tuple(result) for f in t._fields: result.append(to_tuple(getattr(t, f))) return tuple(result) + # These tests are compiled through "exec" # There should be atleast one test per statement exec_tests = [ @@ -119,49 +120,179 @@ # TODO: expr_context, slice, boolop, operator, unaryop, cmpop, comprehension # excepthandler, arguments, keywords, alias -if __name__=='__main__' and sys.argv[1:] == ['-g']: - for statements, kind in ((exec_tests, "exec"), (single_tests, "single"), - (eval_tests, "eval")): - print kind+"_results = [" - for s in statements: - print repr(to_tuple(compile(s, "?", kind, 0x400)))+"," - print "]" - print "run_tests()" - raise SystemExit +class AST_Tests(unittest.TestCase): -def test_order(ast_node, parent_pos): - - if (not isinstance(ast_node, ast.AST) - or not hasattr(ast_node, '_fields') - or ast_node._fields == None): + def _assert_order(self, ast_node, parent_pos): + if not isinstance(ast_node, ast.AST) or ast_node._fields is None: return - if isinstance(ast_node, (ast.expr, ast.stmt, ast.excepthandler)): - node_pos = (ast_node.lineno, ast_node.col_offset) - assert node_pos >= parent_pos, (node_pos, parent_pos) - parent_pos = (ast_node.lineno, ast_node.col_offset) - for name in ast_node._fields: - value = getattr(ast_node, name) - if hasattr(value, '__iter__'): - for child in value: - test_order(child, parent_pos) - elif value != None: - test_order(value, parent_pos) + if isinstance(ast_node, (ast.expr, ast.stmt, ast.excepthandler)): + node_pos = (ast_node.lineno, ast_node.col_offset) + self.assert_(node_pos >= parent_pos) + parent_pos = (ast_node.lineno, ast_node.col_offset) + for name in ast_node._fields: + value = getattr(ast_node, name) + if hasattr(value, "__iter__"): + for child in value: + self._assert_order(child, parent_pos) + elif value is not None: + self._assert_order(value, parent_pos) -def run_tests(): - for input, output, kind in ((exec_tests, exec_results, "exec"), - (single_tests, single_results, "single"), - (eval_tests, eval_results, "eval")): - for i, o in itertools.izip(input, output): - ast_tree = compile(i, "?", kind, 0x400) - assert to_tuple(ast_tree) == o, "expected %s, got %s" % ( - o, to_tuple(ast_tree)) - test_order(ast_tree, (0, 0)) + def test_snippets(self): + for input, output, kind in ((exec_tests, exec_results, "exec"), + (single_tests, single_results, "single"), + (eval_tests, eval_results, "eval")): + for i, o in itertools.izip(input, output): + ast_tree = compile(i, "?", kind, ast.PyCF_ONLY_AST) + self.assertEquals(to_tuple(ast_tree), o) + self._assert_order(ast_tree, (0, 0)) -# XXX: AugStore added for Jython. Short term it is too hard to emit just "Store" as CPython does. + def test_nodeclasses(self): + x = ast.BinOp(1, 2, 3, lineno=0) + self.assertEquals(x.left.n, 1) + self.assertEquals(int(x.op), 2) + self.assertEquals(x.right.n, 3) + self.assertEquals(x.lineno, 0) + + # node raises exception when not given enough arguments + self.assertRaises(TypeError, ast.BinOp, 1, 2) + + # can set attributes through kwargs too + x = ast.BinOp(left=1, op=2, right=3, lineno=0) + self.assertEquals(x.left.n, 1) + self.assertEquals(int(x.op), 2) + self.assertEquals(x.right.n, 3) + self.assertEquals(x.lineno, 0) + + # this used to fail because Sub._fields was None + x = ast.Sub() + + def test_pickling(self): + import pickle + mods = [pickle] + try: + import cPickle + mods.append(cPickle) + except ImportError: + pass + protocols = [0, 1, 2] + for mod in mods: + for protocol in protocols: + for ast in (compile(i, "?", "exec", 0x400) for i in exec_tests): + ast2 = mod.loads(mod.dumps(ast, protocol)) + self.assertEquals(to_tuple(ast2), to_tuple(ast)) + + +class ASTHelpers_Test(unittest.TestCase): + + def test_parse(self): + a = ast.parse('foo(1 + 1)') + b = compile('foo(1 + 1)', '<unknown>', 'exec', ast.PyCF_ONLY_AST) + self.assertEqual(ast.dump(a), ast.dump(b)) + + def test_dump(self): + node = ast.parse('spam(eggs, "and cheese")') + self.assertEqual(ast.dump(node), + "Module(body=[Expr(value=Call(func=Name(id='spam', ctx=Load()), " + "args=[Name(id='eggs', ctx=Load()), Str(s='and cheese')], " + "keywords=[], starargs=None, kwargs=None))])" + ) + self.assertEqual(ast.dump(node, annotate_fields=False), + "Module([Expr(Call(Name('spam', Load()), [Name('eggs', Load()), " + "Str('and cheese')], [], None, None))])" + ) + self.assertEqual(ast.dump(node, include_attributes=True), + "Module(body=[Expr(value=Call(func=Name(id='spam', ctx=Load(), " + "lineno=1, col_offset=0), args=[Name(id='eggs', ctx=Load(), " + "lineno=1, col_offset=5), Str(s='and cheese', lineno=1, " + "col_offset=11)], keywords=[], starargs=None, kwargs=None, " + "lineno=1, col_offset=0), lineno=1, col_offset=0)])" + ) + + def test_copy_location(self): + src = ast.parse('1 + 1', mode='eval') + src.body.right = ast.copy_location(ast.Num(2), src.body.right) + self.assertEqual(ast.dump(src, include_attributes=True), + 'Expression(body=BinOp(left=Num(n=1, lineno=1, col_offset=0), ' + 'op=Add(), right=Num(n=2, lineno=1, col_offset=4), lineno=1, ' + 'col_offset=0))' + ) + + def test_fix_missing_locations(self): + src = ast.parse('write("spam")') + src.body.append(ast.Expr(ast.Call(ast.Name('spam', ast.Load()), + [ast.Str('eggs')], [], None, None))) + self.assertEqual(src, ast.fix_missing_locations(src)) + self.assertEqual(ast.dump(src, include_attributes=True), + "Module(body=[Expr(value=Call(func=Name(id='write', ctx=Load(), " + "lineno=1, col_offset=0), args=[Str(s='spam', lineno=1, " + "col_offset=6)], keywords=[], starargs=None, kwargs=None, " + "lineno=1, col_offset=0), lineno=1, col_offset=0), " + "Expr(value=Call(func=Name(id='spam', ctx=Load(), lineno=1, " + "col_offset=0), args=[Str(s='eggs', lineno=1, col_offset=0)], " + "keywords=[], starargs=None, kwargs=None, lineno=1, " + "col_offset=0), lineno=1, col_offset=0)])" + ) + + def test_increment_lineno(self): + src = ast.parse('1 + 1', mode='eval') + self.assertEqual(ast.increment_lineno(src, n=3), src) + self.assertEqual(ast.dump(src, include_attributes=True), + 'Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), ' + 'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, ' + 'col_offset=0))' + ) + + def test_iter_fields(self): + node = ast.parse('foo()', mode='eval') + d = dict(ast.iter_fields(node.body)) + self.assertEqual(d.pop('func').id, 'foo') + self.assertEqual(d, {'keywords': [], 'kwargs': None, + 'args': [], 'starargs': None}) + + def test_iter_child_nodes(self): + node = ast.parse("spam(23, 42, eggs='leek')", mode='eval') + self.assertEqual(len(list(ast.iter_child_nodes(node.body))), 4) + iterator = ast.iter_child_nodes(node.body) + self.assertEqual(next(iterator).id, 'spam') + self.assertEqual(next(iterator).n, 23) + self.assertEqual(next(iterator).n, 42) + self.assertEqual(ast.dump(next(iterator)), + "keyword(arg='eggs', value=Str(s='leek'))" + ) + + def test_get_docstring(self): + node = ast.parse('def foo():\n """line one\n line two"""') + self.assertEqual(ast.get_docstring(node.body[0]), + 'line one\nline two') + + def test_literal_eval(self): + self.assertEqual(ast.literal_eval('[1, 2, 3]'), [1, 2, 3]) + self.assertEqual(ast.literal_eval('{"foo": 42}'), {"foo": 42}) + self.assertEqual(ast.literal_eval('(True, False, None)'), (True, False, None)) + self.assertRaises(ValueError, ast.literal_eval, 'foo()') + + +def test_main(): + test_support.run_unittest(AST_Tests, ASTHelpers_Test) + +def main(): + if __name__ != '__main__': + return + if sys.argv[1:] == ['-g']: + for statements, kind in ((exec_tests, "exec"), (single_tests, "single"), + (eval_tests, "eval")): + print kind+"_results = [" + for s in statements: + print repr(to_tuple(compile(s, "?", kind, 0x400)))+"," + print "]" + print "main()" + raise SystemExit + test_main() + #### EVERYTHING BELOW IS GENERATED ##### exec_results = [ ('Module', [('FunctionDef', (1, 0), 'f', ('arguments', [], None, None, []), [('Pass', (1, 9))], [])]), -('Module', [('ClassDef', (1, 0), 'C', [], [('Pass', (1, 8))],[])]), +('Module', [('ClassDef', (1, 0), 'C', [], [('Pass', (1, 8))], [])]), ('Module', [('FunctionDef', (1, 0), 'f', ('arguments', [], None, None, []), [('Return', (1, 8), ('Num', (1, 15), 1))], [])]), ('Module', [('Delete', (1, 0), [('Name', (1, 4), 'v', ('Del',))])]), ('Module', [('Assign', (1, 0), [('Name', (1, 0), 'v', ('Store',))], ('Num', (1, 4), 1))]), @@ -206,4 +337,4 @@ ('Expression', ('Tuple', (1, 0), [('Num', (1, 0), 1), ('Num', (1, 2), 2), ('Num', (1, 4), 3)], ('Load',))), ('Expression', ('Call', (1, 0), ('Attribute', (1, 0), ('Attribute', (1, 0), ('Attribute', (1, 0), ('Name', (1, 0), 'a', ('Load',)), 'b', ('Load',)), 'c', ('Load',)), 'd', ('Load',)), [('Subscript', (1, 8), ('Attribute', (1, 8), ('Name', (1, 8), 'a', ('Load',)), 'b', ('Load',)), ('Slice', ('Num', (1, 12), 1), ('Num', (1, 14), 2), None), ('Load',))], [], None, None)), ] -run_tests() +main() Modified: branches/astwrite/ast/asdl_antlr.py =================================================================== --- branches/astwrite/ast/asdl_antlr.py 2008-12-03 14:43:11 UTC (rev 5682) +++ branches/astwrite/ast/asdl_antlr.py 2008-12-03 17:59:13 UTC (rev 5683) @@ -9,7 +9,7 @@ import asdl TABSIZE = 4 -MAX_COL = 80 +MAX_COL = 100 def reflow_lines(s, depth): """Reflow the line s indented depth tabs. @@ -58,6 +58,7 @@ if refersToPythonTree: print >> self.file, 'import org.antlr.runtime.CommonToken;' print >> self.file, 'import org.antlr.runtime.Token;' + print >> self.file, 'import org.python.antlr.AST;' print >> self.file, 'import org.python.antlr.PythonTree;' print >> self.file, 'import org.python.antlr.adapter.AstAdapters;' print >> self.file, 'import org.python.core.AstList;' @@ -154,6 +155,7 @@ self.open("%sType" % name, refersToPythonTree=0) self.emit('import org.python.antlr.AST;', depth) self.emit('', 0) + self.emit("public enum %(name)sType {" % locals(), depth) self.emit("UNDEFINED,", depth + 1) for i in range(len(sum.types) - 1): @@ -161,11 +163,6 @@ self.emit("%s," % type.name, depth + 1) self.emit("%s;" % sum.types[len(sum.types) - 1].name, depth + 1) - #XXX - #self.attributes(sum, depth, True); - - self.emit("public %sType __call__() { return this; }" % name, depth + 1) - self.emit("}", depth) self.close() @@ -174,63 +171,91 @@ type = sum.types[i] self.open("%s" % type.name, refersToPythonTree=0) self.emit('import org.python.antlr.AST;', depth) + self.emit('import org.python.antlr.PythonTree;', depth) + self.emit('import org.python.core.Py;', depth) self.emit('import org.python.core.PyObject;', depth) + self.emit('import org.python.core.PyString;', depth) self.emit('import org.python.core.PyType;', depth) + self.emit('import org.python.expose.ExposedGet;', depth) + self.emit('import org.python.expose.ExposedMethod;', depth) + self.emit('import org.python.expose.ExposedNew;', depth) + self.emit('import org.python.expose.ExposedSet;', depth) self.emit('import org.python.expose.ExposedType;', depth) self.emit('', 0) - self.emit('@ExposedType(name = "_ast.%s", base = PyObject.class)' % type.name, depth) - self.emit("public class %s extends AST {" % type.name, depth) + + self.emit('@ExposedType(name = "_ast.%s", base = AST.class)' % type.name, depth) + self.emit("public class %s extends PythonTree {" % type.name, depth) self.emit('public static final PyType TYPE = PyType.fromClass(%s.class);' % type.name, depth + 1) + self.emit('', 0) - self.emit('public int asIndex() {', depth + 1) - self.emit('return asIndex(null);', depth + 2) + self.emit("public %s() {" % (type.name), depth) + self.emit("}", depth) + self.emit('', 0) + + self.emit("public %s(PyType subType) {" % (type.name), depth) + self.emit("super(subType);", depth + 1) + self.emit("}", depth) + self.emit('', 0) + + self.emit("@ExposedNew", depth) + self.emit("@ExposedMethod", depth) + self.emit("public void %s___init__(PyObject[] args, String[] keywords) {}" % type.name, depth) + self.emit('', 0) + + self.attributes(type, depth); + + self.emit('@ExposedMethod', depth + 1) + self.emit('public PyObject __int__() {', depth + 1) + self.emit("return %s___int__();" % type.name, depth + 2) self.emit("}", depth + 1) + self.emit('', 0) - self.emit('public int asIndex(PyObject error) {', depth + 1) - self.emit('return %s;' % str(i + 1), depth + 2) + self.emit("final PyObject %s___int__() {" % type.name, depth + 1) + self.emit('return Py.newInteger(%s);' % str(i + 1), depth + 2) self.emit("}", depth + 1) + self.emit('', 0) self.emit("}", depth) self.close() - def attributes(self, obj, depth, always_emit=False): + def attributes(self, obj, depth): field_list = [] if hasattr(obj, "fields"): for f in obj.fields: - field_list.append('"%s"' % f.name) + field_list.append('new PyString("%s")' % f.name) if len(field_list) > 0: - self.emit("private final static String[] fields = new String[] {%s};" % - ", ".join(field_list), depth+1) - self.emit('@ExposedGet(name = "_fields")', depth) - self.emit("public String[] get_fields() { return fields; }", depth+1) + self.emit("private final static PyString[] fields =", depth + 1) + self.emit("new PyString[] {%s};" % ", ".join(field_list), depth+1) + self.emit('@ExposedGet(name = "_fields")', depth + 1) + self.emit("public PyString[] get_fields() { return fields; }", depth+1) self.emit("", 0) - elif always_emit: - self.emit("private final static String[] fields = new String[0];", depth+1) - self.emit('@ExposedGet(name = "_fields")', depth) - self.emit("public String[] get_fields() { return fields; }", depth+1) + else: + self.emit("private final static PyString[] fields = new PyString[0];", depth+1) + self.emit('@ExposedGet(name = "_fields")', depth + 1) + self.emit("public PyString[] get_fields() { return fields; }", depth+1) self.emit("", 0) att_list = [] if hasattr(obj, "attributes"): for a in obj.attributes: - att_list.append('"%s"' % a.name) + att_list.append('new PyString("%s")' % a.name) if len(att_list) > 0: - self.emit("private final static String[] attributes = new String[] {%s};" % - ", ".join(att_list), depth+1) - self.emit('@ExposedGet(name = "_attributes")', depth) - self.emit("public String[] get_attributes() { return attributes; }", depth+1) + self.emit("private final static PyString[] attributes =", depth + 1) + self.emit("new PyString[] {%s};" % ", ".join(att_list), depth + 1) + self.emit('@ExposedGet(name = "_attributes")', depth + 1) + self.emit("public PyString[] get_attributes() { return attributes; }", depth + 1) self.emit("", 0) - elif always_emit: - self.emit("private final static String[] attributes = new String[0];", depth+1) - self.emit('@ExposedGet(name = "_attributes")', depth) - self.emit("public String[] get_attributes() { return attributes; }", depth+1) + else: + self.emit("private final static PyString[] attributes = new PyString[0];", depth+1) + self.emit('@ExposedGet(name = "_attributes")', depth + 1) + self.emit("public PyString[] get_attributes() { return attributes; }", depth+1) self.emit("", 0) def sum_with_constructor(self, sum, name, depth): self.open("%sType" % name) - self.emit('@ExposedType(name = "_ast.%s", base = PyObject.class)' % name, depth) + self.emit('@ExposedType(name = "_ast.%s", base = AST.class)' % name, depth) self.emit("public abstract class %(name)sType extends PythonTree {" % locals(), depth) self.emit("", 0) @@ -269,7 +294,7 @@ def visitProduct(self, product, name, depth): self.open("%sType" % name, useDataOutput=1) - self.emit('@ExposedType(name = "_ast.%s", base = PyObject.class)' % name, depth) + self.emit('@ExposedType(name = "_ast.%s", base = AST.class)' % name, depth) self.emit("public class %(name)sType extends PythonTree {" % locals(), depth) self.emit("public static final PyType TYPE = PyType.fromClass(%sType.class);" % name, depth + 1); for f in product.fields: @@ -294,7 +319,7 @@ s = "implements %s " % ", ".join(ifaces) else: s = "" - self.emit('@ExposedType(name = "_ast.%s", base = PyObject.class)' % cons.name, depth); + self.emit('@ExposedType(name = "_ast.%s", base = AST.class)' % cons.name, depth); self.emit("public class %s extends %sType %s{" % (cons.name, name, s), depth) self.emit("public static final PyType TYPE = PyType.fromClass(%s.class);" % cons.name, depth); @@ -315,7 +340,7 @@ if str(name) in ('stmt', 'expr', 'excepthandler'): # The lineno property self.emit("private int lineno = -1;", depth + 1) - self.emit('@ExposedGet(name = "lineno")', depth) + self.emit('@ExposedGet(name = "lineno")', depth + 1) self.emit("public int getLineno() {", depth + 1) self.emit("if (lineno != -1) {", depth + 2); self.emit("return lineno;", depth + 3); @@ -323,7 +348,7 @@ self.emit('return getLine();', depth + 2) self.emit("}", depth + 1) self.emit("", 0) - self.emit('@ExposedSet(name = "lineno")', depth) + self.emit('@ExposedSet(name = "lineno")', depth + 1) self.emit("public void setLineno(int num) {", depth + 1) self.emit("lineno = num;", depth + 2); self.emit("}", depth + 1) @@ -331,7 +356,7 @@ # The col_offset property self.emit("private int col_offset = -1;", depth + 1) - self.emit('@ExposedGet(name = "col_offset")', depth) + self.emit('@ExposedGet(name = "col_offset")', depth + 1) self.emit("public int getCol_offset() {", depth + 1) self.emit("if (col_offset != -1) {", depth + 2); self.emit("return col_offset;", depth + 3); @@ -339,7 +364,7 @@ self.emit('return getCharPositionInLine();', depth + 2) self.emit("}", depth + 1) self.emit("", 0) - self.emit('@ExposedSet(name = "col_offset")', depth) + self.emit('@ExposedSet(name = "col_offset")', depth + 1) self.emit("public void setCol_offset(int num) {", depth + 1) self.emit("col_offset = num;", depth + 2); self.emit("}", depth + 1) @@ -443,7 +468,7 @@ self.emit("@ExposedNew", depth) self.emit("@ExposedMethod", depth) - self.emit("public void Module___init__(PyObject[] args, String[] keywords) {}", depth) + self.emit("public void %s___init__(PyObject[] args, String[] keywords) {}" % ctorname, depth) fpargs = ", ".join(["PyObject %s" % f.name for f in fields]) self.emit("public %s(%s) {" % (ctorname, fpargs), depth) @@ -503,7 +528,7 @@ elif str(field.type) == 'int': self.emit("return Py.newInteger(%s);" % field.name, depth+1) elif field.typedef.simple: - self.emit("return AstAdapters.%s2py(%s);" % (field.name, field.name), depth+1) + self.emit("return AstAdapters.%s2py(%s);" % (str(field.type), field.name), depth+1) else: self.emit("return %s;" % field.name, depth+1) #self.emit("return Py.None;", depth+1) Modified: branches/astwrite/src/org/python/antlr/AST.java =================================================================== --- branches/astwrite/src/org/python/antlr/AST.java 2008-12-03 14:43:11 UTC (rev 5682) +++ branches/astwrite/src/org/python/antlr/AST.java 2008-12-03 17:59:13 UTC (rev 5683) @@ -5,8 +5,14 @@ import org.python.expose.ExposedType; @ExposedType(name = "_ast.AST", base = PyObject.class) -public abstract class AST extends PyObject { +public class AST extends PyObject { public static final PyType TYPE = PyType.fromClass(AST.class); - public static String[] emptyStringArray = new String[0]; + + public AST() { + } + public AST(PyType objtype) { + super(objtype); + } + } Modified: branches/astwrite/src/org/python/antlr/PythonTree.java =================================================================== --- branches/astwrite/src/org/python/antlr/PythonTree.java 2008-12-03 14:43:11 UTC (rev 5682) +++ branches/astwrite/src/org/python/antlr/PythonTree.java 2008-12-03 17:59:13 UTC (rev 5683) @@ -250,14 +250,6 @@ throw new RuntimeException("Cannot traverse node: " + this); } - public String[] get_fields() { - return emptyStringArray; - } - - public String[] get_attributes() { - return emptyStringArray; - } - //Copied from org.antlr.runtime.tree.BaseTree protected List children; Modified: branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java 2008-12-03 14:43:11 UTC (rev 5682) +++ branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java 2008-12-03 17:59:13 UTC (rev 5683) @@ -97,12 +97,19 @@ public static operatorType py2operator(Object o) { if (o == null || o instanceof operatorType) { return (operatorType)o; + } else if (o instanceof PyObject) { + switch (((PyObject)o).asInt()) { + case 1: + return operatorType.Add; + case 2: + return operatorType.Sub; + } } //FIXME: investigate the right exception throw Py.TypeError("Can't convert " + o.getClass().getName() + " to operator node"); } - public static PyObject op2py(operatorType o) { + public static PyObject operator2py(operatorType o) { switch (o) { case Add: return new Add(); @@ -132,7 +139,7 @@ return Py.None; } - public static PyObject op2py(boolopType o) { + public static PyObject boolop2py(boolopType o) { switch (o) { case And: return new And(); @@ -142,11 +149,11 @@ return Py.None; } - public static PyObject op2py(cmpopType o) { + public static PyObject cmpop2py(cmpopType o) { return cmpopAdapter.ast2py(o); } - public static PyObject op2py(unaryopType o) { + public static PyObject unaryop2py(unaryopType o) { switch (o) { case Invert: return new Invert(); @@ -161,7 +168,7 @@ } - public static PyObject ctx2py(expr_contextType o) { + public static PyObject expr_context2py(expr_contextType o) { switch (o) { case Load: return new Load(); Modified: branches/astwrite/src/org/python/antlr/ast/Add.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Add.java 2008-12-03 14:43:11 UTC (rev 5682) +++ branches/astwrite/src/org/python/antlr/ast/Add.java 2008-12-03 17:59:13 UTC (rev 5683) @@ -2,17 +2,47 @@ package org.python.antlr.ast; import org.python.antlr.AST; +import org.python.antlr.PythonTree; +import org.python.core.Py; import org.python.core.PyObject; +import org.python.core.PyString; import org.python.core.PyType; +import org.python.expose.ExposedGet; +import org.python.expose.ExposedMethod; +import org.python.expose.ExposedNew; +import org.python.expose.ExposedSet; import org.python.expose.ExposedType; -@ExposedType(name = "_ast.Add", base = PyObject.class) -public class Add extends AST { +@ExposedType(name = "_ast.Add", base = AST.class) +public class Add extends PythonTree { public static final PyType TYPE = PyType.fromClass(Add.class); - public int asIndex() { - return asIndex(null); + +public Add() { +} + +public Add(PyType subType) { + super(subType); +} + +@ExposedNew +@ExposedMethod +public void Add___init__(PyObject[] args, String[] keywords) {} + + private final static PyString[] fields = new PyString[0]; + @ExposedGet(name = "_fields") + public PyString[] get_fields() { return fields; } + + private final static PyString[] attributes = new PyString[0]; + @ExposedGet(name = "_attributes") + public PyString[] get_attributes() { return attributes; } + + @ExposedMethod + public PyObject __int__() { + return Add___int__(); } - public int asIndex(PyObject error) { - return 1; + + final PyObject Add___int__() { + return Py.newInteger(1); } + } Modified: branches/astwrite/src/org/python/antlr/ast/And.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/And.java 2008-12-03 14:43:11 UTC (rev 5682) +++ branches/astwrite/src/org/python/antlr/ast/And.java 2008-12-03 17:59:13 UTC (rev 5683) @@ -2,17 +2,47 @@ package org.python.antlr.ast; import org.python.antlr.AST; +import org.python.antlr.PythonTree; +import org.python.core.Py; import org.python.core.PyObject; +import org.python.core.PyString; import org.python.core.PyType; +import org.python.expose.ExposedGet; +import org.python.expose.ExposedMethod; +import org.python.expose.ExposedNew; +import org.python.expose.ExposedSet; import org.python.expose.ExposedType; -@ExposedType(name = "_ast.And", base = PyObject.class) -public class And extends AST { +@ExposedType(name = "_ast.And", base = AST.class) +public class And extends PythonTree { public static final PyType TYPE = PyType.fromClass(And.class); - public int asIndex() { - return asIndex(null); + +public And() { +} + +public And(PyType subType) { + super(subType); +} + +@ExposedNew +@ExposedMethod +public void And___init__(PyObject[] args, String[] keywords) {} + + private final static PyString[] fields = new PyString[0]; + @ExposedGet(name = "_fields") + public PyString[] get_fields() { return fields; } + + private final static PyString[] attributes = new PyString[0]; + @ExposedGet(name = "_attributes") + public PyString[] get_attributes() { return attributes; } + + @ExposedMethod + public PyObject __int__() { + return And___int__(); } - public int asIndex(PyObject error) { - return 1; + + final PyObject And___int__() { + return Py.newInteger(1); } + } Modified: branches/astwrite/src/org/python/antlr/ast/Assert.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-12-03 14:43:11 UTC (rev 5682) +++ branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-12-03 17:59:13 UTC (rev 5683) @@ -2,6 +2,7 @@ package org.python.antlr.ast; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; +import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; import org.python.core.AstList; @@ -18,7 +19,7 @@ import java.io.IOException; import java.util.ArrayList; -@ExposedType(name = "_ast.Assert", base = PyObject.class) +@ExposedType(name = "_ast.Assert", base = AST.class) public class Assert extends stmtType { public static final PyType TYPE = PyType.fromClass(Assert.class); private exprType test; @@ -48,10 +49,15 @@ } - private final static String[] fields = new String[] {"test", "msg"}; -@ExposedGet(name = "_fields") - public String[] get_fields() { return fields; } + private final static PyString[] fields = + new PyString[] {new PyString("test"), new PyString("msg")}; + @ExposedGet(name = "_fields") + public PyString[] get_fields() { return fields; } + private final static PyString[] attributes = new PyString[0]; + @ExposedGet(name = "_attributes") + public PyString[] get_attributes() { return attributes; } + public Assert() { this(TYPE); } @@ -60,7 +66,7 @@ } @ExposedNew @ExposedMethod - public void Module___init__(PyObject[] args, String[] keywords) {} + public void Assert___init__(PyObject[] args, String[] keywords) {} public Assert(PyObject test, PyObject msg) { setTest(test); setMsg(msg); @@ -119,7 +125,7 @@ } private int lineno = -1; -@ExposedGet(name = "lineno") + @ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -127,13 +133,13 @@ return getLine(); } -@ExposedSet(name = "lineno") + @ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; -@ExposedGet(name = "col_offset") + @ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -141,7 +147,7 @@ return getCharPositionInLine(); } -@ExposedSet(name = "col_offset") + @ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/Assign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-12-03 14:43:11 UTC (rev 5682) +++ branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-12-03 17:59:13 UTC (rev 5683) @@ -2,6 +2,7 @@ package org.python.antlr.ast; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; +import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; import org.python.core.AstList; @@ -18,7 +19,7 @@ import java.io.IOException; import java.util.ArrayList; -@ExposedType(name = "_ast.Assign", base = PyObject.class) +@ExposedType(name = "_ast.Assign", base = AST.class) public class Assign extends stmtType { public static final PyType TYPE = PyType.fromClass(Assign.class); private java.util.List<exprType> targets; @@ -48,10 +49,15 @@ } - private final static String[] fields = new String[] {"targets", "value"}; -@ExposedGet(name = "_fields") - public String[] get_fields() { return fields; } + private final static PyString[] fields = + new PyString[] {new PyString("targets"), new PyString("value")}; + @ExposedGet(name = "_fields") + public PyString[] get_fields() { return fields; } + private final static PyString[] attributes = new PyString[0]; + @ExposedGet(name = "_attributes") + public PyString[] get_attributes() { return attributes; } + public Assign() { this(TYPE); } @@ -60,14 +66,13 @@ } @ExposedNew @ExposedMethod - public void Module___init__(PyObject[] args, String[] keywords) {} + public void Assign___init__(PyObject[] args, String[] keywords) {} public Assign(PyObject targets, PyObject value) { setTargets(targets); setValue(value); } - public Assign(Token token, java.util.List<exprType> targets, exprType - value) { + public Assign(Token token, java.util.List<exprType> targets, exprType value) { super(token); this.targets = targets; if (targets == null) { @@ -80,8 +85,7 @@ addChild(value); } - public Assign(Integer ttype, Token token, java.util.List<exprType> targets, - exprType value) { + public Assign(Integer ttype, Token token, java.util.List<exprType> targets, exprType value) { super(ttype, token); this.targets = targets; if (targets == null) { @@ -94,8 +98,7 @@ addChild(value); } - public Assign(PythonTree tree, java.util.List<exprType> targets, exprType - value) { + public Assign(PythonTree tree, java.util.List<exprType> targets, exprType value) { super(tree); this.targets = targets; if (targets == null) { @@ -141,7 +144,7 @@ } private int lineno = -1; -@ExposedGet(name = "lineno") + @ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -149,13 +152,13 @@ return getLine(); } -@ExposedSet(name = "lineno") + @ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; -@ExposedGet(name = "col_offset") + @ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -163,7 +166,7 @@ return getCharPositionInLine(); } -@ExposedSet(name = "col_offset") + @ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/AstModule.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AstModule.java 2008-12-03 14:43:11 UTC (rev 5682) +++ branches/astwrite/src/org/python/antlr/ast/AstModule.java 2008-12-03 17:59:13 UTC (rev 5683) @@ -90,48 +90,48 @@ dict.__setitem__("stmt", stmtType.TYPE); dict.__setitem__("operator", imp.importName("org.python.antlr.ast.operatorType", false)); - dict.__setitem__("Add", imp.importName("org.python.antlr.ast.operatorType.Add", false)); - dict.__setitem__("Sub", imp.importName("org.python.antlr.ast.operatorType.Sub", false)); - dict.__setitem__("Mult", imp.importName("org.python.antlr.ast.operatorType.Mult", false)); - dict.__setitem__("Div", imp.importName("org.python.antlr.ast.operatorType.Div", false)); - dict.__setitem__("FloorDiv", imp.importName("org.python.antlr.ast.operatorType.FloorDiv", false)); - dict.__setitem__("Mod", imp.importName("org.python.antlr.ast.operatorType.Mod", false)); - dict.__setitem__("LShift", imp.importName("org.python.antlr.ast.operatorType.LShift", false)); - dict.__setitem__("RShift", imp.importName("org.python.antlr.ast.operatorType.RShift", false)); - dict.__setitem__("BitOr", imp.importName("org.python.antlr.ast.operatorType.BitOr", false)); - dict.__setitem__("BitAnd", imp.importName("org.python.antlr.ast.operatorType.BitAnd", false)); - dict.__setitem__("BitXor", imp.importName("org.python.antlr.ast.operatorType.BitXor", false)); - dict.__setitem__("Pow", imp.importName("org.python.antlr.ast.operatorType.Pow", false)); + dict.__setitem__("Add", Add.TYPE); + dict.__setitem__("Sub", Sub.TYPE); + dict.__setitem__("Mult", Mult.TYPE); + dict.__setitem__("Div", Div.TYPE); + dict.__setitem__("FloorDiv", FloorDiv.TYPE); + dict.__setitem__("Mod", Mod.TYPE); + dict.__setitem__("LShift", LShift.TYPE); + dict.__setitem__("RShift", RShift.TYPE); + dict.__setitem__("BitOr", BitOr.TYPE); + dict.__setitem__("BitAnd", BitAnd.TYPE); + dict.__setitem__("BitXor", BitXor.TYPE); + dict.__setitem__("Pow", Pow.TYPE); dict.__setitem__("boolop", imp.importName("org.python.antlr.ast.boolopType", false)); - dict.__setitem__("And", imp.importName("org.python.antlr.ast.boolopType.And", false)); - dict.__setitem__("Or", imp.importName("org.python.antlr.ast.boolopType.Or", false)); + dict.__setitem__("And", And.TYPE); + dict.__setitem__("Or", Or.TYPE); dict.__setitem__("cmpop", imp.importName("org.python.antlr.ast.cmpopType", false)); - dict.__setitem__("Eq", imp.importName("org.python.antlr.ast.cmpopType.Eq", false)); - dict.__setitem__("Gt", imp.importName("org.python.antlr.ast.cmpopType.Gt", false)); - dict.__setitem__("GtE", imp.importName("org.python.antlr.ast.cmpopType.GtE", false)); - dict.__setitem__("In", imp.importName("org.python.antlr.ast.cmpopType.In", false)); - dict.__setitem__("Is", imp.importName("org.python.antlr.ast.cmpopType.Is", false)); - dict.__setitem__("IsNot", imp.importName("org.python.antlr.ast.cmpopType.IsNot", false)); - dict.__setitem__("Lt", imp.importName("org.python.antlr.ast.cmpopType.Lt", false)); - dict.__setitem__("LtE", imp.importName("org.python.antlr.ast.cmpopType.LtE", false)); - dict.__setitem__("NotEq", imp.importName("org.python.antlr.ast.cmpopType.NotEq", false)); - dict.__setitem__("NotIn", imp.importName("org.python.antlr.ast.cmpopType.NotIn", false)); + dict.__setitem__("Eq", Eq.TYPE); + dict.__setitem__("Gt", Gt.TYPE); + dict.__setitem__("GtE", GtE.TYPE); + dict.__setitem__("In", In.TYPE); + dict.__setitem__("Is", Is.TYPE); + dict.__setitem__("IsNot", IsNot.TYPE); + dict.__setitem__("Lt", Lt.TYPE); + dict.__setitem__("LtE", LtE.TYPE); + dict.__setitem__("NotEq", NotEq.TYPE); + dict.__setitem__("NotIn", NotIn.TYPE); dict.__setitem__("expr_context", imp.importName("org.python.antlr.ast.expr_contextType", false)); - dict.__setitem__("Load", imp.importName("org.python.antlr.ast.expr_contextType.Load", false)); - dict.__setitem__("Store", imp.importName("org.python.antlr.ast.expr_contextType.Store", false)); - dict.__setitem__("Del", imp.importName("org.python.antlr.ast.expr_contextType.Del", false)); - dict.__setitem__("AugLoad", imp.importName("org.python.antlr.ast.expr_contextType.AugLoad", false)); - dict.__setitem__("AugStore", imp.importName("org.python.antlr.ast.expr_contextType.AugStore", false)); - dict.__setitem__("Param", imp.importName("org.python.antlr.ast.expr_contextType.Param", false)); + dict.__setitem__("Load", Load.TYPE); + dict.__setitem__("Store", Store.TYPE); + dict.__setitem__("Del", Del.TYPE); + dict.__setitem__("AugLoad", AugLoad.TYPE); + dict.__setitem__("AugStore", AugStore.TYPE); + dict.__setitem__("Param", Param.TYPE); dict.__setitem__("unaryop", imp.importName("org.python.antlr.ast.unaryopType", false)); - dict.__setitem__("Invert", imp.importName("org.python.antlr.ast.unaryopType.Invert", false)); - dict.__setitem__("Not", imp.importName("org.python.antlr.ast.unaryopType.Not", false)); - dict.__setitem__("UAdd", imp.importName("org.python.antlr.ast.unaryopType.UAdd", false)); - dict.__setitem__("USub", imp.importName("org.python.antlr.ast.unaryopType.USub", false)); + dict.__setitem__("Invert", Invert.TYPE); + dict.__setitem__("Not", Not.TYPE); + dict.__setitem__("UAdd", UAdd.TYPE); + dict.__setitem__("USub", USub.TYPE); dict.__setitem__("classDictInit", null); } Modified: branches/astwrite/src/org/python/antlr/ast/Attribute.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-12-03 14:43:11 UTC (rev 5682) +++ branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-12-03 17:59:13 UTC (rev 5683) @@ -2,6 +2,7 @@ package org.python.antlr.ast; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; +import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; import org.python.core.AstList; @@ -18,7 +19,7 @@ import java.io.IOException; import java.util.ArrayList; -@ExposedType(name = "_ast.Attribute", base = PyObject.class) +@ExposedType(name = "_ast.Attribute", base = AST.class) public class Attribute extends exprType implements Context { public static final PyType TYPE = PyType.fromClass(Attribute.class); private exprType value; @@ -54,7 +55,7 @@ } @ExposedGet(name = "ctx") public PyObject getCtx() { - return AstAdapters.ctx2py(ctx); + return AstAdapters.expr_context2py(ctx); } @ExposedSet(name = "ctx") public void setCtx(PyObject ctx) { @@ -62,11 +63,15 @@ } - private final static String[] fields = new String[] {"value", "attr", - "ctx"}; -@ExposedGet(name = "_fields") - public String[] get_fields() { return fields; } + private final static PyString[] fields = + new PyString[] {new PyString("value"), new PyString("attr"), new PyString("ctx")}; + @ExposedGet(name = "_fields") + public PyString[] get_fields() { return fields; } + private final static PyString[] attributes = new PyString[0]; + @ExposedGet(name = "_attributes") + public PyString[] get_attributes() { return attributes; } + public Attribute() { this(TYPE); } @@ -75,15 +80,14 @@ } @ExposedNew @ExposedMethod - public void Module___init__(PyObject[] args, String[] keywords) {} + public void Attribute___init__(PyObject[] args, String[] keywords) {} public Attribute(PyObject value, PyObject attr, PyObject ctx) { setValue(value); setAttr(attr); setCtx(ctx); } - public Attribute(Token token, exprType value, String attr, expr_contextType - ctx) { + public Attribute(Token token, exprType value, String attr, expr_contextType ctx) { super(token); this.value = value; addChild(value); @@ -91,8 +95,8 @@ this.ctx = ctx; } - public Attribute(Integer ttype, Token token, exprType value, String attr, - expr_contextType ctx) { + public Attribute(Integer ttype, Token token, exprType value, String attr, expr_contextType ctx) + { super(ttype, token); this.value = value; addChild(value); @@ -100,8 +104,7 @@ this.ctx = ctx; } - public Attribute(PythonTree tree, exprType value, String attr, - expr_contextType ctx) { + public Attribute(PythonTree tree, exprType value, String attr, expr_contextType ctx) { super(tree); this.value = value; addChild(value); @@ -143,7 +146,7 @@ } private int lineno = -1; -@ExposedGet(name = "lineno") + @ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -151,13 +154,13 @@ return getLine(); } -@ExposedSet(name = "lineno") + @ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; -@ExposedGet(name = "col_offset") + @ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -165,7 +168,7 @@ return getCharPositionInLine(); } -@ExposedSet(name = "col_offset") + @ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/AugAssign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-12-03 14:43:11 UTC (rev 5682) +++ branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-12-03 17:59:13 UTC (rev 5683) @@ -2,6 +2,7 @@ package org.python.antlr.ast; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; +import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; import org.python.core.AstList; @@ -18,7 +19,7 @@ import java.io.IOException; import java.util.ArrayList; -@ExposedType(name = "_ast.AugAssign", base = PyObject.class) +@ExposedType(name = "_ast.AugAssign", base = AST.class) public class AugAssign extends stmtType { public static final PyType TYPE = PyType.fromClass(AugAssign.class); private exprType target; @@ -40,7 +41,7 @@ } @ExposedGet(name = "op") public PyObject getOp() { - return AstAdapters.op2py(op); + return AstAdapters.operator2py(op); } @ExposedSet(name = "op") public void setOp(PyObject op) { @@ -61,11 +62,15 @@ } - private final static String[] fields = new String[] {"target", "op", - "value"}; -@ExposedGet(name = "_fields") - public String[] get_fields() { return fields; } + private final static PyString[] fields = + new PyString[] {new PyString("target"), new PyString("op"), new PyString("value")}; + @ExposedGet(name = "_fields") + public PyString[] get_fields() { return fields; } + private final static PyString[] attributes = new PyString[0]; + @ExposedGet(name = "_attributes") + public PyString[] get_attributes() { return attributes; } + public AugAssign() { this(TYPE); } @@ -74,15 +79,14 @@ } @ExposedNew @ExposedMethod - public void Module___init__(PyObject[] args, String[] keywords) {} + public void AugAssign___init__(PyObject[] args, String[] keywords) {} public AugAssign(PyObject target, PyObject op, PyObject value) { setTarget(target); setOp(op); setValue(value); } - public AugAssign(Token token, exprType target, operatorType op, exprType - value) { + public AugAssign(Token token, exprType target, operatorType op, exprType value) { super(token); this.target = target; addChild(target); @@ -91,8 +95,7 @@ addChild(value); } - public AugAssign(Integer ttype, Token token, exprType target, operatorType - op, exprType value) { + public AugAssign(Integer ttype, Token token, exprType target, operatorType op, exprType value) { super(ttype, token); this.target = target; addChild(target); @@ -101,8 +104,7 @@ addChild(value); } - public AugAssign(PythonTree tree, exprType target, operatorType op, - exprType value) { + public AugAssign(PythonTree tree, exprType target, operatorType op, exprType value) { super(tree); this.target = target; addChild(target); @@ -143,7 +145,7 @@ } private int lineno = -1; -@ExposedGet(name = "lineno") + @ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -151,13 +153,13 @@ return getLine(); } -@ExposedSet(name = "lineno") + @ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; -@ExposedGet(name = "col_offset") + @ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -165,7 +167,7 @@ return getCharPositionInLine(); } -@ExposedSet(name = "col_offset") + @ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/AugLoad.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugLoad.java 2008-12-03 14:43:11 UTC (rev 5682) +++ branches/astwrite/src/org/python/antlr/ast/AugLoad.java 2008-12-03 17:59:13 UTC (rev 5683) @@ -2,17 +2,47 @@ package org.python.antlr.ast; import org.python.antlr.AST; +import org.python.antlr.PythonTree; +import org.python.core.Py; import org.python.core.PyObject; +import org.python.core.PyString; import org.python.core.PyType; +import org.python.expose.ExposedGet; +import org.python.expose.ExposedMethod; +import org.python.expose.ExposedNew; +import org.python.expose.ExposedSet; import org.python.expose.ExposedType; -@ExposedType(name = "_ast.AugLoad", base = PyObject.class) -public class AugLoad extends AST { +@ExposedType(name = "_ast.AugLoad", base = AST.class) +public class AugLoad extends PythonTree { public static final PyType TYPE = PyType.fromClass(AugLoad.class); - public int asIndex() { - return asIndex(null); + +public AugLoad() { +} + +public AugLoad(PyType subType) { + super(subType); +} + +@ExposedNew +@ExposedMethod +public void AugLoad___init__(PyObject[] args, String[] keywords) {} + + private final static PyString[] fields = new PyString[0]; + @ExposedGet(name = "_fields") + public PyString[] get_fields() { return fields; } + + private final static PyString[] attributes = new PyString[0]; + @ExposedGet(name = "_attributes") + public PyString[] get_attributes() { return attributes; } + + @ExposedMethod + public PyObject __int__() { + return AugLoad___int__(); } - public int asIndex(PyObject error) { - return 4; + + final PyObject AugLoad___int__() { + return Py.newInteger(4); } + } Modified: branches/astwrite/src/org/python/antlr/ast/AugStore.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugStore.java 2008-12-03 14:43:11 UTC (rev 5682) +++ branches/astwrite/src/org/python/antlr/ast/AugStore.java 2008-12-03 17:59:13 UTC (rev 5683) @@ -2,17 +2,47 @@ package org.python.antlr.ast; import org.python.antlr.AST; +import org.python.antlr.PythonTree; +import org.python.core.Py; import org.python.core.PyObject; +import org.python.core.PyString; import org.python.core.PyType; +import org.python.expose.ExposedGet; +import org.python.expose.ExposedMethod; +import org.python.expose.ExposedNew; +import org.python.expose.ExposedSet; import org.python.expose.ExposedType; -@ExposedType(name = "_ast.AugStore", base = PyObject.class) -public class AugStore extends AST { +@ExposedType(name = "_ast.AugStore", base = AST.class) +public class AugStore extends PythonTree { public static final PyType TYPE = PyType.fromClass(AugStore.class); - public int asIndex() { - return asIndex(null); + +public AugStore() { +} + +public AugStore(PyType subType) { + super(subType); +} + +@ExposedNew +@ExposedMethod +public void AugStore___init__(PyObject[] args, String[] keywords) {} + + private final static PyString[] fields = new PyString[0]; + @ExposedGet(name = "_fields") + public PyString[] get_fields() { return fields; } + + private final static PyString[] attributes = new PyString[0]; + @ExposedGet(name = "_attributes") + public PyString[] get_attributes() { return attributes; } + + @ExposedMethod + public PyObject __int__() { + return AugStore___int__(); } - public int asIndex(PyObject error) { - return 5; + + final PyObject AugStore___int__() { + return Py.newInteger(5); } + } Modified: branches/astwrite/src/org/python/antlr/... [truncated message content] |
From: <fwi...@us...> - 2008-12-03 18:28:58
|
Revision: 5684 http://jython.svn.sourceforge.net/jython/?rev=5684&view=rev Author: fwierzbicki Date: 2008-12-03 18:28:54 +0000 (Wed, 03 Dec 2008) Log Message: ----------- Merged revisions 5639-5640,5644-5648,5655,5661,5670,5680-5682 via svnmerge from https://jython.svn.sourceforge.net/svnroot/jython/trunk/jython Modified Paths: -------------- branches/astwrite/Lib/test/test_genexps.py branches/astwrite/Lib/test/test_stringmap.py branches/astwrite/Lib/test/test_subprocess_jy.py branches/astwrite/build.xml branches/astwrite/src/org/python/antlr/GrammarActions.java branches/astwrite/src/org/python/antlr/PythonTree.java branches/astwrite/src/org/python/compiler/CodeCompiler.java branches/astwrite/src/org/python/core/PyDataDescr.java branches/astwrite/src/org/python/core/PyStringMap.java branches/astwrite/src/org/python/core/PySystemState.java branches/astwrite/src/org/python/expose/generate/DescriptorExposer.java branches/astwrite/src/org/python/expose/generate/Exposer.java branches/astwrite/src/org/python/modules/zipimport/zipimporter.java branches/astwrite/src/shell/jython branches/astwrite/src/shell/jython.bat branches/astwrite/tests/java/org/python/expose/generate/DescriptorExposerTest.java branches/astwrite/tests/java/org/python/expose/generate/ExposedTypeProcessorTest.java branches/astwrite/tests/java/org/python/expose/generate/MethodExposerTest.java branches/astwrite/tests/java/org/python/expose/generate/SimpleExposed.java Added Paths: ----------- branches/astwrite/Lib/test/test_genexps_jy.py branches/astwrite/extlibs/constantine-0.4.jar Removed Paths: ------------- branches/astwrite/extlibs/constantine.jar Property Changed: ---------------- branches/astwrite/ Property changes on: branches/astwrite ___________________________________________________________________ Modified: svnmerge-integrated - /trunk/jython:1-5634 + /trunk/jython:1-5683 Modified: branches/astwrite/Lib/test/test_genexps.py =================================================================== --- branches/astwrite/Lib/test/test_genexps.py 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/Lib/test/test_genexps.py 2008-12-03 18:28:54 UTC (rev 5684) @@ -1,9 +1,8 @@ -#From http://svn.python.org/projects/python/branches/release25-maint/Lib/test_genexps.py@51333 +# From http://svn.python.org/projects/python/branches/release25-maint/Lib/test_genexps.py@51333 -#Ignoring details of SyntaxError for now -- justified I think for "invalid +# Ignoring details of SyntaxError for now -- justified I think for "invalid # syntax" since that #message has very little info, where Antlr provides more -# detail. The others really are #differences that should be addressed, but I -# want to concentrate on the other errors for now. +# detail. doctests = """ Copied: branches/astwrite/Lib/test/test_genexps_jy.py (from rev 5682, trunk/jython/Lib/test/test_genexps_jy.py) =================================================================== --- branches/astwrite/Lib/test/test_genexps_jy.py (rev 0) +++ branches/astwrite/Lib/test/test_genexps_jy.py 2008-12-03 18:28:54 UTC (rev 5684) @@ -0,0 +1,23 @@ +"""Misc generator expression tests + +Made for Jython. +""" +import unittest +from test import test_support + +locals_test = list(local for local in locals() if not local.startswith('_')) + +class GeneratorExpressionsTestCase(unittest.TestCase): + + def test_module_level_locals(self): + # NOTE: The locals_test genexp used to cause a 'dictionary + # changed size during iteration' RuntimeError. If we've gotten + # this far we've already passed + self.assert_(sorted(locals_test) == ['test_support', 'unittest']) + + +def test_main(): + test_support.run_unittest(GeneratorExpressionsTestCase) + +if __name__ == '__main__': + test_main() Modified: branches/astwrite/Lib/test/test_stringmap.py =================================================================== --- branches/astwrite/Lib/test/test_stringmap.py 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/Lib/test/test_stringmap.py 2008-12-03 18:28:54 UTC (rev 5684) @@ -62,7 +62,10 @@ for i in r.keys(): self.assert_(d.has_key(i)) self.assert_(i in d) - + + # Test unhashability + self.assertRaises(TypeError, hash, d) + def test_stringmap_in_mapping(self): class A: def __init__(self): Modified: branches/astwrite/Lib/test/test_subprocess_jy.py =================================================================== --- branches/astwrite/Lib/test/test_subprocess_jy.py 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/Lib/test/test_subprocess_jy.py 2008-12-03 18:28:54 UTC (rev 5684) @@ -14,10 +14,30 @@ stdout=PIPE) self.assertEquals('something', p1.stdout.read()) + +# tests for (some parts of) issue #1187: JYTHON_OPTS should not be enriched by arguments +class JythonOptsTest(unittest.TestCase): + def testNoJythonOpts(self): + os.environ['JYTHON_OPTS'] = '' + p1 = Popen([sys.executable, "-c", + 'import os, sys; sys.stdout.write(os.environ["JYTHON_OPTS"])'], + stdout=PIPE) + self.assertEquals('', p1.stdout.read()) + + def testExistingJythonOpts(self): + options = '-Qold -Qwarn' + os.environ['JYTHON_OPTS'] = options + p1 = Popen([sys.executable, "-c", + 'import os, sys; sys.stdout.write(os.environ["JYTHON_OPTS"])'], + stdout=PIPE) + self.assertEquals(options, p1.stdout.read()) + def test_main(): - test_support.run_unittest(EnvironmentInheritanceTest) + test_classes = ( + EnvironmentInheritanceTest, + JythonOptsTest, + ) + test_support.run_unittest(*test_classes) if __name__ == '__main__': test_main() - - Modified: branches/astwrite/build.xml =================================================================== --- branches/astwrite/build.xml 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/build.xml 2008-12-03 18:28:54 UTC (rev 5684) @@ -526,7 +526,7 @@ <zipfileset src="extlibs/jna-posix.jar"/> <!-- <rule pattern="com.sun.jna.**" result="org.python.jna.@1"/> --> <rule pattern="org.jruby.ext.posix.**" result="org.python.posix.@1"/> - <zipfileset src="extlibs/constantine.jar"/> + <zipfileset src="extlibs/constantine-0.4.jar"/> <rule pattern="com.kenai.constantine.**" result="org.python.constantine.@1"/> </jarjar> <unjar src="${output.dir}/jarjar.jar" dest="${jarjar.dir}"> Copied: branches/astwrite/extlibs/constantine-0.4.jar (from rev 5682, trunk/jython/extlibs/constantine-0.4.jar) =================================================================== (Binary files differ) Deleted: branches/astwrite/extlibs/constantine.jar =================================================================== (Binary files differ) Modified: branches/astwrite/src/org/python/antlr/GrammarActions.java =================================================================== --- branches/astwrite/src/org/python/antlr/GrammarActions.java 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/src/org/python/antlr/GrammarActions.java 2008-12-03 18:28:54 UTC (rev 5684) @@ -2,7 +2,6 @@ import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; -import org.antlr.runtime.tree.Tree; import org.python.core.Py; import org.python.core.PyComplex; Modified: branches/astwrite/src/org/python/antlr/PythonTree.java =================================================================== --- branches/astwrite/src/org/python/antlr/PythonTree.java 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/src/org/python/antlr/PythonTree.java 2008-12-03 18:28:54 UTC (rev 5684) @@ -12,7 +12,6 @@ import java.util.List; public class PythonTree extends AST { - public boolean from_future_checked = false; private int charStartIndex = -1; private int charStopIndex = -1; @@ -449,5 +448,4 @@ child.setParent(this); } } - } Modified: branches/astwrite/src/org/python/compiler/CodeCompiler.java =================================================================== --- branches/astwrite/src/org/python/compiler/CodeCompiler.java 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/src/org/python/compiler/CodeCompiler.java 2008-12-03 18:28:54 UTC (rev 5684) @@ -2180,7 +2180,6 @@ @Override public Object visitGeneratorExp(GeneratorExp node) throws Exception { String bound_exp = "_(x)"; - String tmp_append ="_(" + node.getLine() + "_" + node.getCharPositionInLine() + ")"; setline(node); @@ -2220,7 +2219,7 @@ java.util.List<stmtType> bod = new ArrayList<stmtType>(); bod.add(n); - module.PyCode(new Suite(node, bod), tmp_append, true, + module.PyCode(new Suite(node, bod), "<genexpr>", true, className, false, false, node.getLine(), scope, cflags).get(code); @@ -2230,19 +2229,15 @@ } else { code.invokespecial( "org/python/core/PyFunction", "<init>", "(" + $pyObj + $pyObjArr + $pyCode + $pyObj + $pyObjArr + ")V"); } + int genExp = storeTop(); - set(new Name(node, tmp_append, expr_contextType.Store)); - visit(iter); - visit(new Name(node, tmp_append, expr_contextType.Load)); + code.aload(genExp); + code.freeLocal(genExp); code.swap(); code.invokevirtual("org/python/core/PyObject", "__iter__", "()Lorg/python/core/PyObject;"); code.invokevirtual("org/python/core/PyObject", "__call__", "(" + $pyObj + ")" + $pyObj); - java.util.List<exprType> targets = new ArrayList<exprType>(); - targets.add(new Name(n, tmp_append, expr_contextType.Del)); - visit(new Delete(n, targets)); - return null; } Modified: branches/astwrite/src/org/python/core/PyDataDescr.java =================================================================== --- branches/astwrite/src/org/python/core/PyDataDescr.java 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/src/org/python/core/PyDataDescr.java 2008-12-03 18:28:54 UTC (rev 5684) @@ -75,9 +75,12 @@ @ExposedMethod public void getset_descriptor___set__(PyObject obj, PyObject value) { checkGetterType(obj.getType()); + // XXX: We may want to special case value being PyUnicode and ofType being String + // (then explicitly value.encode() first) Object converted = value.__tojava__(ofType); if(converted == Py.NoConversion) { - throw Py.TypeError(""); // xxx + throw Py.TypeError(String.format("unsupported type for assignment to %s: '%.200s'", + name, value.getType().fastGetName())); } invokeSet(obj, converted); } Modified: branches/astwrite/src/org/python/core/PyStringMap.java =================================================================== --- branches/astwrite/src/org/python/core/PyStringMap.java 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/src/org/python/core/PyStringMap.java 2008-12-03 18:28:54 UTC (rev 5684) @@ -500,4 +500,8 @@ return pyKey; } } + + public int hashCode() { + throw Py.TypeError(String.format("unhashable type: '%.200s'", getType().fastGetName())); + } } Modified: branches/astwrite/src/org/python/core/PySystemState.java =================================================================== --- branches/astwrite/src/org/python/core/PySystemState.java 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/src/org/python/core/PySystemState.java 2008-12-03 18:28:54 UTC (rev 5684) @@ -34,6 +34,7 @@ protected static final String CACHEDIR_DEFAULT_NAME = "cachedir"; public static final String JYTHON_JAR = "jython.jar"; + public static final String JYTHON_COMPLETE_JAR = "jython-complete.jar"; private static final String JAR_URL_PREFIX = "jar:file:"; private static final String JAR_SEPARATOR = "!"; @@ -392,10 +393,14 @@ if (root == null) { String classpath = preProperties.getProperty("java.class.path"); if (classpath != null) { - int jpy = classpath.toLowerCase().indexOf(JYTHON_JAR); - if (jpy >= 0) { - int start = classpath.lastIndexOf(java.io.File.pathSeparator, jpy) + 1; - root = classpath.substring(start, jpy); + String lowerCaseClasspath = classpath.toLowerCase(); + int jarIndex = lowerCaseClasspath.indexOf(JYTHON_COMPLETE_JAR); + if (jarIndex < 0) { + jarIndex = lowerCaseClasspath.indexOf(JYTHON_JAR); + } + if (jarIndex >= 0) { + int start = classpath.lastIndexOf(java.io.File.pathSeparator, jarIndex) + 1; + root = classpath.substring(start, jarIndex); } else { // in case JYTHON_JAR is referenced from a MANIFEST inside another jar on the classpath root = jarFileName; Modified: branches/astwrite/src/org/python/expose/generate/DescriptorExposer.java =================================================================== --- branches/astwrite/src/org/python/expose/generate/DescriptorExposer.java 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/src/org/python/expose/generate/DescriptorExposer.java 2008-12-03 18:28:54 UTC (rev 5684) @@ -139,7 +139,7 @@ mv.visitVarInsn(ALOAD, 1); mv.visitTypeInsn(CHECKCAST, onType.getInternalName()); call(onType, getterMethodName, ofType); - if(PRIMITIVES.containsKey(ofType)) { + if(PRIMITIVES.containsKey(ofType) || ofType.equals(STRING)) { toPy(ofType); } endMethod(ARETURN); @@ -153,7 +153,7 @@ onType.getInternalName(), getterFieldName, ofType.getDescriptor()); - if(PRIMITIVES.containsKey(ofType)) { + if(PRIMITIVES.containsKey(ofType) || ofType.equals(STRING)) { toPy(ofType); } endMethod(ARETURN); Modified: branches/astwrite/src/org/python/expose/generate/Exposer.java =================================================================== --- branches/astwrite/src/org/python/expose/generate/Exposer.java 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/src/org/python/expose/generate/Exposer.java 2008-12-03 18:28:54 UTC (rev 5684) @@ -5,6 +5,7 @@ import org.python.objectweb.asm.ClassVisitor; import org.python.objectweb.asm.ClassWriter; +import org.python.objectweb.asm.Label; import org.python.objectweb.asm.MethodVisitor; import org.python.objectweb.asm.Opcodes; import org.python.objectweb.asm.Type; @@ -228,7 +229,16 @@ if(inputType.equals(VOID)) { getStatic(PY, "None", PYOBJ); } else if(inputType.equals(STRING)) { + Label newString = new Label(); + Label end = new Label(); + mv.visitInsn(DUP); + mv.visitJumpInsn(IFNONNULL, newString); + mv.visitInsn(POP); + getStatic(PY, "None", PYOBJ); + mv.visitJumpInsn(GOTO, end); + mv.visitLabel(newString); callStatic(PY, "newString", PYSTR, STRING); + mv.visitLabel(end); } else if(inputType.equals(BOOLEAN)) { callStatic(PY, "newBoolean", PYBOOLEAN, BOOLEAN); } else if(inputType.equals(INT) || inputType.equals(BYTE) || inputType.equals(SHORT)) { Modified: branches/astwrite/src/org/python/modules/zipimport/zipimporter.java =================================================================== --- branches/astwrite/src/org/python/modules/zipimport/zipimporter.java 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/src/org/python/modules/zipimport/zipimporter.java 2008-12-03 18:28:54 UTC (rev 5684) @@ -50,12 +50,12 @@ "a zipfile. ZipImportError is raised if 'archivepath' doesn't point to\n" + "a valid Zip archive."); - /** zip_searchorder defines how we search for a module in the Zip + /** zipSearchOrder defines how we search for a module in the Zip * archive */ static enum EntryType { IS_SOURCE, IS_BYTECODE, IS_PACKAGE }; - static final SearchOrderEntry[] zip_searchorder = new SearchOrderEntry[] { + static final SearchOrderEntry[] zipSearchOrder = new SearchOrderEntry[] { new SearchOrderEntry(File.separator + "__init__$py.class", EnumSet.of(EntryType.IS_PACKAGE, EntryType.IS_BYTECODE)), new SearchOrderEntry(File.separator + "__init__.py", @@ -126,9 +126,7 @@ break; } - String childFile = pathFile.getPath(); - prefix = childFile.substring(childFile.lastIndexOf(File.separator) + 1) - + File.separator + prefix; + prefix = pathFile.getName() + File.separator + prefix; pathFile = parentFile; } @@ -364,8 +362,7 @@ private ModuleInfo getModuleInfo(String fullname) { String path = makeFilename(prefix, getSubname(fullname)); - for (int i = 0; i < zip_searchorder.length; i++) { - SearchOrderEntry entry = zip_searchorder[i]; + for (SearchOrderEntry entry : zipSearchOrder) { PyObject tocEntry = files.__finditem__(path + entry.suffix); if (tocEntry == null) continue; @@ -392,8 +389,7 @@ return null; } - for (int i = 0; i < zip_searchorder.length; i++) { - SearchOrderEntry entry = zip_searchorder[i]; + for (SearchOrderEntry entry : zipSearchOrder) { String suffix = entry.suffix; String searchPath = path + suffix; @@ -606,7 +602,12 @@ @ExposedMethod(names = "__repr__") final String zipimporter_toString() { - return "<zipimporter object \"" + archive + "\">"; + String displayArchive = archive != null ? archive : "???"; + if (prefix != null && !"".equals(prefix)) { + return String.format("<zipimporter object \"%.300s%c%.150s\">", + displayArchive, File.separatorChar, prefix); + } + return String.format("<zipimporter object \"%.300s\">", displayArchive); } /** Modified: branches/astwrite/src/shell/jython =================================================================== --- branches/astwrite/src/shell/jython 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/src/shell/jython 2008-12-03 18:28:54 UTC (rev 5684) @@ -43,16 +43,24 @@ JAVA_CMD=("$JAVA_HOME/bin/java") fi +# try to dynamically determine jython home +# (this script typically resides in jython home, or in the /bin subdirectory) if [ -z "$JYTHON_HOME" ] ; then if [ "$PRG" = "./jython" ] ; then - # current dir is /bin dir - JYTHON_HOME_1=`pwd` # the ./bin dir - JYTHON_HOME=`dirname "$JYTHON_HOME_1"` # the . dir + # current dir is the script dir + JYTHON_HOME_1=`pwd` else - # current dir is not /bin dir - JYTHON_HOME_1=`dirname "$PRG"` # the ./bin dir - JYTHON_HOME=`dirname "$JYTHON_HOME_1"` # the . dir + # current dir is not the script dir + JYTHON_HOME_1=`dirname "$PRG"` fi + if [ -f "$JYTHON_HOME_1"/jython-complete.jar -o -f "$JYTHON_HOME_1"/jython.jar ] ; then + JYTHON_HOME="$JYTHON_HOME_1" + else + JYTHON_HOME=`dirname "$JYTHON_HOME_1"` + fi + if [ ! -f "$JYTHON_HOME"/jython-complete.jar -a ! -f "$JYTHON_HOME"/jython.jar ] ; then + JYTHON_HOME="$JYTHON_HOME_FALLBACK" + fi fi if [ -z "$JYTHON_OPTS" ] ; then @@ -117,6 +125,10 @@ -D*) python_args=("${python_args[@]}" "$1") ;; + # Print the command, don't execute it + --print) + print_requested=true + ;; # Run with the instrumented profiler: http://jiprof.sourceforge.net/ --profile) rm -f profile.txt # XXX do this? @@ -189,12 +201,17 @@ [ -n "$profile_requested" ] && echo "Running with instrumented profiler" java_args=("${java_args[@]}" -classpath "$CP$CP_DELIMITER$CLASSPATH") else - if [ -z $help_requested ] ; then + if [ -z "$help_requested" -a -z "$print_requested" ] ; then JAVA_CMD=(exec "${JAVA_CMD[@]}") fi - java_args=("${java_args[@]}" -Xbootclasspath/a:"$CP" -classpath "$CLASSPATH") + java_args=("${java_args[@]}" -Xbootclasspath/a:"$CP") + [ -n "$CLASSPATH" ] && java_args=("${java_args[@]}" -classpath "$CLASSPATH") fi +if [ -n "$print_requested" ] ; then + JAVA_CMD=(echo $JAVA_CMD) +fi + "${JAVA_CMD[@]}" $JAVA_OPTS "${java_args[@]}" -Dpython.home="$JYTHON_HOME" \ -Dpython.executable="$PRG" org.python.util.jython $JYTHON_OPTS "$@" @@ -205,6 +222,7 @@ echo "Jython launcher options:" >&2 echo "-Jarg : pass argument through to Java VM (e.g. -J-Xmx512m)" >&2 echo "--jdb : run under JDB" >&2 + echo "--print : print the Java command instead of executing it" >&2 echo "--profile: run with the Java Interactive Profiler (http://jiprof.sf.net)" >&2 echo "--verify : enable bytecode verifier for Jython classes (for development)" >&2 echo "-- : pass remaining arguments through to Jython" >&2 Modified: branches/astwrite/src/shell/jython.bat =================================================================== --- branches/astwrite/src/shell/jython.bat 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/src/shell/jython.bat 2008-12-03 18:28:54 UTC (rev 5684) @@ -24,6 +24,13 @@ set _JAVA_CMD="%JAVA_HOME:"=%\bin\java" ) +rem remove surrounding quotes from jython opts, to be able to safely empty-test it +set _TRIMMED_JYTHON_OPTS=%JYTHON_OPTS% +for /f "useback tokens=*" %%a in ('%_TRIMMED_JYTHON_OPTS%') do set _TRIMMED_JYTHON_OPTS=%%~a +if not "%_TRIMMED_JYTHON_OPTS%"=="" ( + set _JYTHON_OPTS="%_TRIMMED_JYTHON_OPTS%" +) + rem remove surrounding quotes from jython home, to be able to safely empty-test it set _TRIMMED_JYTHON_HOME=%JYTHON_HOME% for /f "useback tokens=*" %%a in ('%_TRIMMED_JYTHON_HOME%') do set _TRIMMED_JYTHON_HOME=%%~a @@ -31,9 +38,22 @@ set _JYTHON_HOME="%_TRIMMED_JYTHON_HOME%" goto gotHome ) + +rem try to dynamically determine jython home +rem (this script typically resides in jython home, or in the /bin subdirectory) +pushd "%~dp0%" +set _JYTHON_HOME="%CD%" +popd +if exist %_JYTHON_HOME%\jython.jar goto gotHome +if exist %_JYTHON_HOME%\jython-complete.jar goto gotHome pushd "%~dp0%\.." set _JYTHON_HOME="%CD%" popd +if exist %_JYTHON_HOME%\jython.jar goto gotHome +if exist %_JYTHON_HOME%\jython-complete.jar goto gotHome +rem jython home fallback (if all else fails) +rem if present, %JYTHON_HOME_FALLBACK% is already quoted +set _JYTHON_HOME=%JYTHON_HOME_FALLBACK% :gotHome if not exist %_JYTHON_HOME%\jython.jar goto tryComplete @@ -49,7 +69,7 @@ if exist %_JYTHON_HOME%/jython-complete.jar goto run echo Cannot find jython.jar or jython-complete.jar in %_JYTHON_HOME% -echo Try running this batch file from the 'bin' directory of an installed Jython +echo Try running this batch file from the 'bin' directory of an installed Jython, echo or setting JYTHON_HOME. goto cleanup @@ -68,6 +88,7 @@ set _ARGS=%_ARGS:"=_D% set _ARGS="%_ARGS%" +set _JYTHON_ARGS= :scanArgs rem split args by spaces into first and rest @@ -121,7 +142,7 @@ if "%_CMP2:"=\\%" == "-J" goto jvmArg :jythonArg -set JYTHON_OPTS=%JYTHON_OPTS% %_CMP% +set _JYTHON_ARGS=%_JYTHON_ARGS% %_CMP% goto nextArg :jvmArg @@ -140,7 +161,7 @@ goto scanArgs :argsDone -%_JAVA_CMD% %_JAVA_OPTS% %_JAVA_STACK% -Xbootclasspath/a:%_CP% -Dpython.home=%_JYTHON_HOME% -Dpython.executable="%~f0" -classpath "%CLASSPATH%" org.python.util.jython %JYTHON_OPTS% %_ARGS% +%_JAVA_CMD% %_JAVA_OPTS% %_JAVA_STACK% -Xbootclasspath/a:%_CP% -Dpython.home=%_JYTHON_HOME% -Dpython.executable="%~f0" -classpath "%CLASSPATH%" org.python.util.jython %_JYTHON_OPTS% %_JYTHON_ARGS% %_ARGS% set E=%ERRORLEVEL% :cleanup @@ -153,8 +174,11 @@ set _JAVA_OPTS= set _JAVA_STACK= set _JYTHON_HOME= +set _JYTHON_OPTS= +set _JYTHON_ARGS= set _TRIMMED_JAVA_HOME= set _TRIMMED_JYTHON_HOME= +set _TRIMMED_JYTHON_OPTS= :finish exit /b %E% Modified: branches/astwrite/tests/java/org/python/expose/generate/DescriptorExposerTest.java =================================================================== --- branches/astwrite/tests/java/org/python/expose/generate/DescriptorExposerTest.java 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/tests/java/org/python/expose/generate/DescriptorExposerTest.java 2008-12-03 18:28:54 UTC (rev 5684) @@ -76,7 +76,17 @@ assertFalse(instance.implementsDescrSet()); assertFalse(instance.implementsDescrDelete()); } + + public void testNullReturns() throws Exception { + PyDataDescr instance = makeDescriptor(new DescSetup() { + public void setup(DescriptorExposer de) { + de.addFieldGetter("nullString", STRING); + } + }); + assertEquals(Py.None, instance.__get__(se, PY_TYPE)); + } + public void testMethodSetter() throws Exception { PyDataDescr instance = makeDescriptor(new DescSetup() { @@ -224,5 +234,7 @@ public boolean bool; public String toStringVal = SimpleExposed.TO_STRING_RETURN; + + public String nullString = null; } } Modified: branches/astwrite/tests/java/org/python/expose/generate/ExposedTypeProcessorTest.java =================================================================== --- branches/astwrite/tests/java/org/python/expose/generate/ExposedTypeProcessorTest.java 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/tests/java/org/python/expose/generate/ExposedTypeProcessorTest.java 2008-12-03 18:28:54 UTC (rev 5684) @@ -18,7 +18,7 @@ .getResourceAsStream("org/python/expose/generate/SimpleExposed.class"); ExposedTypeProcessor ice = new ExposedTypeProcessor(in); assertEquals("simpleexposed", ice.getName()); - assertEquals(18, ice.getMethodExposers().size()); + assertEquals(19, ice.getMethodExposers().size()); assertNotNull(ice.getNewExposer()); assertEquals(1, ice.getDescriptorExposers().size()); assertEquals("simpleexposed", ice.getTypeExposer().getName()); Modified: branches/astwrite/tests/java/org/python/expose/generate/MethodExposerTest.java =================================================================== --- branches/astwrite/tests/java/org/python/expose/generate/MethodExposerTest.java 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/tests/java/org/python/expose/generate/MethodExposerTest.java 2008-12-03 18:28:54 UTC (rev 5684) @@ -189,6 +189,10 @@ assertEquals("a", createBound("charReturn", CHAR).__call__().toString()); } + public void testNullReturns() throws Exception { + assertEquals(Py.None, createBound("stringReturnNull", STRING).__call__()); + } + public void testClassMethod() throws Exception { ClassMethodExposer exp = new ClassMethodExposer(Type.getType(SimpleExposed.class), Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC, Modified: branches/astwrite/tests/java/org/python/expose/generate/SimpleExposed.java =================================================================== --- branches/astwrite/tests/java/org/python/expose/generate/SimpleExposed.java 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/tests/java/org/python/expose/generate/SimpleExposed.java 2008-12-03 18:28:54 UTC (rev 5684) @@ -123,6 +123,11 @@ return 'a'; } + @ExposedMethod + public String stringReturnNull() { + return null; + } + @ExposedClassMethod public static char classmethod(PyType onType) { return 'a'; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fwi...@us...> - 2008-12-03 19:38:46
|
Revision: 5685 http://jython.svn.sourceforge.net/jython/?rev=5685&view=rev Author: fwierzbicki Date: 2008-12-03 19:38:43 +0000 (Wed, 03 Dec 2008) Log Message: ----------- More of 2.6 test_ast.py now passes. Modified Paths: -------------- branches/astwrite/ast/asdl_antlr.py branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java branches/astwrite/src/org/python/antlr/ast/Assert.java branches/astwrite/src/org/python/antlr/ast/Assign.java branches/astwrite/src/org/python/antlr/ast/Attribute.java branches/astwrite/src/org/python/antlr/ast/AugAssign.java branches/astwrite/src/org/python/antlr/ast/BinOp.java branches/astwrite/src/org/python/antlr/ast/BoolOp.java branches/astwrite/src/org/python/antlr/ast/Break.java branches/astwrite/src/org/python/antlr/ast/Call.java branches/astwrite/src/org/python/antlr/ast/ClassDef.java branches/astwrite/src/org/python/antlr/ast/Compare.java branches/astwrite/src/org/python/antlr/ast/Continue.java branches/astwrite/src/org/python/antlr/ast/Delete.java branches/astwrite/src/org/python/antlr/ast/Dict.java branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java branches/astwrite/src/org/python/antlr/ast/Exec.java branches/astwrite/src/org/python/antlr/ast/Expr.java branches/astwrite/src/org/python/antlr/ast/For.java branches/astwrite/src/org/python/antlr/ast/FunctionDef.java branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java branches/astwrite/src/org/python/antlr/ast/Global.java branches/astwrite/src/org/python/antlr/ast/If.java branches/astwrite/src/org/python/antlr/ast/IfExp.java branches/astwrite/src/org/python/antlr/ast/Import.java branches/astwrite/src/org/python/antlr/ast/ImportFrom.java branches/astwrite/src/org/python/antlr/ast/Lambda.java branches/astwrite/src/org/python/antlr/ast/List.java branches/astwrite/src/org/python/antlr/ast/ListComp.java branches/astwrite/src/org/python/antlr/ast/Name.java branches/astwrite/src/org/python/antlr/ast/Num.java branches/astwrite/src/org/python/antlr/ast/Pass.java branches/astwrite/src/org/python/antlr/ast/Print.java branches/astwrite/src/org/python/antlr/ast/Raise.java branches/astwrite/src/org/python/antlr/ast/Repr.java branches/astwrite/src/org/python/antlr/ast/Return.java branches/astwrite/src/org/python/antlr/ast/Str.java branches/astwrite/src/org/python/antlr/ast/Subscript.java branches/astwrite/src/org/python/antlr/ast/TryExcept.java branches/astwrite/src/org/python/antlr/ast/TryFinally.java branches/astwrite/src/org/python/antlr/ast/Tuple.java branches/astwrite/src/org/python/antlr/ast/UnaryOp.java branches/astwrite/src/org/python/antlr/ast/While.java branches/astwrite/src/org/python/antlr/ast/With.java branches/astwrite/src/org/python/antlr/ast/Yield.java branches/astwrite/src/org/python/core/AstList.java Modified: branches/astwrite/ast/asdl_antlr.py =================================================================== --- branches/astwrite/ast/asdl_antlr.py 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/ast/asdl_antlr.py 2008-12-03 19:38:43 UTC (rev 5685) @@ -202,7 +202,7 @@ self.emit("public void %s___init__(PyObject[] args, String[] keywords) {}" % type.name, depth) self.emit('', 0) - self.attributes(type, depth); + self.attributes(type, name, depth); self.emit('@ExposedMethod', depth + 1) self.emit('public PyObject __int__() {', depth + 1) @@ -219,7 +219,7 @@ self.close() - def attributes(self, obj, depth): + def attributes(self, obj, name, depth): field_list = [] if hasattr(obj, "fields"): for f in obj.fields: @@ -236,11 +236,8 @@ self.emit("public PyString[] get_fields() { return fields; }", depth+1) self.emit("", 0) - att_list = [] - if hasattr(obj, "attributes"): - for a in obj.attributes: - att_list.append('new PyString("%s")' % a.name) - if len(att_list) > 0: + if str(name) in ('stmt', 'expr', 'excepthandler'): + att_list = ['new PyString("lineno")', 'new PyString("col_offset")'] self.emit("private final static PyString[] attributes =", depth + 1) self.emit("new PyString[] {%s};" % ", ".join(att_list), depth + 1) self.emit('@ExposedGet(name = "_attributes")', depth + 1) @@ -261,7 +258,7 @@ self.emit("", 0) self.emit("public static final PyType TYPE = PyType.fromClass(%sType.class);" % name, depth + 1); - self.attributes(sum, depth); + self.attributes(sum, name, depth); self.emit("public %(name)sType() {" % locals(), depth+1) self.emit("}", depth+1) @@ -301,7 +298,7 @@ self.visit(f, depth + 1) self.emit("", depth) - self.attributes(product, depth) + self.attributes(product, name, depth) self.javaMethods(product, name, "%sType" % name, product.fields, depth+1) @@ -327,7 +324,7 @@ self.visit(f, depth + 1) self.emit("", depth) - self.attributes(cons, depth) + self.attributes(cons, name, depth) self.javaMethods(cons, cons.name, cons.name, cons.fields, depth+1) Modified: branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -73,6 +73,21 @@ public static expr_contextType py2expr_context(Object o) { if (o == null || o instanceof expr_contextType) { return (expr_contextType)o; + } else if (o instanceof PyObject) { + switch (((PyObject)o).asInt()) { + case 1: + return expr_contextType.Load; + case 2: + return expr_contextType.Store; + case 3: + return expr_contextType.Del; + case 4: + return expr_contextType.AugLoad; + case 5: + return expr_contextType.AugStore; + case 6: + return expr_contextType.Param; + } } //FIXME: investigate the right exception throw Py.TypeError("Can't convert " + o.getClass().getName() + " to expr_context node"); @@ -89,6 +104,8 @@ public static String py2string(Object o) { if (o == null || o instanceof String) { return (String)o; + } else if (o instanceof PyString) { + return ((PyObject)o).toString(); } //FIXME: investigate the right exception throw Py.TypeError("Can't convert " + o.getClass().getName() + " to string node"); @@ -103,6 +120,26 @@ return operatorType.Add; case 2: return operatorType.Sub; + case 3: + return operatorType.Mult; + case 4: + return operatorType.Div; + case 5: + return operatorType.Mod; + case 6: + return operatorType.Pow; + case 7: + return operatorType.LShift; + case 8: + return operatorType.RShift; + case 9: + return operatorType.BitOr; + case 10: + return operatorType.BitXor; + case 11: + return operatorType.BitAnd; + case 12: + return operatorType.FloorDiv; } } //FIXME: investigate the right exception @@ -189,6 +226,13 @@ public static boolopType py2boolop(Object o) { if (o == null || o instanceof boolopType) { return (boolopType)o; + } else if (o instanceof PyObject) { + switch (((PyObject)o).asInt()) { + case 1: + return boolopType.And; + case 2: + return boolopType.Or; + } } //FIXME: investigate the right exception throw Py.TypeError("Can't convert " + o.getClass().getName() + " to boolop node"); Modified: branches/astwrite/src/org/python/antlr/ast/Assert.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -54,7 +54,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Assign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -54,7 +54,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Attribute.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -68,7 +68,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/AugAssign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -67,7 +67,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/BinOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -67,7 +67,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/BoolOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -54,7 +54,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Break.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Break.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Break.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -27,7 +27,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Call.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Call.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Call.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -94,7 +94,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/ClassDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -82,7 +82,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Compare.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -67,7 +67,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Continue.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Continue.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Continue.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -27,7 +27,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Delete.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -41,7 +41,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Dict.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -54,7 +54,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -67,7 +67,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Exec.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -67,7 +67,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Expr.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -41,7 +41,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/For.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/For.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/For.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -81,7 +81,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/FunctionDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -82,7 +82,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -54,7 +54,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Global.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Global.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Global.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -41,7 +41,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/If.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/If.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/If.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -67,7 +67,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/IfExp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/IfExp.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/IfExp.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -67,7 +67,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Import.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Import.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Import.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -41,7 +41,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/ImportFrom.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ImportFrom.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/ImportFrom.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -68,7 +68,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Lambda.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Lambda.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Lambda.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -54,7 +54,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/List.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/List.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/List.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -54,7 +54,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/ListComp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ListComp.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/ListComp.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -54,7 +54,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Name.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Name.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Name.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -55,7 +55,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Num.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Num.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Num.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -41,7 +41,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Pass.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Pass.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Pass.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -27,7 +27,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Print.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Print.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Print.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -68,7 +68,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Raise.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Raise.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Raise.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -67,7 +67,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Repr.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Repr.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Repr.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -41,7 +41,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Return.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Return.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Return.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -41,7 +41,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Str.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Str.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Str.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -41,7 +41,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Subscript.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Subscript.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Subscript.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -67,7 +67,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/TryExcept.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/TryExcept.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/TryExcept.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -67,7 +67,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/TryFinally.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/TryFinally.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/TryFinally.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -54,7 +54,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Tuple.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Tuple.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Tuple.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -54,7 +54,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/UnaryOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/UnaryOp.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/UnaryOp.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -54,7 +54,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/While.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/While.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/While.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -67,7 +67,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/With.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/With.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/With.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -68,7 +68,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Yield.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Yield.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Yield.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -41,7 +41,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/core/AstList.java =================================================================== --- branches/astwrite/src/org/python/core/AstList.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/core/AstList.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -20,7 +20,7 @@ import java.util.List; import java.util.ListIterator; -@ExposedType(name = "_ast.astlist", base = PyObject.class) +@ExposedType(name = "_ast.astlist", base = PyList.class) public class AstList extends PySequence implements Cloneable, List { public static final PyType TYPE = PyType.fromClass(AstList.class); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fwi...@us...> - 2008-12-03 21:55:16
|
Revision: 5686 http://jython.svn.sourceforge.net/jython/?rev=5686&view=rev Author: fwierzbicki Date: 2008-12-03 21:42:59 +0000 (Wed, 03 Dec 2008) Log Message: ----------- Only 2 fails left in 2.6 version of test_ast.py. Modified Paths: -------------- branches/astwrite/Lib/ast.py branches/astwrite/Lib/test/test_ast.py branches/astwrite/ast/asdl_antlr.py branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java branches/astwrite/src/org/python/antlr/adapter/ExprAdapter.java branches/astwrite/src/org/python/antlr/ast/Assert.java branches/astwrite/src/org/python/antlr/ast/Assign.java branches/astwrite/src/org/python/antlr/ast/AstModule.java branches/astwrite/src/org/python/antlr/ast/Attribute.java branches/astwrite/src/org/python/antlr/ast/AugAssign.java branches/astwrite/src/org/python/antlr/ast/BinOp.java branches/astwrite/src/org/python/antlr/ast/BoolOp.java branches/astwrite/src/org/python/antlr/ast/Break.java branches/astwrite/src/org/python/antlr/ast/Call.java branches/astwrite/src/org/python/antlr/ast/ClassDef.java branches/astwrite/src/org/python/antlr/ast/Compare.java branches/astwrite/src/org/python/antlr/ast/Continue.java branches/astwrite/src/org/python/antlr/ast/Delete.java branches/astwrite/src/org/python/antlr/ast/Dict.java branches/astwrite/src/org/python/antlr/ast/Ellipsis.java branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java branches/astwrite/src/org/python/antlr/ast/Exec.java branches/astwrite/src/org/python/antlr/ast/Expr.java branches/astwrite/src/org/python/antlr/ast/Expression.java branches/astwrite/src/org/python/antlr/ast/ExtSlice.java branches/astwrite/src/org/python/antlr/ast/For.java branches/astwrite/src/org/python/antlr/ast/FunctionDef.java branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java branches/astwrite/src/org/python/antlr/ast/Global.java branches/astwrite/src/org/python/antlr/ast/If.java branches/astwrite/src/org/python/antlr/ast/IfExp.java branches/astwrite/src/org/python/antlr/ast/Import.java branches/astwrite/src/org/python/antlr/ast/ImportFrom.java branches/astwrite/src/org/python/antlr/ast/Index.java branches/astwrite/src/org/python/antlr/ast/Interactive.java branches/astwrite/src/org/python/antlr/ast/Lambda.java branches/astwrite/src/org/python/antlr/ast/List.java branches/astwrite/src/org/python/antlr/ast/ListComp.java branches/astwrite/src/org/python/antlr/ast/Module.java branches/astwrite/src/org/python/antlr/ast/Name.java branches/astwrite/src/org/python/antlr/ast/Num.java branches/astwrite/src/org/python/antlr/ast/Pass.java branches/astwrite/src/org/python/antlr/ast/Print.java branches/astwrite/src/org/python/antlr/ast/Raise.java branches/astwrite/src/org/python/antlr/ast/Repr.java branches/astwrite/src/org/python/antlr/ast/Return.java branches/astwrite/src/org/python/antlr/ast/Slice.java branches/astwrite/src/org/python/antlr/ast/Str.java branches/astwrite/src/org/python/antlr/ast/Subscript.java branches/astwrite/src/org/python/antlr/ast/Suite.java branches/astwrite/src/org/python/antlr/ast/TryExcept.java branches/astwrite/src/org/python/antlr/ast/TryFinally.java branches/astwrite/src/org/python/antlr/ast/Tuple.java branches/astwrite/src/org/python/antlr/ast/UnaryOp.java branches/astwrite/src/org/python/antlr/ast/VisitorBase.java branches/astwrite/src/org/python/antlr/ast/While.java branches/astwrite/src/org/python/antlr/ast/With.java branches/astwrite/src/org/python/antlr/ast/Yield.java branches/astwrite/src/org/python/antlr/ast/aliasType.java branches/astwrite/src/org/python/antlr/ast/argumentsType.java branches/astwrite/src/org/python/antlr/ast/comprehensionType.java branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java branches/astwrite/src/org/python/antlr/ast/exprType.java branches/astwrite/src/org/python/antlr/ast/keywordType.java branches/astwrite/src/org/python/antlr/ast/modType.java branches/astwrite/src/org/python/antlr/ast/sliceType.java branches/astwrite/src/org/python/antlr/ast/stmtType.java branches/astwrite/src/org/python/core/AstList.java Modified: branches/astwrite/Lib/ast.py =================================================================== --- branches/astwrite/Lib/ast.py 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/Lib/ast.py 2008-12-03 21:42:59 UTC (rev 5686) @@ -32,7 +32,7 @@ if sys.platform.startswith('java'): import java.util.List - ast_list = java.util.List + ast_list = astlist def get_class_name(t): result = t.__class__.__name__ Modified: branches/astwrite/Lib/test/test_ast.py =================================================================== --- branches/astwrite/Lib/test/test_ast.py 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/Lib/test/test_ast.py 2008-12-03 21:42:59 UTC (rev 5686) @@ -253,10 +253,10 @@ node = ast.parse("spam(23, 42, eggs='leek')", mode='eval') self.assertEqual(len(list(ast.iter_child_nodes(node.body))), 4) iterator = ast.iter_child_nodes(node.body) - self.assertEqual(next(iterator).id, 'spam') - self.assertEqual(next(iterator).n, 23) - self.assertEqual(next(iterator).n, 42) - self.assertEqual(ast.dump(next(iterator)), + self.assertEqual(iterator.next().id, 'spam') + self.assertEqual(iterator.next().n, 23) + self.assertEqual(iterator.next().n, 42) + self.assertEqual(ast.dump(iterator.next()), "keyword(arg='eggs', value=Str(s='leek'))" ) Modified: branches/astwrite/ast/asdl_antlr.py =================================================================== --- branches/astwrite/ast/asdl_antlr.py 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/ast/asdl_antlr.py 2008-12-03 21:42:59 UTC (rev 5686) @@ -61,6 +61,7 @@ print >> self.file, 'import org.python.antlr.AST;' print >> self.file, 'import org.python.antlr.PythonTree;' print >> self.file, 'import org.python.antlr.adapter.AstAdapters;' + print >> self.file, 'import org.python.core.ArgParser;' print >> self.file, 'import org.python.core.AstList;' print >> self.file, 'import org.python.core.Py;' print >> self.file, 'import org.python.core.PyObject;' @@ -463,9 +464,19 @@ self.emit("super(subType);", depth + 1) self.emit("}", depth) + fpargs = ", ".join(['"%s"' % f.name for f in fields]) self.emit("@ExposedNew", depth) self.emit("@ExposedMethod", depth) - self.emit("public void %s___init__(PyObject[] args, String[] keywords) {}" % ctorname, depth) + self.emit("public void %s___init__(PyObject[] args, String[] keywords) {" % ctorname, depth) + self.emit('ArgParser ap = new ArgParser("%s", args, keywords, new String[]' % ctorname, depth + 1) + self.emit('{%s}, %s);' % (fpargs, len(fields)), depth + 2) + i = 0 + for f in fields: + self.emit("set%s(ap.getPyObject(%s));" % (str(f.name).capitalize(), + str(i)), depth+1) + i += 1 + self.emit("}", depth) + self.emit("", 0) fpargs = ", ".join(["PyObject %s" % f.name for f in fields]) self.emit("public %s(%s) {" % (ctorname, fpargs), depth) Modified: branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -101,11 +101,9 @@ return (stmtType)stmtAdapter.py2ast(o); } - public static String py2string(Object o) { - if (o == null || o instanceof String) { - return (String)o; - } else if (o instanceof PyString) { - return ((PyObject)o).toString(); + public static Object py2string(Object o) { + if (o == null || o instanceof PyString) { + return o; } //FIXME: investigate the right exception throw Py.TypeError("Can't convert " + o.getClass().getName() + " to string node"); Modified: branches/astwrite/src/org/python/antlr/adapter/ExprAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/ExprAdapter.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/adapter/ExprAdapter.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -20,15 +20,14 @@ public class ExprAdapter implements AstAdapter { public Object py2ast(PyObject o) { - if (o == null) { + if (o == null || o instanceof exprType) { return o; - } - if (o instanceof exprType) { - return o; } else if (o instanceof PyInteger || o instanceof PyLong || o instanceof PyFloat || o instanceof PyComplex) { return new Num(o); } else if (o instanceof PyString || o instanceof PyUnicode) { return new Str(o); + } else if (o == Py.None) { + return null; } //FIXME: investigate the right exception Modified: branches/astwrite/src/org/python/antlr/ast/Assert.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -67,7 +68,13 @@ } @ExposedNew @ExposedMethod - public void Assert___init__(PyObject[] args, String[] keywords) {} + public void Assert___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Assert", args, keywords, new String[] + {"test", "msg"}, 2); + setTest(ap.getPyObject(0)); + setMsg(ap.getPyObject(1)); + } + public Assert(PyObject test, PyObject msg) { setTest(test); setMsg(msg); Modified: branches/astwrite/src/org/python/antlr/ast/Assign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -67,7 +68,13 @@ } @ExposedNew @ExposedMethod - public void Assign___init__(PyObject[] args, String[] keywords) {} + public void Assign___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Assign", args, keywords, new String[] + {"targets", "value"}, 2); + setTargets(ap.getPyObject(0)); + setValue(ap.getPyObject(1)); + } + public Assign(PyObject targets, PyObject value) { setTargets(targets); setValue(value); Modified: branches/astwrite/src/org/python/antlr/ast/AstModule.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AstModule.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/AstModule.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -1,5 +1,6 @@ package org.python.antlr.ast; +import org.python.core.AstList; import org.python.core.ClassDictInit; import org.python.core.imp; import org.python.core.Py; @@ -22,6 +23,8 @@ dict.__setitem__("__version__", new PyString("62047")); dict.__setitem__("PyCF_ONLY_AST", new PyInteger(PyTableCode.PyCF_ONLY_AST)); + dict.__setitem__("astlist", AstList.TYPE); + dict.__setitem__("AST", AST.TYPE); dict.__setitem__("Module", Module.TYPE); dict.__setitem__("Assert", Assert.TYPE); Modified: branches/astwrite/src/org/python/antlr/ast/Attribute.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -81,7 +82,14 @@ } @ExposedNew @ExposedMethod - public void Attribute___init__(PyObject[] args, String[] keywords) {} + public void Attribute___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Attribute", args, keywords, new String[] + {"value", "attr", "ctx"}, 3); + setValue(ap.getPyObject(0)); + setAttr(ap.getPyObject(1)); + setCtx(ap.getPyObject(2)); + } + public Attribute(PyObject value, PyObject attr, PyObject ctx) { setValue(value); setAttr(attr); Modified: branches/astwrite/src/org/python/antlr/ast/AugAssign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -80,7 +81,14 @@ } @ExposedNew @ExposedMethod - public void AugAssign___init__(PyObject[] args, String[] keywords) {} + public void AugAssign___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("AugAssign", args, keywords, new String[] + {"target", "op", "value"}, 3); + setTarget(ap.getPyObject(0)); + setOp(ap.getPyObject(1)); + setValue(ap.getPyObject(2)); + } + public AugAssign(PyObject target, PyObject op, PyObject value) { setTarget(target); setOp(op); Modified: branches/astwrite/src/org/python/antlr/ast/BinOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -80,7 +81,14 @@ } @ExposedNew @ExposedMethod - public void BinOp___init__(PyObject[] args, String[] keywords) {} + public void BinOp___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("BinOp", args, keywords, new String[] + {"left", "op", "right"}, 3); + setLeft(ap.getPyObject(0)); + setOp(ap.getPyObject(1)); + setRight(ap.getPyObject(2)); + } + public BinOp(PyObject left, PyObject op, PyObject right) { setLeft(left); setOp(op); Modified: branches/astwrite/src/org/python/antlr/ast/BoolOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -67,7 +68,13 @@ } @ExposedNew @ExposedMethod - public void BoolOp___init__(PyObject[] args, String[] keywords) {} + public void BoolOp___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("BoolOp", args, keywords, new String[] + {"op", "values"}, 2); + setOp(ap.getPyObject(0)); + setValues(ap.getPyObject(1)); + } + public BoolOp(PyObject op, PyObject values) { setOp(op); setValues(values); Modified: branches/astwrite/src/org/python/antlr/ast/Break.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Break.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Break.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; Modified: branches/astwrite/src/org/python/antlr/ast/Call.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Call.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Call.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -107,7 +108,16 @@ } @ExposedNew @ExposedMethod - public void Call___init__(PyObject[] args, String[] keywords) {} + public void Call___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Call", args, keywords, new String[] + {"func", "args", "keywords", "starargs", "kwargs"}, 5); + setFunc(ap.getPyObject(0)); + setArgs(ap.getPyObject(1)); + setKeywords(ap.getPyObject(2)); + setStarargs(ap.getPyObject(3)); + setKwargs(ap.getPyObject(4)); + } + public Call(PyObject func, PyObject args, PyObject keywords, PyObject starargs, PyObject kwargs) { setFunc(func); Modified: branches/astwrite/src/org/python/antlr/ast/ClassDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -95,7 +96,15 @@ } @ExposedNew @ExposedMethod - public void ClassDef___init__(PyObject[] args, String[] keywords) {} + public void ClassDef___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("ClassDef", args, keywords, new String[] + {"name", "bases", "body", "decorator_list"}, 4); + setName(ap.getPyObject(0)); + setBases(ap.getPyObject(1)); + setBody(ap.getPyObject(2)); + setDecorator_list(ap.getPyObject(3)); + } + public ClassDef(PyObject name, PyObject bases, PyObject body, PyObject decorator_list) { setName(name); setBases(bases); Modified: branches/astwrite/src/org/python/antlr/ast/Compare.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -80,7 +81,14 @@ } @ExposedNew @ExposedMethod - public void Compare___init__(PyObject[] args, String[] keywords) {} + public void Compare___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Compare", args, keywords, new String[] + {"left", "ops", "comparators"}, 3); + setLeft(ap.getPyObject(0)); + setOps(ap.getPyObject(1)); + setComparators(ap.getPyObject(2)); + } + public Compare(PyObject left, PyObject ops, PyObject comparators) { setLeft(left); setOps(ops); Modified: branches/astwrite/src/org/python/antlr/ast/Continue.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Continue.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Continue.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; Modified: branches/astwrite/src/org/python/antlr/ast/Delete.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -54,7 +55,12 @@ } @ExposedNew @ExposedMethod - public void Delete___init__(PyObject[] args, String[] keywords) {} + public void Delete___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Delete", args, keywords, new String[] + {"targets"}, 1); + setTargets(ap.getPyObject(0)); + } + public Delete(PyObject targets) { setTargets(targets); } Modified: branches/astwrite/src/org/python/antlr/ast/Dict.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -67,7 +68,13 @@ } @ExposedNew @ExposedMethod - public void Dict___init__(PyObject[] args, String[] keywords) {} + public void Dict___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Dict", args, keywords, new String[] + {"keys", "values"}, 2); + setKeys(ap.getPyObject(0)); + setValues(ap.getPyObject(1)); + } + public Dict(PyObject keys, PyObject values) { setKeys(keys); setValues(values); Modified: branches/astwrite/src/org/python/antlr/ast/Ellipsis.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Ellipsis.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Ellipsis.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; Modified: branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -80,7 +81,14 @@ } @ExposedNew @ExposedMethod - public void ExceptHandler___init__(PyObject[] args, String[] keywords) {} + public void ExceptHandler___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("ExceptHandler", args, keywords, new String[] + {"excepttype", "name", "body"}, 3); + setExcepttype(ap.getPyObject(0)); + setName(ap.getPyObject(1)); + setBody(ap.getPyObject(2)); + } + public ExceptHandler(PyObject excepttype, PyObject name, PyObject body) { setExcepttype(excepttype); setName(name); Modified: branches/astwrite/src/org/python/antlr/ast/Exec.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -80,7 +81,14 @@ } @ExposedNew @ExposedMethod - public void Exec___init__(PyObject[] args, String[] keywords) {} + public void Exec___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Exec", args, keywords, new String[] + {"body", "globals", "locals"}, 3); + setBody(ap.getPyObject(0)); + setGlobals(ap.getPyObject(1)); + setLocals(ap.getPyObject(2)); + } + public Exec(PyObject body, PyObject globals, PyObject locals) { setBody(body); setGlobals(globals); Modified: branches/astwrite/src/org/python/antlr/ast/Expr.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -54,7 +55,12 @@ } @ExposedNew @ExposedMethod - public void Expr___init__(PyObject[] args, String[] keywords) {} + public void Expr___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Expr", args, keywords, new String[] + {"value"}, 1); + setValue(ap.getPyObject(0)); + } + public Expr(PyObject value) { setValue(value); } Modified: branches/astwrite/src/org/python/antlr/ast/Expression.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Expression.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Expression.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -53,7 +54,12 @@ } @ExposedNew @ExposedMethod - public void Expression___init__(PyObject[] args, String[] keywords) {} + public void Expression___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Expression", args, keywords, new String[] + {"body"}, 1); + setBody(ap.getPyObject(0)); + } + public Expression(PyObject body) { setBody(body); } Modified: branches/astwrite/src/org/python/antlr/ast/ExtSlice.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -53,7 +54,12 @@ } @ExposedNew @ExposedMethod - public void ExtSlice___init__(PyObject[] args, String[] keywords) {} + public void ExtSlice___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("ExtSlice", args, keywords, new String[] + {"dims"}, 1); + setDims(ap.getPyObject(0)); + } + public ExtSlice(PyObject dims) { setDims(dims); } Modified: branches/astwrite/src/org/python/antlr/ast/For.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/For.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/For.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -94,7 +95,15 @@ } @ExposedNew @ExposedMethod - public void For___init__(PyObject[] args, String[] keywords) {} + public void For___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("For", args, keywords, new String[] + {"target", "iter", "body", "orelse"}, 4); + setTarget(ap.getPyObject(0)); + setIter(ap.getPyObject(1)); + setBody(ap.getPyObject(2)); + setOrelse(ap.getPyObject(3)); + } + public For(PyObject target, PyObject iter, PyObject body, PyObject orelse) { setTarget(target); setIter(iter); Modified: branches/astwrite/src/org/python/antlr/ast/FunctionDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -95,7 +96,15 @@ } @ExposedNew @ExposedMethod - public void FunctionDef___init__(PyObject[] args, String[] keywords) {} + public void FunctionDef___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("FunctionDef", args, keywords, new String[] + {"name", "args", "body", "decorator_list"}, 4); + setName(ap.getPyObject(0)); + setArgs(ap.getPyObject(1)); + setBody(ap.getPyObject(2)); + setDecorator_list(ap.getPyObject(3)); + } + public FunctionDef(PyObject name, PyObject args, PyObject body, PyObject decorator_list) { setName(name); setArgs(args); Modified: branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -67,7 +68,13 @@ } @ExposedNew @ExposedMethod - public void GeneratorExp___init__(PyObject[] args, String[] keywords) {} + public void GeneratorExp___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("GeneratorExp", args, keywords, new String[] + {"elt", "generators"}, 2); + setElt(ap.getPyObject(0)); + setGenerators(ap.getPyObject(1)); + } + public GeneratorExp(PyObject elt, PyObject generators) { setElt(elt); setGenerators(generators); Modified: branches/astwrite/src/org/python/antlr/ast/Global.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Global.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Global.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -54,7 +55,12 @@ } @ExposedNew @ExposedMethod - public void Global___init__(PyObject[] args, String[] keywords) {} + public void Global___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Global", args, keywords, new String[] + {"names"}, 1); + setNames(ap.getPyObject(0)); + } + public Global(PyObject names) { setNames(names); } Modified: branches/astwrite/src/org/python/antlr/ast/If.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/If.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/If.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -80,7 +81,14 @@ } @ExposedNew @ExposedMethod - public void If___init__(PyObject[] args, String[] keywords) {} + public void If___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("If", args, keywords, new String[] + {"test", "body", "orelse"}, 3); + setTest(ap.getPyObject(0)); + setBody(ap.getPyObject(1)); + setOrelse(ap.getPyObject(2)); + } + public If(PyObject test, PyObject body, PyObject orelse) { setTest(test); setBody(body); Modified: branches/astwrite/src/org/python/antlr/ast/IfExp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/IfExp.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/IfExp.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -80,7 +81,14 @@ } @ExposedNew @ExposedMethod - public void IfExp___init__(PyObject[] args, String[] keywords) {} + public void IfExp___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("IfExp", args, keywords, new String[] + {"test", "body", "orelse"}, 3); + setTest(ap.getPyObject(0)); + setBody(ap.getPyObject(1)); + setOrelse(ap.getPyObject(2)); + } + public IfExp(PyObject test, PyObject body, PyObject orelse) { setTest(test); setBody(body); Modified: branches/astwrite/src/org/python/antlr/ast/Import.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Import.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Import.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -54,7 +55,12 @@ } @ExposedNew @ExposedMethod - public void Import___init__(PyObject[] args, String[] keywords) {} + public void Import___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Import", args, keywords, new String[] + {"names"}, 1); + setNames(ap.getPyObject(0)); + } + public Import(PyObject names) { setNames(names); } Modified: branches/astwrite/src/org/python/antlr/ast/ImportFrom.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ImportFrom.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/ImportFrom.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -81,7 +82,14 @@ } @ExposedNew @ExposedMethod - public void ImportFrom___init__(PyObject[] args, String[] keywords) {} + public void ImportFrom___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("ImportFrom", args, keywords, new String[] + {"module", "names", "level"}, 3); + setModule(ap.getPyObject(0)); + setNames(ap.getPyObject(1)); + setLevel(ap.getPyObject(2)); + } + public ImportFrom(PyObject module, PyObject names, PyObject level) { setModule(module); setNames(names); Modified: branches/astwrite/src/org/python/antlr/ast/Index.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Index.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Index.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -53,7 +54,12 @@ } @ExposedNew @ExposedMethod - public void Index___init__(PyObject[] args, String[] keywords) {} + public void Index___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Index", args, keywords, new String[] + {"value"}, 1); + setValue(ap.getPyObject(0)); + } + public Index(PyObject value) { setValue(value); } Modified: branches/astwrite/src/org/python/antlr/ast/Interactive.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Interactive.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Interactive.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -53,7 +54,12 @@ } @ExposedNew @ExposedMethod - public void Interactive___init__(PyObject[] args, String[] keywords) {} + public void Interactive___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Interactive", args, keywords, new String[] + {"body"}, 1); + setBody(ap.getPyObject(0)); + } + public Interactive(PyObject body) { setBody(body); } Modified: branches/astwrite/src/org/python/antlr/ast/Lambda.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Lambda.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Lambda.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -67,7 +68,13 @@ } @ExposedNew @ExposedMethod - public void Lambda___init__(PyObject[] args, String[] keywords) {} + public void Lambda___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Lambda", args, keywords, new String[] + {"args", "body"}, 2); + setArgs(ap.getPyObject(0)); + setBody(ap.getPyObject(1)); + } + public Lambda(PyObject args, PyObject body) { setArgs(args); setBody(body); Modified: branches/astwrite/src/org/python/antlr/ast/List.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/List.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/List.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -67,7 +68,13 @@ } @ExposedNew @ExposedMethod - public void List___init__(PyObject[] args, String[] keywords) {} + public void List___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("List", args, keywords, new String[] + {"elts", "ctx"}, 2); + setElts(ap.getPyObject(0)); + setCtx(ap.getPyObject(1)); + } + public List(PyObject elts, PyObject ctx) { setElts(elts); setCtx(ctx); Modified: branches/astwrite/src/org/python/antlr/ast/ListComp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ListComp.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/ListComp.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -67,7 +68,13 @@ } @ExposedNew @ExposedMethod - public void ListComp___init__(PyObject[] args, String[] keywords) {} + public void ListComp___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("ListComp", args, keywords, new String[] + {"elt", "generators"}, 2); + setElt(ap.getPyObject(0)); + setGenerators(ap.getPyObject(1)); + } + public ListComp(PyObject elt, PyObject generators) { setElt(elt); setGenerators(generators); Modified: branches/astwrite/src/org/python/antlr/ast/Module.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Module.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Module.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -53,7 +54,12 @@ } @ExposedNew @ExposedMethod - public void Module___init__(PyObject[] args, String[] keywords) {} + public void Module___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Module", args, keywords, new String[] + {"body"}, 1); + setBody(ap.getPyObject(0)); + } + public Module(PyObject body) { setBody(body); } Modified: branches/astwrite/src/org/python/antlr/ast/Name.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Name.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Name.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -68,7 +69,13 @@ } @ExposedNew @ExposedMethod - public void Name___init__(PyObject[] args, String[] keywords) {} + public void Name___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Name", args, keywords, new String[] + {"id", "ctx"}, 2); + setId(ap.getPyObject(0)); + setCtx(ap.getPyObject(1)); + } + public Name(PyObject id, PyObject ctx) { setId(id); setCtx(ctx); Modified: branches/astwrite/src/org/python/antlr/ast/Num.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Num.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Num.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -54,7 +55,12 @@ } @ExposedNew @ExposedMethod - public void Num___init__(PyObject[] args, String[] keywords) {} + public void Num___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Num", args, keywords, new String[] + {"n"}, 1); + setN(ap.getPyObject(0)); + } + public Num(PyObject n) { setN(n); } Modified: branches/astwrite/src/org/python/antlr/ast/Pass.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Pass.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Pass.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; Modified: branches/astwrite/src/org/python/antlr/ast/Print.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Print.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Print.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -81,7 +82,14 @@ } @ExposedNew @ExposedMethod - public void Print___init__(PyObject[] args, String[] keywords) {} + public void Print___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Print", args, keywords, new String[] + {"dest", "values", "nl"}, 3); + setDest(ap.getPyObject(0)); + setValues(ap.getPyObject(1)); + setNl(ap.getPyObject(2)); + } + public Print(PyObject dest, PyObject values, PyObject nl) { setDest(dest); setValues(values); Modified: branches/astwrite/src/org/python/antlr/ast/Raise.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Raise.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Raise.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -80,7 +81,14 @@ } @ExposedNew @ExposedMethod - public void Raise___init__(PyObject[] args, String[] keywords) {} + public void Raise___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Raise", args, keywords, new String[] + {"excepttype", "inst", "tback"}, 3); + setExcepttype(ap.getPyObject(0)); + setInst(ap.getPyObject(1)); + setTback(ap.getPyObject(2)); + } + public Raise(PyObject excepttype, PyObject inst, PyObject tback) { setExcepttype(excepttype); setInst(inst); Modified: branches/astwrite/src/org/python/antlr/ast/Repr.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Repr.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Repr.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -54,7 +55,12 @@ } @ExposedNew @ExposedMethod - public void Repr___init__(PyObject[] args, String[] keywords) {} + public void Repr___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Repr", args, keywords, new String[] + {"value"}, 1); + setValue(ap.getPyObject(0)); + } + public Repr(PyObject value) { setValue(value); } Modified: branches/astwrite/src/org/python/antlr/ast/Return.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Return.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Return.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -54,7 +55,12 @@ } @ExposedNew @ExposedMethod - public void Return___init__(PyObject[] args, String[] keywords) {} + public void Return___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Return", args, keywords, new String[] + {"value"}, 1); + setValue(ap.getPyObject(0)); + } + public Return(PyObject value) { setValue(value); } Modified: branches/astwrite/src/org/python/antlr/ast/Slice.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Slice.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Slice.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -79,7 +80,14 @@ } @ExposedNew @ExposedMethod - public void Slice___init__(PyObject[] args, String[] keywords) {} + public void Slice___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Slice", args, keywords, new String[] + {"lower", "upper", "step"}, 3); + setLower(ap.getPyObject(0)); + setUpper(ap.getPyObject(1)); + setStep(ap.getPyObject(2)); + } + public Slice(PyObject lower, PyObject upper, PyObject step) { setLower(lower); setUpper(upper); Modified: branches/astwrite/src/org/python/antlr/ast/Str.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Str.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Str.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -54,7 +55,12 @@ } @ExposedNew @ExposedMethod - public void Str___init__(PyObject[] args, String[] keywords) {} + public void Str___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Str", args, keywords, new String[] + {"s"}, 1); + setS(ap.getPyObject(0)); + } + public Str(PyObject s) { setS(s); } Modified: branches/astwrite/src/org/python/antlr/ast/Subscript.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Subscript.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Subscript.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -80,7 +81,14 @@ } @ExposedNew @ExposedMethod - public void Subscript___init__(PyObject[] args, String[] keywords) {} + public void Subscript___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Subscript", args, keywords, new String[] + {"value", "slice", "ctx"}, 3); + setValue(ap.getPyObject(0)); + setSlice(ap.getPyObject(1)); + setCtx(ap.getPyObject(2)); + } + public Subscript(PyObject value, PyObject slice, PyObject ctx) { setValue(value); setSlice(slice); Modified: branches/astwrite/src/org/python/antlr/ast/Suite.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Suite.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Suite.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -53,7 +54,12 @@ } @ExposedNew @ExposedMethod - public void Suite___init__(PyObject[] args, String[] keywords) {} + public void Suite___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Suite", args, keywords, new String[] + {"body"}, 1); + setBody(ap.getPyObject(0)); + } + public Suite(PyObject body) { setBody(body); } Modified: branches/astwrite/src/org/python/antlr/ast/TryExcept.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/TryExcept.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/TryExcept.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -80,7 +81,14 @@ } @ExposedNew @ExposedMethod - public void TryExcept___init__(PyObject[] args, String[] keywords) {} + public void TryExcept___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("TryExcept", args, keywords, new String[] + {"body", "handlers", "orelse"}, 3); + setBody(ap.getPyObject(0)); + setHandlers(ap.getPyObject(1)); + setOrelse(ap.getPyObject(2)); + } + public TryExcept(PyObject body, PyObject handlers, PyObject orelse) { setBody(body); setHandlers(handlers); Modified: branches/astwrite/src/org/python/antlr/ast/TryFinally.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/TryFinally.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/TryFinally.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -67,7 +68,13 @@ } @ExposedNew @ExposedMethod - public void TryFinally___init__(PyObject[] args, String[] keywords) {} + public void TryFinally___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("TryFinally", args, keywords, new String[] + {"body", "finalbody"}, 2); + setBody(ap.getPyObject(0)); + setFinalbody(ap.getPyObject(1)); + } + public TryFinally(PyObject body, PyObject finalbody) { setBody(body); setFinalbody(finalbody); Modified: branches/astwrite/src/org/python/antlr/ast/Tuple.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Tuple.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Tuple.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -67,7 +68,13 @@ } @ExposedNew @ExposedMethod - public void Tuple___init__(PyObject[] args, String[] keywords) {} + public void Tuple___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Tuple", args, keywords, new String[] + {"elts", "ctx"}, 2); + setElts(ap.getPyObject(0)); + setCtx(ap.getPyObject(1)); + } + public Tuple(PyObject elts, PyObject ctx) { setElts(elts); setCtx(ctx); Modified: branches/astwrite/src/org/python/antlr/ast/UnaryOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/UnaryOp.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/UnaryOp.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -67,7 +68,13 @@ } @ExposedNew @ExposedMethod - public void UnaryOp___init__(PyObject[] args, String[] keywords) {} + pub... [truncated message content] |
From: <fwi...@us...> - 2008-12-04 02:12:01
|
Revision: 5690 http://jython.svn.sourceforge.net/jython/?rev=5690&view=rev Author: fwierzbicki Date: 2008-12-04 02:11:59 +0000 (Thu, 04 Dec 2008) Log Message: ----------- Merged revisions 5687 via svnmerge from https://jython.svn.sourceforge.net/svnroot/jython/trunk/jython ........ r5687 | nriley | 2008-12-03 17:08:15 -0500 (Wed, 03 Dec 2008) | 1 line avoid test_asynchat on Windows too; refs #1064 ........ Modified Paths: -------------- branches/astwrite/Lib/test/test_asynchat.py Property Changed: ---------------- branches/astwrite/ Property changes on: branches/astwrite ___________________________________________________________________ Modified: svnmerge-integrated - /trunk/jython:1-5683 + /trunk/jython:1-5689 Modified: branches/astwrite/Lib/test/test_asynchat.py =================================================================== --- branches/astwrite/Lib/test/test_asynchat.py 2008-12-04 01:27:28 UTC (rev 5689) +++ branches/astwrite/Lib/test/test_asynchat.py 2008-12-04 02:11:59 UTC (rev 5690) @@ -7,7 +7,7 @@ import platform os_name = platform.java_ver()[3][0] -if os_name == 'Mac OS X' or 'BSD' in os_name: +if os_name == 'Mac OS X' or 'BSD' in os_name or 'Windows' in os_name: raise test_support.TestSkipped('test_asynchat deadlocks on Jython/BSD: ' 'http://bugs.jython.org/issue1064') This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |