这是一个简单的语法:
START = DECL DECL $ ;
DECL = TYPE NAME '=' VAL ;
TYPE = 'int' | 'float' ;
NAME = 'a' | 'b' ;
VAL = '4' ;
我用 Grako 解析这个输入流:
int a = 4
float b = 4
我检索这个抽象语法树(JSON):
[
"int",
"a",
[
"=",
"4"
],
[
"float",
"b",
[
"=",
"4"
]
]
]
有没有一种简单的方法来获得这样的 AST:
[
"int" TYPE,
"a" NAME,
[
"=" DECL,
"4" VAL
],
[
"float" TYPE,
"b" NAME,
[
"=" DECL,
"4" VAL
]
]
]
或这个:
...
"int TYPE",
...
?
我相信 Grako 生成的解析器中的语义操作是解决方案,但我无法弄清楚。
有没有一种简单的方法可以做到这一点?