Skip to content

About

Front-end de compilador em Java para a linguagem SIMPLE: análise léxica, sintática (descendente recursiva) e semântica.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Repository files navigation

Compilador SIMPLE em Java

Front-end de compilador para a linguagem SIMPLE: lê um programa em texto e faz as análises léxica, sintática e semântica, apontando o erro e a linha quando algo está errado. Trabalho acadêmico de Ciência da Computação (IESB), feito em dupla.

O que ele faz

Etapa Como funciona
Léxica Percorre o código caractere a caractere e gera os tokens (Id) a partir da tabela de símbolos do enum Simbolo: palavras reservadas (let, if, goto, input, print, end, rem), operadores aritméticos e relacionais, variáveis e inteiros. Comentários rem e espaços são ignorados.
Sintática Analisador descendente recursivo (comando → expressão → termo → fator, mais condição). Exige número de linha no início de cada instrução, em ordem crescente e sem repetição, e valida a forma de cada comando (if … goto <linha>, let x = …).
Semântica Controla as variáveis declaradas, recusa o uso de variável não declarada e confere se todo goto aponta para uma linha que existe.

Exemplo de programa aceito (programa.txt):

10 input n
15 if n < 0 goto 60
20 let i = 1
...
75 print x
80 end

Como rodar

Requer Java 17.

javac *.java
java Principal caminho/para/programa.txt

A saída mostra os tokens reconhecidos e o resultado de cada etapa. Exemplo de erro: Falha na análise semântica: GOTO para linha 90 que não existe.

Estrutura

  • Principal.java: lê o arquivo e executa as etapas em sequência
  • AnaliseCodigo.java: analisador léxico, sintático e semântico
  • Simbolo.java / Id.java: tabela de símbolos e token
  • ConfiguracaoAnalise.java: caracteres ignorados e operadores

Autores

Marcos Sergio Jordão de Sousa · Juan Iago Alves Lobo

About

Front-end de compilador em Java para a linguagem SIMPLE: análise léxica, sintática (descendente recursiva) e semântica.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages