为了生成编译器的代码,对语法树的数据结构进行定义是必不可少的一项工作。在这里我设计了一套用于生成C++代码的数据结构的数据结构定义文件的格式。
这份定义支持enum、class和typedef三种命名方法,支持基本类型、C++类型、列表、映射、指针以及智能指针等。因为结构简单,所以我直接贴一份示例出来。这份示例用于代表
这篇文章里的科学计算器表达式文法对应的语法树的结构。Expression本应是空的,为了对上述的例子进行说明,所以那些没用上的功能就全部加在Expression里面了。
1 enum BinopType
2 {
3 Plus
4 Minus
5 Mul
6 Div
7 }
8 enum SinopType
9 {
10 Negative
11 }
12
13 class Expression
14 {
15 list<int> IntList
16 map<string,int> IntMap
17 Expression^ Autoptr
18 Expression* Pointer
19 "CustomType" Custom
20 }
21 typedef Expression^ ExpPtr
22 class Number
23 {
24 double Number
25 }
26 class Binop
27 {
28 BinopType Operator
29 ExpPtr LeftOp
30 ExpPtr RightOp
31 }
32 class Sinop
33 {
34 SinopType Operator
35 ExpPtr Operand
36 }
列表、映射和智能指针在Vczh Library++ 2.0里都有对应的工具来表达,将来生成的编译器的代码数据结构将依赖于Vczh Library++ 2.0,而语法分析部分则直接使用库中的Syngram。
posted on 2008-09-12 05:49
陈梓瀚(vczh) 阅读(1224)
评论(0) 编辑 收藏 引用 所属分类:
脚本技术