Exemplo n.º 1
0
def p_numero(p):
    """numero : CONSTANTE_ENTERA
              | CONSTANTE_FLOTANTE"""
    p[0] = Nodo('numero')
    p[0].val = p[1]
    if type(p[1]) == int:
        p[0].tipo = 'ENTERO'
    else:
        p[0].tipo = 'FLOTANTE'
    p[0].linea = p.lineno(0)
Exemplo n.º 2
0
def p_tipo_dato(p):
    """tipo_dato : ENTERO
                | FLOTANTE
                | BOOL
                | NOTA"""

    p[0] = Nodo('tipo_dato')
    p[0].tipo = p[1].upper()
    p[0].linea = p.lineno(0)
Exemplo n.º 3
0
def p_elementos_arreglo(p):
    """elemento_arreglo : elemento_tocar"""

    if type(p[1]) == Nodo:
        p[0] = p[1]
    else:
        p[0] = Nodo('booleano')
        p[0].val = p[1]
        p[0].tipo = 'BOOLEANO'
    p[0].linea = p.lineno(0)
Exemplo n.º 4
0
def p_lista_tocar(p):
    """lista_tocar : lista_tocar COMA elemento_tocar
                   | elemento_tocar"""
    if len(p) == 4:
        p[0] = Nodo('lista_tocar', [p[1], p[3]])
    else:
        p[0] = Nodo('lista_tocar', [p[1]])

    p[0].tipo = 'nota'
    p[0].linea = p.lineno(0)
Exemplo n.º 5
0
def p_nota(p):
    """nota : DO
            | RE
            | MI
            | FA
            | SOL
            | LA
            | SI"""
    p[0] = Nodo('nota')
    p[0].val = Nota()
    p[0].val.notas.append(p[1])
    p[0].tipo = 'nota'
    p[0].linea = p.lineno(0)
Exemplo n.º 6
0
def p_expresion(p):
    """expresion : PAREN_IZQ expresion PAREN_DER
                 | ID
                 | numero
                 | BOOLEANO
                 | indice_arreglo"""
    if len(p) == 2:
        if type(p[1]) != Nodo:
            if p[1] == 'verdadero' or p[1] == 'falso':
                p[0] = Nodo('booleano')
                p[0].tipo = 'BOOLEANO'
            else:
                p[0] = Nodo('id')
            p[0].val = p[1]
        else:
            p[0] = p[1]
    else:
        p[0] = p[2]
    p[0].linea = p.lineno(0)
Exemplo n.º 7
0
def p_potencia_nota(p):
    """potencia_nota : elemento_potencia POTENCIA numero"""
    p[0] = Nodo('potencia_nota', [p[1], p[3]])
    p[0].tipo = 'nota'
    p[0].linea = p.lineno(0)
Exemplo n.º 8
0
def p_tiempo_nota(p):
    """tiempo_nota : numero elemento
                   | numero modificador_nota"""
    p[0] = Nodo('tiempo_nota', [p[1], p[2]])
    p[0].tipo = 'nota'
    p[0].linea = p.lineno(0)
Exemplo n.º 9
0
def p_llaves_notas(p):
    """llaves_notas : LLAVE_IZQ lista_notas LLAVE_DER"""
    p[0] = Nodo('llaves_notas', [p[2]])
    p[0].tipo = 'nota'
    p[0].linea = p.lineno(0)
Exemplo n.º 10
0
def p_parentesis_notas(p):
    """paren_notas : PAREN_IZQ lista_notas PAREN_DER"""
    p[0] = Nodo('paren_notas', [p[2]])
    p[0].tipo = 'nota'
    p[0].linea = p.lineno(0)