[pypy-svn] r45046 - in pypy/dist/pypy/interpreter/pyparser: . test
justas at codespeak.net
justas at codespeak.net
Sat Jul 14 10:30:29 CEST 2007
Author: justas
Date: Sat Jul 14 10:30:29 2007
New Revision: 45046
Modified:
pypy/dist/pypy/interpreter/pyparser/astbuilder.py
pypy/dist/pypy/interpreter/pyparser/asthelper.py
pypy/dist/pypy/interpreter/pyparser/pythonparse.py
pypy/dist/pypy/interpreter/pyparser/test/test_astbuilder_future.py
Log:
A flag to enable a chosen grammar and its build rules
Modified: pypy/dist/pypy/interpreter/pyparser/astbuilder.py
==============================================================================
--- pypy/dist/pypy/interpreter/pyparser/astbuilder.py (original)
+++ pypy/dist/pypy/interpreter/pyparser/astbuilder.py Sat Jul 14 10:30:29 2007
@@ -11,6 +11,7 @@
#import pypy.interpreter.pyparser.pytoken as tok
from pypy.interpreter.pyparser.error import SyntaxError
from pypy.interpreter.pyparser.parsestring import parsestr
+from pypy.interpreter.pyparser.pythonparse import ENABLE_GRAMMAR_VERSION
from pypy.interpreter.gateway import interp2app
from asthelper import *
@@ -888,6 +889,7 @@
"""
atoms = peek_atoms(builder, nb)
feature_name = atoms[0].get_value()
+ assert type(feature_name) is str
space = builder.space
w_feature_code = space.appexec([space.wrap(feature_name)],
"""(feature):
@@ -1060,8 +1062,6 @@
'while_stmt' : build_while_stmt,
'import_name' : build_import_name,
'import_from' : build_import_from,
- 'future_import_feature': build_future_import_feature,
- 'import_from_future': build_import_from,
'yield_stmt' : build_yield_stmt,
'continue_stmt' : build_continue_stmt,
'del_stmt' : build_del_stmt,
@@ -1087,7 +1087,8 @@
class AstBuilder(BaseGrammarBuilder):
"""A builder that directly produce the AST"""
- def __init__(self, parser, debug=0, space=None):
+ def __init__(self, parser, debug=0, space=None,
+ grammar_version=ENABLE_GRAMMAR_VERSION):
BaseGrammarBuilder.__init__(self, parser, debug)
self.rule_stack = []
self.space = space
@@ -1095,6 +1096,11 @@
self.with_enabled = False
self.build_rules = ASTRULES_Template
self.user_build_rules = {}
+ if grammar_version >= "2.5":
+ self.build_rules.update({
+ 'future_import_feature': build_future_import_feature,
+ 'import_from_future': build_import_from,
+ })
def enable_with(self):
if self.with_enabled:
Modified: pypy/dist/pypy/interpreter/pyparser/asthelper.py
==============================================================================
--- pypy/dist/pypy/interpreter/pyparser/asthelper.py (original)
+++ pypy/dist/pypy/interpreter/pyparser/asthelper.py Sat Jul 14 10:30:29 2007
@@ -562,8 +562,10 @@
class TokenObject(ast.Node):
"""A simple object used to wrap a rule or token"""
+
def __init__(self, name, value, lineno, parser):
self.name = name
+ assert value is None or type(value) is str
self.value = value
self.count = 0
# self.line = 0 # src.getline()
Modified: pypy/dist/pypy/interpreter/pyparser/pythonparse.py
==============================================================================
--- pypy/dist/pypy/interpreter/pyparser/pythonparse.py (original)
+++ pypy/dist/pypy/interpreter/pyparser/pythonparse.py Sat Jul 14 10:30:29 2007
@@ -28,6 +28,8 @@
from codeop import PyCF_DONT_IMPLY_DEDENT
+ENABLE_GRAMMAR_VERSION = "2.4"
+
## files encoding management ############################################
_recode_to_utf8 = gateway.applevel(r'''
@@ -165,7 +167,7 @@
# recompute first sets
self.build_first_sets()
-def make_pyparser(version="2.4"):
+def make_pyparser(version=ENABLE_GRAMMAR_VERSION):
parser = PythonParser()
return build_parser_for_version(version, parser=parser)
Modified: pypy/dist/pypy/interpreter/pyparser/test/test_astbuilder_future.py
==============================================================================
--- pypy/dist/pypy/interpreter/pyparser/test/test_astbuilder_future.py (original)
+++ pypy/dist/pypy/interpreter/pyparser/test/test_astbuilder_future.py Sat Jul 14 10:30:29 2007
@@ -57,7 +57,8 @@
def setup_method(self, method):
self.builder = astbuilder.AstBuilder(
- self.parser, space=FakeSpaceForFeatureLookup())
+ self.parser, space=FakeSpaceForFeatureLookup(),
+ grammar_version="2.5a")
def test_future_rules(self):
assert (self.builder.build_rules['future_import_feature'] is
More information about the Pypy-commit
mailing list