我所用到的yacc与lex命令
最近上操作系统实验课,用到了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里了。 使用命令:
yacc -v example.y 生成y.output,这个文件包含了LR分析表以及移进归约冲突。
bison -v example.y 生成example.output,这个文件包含了LR分析表以及移进归约冲突。
//其他代码 yyin = file; //file是FILE指针 yyparse(); //其他代码 除了从标准输入和文件读取外,bison还可以从一个已有的字符串中读取进行分析,注意这个字符串要以' '终止:
1 //其他代码 2 //string为以' '终止的字符数组 3 yy_scan_string(string); 4 yyparse(); 5 //其他代码 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |