Trabalho referente à disciplina de Compiladores no semestre 2023.1.
Alunas: Gabriela Pinheiro e Karina Lemos
O código de entrada deverá ser inserido no arquivo entrada.txt
A pasta Exemplos possui diferentes exemplos de códigos que podem ser usados.
make
Este comando considera que o usuário tenha instalado o pacote WinFlexBison.
make win
Caso contrário, é possível usar o comando anterior.
make scan
make scan_terminal
Em caso de erros a saída é uma mensagem de erro
- Linha x: sintax error
- Linha x: Operação inválida entre os tipos "nome do tipo" e "nome do tipo"
Consideramos apenas operações inválidas entre os tipos:
- Float e char
- Int e char
- Linha x: Identicador 'nome do identificador' nao declarado anteriormente
- Linha x: Identificador 'nome do identificador' já declarado anteriormente
Em caso de nenhum erro a saída é uma árvore escrita no arquivo saida.txt.
-
Scanner + parser bottom-up -> Karina e Gabriela
-
Transformação de laços de repetição em desvios incondicionais (goto) -> Gabriela
-
Verificação de tipos -> Gabriela
-
Contexto de identificadores -> Karina
Existem duas restrições de implementações conhecidas neste trabalho:
- Não é feita a checagem do tipo e quantidade dos argumentos ao se usar uma função. Só se verifica se eles já foram declarados.
- Não existe distinção entre um indentificador que delimite uma função de uma variável. Logo, ao se executar uma função não se verifica se aquele identificador representa uma função ou variável.