Commit ecd248ed authored by Robert Bradshaw's avatar Robert Bradshaw

more bootstrap tweaks

parent 99327e65
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
raw_prefixes = "rR" raw_prefixes = "rR"
string_prefixes = "cCuUbB" string_prefixes = "cCuUbB"
IDENT = 'IDENT'
def make_lexicon(): def make_lexicon():
from Cython.Plex import \ from Cython.Plex import \
...@@ -82,7 +83,7 @@ def make_lexicon(): ...@@ -82,7 +83,7 @@ def make_lexicon():
comment = Str("#") + Rep(AnyBut("\n")) comment = Str("#") + Rep(AnyBut("\n"))
return Lexicon([ return Lexicon([
(name, 'IDENT'), (name, IDENT),
(intliteral, 'INT'), (intliteral, 'INT'),
(fltconst, 'FLOAT'), (fltconst, 'FLOAT'),
(imagconst, 'IMAG'), (imagconst, 'IMAG'),
......
...@@ -756,7 +756,8 @@ class CVarDefNode(StatNode): ...@@ -756,7 +756,8 @@ class CVarDefNode(StatNode):
entry = dest_scope.declare_cfunction(name, type, declarator.pos, entry = dest_scope.declare_cfunction(name, type, declarator.pos,
cname = cname, visibility = self.visibility, in_pxd = self.in_pxd, cname = cname, visibility = self.visibility, in_pxd = self.in_pxd,
api = self.api) api = self.api)
entry.pxd_locals = self.pxd_locals if entry is not None:
entry.pxd_locals = self.pxd_locals
else: else:
if self.in_pxd and self.visibility != 'extern': if self.in_pxd and self.visibility != 'extern':
error(self.pos, error(self.pos,
......
...@@ -11,11 +11,14 @@ import stat ...@@ -11,11 +11,14 @@ import stat
import sys import sys
from time import time 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 import Plex, Utils
from Cython.Plex.Scanners import Scanner from Cython.Plex.Scanners import Scanner
from Cython.Plex.Errors import UnrecognizedInput from Cython.Plex.Errors import UnrecognizedInput
from Errors import CompileError, error 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 from StringEncoding import EncodedString
...@@ -168,6 +171,7 @@ def build_resword_dict(): ...@@ -168,6 +171,7 @@ def build_resword_dict():
d[word] = 1 d[word] = 1
return d return d
cython.declare(resword_dict=object)
resword_dict = build_resword_dict() resword_dict = build_resword_dict()
#------------------------------------------------------------------ #------------------------------------------------------------------
...@@ -407,7 +411,7 @@ class PyrexScanner(Scanner): ...@@ -407,7 +411,7 @@ class PyrexScanner(Scanner):
sy, systring = self.read() sy, systring = self.read()
except UnrecognizedInput: except UnrecognizedInput:
self.error("Unrecognized character") self.error("Unrecognized character")
if sy == 'IDENT': if sy == IDENT:
if systring in resword_dict: if systring in resword_dict:
sy = systring sy = systring
else: else:
...@@ -447,7 +451,7 @@ class PyrexScanner(Scanner): ...@@ -447,7 +451,7 @@ class PyrexScanner(Scanner):
self.expected(what, message) self.expected(what, message)
def expect_keyword(self, what, message = None): 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() self.next()
else: else:
self.expected(what, message) self.expected(what, message)
......
import cython import cython
cdef class Scanner: cdef class Scanner:
cdef public lexicon cdef public lexicon
cdef public stream cdef public stream
cdef public name cdef public name
...@@ -20,12 +21,13 @@ cdef class Scanner: ...@@ -20,12 +21,13 @@ cdef class Scanner:
cdef public bint trace cdef public bint trace
cdef public cur_char cdef public cur_char
cdef public input_state cdef public input_state
cdef public level # int? cdef public level
cpdef next_char(self): cpdef next_char(self):
cdef: cdef:
long input_state long input_state
cpdef read(self)
cpdef run_machine_inlined(self): cpdef run_machine_inlined(self):
cdef: cdef:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment