1

我是一个经验丰富的 yacc/野牛滥用者。我习惯于建造自己的树,然后遍历它们。所以,现在,切换到 ANTLR3(为什么是 3?因为 4 不支持 Python,这就是为什么!)......我有以下语法:

symbol : ID fields          -> ^(NAME ID fields);

fields : (DOT ID)*          -> ^(FIELD ID*);

我的树语法片段是:

names: ^(NAME id=. fields) ;

fields: ^(FIELD .*) ;

“let z = abc”的结果树是:

(LETS (LET z (NAME a (FIELD b c))))

步行者说:

第 1:10 行的节点不匹配输入 u'b' 期待

引入 + 而不是 * 的各种尝试在其他方面都失败了。也许有关于 tree walker 究竟是如何为 * 和 + 工作的文档,但我没有找到它(比如某些人和冰箱?)。

4

0 回答 0