def p_expre(p): """expre : expre MAS expre | expre MENOS expre | expre MUL expre | expre DIV expre """ p[0]= Node(p[2], [p[1], p[3]]) typ = symtab.comparate_types(p[1], p[3]) p[0].typ = typ if typ == 'error' : print( ">>ERROR: Se esperaban expresiones del mismo tipo.")
def p_relacion(p): """relacion : expre LT expre | expre LE expre | expre GT expre | expre GE expre | expre EQ expre | expre NE expre """ p[0] = Node(p[2], [p[1], p[3]]) typ = symtab.comparate_types(p[1], p[3]) p[0].typ = typ if typ == 'error' : print( ">>ERROR: Se esperaban relaciones del mismo tipo.")
def p_linea_4(p): 'linea : ID ASIG expre' p[0] = Node( ':=', [p[3]], p[1] ) p[0].assign = 1 # Validacion id no declarado. data = symtab.find_id( p[1] ) if not data : print ( ">>ERROR: identificador '%s' no declarada." % p[1] ) # Comprobacion asignacion de tipo p1 = symtab.get_id( p[1] ) typ = symtab.comparate_types(p1, p[3]) if typ == 'error' : print( ">>ERROR: Se esperaban expresiones del mismo tipo. linea: ")