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()
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()
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))
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))
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 __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()