多个LEX和YACC配合的问题

发布于 2022-09-19 13:15:15 字数 168 浏览 13 评论 0

我正在编一个程序流程是这样的

先用LEX和YACC编写预处理程序处理C代码
再运用LEX和YACC一遍分析处理完的C代码以创建语法树

也就是说要运用两遍LEX和YACC,但现在不能简单的将两次得到的.c放在一起因为两次生成的文件很多变量是重复的
有什么办法吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

朕就是辣么酷 2022-09-26 13:15:15

把变量改名字就行了

南渊 2022-09-26 13:15:15

打个比方:
1.l 1.y为一组
2.l 2.y为一组
生成C文件和H文件的Makefile可以这样写

  1. .PHONY:all clean
  2. all : y.tab.1.c y.tab.2.c y.tab.1.h y.tab.2.h  lex.yy.1.c lex.yy.2.c
  3. y.tab.%.c y.tab.%.h : %.y
  4.         $(YACC) -d $<
  5.         sed 's/YY/YY'$(<:.l=)'/g;s/yy/yy'$(<:.l=)'/g' lex.yy.c > $(patsubst,%.y,y.tab.%.c,$<)
  6.         sed 's/YY/YY'$(<:.l=)'/g;s/yy/yy'$(<:.l=)'/g' lex.yy.h > $(patsubst,%.y,y.tab.%.h,$<)
  7.         $(RM) lex.yy.c lex.yy.h
  8. lex.yy.%.c : %.l
  9.         $(LEX) $<
  10.         sed 's/YY/YY'$(<:.l=)'/g;s/yy/yy'$(<:.l=)'/g' lex.yy.c > $@
  11.         $(RM) lex.yy.c
  12. clean:
  13.         $(RM)  lex.yy.* y.tab.*

复制代码
里面引用变量
比如extern char yytext[];
依然这样写,
不用写成extern char yy1text[];
因为编译的时候会被改掉的

[ 本帖最后由 cjaizss 于 2008-7-6 23:55 编辑 ]

攀登最高峰 2022-09-26 13:15:15

Makefile可以再做点改动:
假设一个目录里,xxx.l和xxx.y是一组
有很多组,都是除去后缀就是相同名字的才会相互引用

  1. YACC_SRC:=$(wildcard *.y)
  2. LEX_DRC:=$(wildcard *.l)
  3. CFLAGS=
  4. .PHONY:all clean
  5. all:$(YACC_SRC:%.y=y.tab.%.o) $(LEX_SRC:%.y=lex.yy.%.o)
  6. lex.yy.%.o:lex.yy.%.c
  7. y.tab.%.o:y.tab.%.c y.tab.%.h
  8. y.tab.%.c y.tab.%.h : %.y
  9.         $(YACC) -d $<
  10.         sed 's/YY/YY'$(<:.l=)'/g;s/yy/yy'$(<:.l=)'/g' lex.yy.c > $(patsubst,%.y,y.tab.%.c,$<)
  11.         sed 's/YY/YY'$(<:.l=)'/g;s/yy/yy'$(<:.l=)'/g' lex.yy.h > $(patsubst,%.y,y.tab.%.h,$<)
  12.         $(RM) lex.yy.c lex.yy.h
  13. lex.yy.%.c : %.l
  14.         $(LEX) $<
  15.         sed 's/YY/YY'$(<:.l=)'/g;s/yy/yy'$(<:.l=)'/g' lex.yy.c > $@
  16.         $(RM) lex.yy.c
  17. clean:
  18.         $(RM)  lex.yy.* y.tab.*

复制代码
[ 本帖最后由 cjaizss 于 2008-7-6 23:55 编辑 ]

避讳 2022-09-26 13:15:15

我用的是parse generator这个软件,没有markfile这个文件,还有别的办法吗?

挽容 2022-09-26 13:15:15

一个IDE?
我最讨厌IDE了,不到万不得已绝不用它。

心舞飞扬 2022-09-26 13:15:15

[ 本帖最后由 a02123230 于 2008-7-10 19:29 编辑 ]

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文