## Requisitos minimos:
 - bison 3.0.4
 - flex 2.6.0
 - gcc 5.4.0

## para compilar o program rode o seguinte comando na pasta raiz:
make

## para rodar o analisador dobre um arquivo texto rode:
--------- ./program.out <path_do_arquivo>


## a gramatica utilizada eh listada em Analisador_150131992.pdf(por falata de tempo a documentacao esta desatualizada em relacao ao analisador sintatico)

## estao presentes na pasta oito programas de exemplo, dois sem erros(sejam lexicos, sintaticos ou semanticos): teste_correto1.txt, teste_correto2.txt.
Dois com erros lexicos: teste_errado1_lexico.txt, teste_errado_lexico2.txt. Dois com erros sintaticos: teste_errado1_sintatico.txt, teste_errado_sintatico.txt.
E dois com erros semanticos: teste_errado1_semantico.txt, teste_errado2_semantico.

## os codigos de exemplo com erro lexico possuem erros relacionados a simbolos nao reconhecidos na gramatica.
No teste_errado1_lexico.txt duas linha vao apresentar erro ao nao reconhecer "!", no teste_errado2_lexico.txt vai apresentar uma linha erro em uma linha com o simbolo "@".

## os codigos de exemplo com erro sinstatico possuem erro por tentarem declarar uma variavel e atribuir um valor a ela numa mesma linha,
coisa que a linguagem nao suporta.

## No arquivo teste_errado1_semantico.txt sao esperados dois tipos de erro o primeiro relacionado a falta de uma funcao main, e os outros dois relacionados a mismacth
de tipos na operacao da linha 3, O arquivo teste_errado2_semantico.txt sao esperados dois tipos de erro semantico um mismacth de tipo no tipo passado para a funcao e um mismacth de tipo com o tipo de retorno da main.

## Depois de compilado o codigo um arquivo tac/out.tac é gerado e pode ser excutado com a ferramenta tac.