私は学部の研究でコンパイラデザインコースを受講しています。学習プロセスの一環として、私は言語のためのコンパイラを開発しなければならないでしょう。Bash用コンパイラ
Bash用にコンパイラを記述することはできますか? C/C++のような通常のプログラミング言語のためのコンパイラを設計するよりも、少なくとも初心者のためには全く考えられないほど難しいでしょうか?
私は学部の研究でコンパイラデザインコースを受講しています。学習プロセスの一環として、私は言語のためのコンパイラを開発しなければならないでしょう。Bash用コンパイラ
Bash用にコンパイラを記述することはできますか? C/C++のような通常のプログラミング言語のためのコンパイラを設計するよりも、少なくとも初心者のためには全く考えられないほど難しいでしょうか?
コンパイラはBash用に記述できますか?
はい。 (存在証明-shc
)
もしそうなら、どうですか?
これは難しい部分です。
POSIXシェル言語は、バックティック、変数置換、引用などの影響を受けるため、一般的なプログラミング言語と大きく異なります。
これを無視し、難しい機能を省略したり、POSIXの動作に準拠しない方法で "bash like"言語を実装することができます。
次に...実行可能なものを生成する方法の問題があります。繰り返しますが、これは可能です(上記参照)。しかし、あなたの目的が通常のシェルより速い場合は、コンパイルされたコードで一般的なLinuxコマンドの動作をエミュレートする必要があります。それは大きな仕事です。
私はこれは悪いプロジェクトです言っていないんだけど、あなたには、多くの作業を行う必要があります:POSIXシェルスペックを読んで(完全に)理解し、
ccshは、コンパイルしているシェルスクリプトをバイナリにすることを誇る、フリーではないプロジェクトです。 – louigi600
ありがとうございますが、存在証明のために必要なのは1つの例だけです。 –
実質的にどの言語でもコンパイルできます。一般的な手法はすべての言語で同じです。コンパイラはコードを解析し、プログラムが何をするのかを把握し、それを実行する実行可能コードを生成します。 bash 'for'ループと' 'for''ループのコンパイルにはあまり違いはありません。 – Barmar
"どのように"どのような部分は、あなたがクラスに傾くものと仮定されていません?あなたはその言語を選んでもいいですか?言語があなたのために処方される可能性があります。 – puhlen
誰かが私のコメントに何が起こったのか知っていますか? – melpomene