[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