more bootstrap tweaks
authorRobert Bradshaw <robertwb@math.washington.edu>
Tue, 11 Nov 2008 20:26:03 +0000 (12:26 -0800)
committerRobert Bradshaw <robertwb@math.washington.edu>
Tue, 11 Nov 2008 20:26:03 +0000 (12:26 -0800)
Cython/Compiler/Lexicon.py
Cython/Compiler/Nodes.py
Cython/Compiler/Scanning.py
Cython/Plex/Scanners.pxd

index 6b13ecd59aed08e5a27b524432f2c331ed623b5f..53e70c64142eda17b11c54ff15c127efc3cd3288 100644 (file)
@@ -7,6 +7,7 @@
 
 raw_prefixes = "rR"
 string_prefixes = "cCuUbB"
+IDENT = 'IDENT'
 
 def make_lexicon():
     from Cython.Plex import \
@@ -82,7 +83,7 @@ def make_lexicon():
     comment = Str("#") + Rep(AnyBut("\n"))    
     
     return Lexicon([
-        (name, 'IDENT'),
+        (name, IDENT),
         (intliteral, 'INT'),
         (fltconst, 'FLOAT'),
         (imagconst, 'IMAG'),
index 59f00c941278505de3117fa4d78a58c54a251fa8..67e670496c11650c6e6b8defb1f0f5a53ab946ab 100644 (file)
@@ -756,7 +756,8 @@ class CVarDefNode(StatNode):
                 entry = dest_scope.declare_cfunction(name, type, declarator.pos,
                     cname = cname, visibility = self.visibility, in_pxd = self.in_pxd,
                     api = self.api)
-                entry.pxd_locals = self.pxd_locals
+                if entry is not None:
+                    entry.pxd_locals = self.pxd_locals
             else:
                 if self.in_pxd and self.visibility != 'extern':
                     error(self.pos, 
index 797ba7b8e09665fc12ac440be9605d09aef431fb..b19d67f72272b04dd7e4ba41b5faae1d683ce3a8 100644 (file)
@@ -11,11 +11,14 @@ import stat
 import sys
 from time import time
 
+import cython
+cython.declare(EncodedString=object, string_prefixes=object, raw_prefixes=object, IDENT=object)
+
 from Cython import Plex, Utils
 from Cython.Plex.Scanners import Scanner
 from Cython.Plex.Errors import UnrecognizedInput
 from Errors import CompileError, error
-from Lexicon import string_prefixes, raw_prefixes, make_lexicon
+from Lexicon import string_prefixes, raw_prefixes, make_lexicon, IDENT
 
 from StringEncoding import EncodedString
 
@@ -168,6 +171,7 @@ def build_resword_dict():
         d[word] = 1
     return d
 
+cython.declare(resword_dict=object)
 resword_dict = build_resword_dict()
 
 #------------------------------------------------------------------
@@ -407,7 +411,7 @@ class PyrexScanner(Scanner):
             sy, systring = self.read()
         except UnrecognizedInput:
             self.error("Unrecognized character")
-        if sy == 'IDENT':
+        if sy == IDENT:
             if systring in resword_dict:
                 sy = systring
             else:
@@ -447,7 +451,7 @@ class PyrexScanner(Scanner):
             self.expected(what, message)
     
     def expect_keyword(self, what, message = None):
-        if self.sy == 'IDENT' and self.systring == what:
+        if self.sy == IDENT and self.systring == what:
             self.next()
         else:
             self.expected(what, message)
index 1416ce0d44d61348319c630b6e15e610d2b06185..e20b80faa6e2344c30f41f6a06d62b02e20c556a 100644 (file)
@@ -1,6 +1,7 @@
 import cython
 
 cdef class Scanner:
+
     cdef public lexicon
     cdef public stream
     cdef public name
@@ -20,12 +21,13 @@ cdef class Scanner:
     cdef public bint trace
     cdef public cur_char
     cdef public input_state
-    
-    cdef public level # int?
+
+    cdef public level
     
     cpdef next_char(self):
         cdef:
             long input_state
+    cpdef read(self)
     
     cpdef run_machine_inlined(self):
         cdef: