我正在阅读Modern Compiler Implementation in Java并显示以下简单的源程序代码:
a := 5+3; b := (print(a, a-1), 10*a); print(b)
程序的树形表示如下:
CompoundStm
/ \
/ \
a := 5+3 b := (print(a, a-1), 10*a); print(b)
AssignStm CompoundStm
/ \ / \
/ \ / \
a OpExp AssignStm PrintStm
/ \
b EsecExp
但我希望它是这样的:
CompoundStm
/ | \
/ | \
a := 5+3 b := (pr...), 10*a) print(b)
AssignStm AssignStm PrintStm
/ \ / \
/ \ / \
a OpExp b EsecExp
第一个CompoundStm
有2个孩子而不是3个孩子是什么?是因为CompoundStm
只能有2个孩子吗?