解析ツリーと構文ツリーの違いは何ですか

目次:

Anonim

NS 主な違い 解析ツリーと構文ツリーの間は 解析ツリーは、入力文字列を取得するための文法の派生を表す階層構造です。一方、構文ツリーは、プログラミング言語の構文をツリーに似た階層形式として表す方法です。

解析ツリーは、入力の具体的な表現です。入力に関するすべての情報が含まれています。一方、構文木はプログラミング言語の構文を木として表します。コンパイラとその後のコード生成に必要なシンボルテーブルを生成するのに役立ちます。

抽象構文木、コンパイラ、具体的な構文木、派生木、解析木、構文木

解析ツリーとは

解析ツリーは、文脈自由文法に従って文字列の構文構造を表します。入力言語の構文について説明します。解析ツリーは、さまざまなタイプの構成要素に対して個別のシンボル形状を使用しません。解析ツリーを構築するための基礎は、句構造文法または依存文法です。自然言語の文やプログラミング言語を処理するときに、解析ツリーを生成することができます。

構文木とは

構文木は、プログラミング言語で記述されたソースコードの抽象的な構文構造を記述します。一部の言語でステートメントを終了する中括弧やセミコロンなどの要素ではなく、ルールに焦点を当てています。また、プログラミングステートメントの要素がいくつかのセクションに分割された階層です。ツリーのノードは、ソースコードで発生する構造を示します。実際の構文のすべての詳細を表すわけではありません。代わりに、構造ベースおよびコンテンツベースの詳細が表示されます。コンテキスト分析などの後続の処理により、構文ツリーに追加情報が追加されます。

図2:ユークリッドアルゴリズムの構文ツリー

構文木は、コンパイラの精度を判断するのに役立ちます。構文ツリーにエラーが含まれている場合、コンパイラはエラーメッセージを表示します。プログラム分析とプログラム変換は、構文ツリーの他の用途です。

解析ツリーと構文ツリーの違い

意味

解析ツリーは、文脈自由文法に従って文字列の構文構造を表す、順序付けられたルートツリーです。一方、構文木は、プログラミング言語で記述されたソースコードの抽象構文構造のツリー表現です。したがって、これが解析ツリーと構文ツリーの主な違いです。

同義語

構文解析ツリー、派生ツリー、具体的な構文木 抽象的である間、解析ツリーのいくつかの他の名前です 構文木 構文木の別名です。

機能性

結論

解析ツリーと構文ツリーの主な違いは、解析ツリーは入力文字列を取得するための文法の派生を表す階層構造であるのに対し、構文ツリーはプログラミング言語の構文を階層ツリーと同様の構造として表す方法であるということです。

リファレンス:

1.「解析ツリー」。ウィキペディア、ウィキメディア財団、2018年12月27日、こちらから入手可能2。 「抽象構文木」。ウィキペディア、ウィキメディア財団、2018年9月27日、こちらから入手可能3。 「抽象構文木(AST)とは何ですか? –Techopediaからの定義。」 Techopedia.com、こちらから入手できます。

画像提供:

1.「ユークリッドアルゴリズムの抽象構文木」Dcoetzee著– Commons Wikimedia2による自作(CC0)。 「Pythonadd5parse」英語版ウィキペディアのLotus-EatersのLuluによる–コモンズウィキメディアを介してen.wikipediaからコモンズ(パブリックドメイン)に転送

解析ツリーと構文ツリーの違いは何ですか