Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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
Exemple #4
0
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
Exemple #5
0
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
Exemple #6
0
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
Exemple #7
0
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
Exemple #8
0
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
Exemple #9
0
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
Exemple #10
0
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
Exemple #11
0
def p_expresion_casteo(t):
    """expresion : casteos"""
    NodoExpresionNumber = ASTNode("expresion_number", t.lexer.lineno, 0)
    NodoExpresionNumber.add_child(t[1])
    t[0] = NodoExpresionNumber
Exemple #12
0
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
Exemple #13
0
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
Exemple #14
0
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