SCC0217 - Compiladores, ICMC - USP.
- As seguintes tarefas devem ser desenvolvidas neste trabalho prático:
-
Modelar a tarefa do analisador léxico: tokens possíveis, expressões regulares utilizadas, formas de tratamento de erros (ver slides das aulas).
-
Buscar e estudar o lex/flex ou JavaCC: note que quase todos os livros de compiladores têm apresentações dessas ferramentas; também há muitos tutorias na Web (alguns estão disponíveis no site da disciplina). O grupo pode decidir por implementar o analisador de maneira manual, sem o uso das ferramentas mencionadas.
-
Gerar o analisador léxico usando o lex/flex ou javaCC: o grupo deve incorporar no lex/flex/javaCC a geração de uma função principal que analise todo o arquivo de entrada, chamando o analisador léxico várias vezes, o qual, a cada chamada, deve retornar um único par <cadeia,token>. Note que esta função será substituída posteriormente pelo analisador sintático.
-
Especificação: implementar o analisador sintático para a linguagem LALG, usando YACC ou JAVACC. A implementação também pode ser feita manualmente.
-
As seguintes tarefas devem ser desenvolvidas neste trabalho prático:
-
(Para quem não implementar manualmente) Buscar e estudar o YACC ou JavaCC: note que quase todos os livros de compiladores têm apresentações dessas ferramentas; também há muitos tutorias na Web (alguns estão disponíveis no site da disciplina).
-
Gerar o analisador sintático usando o YACC ou JavaCC: substitua o programa principal do Trabalho 1 pelo analisador sintático. Corrija o analisador léxico (se necessário).
-
Implementar o tratamento de erro usando o modo pânico, sempre relatando os erros para o usuário.
.
├── ...
├── test # Arquivos para testes no projeto
├── MakeFile # Arquivo para facilitar a compilação do projeto e execução.
├── Relatório # Infos detalhadas do projeto
├── main # Programa compilado
├── lalg.l # programa Lex para a linguagem LALG
├── lalg.y # programa em Bison para a linguagem LALG.
├── ...
.
make
make run