Esempio n. 1
0
 def finish_for_in_stat(lexer, name):
     name_list = StatParser.finish_name_list(lexer, name)
     lexer.get_next_token_of_kind(TokenKind.KW_IN)
     exp_list = ExpParser.parse_exp_list(lexer)
     line_of_do, _ = lexer.get_next_token_of_kind(TokenKind.KW_DO)
     block = Parser.parse_block(lexer)
     lexer.get_next_token_of_kind(TokenKind.KW_END)
     return lua_stat.ForInStat(line_of_do, name_list, exp_list, block)
Esempio n. 2
0
 def finish_local_var_decl_stat(lexer):
     _, name0 = lexer.get_next_identifier()
     name_list = StatParser.finish_name_list(lexer, name0)
     exp_list = []
     if lexer.look_ahead() == TokenKind.OP_ASSIGN:
         lexer.get_next_token()
         exp_list = ExpParser.parse_exp_list(lexer)
     last_line = lexer.get_line()
     return lua_stat.LocalVarDeclStat(last_line, name_list, exp_list)
Esempio n. 3
0
    def parse_ret_exps(lexer):
        if lexer.look_ahead() != TokenKind.KW_RETURN:
            return None

        lexer.get_next_token()
        kind = lexer.look_ahead()
        if kind in (TokenKind.EOF, TokenKind.KW_END, TokenKind.KW_ELSE,
                    TokenKind.KW_ELSEIF, TokenKind.KW_UNTIL):
            return []
        if kind == TokenKind.SEP_SEMI:
            lexer.get_next_token()
            return []

        exps = ExpParser.parse_exp_list(lexer)
        if lexer.look_ahead() == TokenKind.SEP_SEMI:
            lexer.get_next_token()
        return exps
Esempio n. 4
0
 def parse_assign_stat(lexer, var0):
     var_list = StatParser.finish_var_list(lexer, var0)
     lexer.get_next_token_of_kind(TokenKind.OP_ASSIGN)
     exp_list = ExpParser.parse_exp_list(lexer)
     last_line = lexer.get_line()
     return lua_stat.AssignStat(last_line, var_list, exp_list)