我所用到的yacc与lex命令
来源:互联网 发布:mac电脑恢复出厂设置 编辑:程序博客网 时间:2024/05/16 10:25
最近上操作系统实验课,用到了yacc和lex,Linux下使用bison和flex。下面是我用到的一些功能和命令,与大家分享。
在yacc或bison里定义的token如 %token xxx等,如果要在flex里用到,那么要用命令生成相应的头文件。
使用命令:
yacc -d example.y
生成y.tab.h,y.tab.c。
或者使用命令:
bison -d example.y生成example.tab.h,example.tab.c。
头文件里有token的枚举定义给flex使用,所以要在flex源文件 example.l 中的第一部分包含这个头文件:
1 %{2 #include "example.tab.h"3 //其他4 %}
或者
1 %{2 #include "y.tab.h"3 //其他4 %}使用命令:
flex example.l
生成文件 lex.yy.c,这样词法分析器就在lex.yy.c里,语法分析器就在y.tab.c或者example.tab.c里了。
然后,lex.yy.c,y.tab.c(或example.tab.c),y.tab.h(或example.tab.h)这三个文件与其他文件一起编译链接就可以了。
使用命令:
yacc -v example.y
生成y.output,这个文件包含了LR分析表以及移进归约冲突。
使用命令:
bison -v example.y
生成example.output,这个文件包含了LR分析表以及移进归约冲突。
在需要用到语法分析的地方调用 yyparse() 函数即可。通常词法分析会从标准输入读取,(即yyin = stdin),但可以在调用yyparse()之前把输入改成一个指定的文件:yyin = file(file是FILE指针);
//其他代码yyin = file; //file是FILE指针yyparse();//其他代码
除了从标准输入和文件读取外,bison还可以从一个已有的字符串中读取进行分析,注意这个字符串要以'\0'终止:
1 //其他代码2 //string为以'\0'终止的字符数组3 yy_scan_string(string);4 yyparse();5 //其他代码
- 我所用到的yacc与lex命令
- Lex与Yacc的结合
- Lex与Yacc的结合
- Lex与Yacc的使用
- 我所用到的Linux命令
- lex与yacc(二)计算器的实现
- Windows下lex 与 yacc的使用
- LEX与YACC 词汇表
- yacc与lex入门
- Yacc与Lex
- Lex与Yacc
- LEX与YACC入门
- LEX 与 YACC 学习
- Lex和Yacc从入门到精通(3)--一个极其简单的lex和yacc程序
- Lex和Yacc从入门到精通(4)-能够使用C++的Lex和Yacc框架
- Lex和Yacc从入门到精通(5)-开发Lex和Yacc程序的一般步骤
- Lex和Yacc从入门到精通(3)--一个极其简单的lex和yacc程序
- Lex和Yacc从入门到精通(4)-能够使用C++的Lex和Yacc框架
- 幸福知觉
- hdu3664
- srio
- 动态视频目标检测和跟踪技术
- 从客户端(&)中检测到有潜在危险的 Request.Path 值解决方案
- 我所用到的yacc与lex命令
- ARM汇编中的ldr和adr的区别及其在uboot中相关源码的分析
- 关于linux debian 32搭建toolchain4.2环境的经验
- POJ 3126 广搜
- 今天终于在ubuntu12.04中用jhbuild把nautilus编译成功了
- phonegap如何退出程序
- 友谊是什么
- CSS3 pointer-events:none
- CreateToolhelp32Snapshot获取系统进程