当前位置:  开发笔记 > 编程语言 > 正文

Pharo Smalltalk中如何实现二进制消息的优先级?

如何解决《PharoSmalltalk中如何实现二进制消息的优先级?》经验,为你挑选了1个好方法。

我正在研究Pharo Smalltalk的语法,并想知道如何实现二进制消息的优先级.

如何宣布这样的二进制消息?

系统如何确定优先于一元消息的优先级?



1> Uko..:

用于实现二进制消息:

是的,您可以查看数字类.它有很多二进制消息.或者考虑以下方法Object:

-> anObject
    ^ Association basicNew key: self value: anObject

这允许您评估'five' -> 5并获得关联.

优先顺序:

这是由解析器完成的.首先,它寻找关键字消息,然后是二进制,然后是一元,然后是父母.

所以,如果你有

collection add: 'five' -> 5

解析器首先解析add:接收器,collection然后解析'five' -> 5并将其作为参数add:.这样,AST的组成方式是关键字消息更通用,并在计算其属性后执行

哪里可以找到

在最新版本的Pharo中,解析完成RBParser(先前用于重构的解析器).关键字消息使用parseKeywordMessage和二进制 解析parseBinaryMessage.探索的简单方法是将一次性断点放在上面parseBinaryMessage并执行类似的操作

RBParser parseExpression: 'coll add: #five -> 5'

调试器将停止运行,parseBinaryMessage因此您可以查看堆栈并查看它是如何工作的.注意,打破一次很重要,否则每次编译方法时都会得到调试器等等.

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有