7

それだけの価値がないことはわかっていますが、教育目的のためだけに、独自のキーワードを .NET 言語に挿入する方法があるかどうかを知りたいです。

たとえば、C# に C++ の asm キーワードがあるとよいと思いました。
asm キーワードを実装する方法について話しているのではなく、C# にキーワードを追加する一般的な方法について話していることを思い出してください。

私の想像コード:

asm{
    mov ax,1
    add ax,4
}

これを達成する方法はありますか?この質問に十分なスーツ
の実装をカバーする答え。keyword{ }

4

4 に答える 4

4

これは現時点では不可能です。ただし、 「サービスとしてのコンパイラ」と要約できるRoslynと呼ばれる開発中の Microsoft プロジェクトがあります。特に、API を介してコンパイラの動作を拡張または変更できます。

Roslyn が利用可能になると、これは (注意して!) かなり実行可能になるはずです。

于 2013-03-13T15:15:52.240 に答える
2

コードをC#コンパイラに送信する前に、コードを前処理したいツールを使用できます。たとえば、VSマクロを使用して前処理を行い、発明した特定の構文をC#コードにコンパイルされるものにマッピングし問題がある場合はエラーを生成する場合があります。VSマクロが十分に強力でない場合は、コンパイラに送信する前に、テキストに対してコーディングしたことをすべて実行する独自のIDEをいつでも使用できます。

コンパイラには、独自のキーワード/構文を指定するための組み込みのサポートはありません。コンパイラから完全に独立して処理する必要があります。

于 2013-03-13T14:47:00.563 に答える
2

残念ながら、これは不可能です。言語を拡張または変更することはできません。

わかりにくい方法で、PostSharp を使用して文字列を読み取って解析し、コンパイル時にそれらをカスタム コードに変換することができます (プリ プロセッサ)。しかし、これでは非常にエラーが発生しやすく、魔法の文字列のインテリセンスやコード補完が得られないため、満足することはできません。

于 2013-03-13T14:43:19.920 に答える
0

MSDNによると、キーワードは事前定義されており、変更できません。したがって、それらを処理する方法をコンパイラに伝える必要があるため、追加することはできません。その限りでは、できません。

于 2013-03-13T14:45:38.280 に答える