现在我要解析php文件,asp文件或者jsp文件,lex_php.l yacc_php.y用来解析php文件,lex_asp.l yacc_asp.y用来解析asp文件,
然后我有main,main将通过输入类型调用不同的解析
但是当编译和链接它们时,输出重新定义错误,我该怎么办?像这样的生成文件
LEX=flex
YACC=bison
CC=g++
OBJECT=main #the execute target
$(OBJECT): main.o lex_php.o yacc_php.o lex_asp.o yacc_asp.o
$(CC) yacc_php.o yacc_asp.o -o $(OBJECT)
main.o: main.c yacc_php.h lex_yacc_php.h yacc_asp.h lex_yacc_asp.h Token.h WebShellFilter.h
$(CC) -c main.c
lex_php.o: lex_php.c yacc_php.h lex_yacc_php.h
$(CC) -c lex_php.c
lex_php.c: lex_php.l
$(LEX) -o lex_php.c lex_php.l
yacc_php.o: yacc_php.c lex_yacc_php.h
$(CC) -c yacc_php.c
yacc_php.c yacc_php.h: yacc_php.y
$(YACC) -d yacc_php.y -o yacc_php.c
############### ASP
lex_asp.o: lex_asp.c yacc_asp.h lex_yacc_asp.h
$(CC) -c lex_asp.c
lex_asp.c: lex_asp.l
$(LEX) -o lex_asp.c lex_asp.l
yacc_asp.o: yacc_asp.c lex_yacc_asp.h
$(CC) -c yacc_asp.c
yacc_asp.c yacc_asp.h: yacc_asp.y
$(YACC) -d yacc_asp.y -o yacc_asp.c
clean:
@rm -f $(OBJECT) *.o
我认为,yacc_asp.o 和 yacc_php.o 都包含 yyparse、yytext 和 mamy 其他相同的功能,所以可能输出重新定义错误。
但是如何解决这个问题,帮帮我,非常感谢