Когда создается таблица символов для этой программы

Когда я запускаю 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

person neuromancer    schedule 16.11.2009    source источник


Ответы (1)


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

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

person Alex Martelli    schedule 16.11.2009
comment
Я думаю, что таблица символов полностью построена еще до запуска программы. - person neuromancer; 16.11.2009