def InitLexer(s, arena): """For tests only.""" match_func = match.MATCHER line_lexer = lexer.LineLexer(match_func, '', arena) line_reader = reader.StringLineReader(s, arena) lx = lexer.Lexer(line_lexer, line_reader) return line_reader, lx
def MakeParser(line_reader, arena): """Top level parser.""" line_lexer = lexer.LineLexer(_MakeMatcher(), '', arena) lx = lexer.Lexer(line_lexer, line_reader) w_parser = word_parse.WordParser(lx, line_reader) c_parser = cmd_parse.CommandParser(w_parser, lx, line_reader, arena) return w_parser, c_parser
def MakeParserForTop(line_reader, arena=None): """Top level parser.""" # AtEnd() is true line_lexer = lexer.LineLexer(lex.LEXER_DEF, '', arena=arena) lx = lexer.Lexer(line_lexer, line_reader) w_parser = word_parse.WordParser(lx, line_reader) c_parser = cmd_parse.CommandParser(w_parser, lx, line_reader) return w_parser, c_parser
def MakeWordParserForPlugin(self, code_str, arena): """FOr $PS1, etc. NOTE: Uses its own arena! I think that does nothing though? """ line_reader = reader.StringLineReader(code_str, arena) line_lexer = lexer.LineLexer(match.MATCHER, '', arena) lx = lexer.Lexer(line_lexer, line_reader) return word_parse.WordParser(self, lx, line_reader)
def MakeParserForCompletion(code_str, arena): """Parser for partial lines.""" # NOTE: We don't need to use a arena here? Or we need a "scratch arena" that # doesn't interfere with the rest of the program. line_reader = reader.StringLineReader(code_str, arena) line_lexer = lexer.LineLexer(_MakeMatcher(), '', arena) # AtEnd() is true lx = lexer.Lexer(line_lexer, line_reader) w_parser = word_parse.WordParser(lx, line_reader) c_parser = cmd_parse.CommandParser(w_parser, lx, line_reader, arena) return w_parser, c_parser
def MakeArithParser(self, code_str, arena): """ NOTE: We want to add tokens to a different arena, so we don't mess up the translation. """ line_reader = reader.StringLineReader(code_str, arena) line_lexer = lexer.LineLexer(match.MATCHER, '', arena) lx = lexer.Lexer(line_lexer, line_reader) w_parser = word_parse.WordParser(self, lx, line_reader, lex_mode=lex_mode_e.ARITH) a_parser = tdop.TdopParser(arith_parse.SPEC, w_parser) return a_parser
def MakeParserForCompletion(self, code_str, arena): """Parser for partial lines. NOTE: Uses its own arena! """ # NOTE: We don't need to use a arena here? Or we need a "scratch arena" # that doesn't interfere with the rest of the program. line_reader = reader.StringLineReader(code_str, arena) line_lexer = lexer.LineLexer(match.MATCHER, '', arena) # AtEnd() is true lx = lexer.Lexer(line_lexer, line_reader) w_parser = word_parse.WordParser(self, lx, line_reader) c_parser = cmd_parse.CommandParser(self, w_parser, lx, line_reader, arena=arena) return w_parser, c_parser
def MakeWordParserForHereDoc(self, line_reader): line_lexer = lexer.LineLexer(match.MATCHER, '', self.arena) lx = lexer.Lexer(line_lexer, line_reader) return word_parse.WordParser(self, lx, line_reader)
def MakeParser(self, line_reader): line_lexer = lexer.LineLexer(match.MATCHER, '', self.arena) lx = lexer.Lexer(line_lexer, line_reader) w_parser = word_parse.WordParser(self, lx, line_reader) c_parser = cmd_parse.CommandParser(self, w_parser, lx, line_reader) return w_parser, c_parser
def MakeWordParserForPlugin(code_str, arena): line_reader = reader.StringLineReader(code_str, arena) line_lexer = lexer.LineLexer(_MakeMatcher(), '', arena) lx = lexer.Lexer(line_lexer, line_reader) return word_parse.WordParser(lx, line_reader)
def MakeWordParserForHereDoc(lines, arena): line_reader = reader.VirtualLineReader(lines, arena) line_lexer = lexer.LineLexer(_MakeMatcher(), '', arena) lx = lexer.Lexer(line_lexer, line_reader) return word_parse.WordParser(lx, line_reader)
def MakeWordParserForHereDoc(lines): line_reader = reader.VirtualLineReader(lines) line_lexer = lexer.LineLexer(lex.LEXER_DEF, '') lx = lexer.Lexer(line_lexer, line_reader) return word_parse.WordParser(lx, line_reader)
def InitLexer(s, arena=None): """For tests only.""" line_lexer = lexer.LineLexer(lex.LEXER_DEF, '', arena=arena) line_reader = reader.StringLineReader(s, arena=arena) lx = lexer.Lexer(line_lexer, line_reader) return line_reader, lx