Пример #1
0
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
Пример #2
0
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
Пример #3
0
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
Пример #4
0
    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)
Пример #5
0
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
Пример #6
0
 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
Пример #7
0
    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
Пример #8
0
 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)
Пример #9
0
 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
Пример #10
0
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)
Пример #11
0
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)
Пример #12
0
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)
Пример #13
0
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