6

我正在为 smalltalk 开发抽象语法树元模型,现在我在建模块时遇到了麻烦。它们是一种文字,但另一方面它们是行为实体,如方法。块是一种 lambda 函数,所以也许有人可以更好地使用它们。

我会感谢任何建议。

4

1 回答 1

8

重构浏览器有一个非常好的 AST,看看它的实现。

关于您的问题:重构浏览器将块和方法的共享部分提取到一个名为SequenceNode. 序列节点对临时和语句序列进行建模。块节点然后包装序列节点,添加参数,并继承值节点的共享行为。方法节点包装了序列节点,并添加了方法名称、参数、pragma 等。

于 2012-10-23T15:39:02.840 回答