0

**プログラムの実行中に翻訳がコンパイル段階に続くかどうか**プログラムを実行するとどうなるか?これらが異なる場合、解釈前に構文チェックを実行するもの。 Pythonを読んで、解釈された言語であり、次に何によって行われたステートメントをチェックしていますか?コンパイラとインタプリタの関係

答えて

2

あなたは2つのオプションがあります。コンパイル言語

  • コンパイル言語
  • インタプリタ言語

を、あなたは、入力として、ソースコードを取得し、バイナリを生成するコンパイラが必要特定のターゲットプラットフォーム上で実行できる出力として。たとえば、C、C++、またはJavaはコンパイルされた言語です。コンパイラがバイナリを生成した後は、バイナリをターゲットプラットフォーム上で実行します。 バイナリを生成するコンパイルプロセスに含まれる主なステップは、字句解析、構文解析、意味解析、コード生成です。

コンパイラは、ネイティブプラットフォーム上で実行され、特定のターゲットプラットフォーム用のコードを生成するプログラム(バイナリ)です。

* target_platform == native_platform (native-compiler) 
* target_platform != native_platform (cross-compiler). 

あなたはx86_64版のデスクトップPCを持っている場合は、あなたのコンパイラはx86_64版上で動作するとx86_64上で動作するコードを生成し、あなたのネイティブコンパイラを持っている:あなたは2つのオプションがあります。この場合、コンパイラはネイティブマシンコードを生成します。

x86_64デスクトップPCをお持ちの場合、コンパイラはx86_64で動作し、異なるプラットフォーム(JVMなど)で動作するコードを生成しますが、クロスコンパイラがあります。 Java言語は入力としてJava言語を取得するクロスコンパイラを使用し、JVM(x86_64マシンではない)上で実行されるバイトコードを出力として生成することを理解する必要があります。

arm-linux-gcc、mips-linux-gcc、ppc-linux-gccなどの他のクロスコンパイラは、Cソースコードを入力として取得し、適切なターゲットプラットフォーム(ARM、 MIPS、PPC)。

翻訳言語では、コードを生成するためにコンパイラを必要としないため、処理の最後にバイナリは生成されません。 bashとpythonは翻訳された言語です。言語のインタープリター(/ bin/bashや/ usr/bin/pythonなどのPCにインストールされているバイナリ)は入力ソースコードを受け取り、解釈して実行して出力を生成します。インタプリタがコードを生成せず、解析した後に実行する以外は、ソースコードを解釈するための手順はまったく同じです。

私はPythonを使ってカスタム定義言語のインタプリタを書く方法を説明した記事を書いています。この記事はスペイン語で書かれていますが、プロセス全体が段階的に説明されていますので、興味があれば多くのことを学ぶことができます。記事の最後には、ダウンロードしてテストするためのソースコードがあります。ソースコードはgithubで入手できます。この記事は現在利用可能ですlink

希望すると助かります! :)

+0

このバイナリはどういう意味ですか?それはバイトコードなのですか?通訳者は誰が構文をチェックしますか?間違った構文を書いた場合、正しいエラーが表示されますか? – user104853

+0

リンクが動作していません – user104853

+0

リンクをもう一度確認してください。私は私の答えを編集してより多くの情報を追加しました。それがあなたを助けることを願って! – aicastell

関連する問題