我开始使用smalltalk,我正在尝试添加新的赋值运算符:>
。
pharo中使用的当前运算符没有选择器,所以我开始研究类Scanner,其中可以为分配启用下划线_
。我试图以类似的方式做到这一点,但它没有奏效。
您对我如何实现这一目标有任何想法或建议吗?
答案 0 :(得分:3)
首先,请查看方法Scanner>>#xColon
。只要在输入中遇到冒号,就会调用此方法。通过将以下代码段添加到方法的顶部,您可以让它检测到新的分配令牌:>
:
aheadChar = $> ifTrue: [
self step.
tokenType := #leftArrow.
self step.
^ token := #':=' ]
像这样:>
的行为与正常分配完全相同。通过自定义tokenType
和token
,您可以将新的赋值运算符传递给解析器(请参阅Parser>>#expression
和Parser>>#assignment:
)并构建不同的AST(即实现不同的执行行为) )。
如果您对更具灵活性感兴趣,可以查看Helvetia。 Helvetia是Pharo的语言工作台,允许您修改主机语言并以更模块化的方式调整工具。分发中包含的examples之一(CUSwapExample
)正在向Smalltalk添加两个新的赋值运算符。