smalltalk の使用を開始し、新しい代入演算子を追加しようとしてい:>
ます。
pharo で現在使用されている演算子はセレクターではないため_
、代入でアンダースコアを有効にできるクラス Scanner を調べ始めました。私は同様の方法でそれをやろうとしましたが、うまくいきませんでした。
私がそれを達成する方法について何か考えや提案はありますか?
smalltalk の使用を開始し、新しい代入演算子を追加しようとしてい:>
ます。
pharo で現在使用されている演算子はセレクターではないため_
、代入でアンダースコアを有効にできるクラス Scanner を調べ始めました。私は同様の方法でそれをやろうとしましたが、うまくいきませんでした。
私がそれを達成する方法について何か考えや提案はありますか?
まず、 Method を見てくださいScanner>>#xColon
。このメソッドは、入力でコロンが検出されるたびに呼び出されます。メソッドの先頭に次のスニペットを追加することで、新しい割り当てトークンを検出させることができます:>
。
aheadChar = $> ifTrue: [
self step.
tokenType := #leftArrow.
self step.
^ token := #':=' ]
Like this:>
は、通常の割り当てとまったく同じように動作します。tokenType
とをカスタマイズtoken
することで、新しい代入演算子をパーサーに渡し (Parser>>#expression
とを参照Parser>>#assignment:
)、別の AST を構築できます (つまり、別の実行動作を実現するため)。
より高い柔軟性に関心がある場合は、Helvetiaを参照してください。Helvetia は Pharo 用の言語ワークベンチで、ホスト言語を変更し、よりモジュール化された方法でツールを適応させることができます。ディストリビューション ( ) に含まれる例の 1 つは、CUSwapExample
2 つの新しい代入演算子を Smalltalk に追加することです。