Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在为 smalltalk 开发抽象语法树元模型,现在我在建模块时遇到了麻烦。它们是一种文字,但另一方面它们是行为实体,如方法。块是一种 lambda 函数,所以也许有人可以更好地使用它们。
我会感谢任何建议。
重构浏览器有一个非常好的 AST,看看它的实现。
关于您的问题:重构浏览器将块和方法的共享部分提取到一个名为SequenceNode. 序列节点对临时和语句序列进行建模。块节点然后包装序列节点,添加参数,并继承值节点的共享行为。方法节点包装了序列节点,并添加了方法名称、参数、pragma 等。
SequenceNode