def p_expression_id(t):
    'expression : ID'
    if tabela.exists(t[1]) :
        ident = tabela.getVar(t[1])
        if ident.referencia:
            print "\tCRVI " + ident.getEnd()
        else:
            print "\tCRVL " + ident.getEnd()
        tipo.add(ident.getTipo())
    else:
        sys.stderr.write("ERRO: variavel nao definida:"+t[1]+"\n")
        raise SyntaxError
Exemple #2
0
def p_expression_id(t):
    'expression : ID'
    if tabela.exists(t[1]):
        ident = tabela.getVar(t[1])
        if ident.referencia:
            print "\tCRVI " + ident.getEnd()
        else:
            print "\tCRVL " + ident.getEnd()
        tipo.add(ident.getTipo())
    else:
        sys.stderr.write("ERRO: variavel nao definida:" + t[1] + "\n")
        raise SyntaxError
def p_statement_lista_expressoes_subprograma(t):
    '''lista_expressoes_subprograma : ID
                                    | expression
                                    | ID VIRG lista_expressoes_subprograma
                                    | expression VIRG lista_expressoes_subprograma '''
    elem = tabela.useParam()
    if tabela.exists(t[1]):
        ident = tabela.getVar(t[1])
        if elem.referencia and not ident.referencia:
            print "\tCREN "+ident.getEnd()
        else:
            print "\tCRVL "+ident.getEnd()
    elif elem.referencia:
        print "ERRO: expressao encontrada na passagem por referencia ",elem
        raise SyntaxError
Exemple #4
0
def p_statement_lista_expressoes_subprograma(t):
    '''lista_expressoes_subprograma : ID
                                    | expression
                                    | ID VIRG lista_expressoes_subprograma
                                    | expression VIRG lista_expressoes_subprograma '''
    elem = tabela.useParam()
    if tabela.exists(t[1]):
        ident = tabela.getVar(t[1])
        if elem.referencia and not ident.referencia:
            print "\tCREN " + ident.getEnd()
        else:
            print "\tCRVL " + ident.getEnd()
    elif elem.referencia:
        print "ERRO: expressao encontrada na passagem por referencia ", elem
        raise SyntaxError
def p_statement_atribuicao(t):
    'atribuicao : ID ATTRIB expression'
    if tabela.exists(t[1]):
        ident = tabela.getVar(t[1])
        if ident.eFuncao():
            ident = ident.retorno
            tabela.resetParam()
        if ident.referencia:
            print "\tARMI "+ident.getEnd()
        else:
            print "\tARMZ "+ident.getEnd()
        tipo.add(ident.getTipo())
        tipo.compara()
        tipo.reset()
    else:
        sys.stderr.write("ERRO: variavel nao definida: "+t[1]+"\n")
        raise SyntaxError
Exemple #6
0
def p_statement_atribuicao(t):
    'atribuicao : ID ATTRIB expression'
    if tabela.exists(t[1]):
        ident = tabela.getVar(t[1])
        if ident.eFuncao():
            ident = ident.retorno
            tabela.resetParam()
        if ident.referencia:
            print "\tARMI " + ident.getEnd()
        else:
            print "\tARMZ " + ident.getEnd()
        tipo.add(ident.getTipo())
        tipo.compara()
        tipo.reset()
    else:
        sys.stderr.write("ERRO: variavel nao definida: " + t[1] + "\n")
        raise SyntaxError
def p_expression_function_exp(t):
    'expression : id_sub LPAREN lista_expressoes_subprograma RPAREN'
    if tabela.exists(t[1]):
        ident = tabela.getVar(t[1])
        print "\tCHPR " + ident.getRotulo()
Exemple #8
0
def p_expression_function_exp(t):
    'expression : id_sub LPAREN lista_expressoes_subprograma RPAREN'
    if tabela.exists(t[1]):
        ident = tabela.getVar(t[1])
        print "\tCHPR " + ident.getRotulo()