Unix编程艺术——代码生成
2012-09-29 10:00
260 查看
Unix下有很强大的专用代码生成器,如用yacc/lex来构建语法分析器和词法分析器、用autoconf或automake生成makefile等。这些工具具有很强大的功能,但还有一些简单轻巧的代码生成方式,下面是《Unix编程艺术》中的两个例子。
生成ASCII显示的代码
如果在程序中直接通过初始化器来写出所有行,会出现对齐、每行很难保证79字符的问题。Ascii源码的解决方法是通过脚本生成这部分代码。
void
showHelp(FILE *out, char *progname)
{
fprintf(out,"Usage: %s [-dxohv] [-t] [char-alias...]\n", progname);
#define P(s) fputs(s "\n", out);
#include "splashscreen.h"
#undef P
exit(0);
}
splashscreen.h由Makefile生成:
splashscreen.h: splashscreen
sed <splashscreen >splashscreen.h -e 's/\\/\\\\/g' -e 's/"/\\"/g' -e 's/.*/P("&");/'
从数据产生代码,使得可编辑的用法屏幕和它的显示一致。
为列表生成HTML代码
我们可以在代码中直接编写生成HTML表格的代码,但这样每当新添加数据的时候都需要修改生成<tc>和<td>的代码。更好的解决方案是把数据放在类似下面的文本文件中:
Aalat :David Weber :The Armageddon
Aelmos :Alan Dean Foster :The man
Agandar :Donald Kingsbury :Psychohistorical Crisis
而使用脚本来生成HTML表格:
# cat data | awk -F: '{printf("<tr><td>%s</td><td>%s</td></tr>\n",$1,$2,$3)}'
<tr><td>Aalat </td><td>David Weber </td></tr>
<tr><td>Aelmos </td><td>Alan Dean Foster </td></tr>
<tr><td>Agandar </td><td>Donald Kingsbury </td></tr>
代码生成的好处:
尽可能少干活;
让数据塑造代码;
依靠工具;
机制同测试分离。
相关文章推荐
- Unix编程艺术——代码生成
- Unix编程艺术和代码大全比较阅读
- Android studio 下JNI编程实例并生成so库的实现代码
- UNIX-LINUX编程实践教程->第八章->实例代码注解->写一个简单的shell
- UNIX-LINUX编程实践教程->第三章->实例代码注解->ls1
- 使用.net 中的动态方法编程备忘录1(如何查看生成的动态方法的代码)
- unix编程艺术中的17点编程原则--设计开发者的至高准则
- Unix编程艺术——接口
- HTTP/HTTPS抓包工具——自动生成主流编程代码
- UNIX-LINUX编程实践教程->第三章->实例代码注解->ls2
- 在Linux环境下面搭建 UNIX 环境高级编程(第三版) 的代码编译环境
- Java 编程的动态性,第 8 部分: 用代码生成取代反射
- Unix环境高级编程第三版第一章练习代码
- Java下的框架编程(反射,泛型,元数据,CGLib,代码动态生成,AOP,动态语言嵌入)
- 远程通知:证书的生成和编程代码
- Java下的框架编程(反射,泛型,元数据,CGLib,代码动态生成,AOP,动态语言嵌入)(1)--序
- unix环境高级编程中代码运行问题
- unix环境高级编程-教材代码编译过程
- UNIX-LINUX编程实践教程->第二章->实例代码注解->cp1