示例#1
0
class LexerState(object):
    def __init__(self,lexer,*args):
        """Holds a revertable Lexer state"""
        self.lexer=lexer
        if len(args)==0:
            self.current_lexeme = None
            self.line=self.lexer.reader.state.line
            self.column=self.lexer.reader.state.column
            self.reader_state = self.lexer.reader.state
        elif len(args)==1:
            self.reader_state = CharacterState(self.lexer.reader,self.lexer.reader.state)
            lexer_state = args[0]
            self.line=lexer_state.line
            self.column=lexer_state.column
            self.current_lexeme = lexer_state.current_lexeme



    def next(self, lexeme):
        self.line = self.lexer.reader.state.line
        self.column = self.lexer.reader.state.column
        self.current_lexeme = lexeme

    def revert(self):
        self.lexer.state = self
        self.reader_state.revert()
示例#2
0
class LexerState(object):
    def __init__(self, lexer, *args):
        """Holds a revertable Lexer state"""
        self.lexer = lexer
        if len(args) == 0:
            self.current_lexeme = None
            self.line = self.lexer.reader.state.line
            self.column = self.lexer.reader.state.column
            self.reader_state = self.lexer.reader.state
        elif len(args) == 1:
            self.reader_state = CharacterState(self.lexer.reader,
                                               self.lexer.reader.state)
            lexer_state = args[0]
            self.line = lexer_state.line
            self.column = lexer_state.column
            self.current_lexeme = lexer_state.current_lexeme

    def next(self, lexeme):
        self.line = self.lexer.reader.state.line
        self.column = self.lexer.reader.state.column
        self.current_lexeme = lexeme

    def revert(self):
        self.lexer.state = self
        self.reader_state.revert()
示例#3
0
class CharacterReader(object):
    def __init__(self, file, str_in=False):
        self.source_file = None
        self.state = CharacterState(self)
        self.source_file = SourceFile(file, str_in)
        self.source_file.open("rb")
        self.next()

    def next(self):
        if self.source_file.peek(1) != "":
            self.state.next(self.source_file.read(1))
示例#4
0
class CharacterReader(object):

    def __init__(self,file,str_in=False):
        self.source_file = None
        self.state = CharacterState(self)
        self.source_file = SourceFile(file,str_in)
        self.source_file.open("rb")
        self.next()

    def next(self):
        if self.source_file.peek(1) !="":
            self.state.next(self.source_file.read(1))
示例#5
0
 def __init__(self,file,str_in=False):
     self.source_file = None
     self.state = CharacterState(self)
     self.source_file = SourceFile(file,str_in)
     self.source_file.open("rb")
     self.next()
示例#6
0
 def __init__(self, file, str_in=False):
     self.source_file = None
     self.state = CharacterState(self)
     self.source_file = SourceFile(file, str_in)
     self.source_file.open("rb")
     self.next()