字句解析と構文解析の違いは何ですか

目次:

Anonim

NS 主な違い 字句解析と構文解析の間には、 字句解析では、ソースコードを一度に1文字ずつ読み取り、意味のある語彙素(トークン)に変換しますが、構文解析では、これらのトークンを取得して、出力として解析ツリーを生成します。

コンピュータプログラムは、プログラムで設計されたタスクを実行するようにコンピュータに指示する一連の命令です。一般に、プログラマーは高級言語を使用してプログラムを作成します。コンピューターはこれらの指示を理解していません。したがって、ソースコードは、コンピュータが理解できるようにマシンコードに変換する必要があります。さらに、コンパイラは、ソースコードを同等のマシンコードに変換するのに役立つソフトウェアプログラムです。この変換プロセスを完了するには、いくつかのステップまたは段階があります。つまり、各フェーズは前のステージから入力を受け取り、出力は次のフェーズに進みます。全体として、字句解析と構文解析は、このコンパイルプロセスに含まれる2つのステップです。

コンパイラ、字句解析、構文解析

字句解析とは

字句フェーズは、コンパイルプロセスの最初のフェーズです。入力としてソースコードを取ります。さらに、ソースプログラムをスキャンし、一度に1文字を意味のある語彙素またはトークンに変換します。字句解析の出力は、構文解析フェーズに進みます。一般に、字句アナライザーは字句解析を実行します。

トークンの形式は次のとおりです。

構文解析とは

コンパイルプロセスの第2フェーズは、構文解析です。字句解析によって生成されたトークンを入力として受け取り、解析ツリーを生成します。解析ツリーは、構文ツリーとも呼ばれます。

このフェーズでは、トークンの編成がソースコードの文法と照合されます。さらに、パーサーは構文解析を実行します。トークンによって作成された式が構文的に正しいかどうかをチェックします。

上記の2つのステップに加えて、コンパイルプロセスには、セマンティック分析、中間コード生成、コード生成、コード最適化などのフェーズも含まれます。

字句解析と構文解析の違い

意味

字句解析は、文字のシーケンスをトークンのシーケンスに変換するプロセスであり、構文解析は、自然言語、コンピューター言語、または形式文法の規則に準拠したデータ構造のいずれかで記号の文字列を分析するプロセスです。

同義語

機能性

字句解析では、ソースプログラムを一度に1文字ずつ読み取り、意味のある語彙素(トークン)に変換しますが、構文解析では、トークンを入力として受け取り、解析ツリーを出力として生成します。したがって、これが字句解析と構文解析の主な違いです。

注文

また、字句解析と構文解析のもう1つの違いは、字句解析がコンパイルプロセスの最初のフェーズであるのに対し、構文解析はコンパイルプロセスの2番目のフェーズであるということです。

結論

簡単に言うと、コンパイラは、ソースコードを同等のマシンコードに変換するソフトウェアプログラムです。さらに、このタスクを実行するためにいくつかのフェーズを経ます。そのうちの2つは、字句解析と構文解析です。全体として、構文解析は字句解析の後に行われます。字句解析と構文解析の主な違いは、字句解析は一度に1文字ずつソースコードを読み取り、それを意味のあるレクセム(トークン)に変換するのに対し、構文解析はそれらのトークンを受け取り、出力として解析ツリーを生成することです。

参照:

1.「コンパイラフェーズ–Javatpoint」 Www.javatpoint.com、ここから入手できます。 2.「字句解析」。ウィキペディア、ウィキメディア財団、2019年7月8日、こちらから入手できます。 3.「解析」。ウィキペディア、ウィキメディア財団、2019年5月15日、こちらから入手できます。

画像提供:

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

字句解析と構文解析の違いは何ですか