コード例 #1
0
ファイル: ascendente.py プロジェクト: harias25/Augus
def p_puntero(t):
    'puntero : tipo_var IGUAL PAND  tipo_var PTCOMA '
    op = Operacion()
    op.Indentficador(t[4],t.slice[2].lineno,find_column(t.slice[3])+1)
    t[0] = Asignacion(t[1],op,t.slice[2].lineno,1,True)
    lista = func(1,None).copy()
    gramatical = G.ValorAscendente('puntero -> tipo_var IGUAL PAND  tipo_var PTCOMA','puntero.instr = Puntero(tipo_var1.val,tipo_var2.val);',lista)
    func(0,gramatical)
コード例 #2
0
def p_instruccion_imprimir(t):
    'imprimir_instr     : IMPRIMIR PARIZQ tipo_var PARDER PTCOMA'
    op = Operacion()
    op.Indentficador(t[3], t.slice[1].lineno, find_column(t.slice[2]))
    t[0] = Imprimir(op, t.slice[1].lineno, find_column(t.slice[1]))
    lista = func(1, None).copy()
    gramatical = G.ValorAscendente(
        'imprimir_instr ->IMPRIMIR PARIZQ tipo_var  PARDER PTCOMA',
        'imprimir_instr.instr = Print(tipo_var.val);', lista)
    func(0, gramatical)
コード例 #3
0
def p_expresion_primitiva(t):
    '''primitiva : ENTERO
                 | DECIMAL
                 | CADENA
                 | CADENA2
                 | TEMP 
                 | PARAM
                 | RET
                 | PILA 
                 | RA
                 | PUNTERO 
                 | acceso_lista'''
    op = Operacion()
    if (t.slice[1].type == 'CADENA' or t.slice[1].type == 'CADENA2'):
        op.Primitivo(
            Primitivo(str(t[1]), t.slice[1].lineno, find_column(t.slice[1])))
        gramatical = G.ValorAscendente('primitiva -> CADENA',
                                       'primitiva.val = str(CADENA);', None)
        func(2, gramatical)
    elif (t.slice[1].type == 'DECIMAL'):
        op.Primitivo(
            Primitivo(float(t[1]), t.slice[1].lineno, find_column(t.slice[1])))
        gramatical = G.ValorAscendente('primitiva -> FLOAT',
                                       'primitiva.val = float(FLOAT);', None)
        func(2, gramatical)
    elif (t.slice[1].type == 'ENTERO'):
        op.Primitivo(
            Primitivo(int(t[1]), t.slice[1].lineno, find_column(t.slice[1])))
        gramatical = G.ValorAscendente('primitiva -> ENTERO',
                                       'primitiva.val = int(ENTERO);', None)
        func(2, gramatical)
    elif (t.slice[1].type == 'TEMP') or (t.slice[1].type == 'PARAM') or (
            t.slice[1].type == 'RET') or (t.slice[1].type == 'PILA') or (
                t.slice[1].type == 'RA') or (t.slice[1].type == 'PUNTERO'):
        op.Indentficador(t[1], t.slice[1].lineno, find_column(t.slice[1]))
        gramatical = G.ValorAscendente('primitiva -> tipo_var',
                                       'primitiva.val = tipo_var.val;', None)
        func(2, gramatical)
    elif (t.slice[1].type == 'acceso_lista'):
        op.AccesoLista(t[1], t.lexer.lineno, 1)
        lista = func(1, None).copy()
        gramatical = G.ValorAscendente('primitiva ->  acceso_lista',
                                       'primitiva.val = acceso_lista.val;',
                                       lista)
        func(0, gramatical)
    t[0] = op