diff --git a/codegenerator/geracao.c b/codegenerator/geracao.c index 16ff719..9782265 100644 --- a/codegenerator/geracao.c +++ b/codegenerator/geracao.c @@ -1,6 +1,5 @@ #include "geracao.h" -int main() { - - return 0; +void geraCodigo(TreeNode *programa, TabSimb *tabela) { + // do somenthing } \ No newline at end of file diff --git a/codegenerator/geracao.h b/codegenerator/geracao.h index d299930..f6349fe 100644 --- a/codegenerator/geracao.h +++ b/codegenerator/geracao.h @@ -4,6 +4,9 @@ #include "../tree/tree.h" #include "../semantic/tabsimb.h" +/*-----------------------------* + * BIBLIOTECAS DO LLVM E CLANG * + *-----------------------------*/ #include #include diff --git a/main.c b/main.c index 01fdc34..da8593f 100644 --- a/main.c +++ b/main.c @@ -11,6 +11,10 @@ typedef TokenRecord TR; // apenas para economizar espaços na linha char **arquivos; // este ponteiro conterá todos os arquivo passados por parâmetros char flags[8]; // cada posição se refere a um tipo de flag // flags: [0] = -tk; [1] = -ax; [2] = -at; [3] = -sx; [4] = -st; [5] = -ts; [6] = -h; [7] = -v; + +// inves de incluir a biblioteca geracao.h +void geraCodigo(TreeNode *, TabSimb *); + char *version = "4.2.1"; void qualFlag(char *flag) { @@ -167,6 +171,12 @@ int main(int argc, char *argv[]) { if(flags[5]) printEscopo(tabela, 0); + + /*******************\ + * geração de código * + \*******************/ + geraCodigo(ast, tabela); + i ++; } diff --git a/makefile b/makefile index ee627e4..46a0f43 100644 --- a/makefile +++ b/makefile @@ -1,8 +1,18 @@ all: main # compila todos os arquivos install: main clean move xdot codeinstall highlight # instala o vcc -main: varredura parse semantic # parse já inclui a árvore - gcc main.c lexical/varredura.o tree/tree.o syntactic/parse.o desacerto.o tree/stack.o semantic/poda.o semantic/tabsimb.o semantic/semantico.o -o vcc +# configurações para compilar geracao.c +CC = clang-3.5 +CXX = clang++-3.5 +LLVMCFG = llvm-config-3.5 +OPT = opt-3.5 +CFLAGS = -Wall `$(LLVMCFG) --cflags` +LDFLAGS = -Wall `$(LLVMCFG) --libs core --system-libs` `$(LLVMCFG) --ldflags` + +# regras do make +# gera todos os arquivos .o e depois linka tudo +main: varredura parse semantic geracao # parse já inclui a árvore + gcc main.c lexical/varredura.o tree/tree.o syntactic/parse.o desacerto.o tree/stack.o semantic/poda.o semantic/tabsimb.o semantic/semantico.o codegenerator/geracao.o -o vcc make clean varredura: @@ -30,7 +40,7 @@ poda: gcc -c semantic/poda.c -o semantic/poda.o geracao: - gcc codegenerator/geracao.c -o codegenerator/geracao.o + gcc -c codegenerator/geracao.c -o codegenerator/geracao.o $(CFLAGS) clean: # apaga os arquivos objetos de compilação rm lexical/varredura.o -f @@ -41,12 +51,14 @@ clean: # apaga os arquivos objetos de compilação rm semantic/poda.o -f rm semantic/tabsimb.o -f rm semantic/semantico.o -f + rm codegenerator/geracao.o -f xdot: # instala o xdot apt-get install xdot --allow-unauthenticated -y -codeinstall: # instala llvm e clang, todos na versão 3.5 +codeinstall: # instala llvm e clang, todos na versão 3.5; biblioteca necessária para o -ledit apt-get install clang-3.5 --allow-unauthenticated -y + sudo apt-get install libedit-dev --allow-unauthenticated -y move: # move o executavel para a pasta /bin/ mv vcc /usr/bin/