Пример #1
0
def p_expression_logop(p):
    '''expression : expression MAIOR expression
                  | expression MENOR expression
                  | expression MAIOREQUALS expression
                  | expression MENOREQUALS expression
                  | expression EQUALS expression
                  | expression DIFF expression
                  | expression AND expression
                  | expression OR expression'''
    if p[2] == '>':
        p[0] = p[1] > p[3]
    elif p[2] == '<':
        p[0] = p[1] < p[3]
    elif p[2] == '>=':
        p[0] = p[1] >= p[3]
    elif p[2] == '<=':
        p[0] = p[1] <= p[3]
    elif p[2] == '==':
        p[0] = p[1] == p[3]
    elif p[2] == '!=':
        p[0] = p[1] != p[3]
    elif p[2] == '&&':
        p[0] = p[1] and p[3]
    elif p[2] == '||':
        p[0] = p[1] or p[3]
    else:
        errors.unknownSignal(p)
Пример #2
0
def p_binary_operators(p):
    '''expression : expression PLUS expression
                  | expression MINUS expression
                  | expression TIMES expression
                  | expression DIVIDE expression
    '''
    if p[2] == '+':
        p[0] = p[1] + p[3]
    elif p[2] == '-':
        p[0] = p[1] - p[3]
    elif p[2] == '*':
        p[0] = p[1] * p[3]
    elif p[2] == '/':
        p[0] = p[1] / p[3]
    else:
        errors.unknownSignal(p)
Пример #3
0
def p_expression_logop(t):
    '''expression : expression MAIOR expression
                  | expression MENOR expression
                  | expression MAIOREQUALS expression
                  | expression MENOREQUALS expression
                  | expression EQUALS expression
                  | expression DIFF expression
                  | expression AND expression
                  | expression OR expression'''
    if t[2] == '>': t[0] = t[1] > t[3]
    elif t[2] == '<': t[0] = t[1] < t[3]
    elif t[2] == '>=': t[0] = t[1] >= t[3]
    elif t[2] == '<=': t[0] = t[1] <= t[3]
    elif t[2] == '==': t[0] = t[1] == t[3]
    elif t[2] == '!=': t[0] = t[1] != t[3]
    elif t[2] == '&&': t[0] = t[1] and t[3]
    elif t[2] == '||': t[0] = t[1] or t[3]
    else: errors.unknownSignal(t)
Пример #4
0
def p_assign(p):
    '''assignment :   variavel ASSIGN expression
                  |   variavel MOD expression
                  |   variavel SUMEQUALS expression
                  |   variavel MINUSEQUALS expression
                  |   variavel TIMESEQUALS expression
                  |   variavel DIVIDEEQUALS expression
    '''

    if p[2] == '=':
        var_global.change(p[1], p[3])
    elif p[2] == '%=':
        var_global.change(p[1], var_global.show(p[1]) / p[3])
    elif p[2] == '+=':
        var_global.change(p[1], var_global.show(p[1]) + p[3])
    elif p[2] == '-=':
        var_global.change(p[1], var_global.show(p[1]) - p[3])
    elif p[2] == '*=':
        var_global.change(p[1], var_global.show(p[1]) * p[3])
    elif p[2] == '/=':
        var_global.change(p[1], var_global.show(p[1]) / p[3])
    else:
        errors.unknownSignal(t)
    p[0] = var_global.show(p[1])