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] |