Lex & Yacc
来源:互联网 发布:javascript和node.js 编辑:程序博客网 时间:2024/06/07 08:46
Lex和Yacc学习过程中遇到的几个问题
1.在Lex中表述空格,空格的表述得使用[ ] 或者 " " ,不可以直接写空格,否则是匹配不了的。
2.在同时使用Lex和Yacc的时候,如果我们不想编写main函数或者相关的配套函数,
例如Lex的yywrap,Yacc的yyerror等,我们可以直接使用Lex或者Yacc提供的链接库
-ll 和-ly ,但是特别要注意的是,此处特别要注意(这个问题查了我三四天的时间),一定要
将-ly 写在-ll的前面,因为-ly和-ll均实现并导出了main,而在使用的过程中如果-ll写在了前面
就会导致Yacc的执行根本就不会执行,汗!!!,贴上我的Makefile错误代码:
CC = gccLEX = lexYACC = yaccTARGET = calc#重点看这里的顺序LIBS = -ll -ly CCFLAGS = $(TARGET): calc.l.o y.tab.o$(CC) $(CCFLAGS) -o $@ $^ $(LIBS)calc.l.o:calc.l.c$(CC) -c -o $@ $<calc.l.c: calc.l y.tab.h$(LEX) -o $@ $<y.tab.o:y.tab.c y.tab.h$(CC) -c -o $@ $<y.tab.c y.tab.h:calc.y$(YACC) -d $<clean:$(RM) -f *.h *.o *.c *.o $(TARGET)rebuild: clean $(TARGET)
正确的形式如下:
CC = gccLEX = lexYACC = yaccTARGET = calc#重点看这里的顺序LIBS = -ly -llCCFLAGS = $(TARGET): calc.l.o y.tab.o$(CC) $(CCFLAGS) -o $@ $^ $(LIBS)calc.l.o:calc.l.c$(CC) -c -o $@ $<calc.l.c: calc.l y.tab.h$(LEX) -o $@ $<y.tab.o:y.tab.c y.tab.h$(CC) -c -o $@ $<y.tab.c y.tab.h:calc.y$(YACC) -d $<clean:$(RM) -f *.h *.o *.c *.o $(TARGET)rebuild: clean $(TARGET)
阅读全文
0 0
- Yacc Lex
- lex & yacc
- lex&yacc
- Lex Yacc
- lex &yacc
- yacc & lex
- lex&yacc
- YACC & LEX
- lex yacc
- yacc&lex
- lex && yacc
- Lex & Yacc
- LEX, YACC
- lex yacc
- LEX YACC
- lex yacc
- lex yacc
- lex & yacc
- github fork到pull request的基础流程
- crawl 公众号
- 使用GreenDao遇到的问题
- android studio 自动打包so
- 第1章 对象入门
- Lex & Yacc
- 数据库架构在美团点评的演变实践
- java freemarker 通过ftl模板文件导出word文件发现在有中文地方出现在乱码,打开word文件提示xml错误解决办法
- ae基于面要素生成柱状图
- 微服务架构设计的简单理解
- 在Ubuntu14上为Xen设置桥接网络
- 数据库及SQL----常用知识点总结
- Java JSON Date类型数据处理问题
- 给图片识别添加音效系统