何时构建此程序的符号表

时间:2009-11-16 07:05:17

标签: yacc lexical-analysis

当我在下面的Makefile上运行make时,构建符号表的时间是什么时候,甚至是?

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 个答案:

答案 0 :(得分:2)

make不构建符号表(显然它调用的编译器和链接器必须这样做!)。我假设你指的是由此产生的calcu二进制文件输入的内容。

如果calcu构建了“符号表”之类的内容,则会将您插入parser.y的代码移到yacc.tab.c;至于何时,它将在calcu运行过程中,无论其输入是什么 - 逐步地,因为每个语法产生包括“符号表构建代码”匹配。