Когда строится таблица символов для этой программы? - PullRequest
0 голосов
/ 16 ноября 2009

Когда я запускаю make на следующем Makefile, когда создается таблица символов, если она вообще есть?

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

1 Ответ

2 голосов
/ 16 ноября 2009

make не создает таблицы символов (очевидно, компиляторы и компоновщики, которые он вызывает, должны будут это делать!). Я предполагаю, что вы ссылаетесь на то, что получаемый бинарный файл calcu делает с его входом.

Если любая такая вещь, как «таблица символов» когда-либо построена с помощью calcu, то код, вставленный в parser.y, будет перемещен в yacc.tab.c; что касается , когда , то он будет в течение calcu проходить через все свои входные данные - постепенно, так как каждое производство синтаксиса, включая «код построения таблицы символов», совпадает.

...