字句解析と構文解析の違いとは?分かりやすく解説!

この記事には、アフィリエイト広告を利用しています。

スポンサーリンク


字句解析と構文解析の主な違いは、字句解析がソースコードを一文字ずつ読んで意味のある字句(トークン)に変換するのに対し、構文解析はそれらのトークンを取り出して出力として解析木を生成する点です。

コンピュータプログラムは、プログラムで設計されたタスクを実行するようにコンピュータに指示する命令のセットです。

一般に、プログラマーは高級言語を使用してプログラムを記述します。

コンピュータはこの命令を理解することはできない。

そのため、ソースコードをコンピュータが理解できるように機械語に変換する必要がある

さらに、コンパイラは、ソースコードを同等のマシンコードに変換するのに役立つソフトウェアプログラムです。

この変換作業を完了させるために、いくつかのステップや段階を経る。

つまり、各段階は前の段階から入力を受け、その出力は次の段階に行く。

全体として、字句解析と構文解析は、このコンパイルプロセスに関わる2つのステップです。

スポンサーリンク

語彙分析とは

字句解析は、コンパイルプロセスの最初のフェーズです。

ソースコードを入力として受け取る。

さらに、ソースプログラムをスキャンして、一文字ずつ意味のある字句やトークンに変換します。

字句解析の出力は構文解析フェーズに送られる。

一般に、字句解析器は字句解析を行う。

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

What is Syntax Analysis

The second phase of the compilation process is syntax analysis. It takes the tokens produced by lexical analysis as input and generates a parse tree. The parse tree is also called a syntax tree.

In this phase, the token organizations are checked against the source code grammar. Furthermore, the parser performs syntax analysis. It checks whether the expression made by the tokens is syntactically correct.

In addition to the above two steps, the compilation process also involves phases such as semantic analysis, intermediate code generation, code generation, code optimization etc.

Difference Between Lexical Analysis and Syntax Analysis

Definition

Lexical analysis is the process of converting a sequence of characters into a sequence of tokens while syntax analysis is the process of analyzing a string of symbols either in natural language, computer languages or data structures conforming to the rules of a formal grammar.

Synonyms

Moreover, lexing and tokenization are other names for lexical analysis, whereas syntactic analysis and parsing are the other names for syntax analysis.

Functionality

Lexical analysis reads the source program one character at a time and converts it into meaningful lexemes (tokens) whereas syntax analysis takes the tokens as input and generates a parse tree as output. Thus, this is the main difference between lexical analysis and syntax analysis.

Order

Also, another difference between lexical analysis and syntax analysis is that lexical analysis is the first phase of the compilation process, while syntax analysis is the second phase of the compilation process.

Conclusion

In brief, a compiler is a software program that converts the source code into equivalent machine code. Moreover, it goes through several phases to accomplish this task. Two of them are lexical analysis and syntax analysis. Overall, syntax analysis occurs after lexical analysis. The main difference between lexical analysis and syntax analysis is that lexical analysis reads the source code one character at a time and converts it into meaningful lexemes (tokens) whereas syntax analysis takes those tokens and produce a parse tree as an output.

,>

タイトルとURLをコピーしました