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)
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)
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)
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])