有没有易用的代码生成器呢?--用来生成ADT数据类型的

miliggate 2013-07-12 04:44:48
示例:
class adt_
{
public:
int count() const;
int def() const;
void count(int);
void def(int);
private:
int _mcnt;
int _mdef;
};

感觉像上面一样写这种代码太麻烦了,
用宏的话还是要很多的代码
所以有没有好的代码生成器呢,
比如我输入几个变量的类型还有名字就可以输出一个类到文本
不太想用YACC..
...全文
180 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
miliggate 2013-07-13
  • 打赏
  • 举报
回复
引用 6 楼 turingo 的回复:
不太想自己写,就老老实实用STL去构建,先把需求理顺。 [quote=引用 5 楼 SisMVG 的回复:] [quote=引用 2 楼 adlay 的回复:] 如果需求只有上面这一点, 这么简单的话, 自己写一个撒. 找找新版本的 VA 这些看加入了这种功能没有.
。。主要不太想自己写。。VA似乎找不到这个功能 [/quote][/quote] 。。。那STL构建什么。。我只是有很多数据而已,和STL没什么关系
图灵狗 2013-07-12
  • 打赏
  • 举报
回复
不太想自己写,就老老实实用STL去构建,先把需求理顺。
引用 5 楼 SisMVG 的回复:
[quote=引用 2 楼 adlay 的回复:] 如果需求只有上面这一点, 这么简单的话, 自己写一个撒. 找找新版本的 VA 这些看加入了这种功能没有.
。。主要不太想自己写。。VA似乎找不到这个功能 [/quote]
miliggate 2013-07-12
  • 打赏
  • 举报
回复
引用 2 楼 adlay 的回复:
如果需求只有上面这一点, 这么简单的话, 自己写一个撒. 找找新版本的 VA 这些看加入了这种功能没有.
。。主要不太想自己写。。VA似乎找不到这个功能
miliggate 2013-07-12
  • 打赏
  • 举报
回复
引用 3 楼 turingo 的回复:
直接用STL不好吗?干嘛重复造轮子? [quote=引用 楼主 SisMVG 的回复:] 示例: class adt_ { public: int count() const; int def() const; void count(int); void def(int); private: int _mcnt; int _mdef; }; 感觉像上面一样写这种代码太麻烦了, 用宏的话还是要很多的代码 所以有没有好的代码生成器呢, 比如我输入几个变量的类型还有名字就可以输出一个类到文本 不太想用YACC..
[/quote] 嘛,有别的数据类型。。而且数据很多,又要继承结构
图灵狗 2013-07-12
  • 打赏
  • 举报
回复
直接用STL不好吗?干嘛重复造轮子?
引用 楼主 SisMVG 的回复:
示例: class adt_ { public: int count() const; int def() const; void count(int); void def(int); private: int _mcnt; int _mdef; }; 感觉像上面一样写这种代码太麻烦了, 用宏的话还是要很多的代码 所以有没有好的代码生成器呢, 比如我输入几个变量的类型还有名字就可以输出一个类到文本 不太想用YACC..
www_adintr_com 2013-07-12
  • 打赏
  • 举报
回复
如果需求只有上面这一点, 这么简单的话, 自己写一个撒. 找找新版本的 VA 这些看加入了这种功能没有.
赵4老师 2013-07-12
  • 打赏
  • 举报
回复
仅供参考
//codegen.c
// 输入一组字符串,比如
// aa ss ddd dd 33 dd
// 然后自动生成一个函数 int A(const char*);
// 实现A("aa")返回0  A("ss")返回1 依次类推
#include <stdio.h>
int main(int argc,char **argv) {
    int i;
    if (argc<2) {
        printf("%s p1 [p2 ...] [>result.c]\nGenerate code int A(const char *a); 0==A(\"p1\") 1==A(\"p2\") ...",argv[0]);
        return 1;
    }
    //printf("#include <string.h>\n");
    printf("int A(const char *a) {\n");
    for (i=0;i<argc-1;i++) {
        printf("    if (0==strcmp(a,\"%s\")) return %d;\n",argv[i+1],i);
    }
    printf("    return -1;\n");
    printf("}\n");
    return 0;
}
//C:\test\Debug>codegen.exe
//codegen.exe p1 [p2 ...] [>result.c]
//Generate code int A(const char *a); 0==A("p1") 1==A("p2") ...
//C:\test\Debug>codegen.exe aa ss ddd dd 33 dd
//int A(const char *a) {
//    if (0==strcmp(a,"aa")) return 0;
//    if (0==strcmp(a,"ss")) return 1;
//    if (0==strcmp(a,"ddd")) return 2;
//    if (0==strcmp(a,"dd")) return 3;
//    if (0==strcmp(a,"33")) return 4;
//    if (0==strcmp(a,"dd")) return 5;
//    return -1;
//}
//
//c:\test\Debug>codegen.exe aa ss ddd dd 33 dd >result.c
//
//c:\test\Debug>type result.c
//int A(const char *a) {
//    if (0==strcmp(a,"aa")) return 0;
//    if (0==strcmp(a,"ss")) return 1;
//    if (0==strcmp(a,"ddd")) return 2;
//    if (0==strcmp(a,"dd")) return 3;
//    if (0==strcmp(a,"33")) return 4;
//    if (0==strcmp(a,"dd")) return 5;
//    return -1;
//}
//

64,318

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧