Este repositório contém a implementação de um compilador para a linguagem C- (cminus).
- GCC
- Flex
- Bison
- MinGW / MSYS2 (no Windows)
mingw32-make
O processo de compilação é automatizado por meio de um Makefile, responsável por:
- Gerar o analisador léxico (
lex.yy.c) com Flex - Gerar o analisador sintático (
parser.tab.ceparser.tab.h) com Bison - Compilar os módulos do compilador
- Linkar o executável final
Arquivos principais:
lexer.l- analisador léxicoparser.y- analisador sintáticosemantic.c- análise semânticaanalyze.c- rotinas de análisestatements.c- tratamento de comandos
A documentação detalhada de cada fase do compilador está disponível na pasta docs/:
docs/lexico.md - descrição da análise léxica, tokens reconhecidos e regras do Flex
docs/sintatico.md - gramática da linguagem C-, regras sintáticas e estrutura da AST
docs/semantico.md - análise semântica, regras de escopo, tabela de símbolos e verificação de tipos
Para remover todos os arquivos gerados anteriormente:
mingw32-make cleanPara compilar o compilador:
mingw32-makeO executável gerado será cminus_compiler, que pode ser executado com um programa de teste (exemplo: sort.cminus):
./cminus_compiler < sort.cminus