Skip to content

wevertonbruno/Compilador-MiniPascal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Compilador MiniPascal

Projeto de um compilador para a linguagem mini pascal escrito em java. Compreende todas as etapas de analise léxica, sintática, contexto e geração de código.

Se você é da UNIVASF e está pagando compiladores, não esqueça de nos citar nos trabalhos :)



Se você achou isto útil, por favor não esqueça de deixar uma ⭐️ no repo, para ajudar a promover o projeto.
Siga-me no Twitter e GitHub para ficar atualizado sobre os projetos e outros.



Como usar

Para a execução do compilador é necessário compila-lo e gerar um arquivo .jar.

Para funcionamento do compilador, são necessárias as inserções do caminho do programa fonte e a do caminho do programa objeto gerado após a geração de código, ambos em seus devido lugares localizados com um rótulo indicativo. Esses caminhos devem possuir o nome do arquivo .txt, exemplo: C:\Users\L\Desktop\nomedoarquivo.txt. Dessa forma será possível verificar o conteúdo do programa fonte e gerar, ou editar, o programa objeto. Após isso, é necessário escolher entre os botões presentes, qual a opção do compilador deverá ser executada. Existem 5 possibilidades:

  • Análise Léxica: Executa a análise léxica do programa fonte, e será mostrada no campo rotulado como, “Impressão da Árvore e Análise Léxica”. Qualquer mensagem de erro será mostrada no console. Se houver qualquer mensagem de erro referente a um token inválido, a mensagem será mostrada na tela e léxica feita até o ponto de erro será mostrada.
  • Análise Sintática: Executa a análise sintática, mostrando quaisquer erros, que venham a aparecer, na tela de console.
  • Impressão da Árvore: Essa opção irá imprimir a árvore se a análise sintática estiver correta. A impressão será mostrada no campo rotulado como, “Impressão da Árvore e Análise Léxica”.
  • Análise de Contexto: Executa a análise de contexto, mostrando quaisquer erros que venham acontecer, na tela de console. Além disso, a árvore também será imprimida, se a análise de sintática ocorrer de com sucesso.
  • Geração de Código: É necessário, para executar essa função, inserir, no campo rotulado como “caminho do programa objeto”, o caminho aonde o programa objeto será gerado, por exemplo, C:\Users\L\Desktop\objeto.txt.

Mensagens de erro

Diversas mensagens informando o usuário e possíveis problemas serão mostrados na tela de console. Abaixo é mostrado quais mensagens podem aparecer:

  • "Error: Source File not found!": Programa fonte não encontrado.
  • "Error row ‘x’ column ‘y’ Token “currentSpelling” is not acceptable.”: Indica um erro léxico, devido a detecção de um token não pertencente a gramática.
  • "Syntaxe Error: row ‘x’ column ‘y’. Unexpected token ’currentSpelling’: Indica um erro léxico, devido a presença de um token em uma posição indevida.
  • "Parser concluded": Indica que a análise sintática foi executada com sucesso.
  • "Checker and Identifier Concluded": Indica que a análise de contexto foi realizada com sucesso.
  • "Error: Program Object file was not found": Indica que o arquivo de destino do programa objeto não pode ser acessado. Para solucionar esse problema, insira um caminho especificando o arquivo objeto a ser gerado ou editado, um exemplo disso é C:\Users\L\Desktop\objeto.txt.
  • "Code has been generated": Geração de código foi executada com sucesso.
  • "Incorrect Types!": Atribuição com tipo diferente do definido ou operação onde operandos não possuem o mesmo tipo.
  • "Missing Arguments on Declaration in line ‘x’": Indica a falta de argumentos em determinada chamada de rotina.
  • "Exceded Arguments to Declaration in line ‘x’.": Indica chamada de rotina com excesso de argumentos.
  • "Incorrect Type of Arguments on Declaration in line ‘x’.": Indica que o tipo dos argumentos está incorreto, ou seja, não é o mesmo que foi declarado.
  • "Incompatible Types in If Expression ": Expressão presente no comando If não representa um booleano.
  • "Literal operands in Array Declaration must be Integers": Indica que os indexadores do array devem ser número inteiros.
  • "First Operand is larger than Second in Array Declaration": Indica que na declaração de arrays o valor mínimo é maior que o máximo.
  • "Incompatible Types in While Expression": Indica que a expressão presente no comando While não é do tipo booleano.
  • "Array Operands Must Be Integers.": Os valores que indicam a indexação do array devem ser inteiros.
  • "Exceded Array Dimension in line ‘x’: Indica que a dimensão do array se excedeu. A maior dimensão possível é dois.
  • "Variable # ‘x’ already declared in this scope!": Indica que uma variável foi redeclarada em um escopo.
  • "Variable ‘x’ was not declared": Indica que determinada variável não foi declarada.

Referência

D.A Watt, D.F Brown. Programming Language Processors in Java, Prentice-Hall, Englewood Cliffs, NJ (2000). [link]

Creditos

@oieusouweverton and all contributors

Licensa

UNIVASF © Weverton Bruno

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages