スキャンと解析の違いは何ですか

目次:

Anonim

NS 主な違い スキャンと解析の間は スキャンは、ソースコードを一度に1文字ずつ系統的に読み取り、トークンに変換するプロセスです。一方、解析は、トークンを取得し、出力として解析ツリーを生成するプロセスです。

一般に、コンパイラは、コンピュータがそのマシンコードを実行できるように、ソースコードをマシンコードに変換できるソフトウェアプログラムです。コンパイラーは、プログラムをコンパイルするために複数のフェーズを経ます。スキャンと解析は、このコンパイルプロセス中に発生する2つのアクティビティです。全体として、スキャンは字句解析フェーズで発生しますが、構文解析は構文解析フェーズで発生します。さらに、字句解析プログラムはスキャンを実行し、パーサーは構文解析を実行します。

字句解析、構文解析、構文解析、スキャン、構文解析

スキャンとは

コンパイルの最初のフェーズは字句解析です。字句解析プログラムはこのタスクを実行します。入力としてソースコードを取ります。字句解析プログラムは、ソースプログラムを一度に1文字ずつ読み取り、それを意味のあるトークンに変換します。ソースコードを系統的に読み取るプロセスは、スキャンと呼ばれます。このプロセスでは、字句解析プログラムはソースコードの特定の情報を考慮します。

構文解析とは

字句解析から生成されたトークンは、構文解析である次のフェーズに進みます。パーサーはこのタスクを実行します。トークンを入力として受け取り、解析ツリーを出力として生成します。したがって、このプロセスは解析と呼ばれます。さらに、パーサーは、トークンによって作成された式が構文的に正しいかどうかをチェックします。

スキャンと解析の違い

意味

スキャンは、ソースコードを文字のストリームとして読み取り、意味のある語彙素またはトークンに変換するプロセスです。対照的に、構文解析は、字句解析フェーズで生成されたトークンを取得し、それらを解析ツリーに変換するプロセスです。したがって、これがスキャンと解析の主な違いです。

によって演奏された

さらに、字句解析器はスキャンを実行し、パーサーは構文解析を実行します。

コンパイルの関連フェーズ

さらに、スキャンは字句解析中に発生しますが、構文解析は構文解析中に発生します。したがって、これはスキャンと解析のもう1つの違いです。

発生

結論

全体として、コンパイラは、ソースコードを同等のマシンコードに変換する役割を担うソフトウェアプログラムです。このタスクを実行するには、いくつかのフェーズがあります。ここで、スキャンと解析は、このコンパイルプロセス中に発生する2つのアクティビティです。ただし、スキャンと解析の主な違いは、スキャンはソースコードを一度に1文字ずつ系統的に読み取ってトークンに変換するプロセスであり、解析はトークンを取得して解析ツリーを生成するプロセスであるということです。出力。

参照:

1.「コンパイラフェーズ–Javatpoint」 Www.javatpoint.com、ここから入手できます。

画像提供:

1.「理想的な多言語、マルチターゲットコンパイラ」I、Surachit(CC BY-SA 3.0)、Commons Wikimedia

スキャンと解析の違いは何ですか