TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

ESPECIFICAÇÕES DE AÇÕES SEMÂNTICAS ALTERADAS E VALIDAÇÕES DE TIPOS EM TEMPO DE EXECUÇÃO.

Por:   •  28/2/2016  •  Trabalho acadêmico  •  1.201 Palavras (5 Páginas)  •  312 Visualizações

Página 1 de 5

Trabalho final Compiladores

Especificações de ações semânticas alteradas e validações de tipos em tempo de execução.

Reconhecimento de operação aritmética divisão inteira        

static void Acao43(){

                gerarInstrucao(ponteiro, "ADI", 0);

                ponteiro++;

        }

            case "ADI":

                    if(Integer.parseInt(pilha[topo].toString()) == 0){

                        System.out.println("ERRO: Divisão por 0");

                        ponteiro = -1;

                        break;

                }

pilha[topo - 1] = (Integer)pilha[topo - 1] / (Integer)pilha[topo];

                topo--;

                ponteiro++;

                break;

Reconhecimento de operação aritmética resto da divisão inteira        

        static void Acao44(){

                gerarInstrucao(ponteiro, "RDI", 0);

                ponteiro++;

        }

            case "RDI":

                    if(Double.parseDouble(pilha[topo].toString()) == 0){

                        System.out.println("ERRO: Divisão por 0");

                        ponteiro = -1;

                        break;

                }

if(pilha[topo - 1] instanceof Double && pilha[topo] instanceof Double )

pilha[topo - 1] = (Double)pilha[topo - 1] % (Double)pilha[topo];

if(pilha[topo - 1] instanceof Integer && pilha[topo] instanceof Integer )

pilha[topo - 1] = (Integer)pilha[topo - 1] % (Integer)pilha[topo];

                topo--;

                ponteiro++;

                break;

Reconhecimento de operação aritmética potenciação

        static void Acao46(){

                gerarInstrucao(ponteiro, "RAP", 0);

                ponteiro++;

        }

            case "RAP":

pilha[topo - 1] = Math.pow(Double.parseDouble(pilha[topo-1].toString()), Double.parseDouble(pilha[topo].toString()));

                topo--;

                ponteiro++;

                break;

Validação tipos estáticos em tempo de execuçãa:

Métodos alterados:

ADD:

Se o topo e subtopo forem Double então

        Subtopo recebe soma de subtopo e topo.

Senão Se o topo e subtopo forem Integer então

        Subtopo recebe soma de subtopo e topo.

Senao

        Erro de imcompatibilidade.

Diminui o topo

Aumenta o ponteiro

SUB:

Se o topo e subtopo forem Double então

        Subtopo recebe a subtração de subtopo e topo.

Senão Se o topo e subtopo forem Integer então

        Subtopo recebe a subtração de subtopo e topo.

Senao

        Erro de imcompatibilidade.

Diminui o topo

Aumenta o ponteiro

BGE:

Se o topo e subtopo forem Double então

        Subtopo recebe condição se subtopo é maior ou igual que topo.

Senão Se o topo e subtopo forem Integer então

        Subtopo recebe condição se subtopo é maior ou igual que topo.

...

Baixar como (para membros premium)  txt (4.7 Kb)   pdf (109.2 Kb)   docx (10.4 Kb)  
Continuar por mais 4 páginas »
Disponível apenas no TrabalhosGratuitos.com