def load(self): from inclexer.inclexer import IncrementalLexerCF lexer = IncrementalLexerCF() names = [] regexs = [] for n, r in lexingrules: names.append(n) regexs.append(r) lexer.from_name_and_regex(names, regexs) parser = RubyParser() parser.init_ast() return parser, lexer
def create_lexer(self): names = [] regexs = [] for name, regex in self.lrules: names.append(name) self.all_terminals.add(name) regexs.append(regex) # add so far undefined terminals undefined_terminals = self.terminals.difference(set(names)) import re for t in undefined_terminals: names.insert(0, t) regexs.insert(0, re.escape(t)) self.inclexer = IncrementalLexerCF() self.inclexer.from_name_and_regex(names, regexs) if self.indentation_based(): self.inclexer.indentation_based = True