parse generator生成c++文件
来源:互联网 发布:淘宝网完美芦荟胶 编辑:程序博客网 时间:2024/06/08 15:57
parse generator是Windows下替代bison的一款好软件,使用academic copy license时,可以无功能限制使用。网上有很多关于生成c的例子。这里来个c++的。
我是在VC6环境下的,关于配置的问题,我就不讲了,参看PG自带的帮助文件的“设置Visual C++ version 4.0及更高版本”一节。保证include files啊,source files啊等等都设置好了哈。
保证在项目设置中,库啊(通常是yld.lib),YYDEBUG预处理标记都添加好了。
对于PG安装目录下的\Cpp\Examples\calc中yacc文件calc.y,用PG编译出C语言的,这时拿输出的下编译好的h和c文件,编译肯定是没有问题的。
但如果你想搞成c++的,生成的cpp文件会在build时报错,会提示有undeclared identifier的yylval和yyparse。
这时,你需要更改yacc文件为:
#include <ctype.h>
#include <stdio.h>
#define YYSTYPE double
%}
%token NUMBER
%name myparser
// class definition
{
// place any extra class members here
virtual int yygettoken();
}
%%
lines
expr
term
factor
%%
int main(void)
{
myparser parser;
if (parser.yycreate()) {
}
return n;
}
int YYPARSERNAME::yygettoken()
{
// place your token retrieving code here
int c;
}
可以看到改动有3处,第一处是添加了%name和yygettoken成员函数的声明;第二处是搞复杂了main函数;第三处就是添加了yygettoken成员函数的定义,用它取代了yylex函数。至此,用PG编译生成的c++输出文件就能在VC下build了。
http://hi.baidu.com/wangkai/blog/item/5cc815ce0bfa443db600c834
关于上面论述,我在VS2005环境下做过,发现有点问题,首先,把一个警告信息解决,按照上述程序编译,会有警告:
1>
1>
关于产生原因和解决办法如下:
排除 vs2005 中的不安全函数警告:
下面的代码:
#include <stdio.h>
#include <minmax.h>
int main( )
{
}
使用vs2005编译时会遇到这样一个warning: warning C4996: 'scanf' was declared deprecated
其实 warning C4996的详细含义就是:'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.翻译过来,就是scanf的声明在VS2005中被认为是不安全的,让你使用scanf_S来代替。
知道了原因,那解决就方便了,只要在#include <stdio.h>前面添加
#define _CRT_SECURE_NO_DEPRECATE 或者 scanf函数修改为scanf_s即可。具体如下:
#define _CRT_SECURE_NO_DEPRECATE
#include <stdio.h>
#include <minmax.h>
int main( )
{
}
或者
#include <stdio.h>
#include <minmax.h>
int main( )
{
}
- parse generator生成c++文件
- parse generator生成c++文件
- Mybits-generator 自动生成文件
- 熟悉Parse Generator
- spring boot mybatis生成模型文件(generator)mybatis-generator:generate
- 使用mybatis generator工具生成文件
- mybatis-generator自动生成DAO文件
- MyBatis Generator自动生成代码文件
- mybatis-generator maven 生成映射文件
- 使用MyBatis-Generator自动生成映射文件
- Mybatis Generator自动生成对应的文件
- Mybatis使用generator自动生成mapper文件
- mybatis-generator插件自动生成mybatis文件
- Parse Generator + Visual Studio 2013配置方法
- 利用mybatis-generator自动生成JavaBean,mapping映射文件等
- 使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件
- generator.xml文件自动生成mybatis的xml配置
- 命令+mybatis-generator插件自动生成Mapper映射文件
- nginx安装
- redis 数据结构
- 2016-2017 CT S03E05: Codeforces Trainings Season 3 Episode 5 J
- 单片机软定时器
- 如何获取自定义属性
- parse generator生成c++文件
- JavaScript入门<3>JSON
- java函数定义泛型
- Java String,StringBuilder,StringBuffer区别和实际应用总结
- ant control statements
- PyQt学习笔记(4)--Smart Dialog
- 视音频基础知识——YUV420
- 各种C++关键字的作用
- java static 详解