Compilador para a linguagem Lua 5.1 desenvolvido na disciplina de Compiladores ministrada por Alberto Alexandre Miranda.
Analisador léxico para Lua implementado com JavaCC. Lê um script .lua e gera um arquivo de saída com os tokens identificados no formato CLASSE valor.
Tokens reconhecidos: palavras-chave, identificadores, números (com notação científica), strings, operadores, delimitadores e símbolos especiais. Comentários (--) e espaços em branco são ignorados.
# A partir do diretório lab1-lexicalAnalysis/
javacc LexicalAnalysis.jj
javac *.java
java MyParser file-name.luaA saída é gravada em resposta.
Nesta etapa foi construída a gramática da linguagem e a tabela LR(1) utilizada pelo parser sintático. O objetivo é reconhecer uma versão intermediária de Lua 5.1 com comandos, expressões, chamadas de função e construtores de tabela.
lab2-buildingGrammar/parserLR/gramatica.conf— arquivo com as produções da gramática.lab2-buildingGrammar/parserLR/tabela_lr1.conf— tabela LR(1) linearizada usada pelo parser.lab2-buildingGrammar/parserLR/src/— implementação do parser em C++.lab2-buildingGrammar/lineariza-tabela.js— script auxiliar para linearizar a tabela a partir da visualização HTML.
A gramática inclui construções como:
- comandos de controle:
if,elseif,else,while - declarações:
local,return,function - expressões aritméticas, relacionais e lógicas
- chamadas de função
- acesso por campo e índice
- construtores de tabela com
{ ... }
A partir do diretório lab2-buildingGrammar/parserLR/:
./bin/parserLR