Buscar

CC Compiladores 8 semestre CLEBER

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Cleber Gonçalves da Silva RA:1299142695 
Relatório
Dentro dos estudos oferecidos pelo professor mais os estudos individuais, foi aplicado a área de conhecimento de autômatos e compiladores.
Em etapa estruturei os estados conforme a gramática transpassada e implementei o código conforme solicitação do professor.
Com base no conhecimento adquirido, foi aplicado todos os recursos e estudos oferecido pelo professor em sala de aula. 
Otimizando a estrutura dos estados, para melhor implementação da sequência dos autômatos.
No código para minha melhor implementação, foi aplicado uma estrutura em swit case, buscando assim a melhor condição para a leitura do autômato apresentado. 
Código do autômato 
package Analisadores;
import Auxiliar.BufferEntrada;
import Auxiliar.Tipos;
import Elementos.TabelaSimbolos;
import Elementos.Token;
public class Analisador{
 private BufferEntrada buffer;
 private TabelaSimbolos ts;
 private Token tk;
 Analisador(String endereco) {
 buffer = new BufferEntrada(endereco);
 ts = new TabelaSimbolos();
 }
 public Token lex() {
 char lookahead = buffer.getNext();
 int estado = 0;
 while (true) {//apenas aqui ? para implementar
 switch (estado) {
 case 0:
 switch (lookahead) {
 case '\n':
 case ' ':
 case '\t':
 estado = 0;
 buffer.getValue();
 lookahead = buffer.getNext();
 break;
 case 'C':
 case 'H':
 case 'J':
 case 'K':
 case 'L':
 case 'M':
 case 'P':
 case 'Q':
 case 'S':
 case 'U':
 case 'X':
 case 'Y':
 case 'Z':
 estado = 0;
 lookahead = buffer.getNext();
 break;
 case 'V':
 estado = 1;
 lookahead = buffer.getNext();
 break;
 case 'A':
 estado = 2;
 lookahead = buffer.getNext();
 break;
 case 'R':
 estado = 3;
 lookahead = buffer.getNext();
 break;
 case '0':
 estado = 4;
 lookahead = buffer.getNext();
 break;
 case '1':
 case '2':
 case '3':
 case '4':
 case '5':
 case '6':
 case '7':
 case '8':
 case '9':
 case 'I':
 estado = 2;
 lookahead = buffer.getNext();
 break;
 case 'F':
 estado = 6;
 lookahead = buffer.getNext();
 break;
 case 'G':
 estado = 7;
 lookahead = buffer.getNext();
 break;
 case 'O':
 estado = 8;
 lookahead = buffer.getNext();
 break;
 case 'T':
 estado = 9;
 lookahead = buffer.getNext();
 break;
 case '(':
 estado = 11;
 lookahead = buffer.getNext();
 break;
 case ')':
 estado = 14;
 lookahead = buffer.getNext();
 break;
 case '*':
 estado = 15;
 lookahead = buffer.getNext();
 break;
 case '-':
 estado = 16;
 lookahead = buffer.getNext();
 break;
 case '+':
 estado = 17;
 lookahead = buffer.getNext();
 break;
 case '/':
 estado = 18;
 lookahead = buffer.getNext();
 break;
 case '%':
 estado = 19;
 lookahead = buffer.getNext();
 break;
 case 'W':
 estado = 24;
 lookahead = buffer.getNext();
 break;
 case ':':
 estado = 29;
 lookahead = buffer.getNext();
 break;
 case '>':
 estado = 30;
 lookahead = buffer.getNext();
 break;
 case '<':
 estado = 31;
 lookahead = buffer.getNext();
 break;
 case '=':
 estado = 33;
 lookahead = buffer.getNext();
 break;
 case '!':
 estado = 35;
 lookahead = buffer.getNext();
 break;
 case 'B':
 estado = 36;
 lookahead = buffer.getNext();
 break;
 case 'E':
 estado = 37;
 lookahead = buffer.getNext();
 break;
 case 'N':
 estado = 40;
 lookahead = buffer.getNext();
 break;
 case 'D':
 estado = 43;
 lookahead = buffer.getNext();
 break; 
 
 default:
 System.out.println("Erro na sequencia " + buffer.getValue());
 while (lookahead != ' ' || lookahead != '\n' || lookahead != '\t') {
 lookahead = buffer.getNext();
 }
 estado = 0;
 }
 break;
 case 1:
 switch (lookahead) {
 case 'A':
 case 'B':
 case 'C':
 case 'D':
 case 'E':
 case 'F':
 case 'H':
 case 'J':
 case 'K':
 case 'L':
 case 'M':
 case 'N':case 'O':
 case 'P':
 case 'Q':
 case 'R':
 case 'S':
 case 'T':
 case 'U':
 case 'X':
 case 'Y':
 case 'Z':
 case 'V':
 case 'I':
 case 'G':
 estado = 2;
 lookahead = buffer.getNext();
 break;
 default:
 }
 break;
 case 2:
 switch (lookahead) {
 case 'A':
 case 'B':
 case 'C':
 case 'D':
 case 'E':
 case 'F':
 case 'H':
 case 'J':
 case 'K':
 case 'L':
 case 'M':
 case 'N':
 case 'O':
 case 'P':
 case 'Q':
 case 'R':
 case 'S':
 case 'T':
 case 'U':
 case 'X':
 case 'Y':
 case 'Z':
 case 'V':
 case 'I':
 case 'G':
 estado = 3;
 lookahead = buffer.getNext();
 break;
 default:
 }
 break;
 case 3:
 switch (lookahead) {
 case '0':
 case '1':
 case '2':
 case '3':
 case '4':
 case '5':
 case '6':
 case '7':
 case '8':
 case '9':
 estado = 4;
 lookahead = buffer.getNext();
 break;
 default:
 }
 break;
 case 4:
 tk = new Token();
 tk.setTipo(Tipos.VAR);
 tk.setValor((String) buffer.getValue());
 if (!ts.consultaTabela((String) tk.getValor())) {
 ts.insereSimbolo((String) buffer.getValue());
 }
 return tk;
 case 6:
 switch (lookahead) {
 case 'A':
 case 'B':
 case 'C':
 case 'D':
 case 'E':
 case 'F':
 case 'H':
 case 'J':
 case 'K':
 case 'L':
 case 'M':
 case 'N':
 case 'O':
 case 'P':
 case 'Q':
 case 'R':
 case 'S':
 case 'T':
 case 'U':
 case 'X':
 case 'Y':
 case 'Z':
 case 'V':
 case 'I':
 case 'G':
 estado = 2;
 lookahead = buffer.getNext();
 break;
 case ':':
 estado = 7;
 break;
 default:
 }
 break;
 case 7:
 tk = new Token();
 tk.setTipo(Tipos.DEFVAR);
 return tk;
 case 8:
 switch (lookahead) {
 case 'A':
 case 'B':
 case 'C':
 case 'D':
 case 'E':
 case 'F':
 case 'H':
 case 'J':
 case 'K':
 case 'L':
 case 'M':
 case 'N':
 case 'P':
 case 'Q':
 case 'R':
 case 'S':
 case 'T':
 case 'U':
 case 'X':
 case 'Y':
 case 'Z':
 case 'V':
 case 'I':
 case 'G':
 estado = 2;
 lookahead = buffer.getNext();
 break;
 case 'O':
 estado = 9;
 lookahead = buffer.getNext();
 break;
 default:
 }
 break;
 case 9:
 switch (lookahead) {
 case 'A':
 case 'B':
 case 'C':
 case 'D':
 case 'E':
 case 'F':
 case 'H':
 case 'J':
 case 'K':
 case 'L':
 case 'M':
 case 'N':
 case 'O':
 case 'P':
 case 'Q':
 case 'R':
 case 'S':
 case 'U':
 case 'X':
 case 'Y':
 case 'Z':
 case 'V':
 case 'I':
 case 'G':
 estado = 3;
 lookahead = buffer.getNext();
 break;
 case 'T':
 estado = 10;
 lookahead = buffer.getNext();
 break;
 default:
 }
 break;
 case 10:
 switch (lookahead) {
 case 'O':
 estado = 11;
 break;
 case '0':
 case '1':
 case '2':
 case '3':
 case '4':
 case '5':
 case '6':
 case '7':
 case '8':
 case '9':
 estado = 4;
 break;
 default:
 }
 break;
 case 11:
 tk = new Token();
 tk.setTipo(Tipos.SALTO);
 return tk;
 case 12:
 switch (lookahead) {
 case 'A':
 case 'B':
 case 'C':
 case 'D':
 case 'E':
 case 'H':
 case 'J':
 case 'K':case 'L':
 case 'M':
 case 'N':
 case 'O':
 case 'P':
 case 'Q':
 case 'R':
 case 'S':
 case 'T':
 case 'U':
 case 'X':
 case 'Y':
 case 'Z':
 case 'V':
 case 'I':
 case 'G':
 estado = 2;
 lookahead = buffer.getNext();
 break;
 case 'F':
 estado = 13;
 lookahead = buffer.getNext();
 break;
 default:
 }
 break;
 case 13:
 tk = new Token();
 tk.setTipo(Tipos.SE);
 return tk;
 case 20:
 case '0':
 case '1':
 case '2':
 case '3':
 case '4':
 case '5':
 case '6':
 case '7':
 case '8':
 case '9':
 estado = 20;
 lookahead = buffer.getNext();
 break;
 case '.':
 estado = 22;
 lookahead = buffer.getNext();
 break;
 default:
 } return null;
 }
 }
}

Outros materiais