Skip to content

LionsWrath/LeftRecursionElimination

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LeftRecursionElimination

Projeto com a implementação de um algoritmo que elimina recursões à esquerda diretas e indiretas.

A entrada do programa é um arquivo de texto com uma grámatica para análise, seguindo o seguinte padrão:

X-aXb|e

  • Todos os símbolos devem ter somente um charactere  * As letras maiúsculas representam estados Não-Terminais
  • As letras minúsculas representam estados Terminais
  • O algoritmo suporta no máximo 26 símbolos como Não-Terminais - um para cada letra maiúscula do alfabeto. Lembre que o algoritmo gera novos símbolos Não-Terminais para a gramática.
  • A letra S representa o símbolo de início da gramática
  • A letra e represeta nosso "ε"(epsilon), portando lembrar de não utilizá-la para representar um terminal
  • $ representa nosso símbolo final
  • O símbolo "|" (pipe) separa produções
    • Pode-se optar pela não utilização do "pipe", basta escrever a produção em uma linha separada

Lembrando que a existência de produções-ε na gramática de entrada não garante a corretude da gramática de saída.

Para executar o código:

$ make
$ ./a.out -f <input file name>

Você pode também escrever o resultado em um arquivo:

$ make
$ ./a.out -f <input file name> -o <result file name>

Após os passos acima, será impresso na tela a gramática resultante, sem recursões à esquerda.

About

Algorithm to eliminate left recursion in CFG's.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published