# Analisadores Lexicos e Sintaticos O Projeto consiste em usar o conjunto de ferramentas Flex/Bison (Lex/Yacc) para geraçao de compiladores com o objetivo de gerar codigo de uma linguagem imperativa (Provol-One) em Maquinas de Turing. A gramatica usada é: PROGRAM -> ENTRADA varlist SAIDA varlist cmds FIM varlist -> id varlist | id cmds -> cmd cmds | cmd cmd -> FACA id VEZES cmds FIM cmd -> ENQUANTO id FACA cmds FIM cmd -> SE id ENTAO cmds SENAO cmds | SE id ENTAO cmds cmd -> id = id | INC(id) | ZERA(id) Todas as variaveis sao do tipo numero natural (inteiro nao-negativo). O comando Inc(id) incrementa em um o conteudo da variavel id, Zera(id) faz o conteudo da variavel id ser 0 (zero), id = id copia o conteudo da variavel a direita na variavel da esquerda, ou seja é um comando de atribuiçao. Os booleanos, usados nos comandos Enquanto e de desvio condicional (Se − Entao e Se − Entao − Senao), sao relacionados aos valores numéricos na forma: falso é 0 (zero) e verdadeiro é qualquer valor positivo. O conteudo das pastas é: * As pastas Exemplo1 e Exemplo2 com alguns exemplos de programa para aprender a usar Yacc/Lex * Trabalho: conteudo do trabalho: Para usar, executar ./build.sh e depois ./trabmain e no terminal inserir (copiar por exemplo) uma entrada. O resultado vai sair num output. Se quiser ter um codigo gerado em C, execute da mesma forma os arquivos da pasta C. A pasta Testes da alguns exemplos de entrada a inserir no terminal apos a execuçao.