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

Os Compiladores

Por:   •  26/9/2018  •  Trabalho acadêmico  •  1.251 Palavras (6 Páginas)  •  130 Visualizações

Página 1 de 6

Compiladores

 O projeto propõe a criação de um analisador léxico capaz de ler, identificar e agrupar os caracteres com o objetivo de formar unidades mínimas denominadas Lexer ou lexema,  formadoras de tokem (tupla que contém um identificador referente  ao tipo dele e o conteúdo ou valor no seguinte formato , por exemplo .

 Essa estrutura é responsável por identificar e armazenar determinados elementos de uma linguagem de programação, com base em sua gramatica.

Para este exemplo iremos adotar a linguagem Portugolo e sua gramática será apresentada abaixo no final deste documento.

O analisador léxico será composto por uma classe IdLexema, esta mantém todos os nomes dos tokens relacionados com os operadores que compõe a linguagem descrita (Operadores Aritméticos e relacionais, parentes e símbolos especiais), assim como os símbolos ou caracteres relacionados e os tipos de dados aceitos pela linguagem seguido de seus nomes em formato de comentário.

 

Operadores Aritméticos, Relacionais e Lógicos

Tipo de Dados

EOF

ID

identificadores de Variáveis ou métodos

OP_ME

<

NUMERICO

números

OP_MEI

<=

LOGICO

BOOLEANO

OP_MA

>

NULO

NULO

OP_MAI

>=

LITERAL

strings

OP_IGD

=

KW

 palavra reservada

OP_DIF

<>

OP_ATR

<--

OP_SUM

+

OP_MEN

-

OP_MUT

*

OP_DIV

/

OP_NEG

NÃO

SMB_AP

(

SMB_FP

)

SMB_CL

,

SMB_SEMICOLON

;

Tabela 1

A classe Token, por sua vez servira apenas para determinar a estrutura do tokem e sua identificação.

 Esta classe possui métodos modificadores, também conhecidos como Getter's e Setter's, responsáveis por acessar e alterar o atributo de um objeto da classe, na medida que se faz necessário.

 Possui também um atributo de linha e coluna para sua devida localização ao longo do código fonte ou arquivo que servira de base para leitura e teste do analisador.

E um método toString que irá realizar a impressão dos dados do token,                                       .

A classe chamada TabelaHash, servira como uma lista ou tabela que irá armazenar e realizar uma carga para à memória no início da execução do código referente ao Analisador Léxico.

Tabela de Palavras Reservadas

algoritmo

subrotina

declare

retorne

escreva

enquanto

leia

faca

literal

para

logico

ate

numerico

repita

nulo

VERDADEIRO

se

FALSO

inicio

Ou

fim

E

senao

Nao

  Tabela2

É composta por todas as palavras chaves da linguagem em questão. Na medida que quaisquer elementos forem identificados serão acrescidos nessa relação previamente definida que contem; palavras reservadas, tipos de dados, nomes de estruturas de seleção e/ou repetição e operadores lógicos.

 A classe possui os métodos Input, responsável por cadastrar novos tokens                             na medida que eles forem identificados, seja identificadores de variáveis, nomes de métodos/funções.

 Este cadastro será feito posteriormente a validação na tabela de símbolos durante a execução do projeto, por meio do método comparaToken que recebe como parâmetro o nome do Lexema(idLexema), o valor do lexema (lexema), o número de linha e coluna onde o mesmo foi localizado durante a leitura do arquivo, considerando respectivamente a última coluna onde o caractere foi localizado.

 Este método possui um objeto Token e o método devoleToken, a verificação do objeto token, caso este seja nulo (null), irá criar um novo objeto token que irá receber os atributos informados acima, para cadastrá-los na tabela de símbolos, por meio do método put, e irá realizar uma atribuição à linha e coluna respectiva onde este está localizado, e retorna este token.

 

O método toString, por sua vez imprime a localização dos tokens na tabela da biblioteca HashMap, que serve para associar/ identificar o valor de acordo com o tipo de informação aqui chamada tabelaSimbolos.

A classe AnalisarLexicoPortugolo, contém o método principal chamado main, que é o ponto inicial de execução do analisador.

Um laço de repetição Do...While, que irá repetir a execução do código até que o código que termine, essa verificação e feita pelo código"(token != null && token.getClasse() != IdLexema.EOF)", que verifica se o token é nulo, e a classe do token é diferente de fim de arquivo.

...

Baixar como (para membros premium)  txt (8.8 Kb)   pdf (187.4 Kb)   docx (16.8 Kb)  
Continuar por mais 5 páginas »
Disponível apenas no TrabalhosGratuitos.com