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.
| 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
Requer Java 17.
javac *.java
java Principal caminho/para/programa.txtA 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.
Principal.java: lê o arquivo e executa as etapas em sequênciaAnaliseCodigo.java: analisador léxico, sintático e semânticoSimbolo.java/Id.java: tabela de símbolos e tokenConfiguracaoAnalise.java: caracteres ignorados e operadores
Marcos Sergio Jordão de Sousa · Juan Iago Alves Lobo