「Xを解釈する」という多くの課題があります。Xは単純な言語です。私の意見では、それはあまりにも退屈です。インターネット上のすべての先延ばしの人々に何か面白いことをするために、この挑戦を試みることができます:
チャレンジ
言語を選択してください$LANG
。$LANG
チューリング完全プログラミング言語またはプログラミング言語のチューリング完全サブセットのいずれかです。あなたの言語の機能$LANG
を解釈のために省略した場合、あなたの提出物もで書かなければならないので、あなた自身のプログラムにもそれを使用してはならないことに注意してください$LANG
。
で$LANG
書かれたコンパイラ/インタプリタを記述し$LANG
ます。eval
このコンパイラを作成するために使用できる言語のすべての機能(および友人を含む)を使用できます。タスクをより困難にするために、1つの制限があります。プログラムは$LANG
、インタープリター/コンパイラー自体を除くすべての有効なプログラムを解釈/コンパイルできる必要があります。解釈/コンパイルされるプログラムがインタープリターまたはコンパイラー自体である場合(ファイル名に関係なく)、プログラムはインタープリターまたはコンパイラーの機能とはまったく関係のないこと(barfingや印刷など)を行う必要がありますHello, world!
。
このタスクをさらに複雑にするために、プログラムはコンパイルまたは解釈時に独自のソースを読み取ってはなりません。
仕様書
- このタスクはコードゴルフです。正しい文字が最も少ない投稿が優先されます。同点の場合、最初に提出されたソリューションが勝ちます。
- プログラム/スクリプトは、ファイルから解釈されるプログラムを読み取る必要があります。パスと名前をハードコーディングできます。ファイルが読み取られたら、ファイルを別のファイルにコンパイルするか(システムで実行可能である必要があります)、直接実行することができます。
$LANG
ファイル読み取り機能が不足している場合は、に適合するコードを読み取る別の方法を選択できます$LANG
。$LANG
別の言語のサブセットとして選択することはできませんが、ファイル読み取り機能は削除されます。 - 通常のコードゴルフ規則が適用されます。つまり、この課題を解決するために作成した個人のペット言語は、ソリューションがそれを使用して簡単になった場合は禁止されています(ソリューションを正確に実装する単一文字プログラムを定義するなど)。ルールの乱用は奨励されます。