2009-11-16 8 views
0

Lorsque je lance make sur le Makefile suivant, quand la table de symboles est-elle construite, si elle l'est?Quand la table de symboles de ce programme est-elle construite

LEX = flex 
YACC = yacc 
CC = gcc 

calcu: y.tab.o lex.yy.o 
    $(CC) -o calcu y.tab.o lex.yy.o -ly -lfl 

y.tab.c y.tab.h: parser.y 
    $(YACC) -d parser.y 

y.tab.o: y.tab.c parser.h 
    $(CC) -c y.tab.c 

lex.yy.o: y.tab.h lex.yy.c 
    $(CC) -c lex.yy.c 

lex.yy.c: calclexer.l parser.h 
    $(LEX) calclexer.l 

clean: 
    rm *.o 
    rm *.c 
    rm calcu 

Répondre

2

make ne construit pas des tables de symboles (évidemment les compilateurs et linkers il Invoque devra le faire!). Je suppose que vous faites référence à ce que le binaire calcu produit par son entrée, à la place.

Si une telle "table de symboles" est jamais créée par calcu, ce sera par le code que vous insérerez dans parser.y qui sera déplacé dans yacc.tab.c; quant à quand, il sera au cours d'un calcu exécuter quelque soit son entrée - progressivement, chaque production de syntaxe, y compris "code de construction de table de symboles" correspond.

+0

Je pense que la table de symboles est complètement construite avant que le programme ne soit exécuté. – neuromancer