Atitit. 构造ast 语法树的总结attilax v2 q0f

 

 

 

 

 

1. Ast结构树形1

2. ast view (自是个160k的jar )2

2.1. 多条语句ast结构2

2.2. 变量定义 int b,c; 的ast结构2

2.3. 方法调用meth1(a=1,b=2,c=3);  的ast结构2

3. 误解的问题3

3.1. 语法书子能是个二叉树,实际上多叉树越好..3

3.2. 非要不个ast放到个stack黑头了..实际上不要stack牙行了...3

3.3. Ast非要解释成个map一类的数据结构了,实际上直接ast走是个tree,能直接输出使用了...3

3.4. Ast不一定要操作符表达式了,,,对象化名称牙越好...3

3.5. =等号不一定是个赋值运算符, 定义变量的时候儿走马意义..实际能失去的了..3

 

 

 

1. Ast结构树形

 

如何命名表达式名称。。使用实际对象名称,而不是操作符号表达式更好

参考在的ast view 一类的实现...

每个节点都是一个astnode。。也是一个exp。。

 

Ast的结构都是node构成。。

每个node都是express

 

参考antlr的ast继承树

 

 

2. ast view (自是个160k的jar )

2.1. 多条语句ast结构

 

 

 

2.2. 变量定义 int b,c; 的ast结构

VariableDeclarationStatement [123+8]

》》TYPE      (int)

>>  FRAGMENTS (2)     (b,c)

Int   a=1;

VariableDeclarationStatement [115+8]     (Int   a=1;)

VariableDeclarationFragment [119+3]    (a=1)

NAME   ::变量名

INITIALIZER   变量值

问题?? =(等号)好像马兰。。。

2.3. 方法调用meth1(a=1,b=2,c=3);  的ast结构

MethodInvocation [136+18]

》》NAME      方法名

》》ARGUMENTS (3)  参数列表

Assignment [142+3]       ( a=1 表达式 )

》》LEFT_HAND_SIDE   参数面称

》》OPERATOR: '='

>>RIGHT_HAND_SIDE   参数值

 

 

 

 

3. 误解的问题

3.1. 语法书子能是个二叉树,实际上多叉树越好..

3.2. 非要不个ast放到个stack黑头了..实际上不要stack牙行了...

3.3. Ast非要解释成个map一类的数据结构了,实际上直接ast走是个tree,能直接输出使用了...

3.4. Ast不一定要操作符表达式了,,,对象化名称牙越好...

3.5. =等号不一定是个赋值运算符, 定义变量的时候儿走马意义..实际能失去的了..