def p_casteos(t): """casteos : PARIZQ tipo_casteo PARDER expresion""" NodoCasteo = ASTNode("casteos", t.lexer.lineno, find_column(entrada, t.slice[1])) NodoCasteo.add_child(t[2]) NodoCasteo.add_child(t[4]) t[0] = NodoCasteo
def p_instruccion_control(t): """instruccion_control : RIF PARIZQ expresion PARDER RGOTO ETIQUETA""" NodoControl = ASTNode("sentencia_control", t.lexer.lineno, find_column(entrada, t.slice[1])) NodoControl.add_child(t[3]) NodoControl.add_child(ASTNode(t[6])) t[0] = NodoControl
def p_acceso_arrayExp(t): """accesos_array : ID lista_accesos""" NodoAccesArray = ASTNode("access_arrayexp", t.lexer.lineno, find_column(entrada, t.slice[1])) NodoAccesArray.add_child(ASTNode(t[1])) NodoAccesArray.add_child(t[2]) t[0] = NodoAccesArray
def p_otra(t): """otra : ID lista_accesos""" NodoModificacion = ASTNode("modificar_array", t.lexer.lineno, find_column(entrada, t.slice[1])) NodoModificacion.add_child(ASTNode(t[1])) NodoModificacion.add_child(t[2]) t[0] = NodoModificacion
def p_declaracion_arraymod(t): """declaracion_registros : otra ASIG expresion""" NodoDeclaracion = ASTNode("declaracion_asignacion", t.lexer.lineno, find_column(entrada, t.slice[2])) NodoDeclaracion.add_child(t[1]) NodoDeclaracion.add_child(t[3]) t[0] = NodoDeclaracion
def p_expresion_unaria(t): """expresion : MENOS expresion %prec UMENOS | RNOT expresion | RNOTBIT expresion""" NodoExpresionUnaria = ASTNode("expresion_unaria", t.lexer.lineno, find_column(entrada, t.slice[1])) NodoExpresionUnaria.add_child(ASTNode(t[1])) NodoExpresionUnaria.add_child(t[2]) t[0] = NodoExpresionUnaria
def p_tipo_casteo(t): """tipo_casteo : RINT | RFLOAT | RCHAR """ NodoCasteo = ASTNode("tipo_casteo", t.lexer.lineno, find_column(entrada, t.slice[1])) NodoauxCast = ASTNode(t[1], t.lexer.lineno, find_column(entrada, t.slice[1])) NodoCasteo.add_child(NodoauxCast) t[0] = NodoCasteo
def p_funcion_unset(t): """funcion_unset : RUNSET PARIZQ expresion PARDER""" NodoUnset = ASTNode("unset", t.lexer.lineno, find_column(entrada, t.slice[1])) NodoUnset.add_child(t[3]) t[0] = NodoUnset
def p_salto_condicional(t): """salto_condicional : RGOTO ETIQUETA""" NodoSaltoCond = ASTNode("salto_incondicional", t.lexer.lineno, find_column(entrada, t.slice[1])) NodoSaltoCond.add_child(ASTNode(t[2])) t[0] = NodoSaltoCond
def p_exp_accesoArray(t): """expresion : accesos_array""" NodoExpresionNumber = ASTNode("expresion_number", t.lexer.lineno, 0) Nodoaux = t[1] NodoExpresionNumber.add_child(Nodoaux) t[0] = NodoExpresionNumber
def p_expresion_casteo(t): """expresion : casteos""" NodoExpresionNumber = ASTNode("expresion_number", t.lexer.lineno, 0) NodoExpresionNumber.add_child(t[1]) t[0] = NodoExpresionNumber
def p_expresion_agrupacion(t): "expresion : PARIZQ expresion PARDER" NodoExpresionAgrupar = ASTNode("exp_agrupacion", t.lexer.lineno, find_column(entrada, t.slice[1])) NodoExpresionAgrupar.add_child(t[2]) t[0] = NodoExpresionAgrupar
def p_l_de_accesos(t): """lista_accesos : CORIZQ expresion CORDER""" NodoLAcceso = ASTNode("lista_acceso", t.lexer.lineno, find_column(entrada, t.slice[1])) NodoLAcceso.add_child(t[2]) t[0] = NodoLAcceso
def p_valor_absoluto(t): """absValue : RABS PARIZQ expresion PARDER""" NodoAbs = ASTNode("absoluto", t.lexer.lineno, find_column(entrada, t.slice[1])) NodoAbs.add_child(t[3]) t[0] = NodoAbs