Commit d037a456 authored by Stefan Behnel's avatar Stefan Behnel

more cythonisation in the scanner/parser

parent 698b502d
cdef class Action:
cdef perform(self, token_stream, text)
cpdef same_as(self, other)
cdef class Return(Action):
cdef object value
cdef perform(self, token_stream, text)
cpdef same_as(self, other)
cdef class Call(Action):
cdef object function
cdef perform(self, token_stream, text)
cpdef same_as(self, other)
cdef class Begin(Action):
cdef object state_name
cdef perform(self, token_stream, text)
cpdef same_as(self, other)
cdef class Ignore(Action):
cdef perform(self, token_stream, text)
cdef class Text(Action):
cdef perform(self, token_stream, text)
......@@ -8,6 +8,9 @@
class Action(object):
def perform(self, token_stream, text):
pass # abstract
def same_as(self, other):
return self is other
......@@ -18,8 +21,6 @@ class Return(Action):
be returned as the value of the associated token
"""
value = None
def __init__(self, value):
self.value = value
......@@ -38,8 +39,6 @@ class Call(Action):
Internal Plex action which causes a function to be called.
"""
function = None
def __init__(self, function):
self.function = function
......@@ -60,8 +59,6 @@ class Begin(Action):
for more information.
"""
state_name = None
def __init__(self, state_name):
self.state_name = state_name
......@@ -88,7 +85,7 @@ class Ignore(Action):
return "IGNORE"
IGNORE = Ignore()
IGNORE.__doc__ = Ignore.__doc__
#IGNORE.__doc__ = Ignore.__doc__
class Text(Action):
"""
......@@ -104,6 +101,6 @@ class Text(Action):
return "TEXT"
TEXT = Text()
TEXT.__doc__ = Text.__doc__
#TEXT.__doc__ = Text.__doc__
import cython
from Cython.Plex.Actions cimport Action
cdef class Scanner:
cdef public lexicon
......@@ -26,6 +28,7 @@ cdef class Scanner:
@cython.locals(input_state=long)
cdef next_char(self)
@cython.locals(action=Action)
cdef tuple read(self)
cdef tuple scan_a_token(self)
cdef tuple position(self)
......
......@@ -87,6 +87,7 @@ else:
def compile_cython_modules(profile=False):
source_root = os.path.abspath(os.path.dirname(__file__))
compiled_modules = ["Cython.Plex.Scanners",
"Cython.Plex.Actions",
"Cython.Compiler.Scanning",
"Cython.Compiler.Parsing",
"Cython.Compiler.Visitor",
......
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