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 つは、CUSwapExample2 つの新しい代入演算子を Smalltalk に追加することです。