コード例 #1
0
ファイル: exp_parser.py プロジェクト: 583004700/IdeaProjects
 def parse_exp7(lexer):
     exp = ExpParser.parse_exp6(lexer)
     while lexer.look_ahead() == TokenKind.OP_BAND:
         line, op, _ = lexer.get_next_token()
         bor = lua_exp.BinopExp(line, op, exp, ExpParser.parse_exp8(lexer))
         exp = Optimizer.optimize_bitwise_binary_op(bor)
     return exp
コード例 #2
0
ファイル: exp_parser.py プロジェクト: 583004700/IdeaProjects
 def parse_exp11(lexer):
     exp = ExpParser.parse_exp10(lexer)
     while lexer.look_ahead() == TokenKind.OP_AND:
         line, op, _ = lexer.get_next_token()
         lor = lua_exp.BinopExp(line, op, exp, ExpParser.parse_exp10(lexer))
         exp = Optimizer.optimize_logical_and(lor)
     return exp
コード例 #3
0
ファイル: exp_parser.py プロジェクト: 583004700/IdeaProjects
 def parse_exp6(lexer):
     exp = ExpParser.parse_exp5(lexer)
     if lexer.look_ahead() in (TokenKind.OP_SHL, TokenKind.OP_SHR):
         line, op, _ = lexer.get_next_token()
         shx = lua_exp.BinopExp(line, op, exp, ExpParser.parse_exp5(lexer))
         exp = Optimizer.optimize_bitwise_binary_op(shx)
     else:
         return exp
     return exp
コード例 #4
0
ファイル: exp_parser.py プロジェクト: 583004700/IdeaProjects
 def parse_exp10(lexer):
     exp = ExpParser.parse_exp9(lexer)
     while True:
         kind = lexer.look_ahead()
         if kind in (TokenKind.OP_LT, TokenKind.OP_GT, TokenKind.OP_NE,
                     TokenKind.OP_LE, TokenKind.OP_GE, TokenKind.OP_EQ):
             line, op, _ = lexer.get_next_token()
             exp = lua_exp.BinopExp(line, op, exp, ExpParser.parse_exp9(lexer))
         else:
             return exp
コード例 #5
0
ファイル: exp_parser.py プロジェクト: 583004700/IdeaProjects
 def parse_exp3(lexer):
     exp = ExpParser.parse_exp2(lexer)
     while True:
         if lexer.look_ahead() in (TokenKind.OP_MUL, TokenKind.OP_MOD, TokenKind.OP_DIV, TokenKind.OP_IDIV):
             line, op, _ = lexer.get_next_token()
             arith = lua_exp.BinopExp(line, op, exp, ExpParser.parse_exp2(lexer))
             exp = Optimizer.optimize_arith_binary_op(arith)
         else:
             break
     return exp
コード例 #6
0
ファイル: exp_parser.py プロジェクト: 583004700/IdeaProjects
 def parse_exp1(lexer):
     exp = ExpParser.parse_exp0(lexer)
     if lexer.look_ahead() == TokenKind.OP_POW:
         line, op, _ = lexer.get_next_token()
         exp = lua_exp.BinopExp(line, op, exp, ExpParser.parse_exp2(lexer))
     return Optimizer.optimize_pow(exp)