Exemplo n.º 1
0
def p_stmt_print_cond_postfix_assign(p):
    'stmt : if_assign IF condition_list ELSE expression SPLIT'
    p[0] = DyqExecute(action='assign',
                      params=[
                          p[1][0],
                          DyqExecute(action='condition',
                                     params=[p[3], p[1][1], p[5]])
                      ])
Exemplo n.º 2
0
def p_stmt_print_cond(p):
    '''
    stmt : IF condition_list COLON stmt_print SPLIT
                   | IF condition_list COLON SPLIT stmt_print SPLIT
    '''
    # 分为上面两种情况,一个stmt的位置在4,一个在5(0开始计数)
    if len(p) < 7:
        p[0] = DyqExecute(action='condition', params=[p[2], p[4]])
    else:
        p[0] = DyqExecute(action='condition', params=[p[2], p[5]])
Exemplo n.º 3
0
def p_condition_list(p):
    '''
    condition_list : expression
                   | condition_list AND expression
                   | condition_list OR expression
    '''

    if len(p) > 2:
        p[0] = DyqExecute(action='logop', params=p[1:])
    else:
        p[0] = p[1]
Exemplo n.º 4
0
def p_expression_two_operator(p):
    '''
    expression : expression ADD expression
               | expression REM expression
               | expression MUL expression
               | expression DIV expression
               | expression MOD expression
               | expression GT expression
               | expression LT expression
               | expression GE expression
               | expression LE expression
               | expression EQ expression
               | expression NE expression
               | expression POW expression
    '''
    p[0] = DyqExecute(action='binop', params=p[1:])
Exemplo n.º 5
0
def p_stmt_print_assign(p):
    '''
    stmt : ID ASSIGN expression SPLIT
                   | ID ASSIGN condition_list SPLIT
    '''
    p[0] = DyqExecute(action='assign', params=[p[1], p[3]])
Exemplo n.º 6
0
def p_stmt_print_cond_postfix_else(p):
    'stmt : stmt_print IF condition_list ELSE stmt_print SPLIT'
    p[0] = DyqExecute(action='condition', params=[p[3], p[1], p[5]])
Exemplo n.º 7
0
def p_stmt_print_for(p):
    'stmt : FOR ID IN range COLON stmt_print SPLIT'
    p[0] = DyqExecute(action='loop', params=[p[2], p[4], p[6]])
Exemplo n.º 8
0
def p_stmt_print_print(p):
    '''
    stmt_print : PRINT LPAREN expr_list RPAREN
    '''
    p[0] = DyqExecute(action='print', params=p[3])
Exemplo n.º 9
0
def p_expression_var(p):
    'expression : ID'
    p[0] = DyqExecute(action='get', params=[p[1]])