From: <pj...@us...> - 2009-04-08 01:23:15
|
Revision: 6188 http://jython.svn.sourceforge.net/jython/?rev=6188&view=rev Author: pjenvey Date: 2009-04-08 01:23:13 +0000 (Wed, 08 Apr 2009) Log Message: ----------- o reapply our compiler workarounds from r4114 o support compiler.compile via builtin compile Modified Paths: -------------- trunk/jython/Lib/compiler/pycodegen.py trunk/jython/Lib/compiler/transformer.py Modified: trunk/jython/Lib/compiler/pycodegen.py =================================================================== --- trunk/jython/Lib/compiler/pycodegen.py 2009-04-08 01:14:13 UTC (rev 6187) +++ trunk/jython/Lib/compiler/pycodegen.py 2009-04-08 01:23:13 UTC (rev 6188) @@ -4,14 +4,18 @@ import struct import sys from cStringIO import StringIO +is_jython = sys.platform.startswith('java') from compiler import ast, parse, walk, syntax -from compiler import pyassem, misc, future, symbols +from compiler import misc, future, symbols from compiler.consts import SC_LOCAL, SC_GLOBAL, SC_FREE, SC_CELL from compiler.consts import (CO_VARARGS, CO_VARKEYWORDS, CO_NEWLOCALS, CO_NESTED, CO_GENERATOR, CO_FUTURE_DIVISION, CO_FUTURE_ABSIMPORT, CO_FUTURE_WITH_STATEMENT) -from compiler.pyassem import TupleArg +if not is_jython: + from compiler.pyassem import TupleArg +else: + TupleArg = None # XXX The version-specific code can go, since this code only works with 2.x. # Do we have Python 1.x or Python 2.x? @@ -47,22 +51,26 @@ mod.dump(f) f.close() -def compile(source, filename, mode, flags=None, dont_inherit=None): - """Replacement for builtin compile() function""" - if flags is not None or dont_inherit is not None: - raise RuntimeError, "not implemented yet" +if is_jython: + # use __builtin__ compile + compile = compile +else: + def compile(source, filename, mode, flags=None, dont_inherit=None): + """Replacement for builtin compile() function""" + if flags is not None or dont_inherit is not None: + raise RuntimeError, "not implemented yet" - if mode == "single": - gen = Interactive(source, filename) - elif mode == "exec": - gen = Module(source, filename) - elif mode == "eval": - gen = Expression(source, filename) - else: - raise ValueError("compile() 3rd arg must be 'exec' or " - "'eval' or 'single'") - gen.compile() - return gen.code + if mode == "single": + gen = Interactive(source, filename) + elif mode == "exec": + gen = Module(source, filename) + elif mode == "eval": + gen = Expression(source, filename) + else: + raise ValueError("compile() 3rd arg must be 'exec' or " + "'eval' or 'single'") + gen.compile() + return gen.code class AbstractCompileMode: @@ -119,7 +127,7 @@ f.write(self.getPycHeader()) marshal.dump(self.code, f) - MAGIC = imp.get_magic() + MAGIC = None if is_jython else imp.get_magic() def getPycHeader(self): # compile.c uses marshal to write a long directly, with Modified: trunk/jython/Lib/compiler/transformer.py =================================================================== --- trunk/jython/Lib/compiler/transformer.py 2009-04-08 01:14:13 UTC (rev 6187) +++ trunk/jython/Lib/compiler/transformer.py 2009-04-08 01:23:13 UTC (rev 6188) @@ -26,10 +26,11 @@ # and replace OWNER, ORGANIZATION, and YEAR as appropriate. from compiler.ast import * -import parser import symbol import token import sys +if not sys.platform.startswith('java'): + import parser class WalkerError(StandardError): pass This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |