スキャンとパーシングの主な違いは、スキャンがソースコードを1文字ずつ規則正しく読んでトークンに変換する処理であるのに対し、パーシングはトークンを受け取って出力として解析木を生成する処理であることです。
一般にコンパイラは、ソースコードを機械語に変換し、コンピュータがその機械語を実行できるようにする機能を持つソフトウェア・プログラムです。
コンパイラは、プログラムをコンパイルするために複数の段階を経ます。
スキャニングとパーシングは、このコンパイルプロセスで発生する2つの活動です。
全体として、スキャニングは字句解析の段階で行われ、構文解析は構文解析の段階で行われる。
さらに、字句解析器はスキャンを行い、パーサはパージングを行う。
スキャニングとは
コンパイルの最初の段階は字句解析です。
字句解析はこのタスクを実行する。
字句解析器は、ソースコードを入力として受け取ります。
字句解析器は、ソースプログラムを一文字ずつ読み、意味のあるトークンに変換します。
ソースコードを規則的に読み取るプロセスをスキャンと呼ぶ。
このプロセスでは、字句解析器はソースコードの特定の情報を考慮します。
パージングとは
字句解析で生成されたトークンは、次の段階である構文解析に進みます。
このタスクを実行するのがパーサーです。
トークンを入力として受け取り、解析ツリーを出力として生成します。
したがって、このプロセスはパーシングと呼ばれる。
さらに、パーサーはトークンによって作られた表現が構文的に正しいかどうかをチェックする。
さらに、字句解析、構文解析の他に、意味解析、中間コード生成、コード最適化などのフェーズがあります。
以上の各段階を経て、ソースコードは等価な機械語コードに変換される。
スキャニングとパーシングの違い
定義
スキャニングとは、ソースコードを文字の流れとして読み取り、意味のある字句やトークンに変換することです。
これに対し、構文解析は字句解析の段階で生成されたトークンを取り出し、構文木に変換する処理です。
したがって、ここがスキャニングとパーシングの大きな違いです。
演奏者
さらに、字句解析器は走査を行い、パーサーは構文解析を行う。
コンパイル時の関連フェーズ
また、スキャニングは字句解析で行われるのに対し、パーシングは構文解析で行われる。
この点もスキャニングとパーシングの違いです。
発生状況
また、スキャンが先に行われ、パースはスキャンを行った後に行われる。
結論
コンパイラは、ソースコードを同等のマシンコードに変換する役割を持つソフトウェアプログラムです。
このタスクを達成するために、いくつかの段階を経ます。
ここでは、スキャンと構文解析の2つが、このコンパイルプロセスで発生する活動です。
しかし、スキャンとパーシングの主な違いは、スキャンがソースコードを1文字ずつ規則的に読んでトークンに変換するプロセスであるのに対し、パーシングはトークンを受け取って出力としてパースツリーを生成するプロセスである点です。