構文
コンピュータサイエンスでは、コンピュータ言語の構文という用語は、その言語で正しく構造化されたフラグメントまたはドキュメントと見なされるシンボルの組み合わせを定義する一連の規則を指します。これは、文書がデータを表すマークアップ言語と、文書がソースコードを表すプログラミング言語の両方に当てはまります。言語の構文はその表面形式を定義します。テキストベースのコンピュータ言語は、文字の並びに基づいています。一方、ビジュアルプログラミング言語は、シンボル間の接続(グラフィックまたはテキスト)、および空間レイアウトに基づいています。文法的に不正な文書は、構文エラーがあると言われています。
構文 - 形式 - は意味論 - つまり意味とは対照的です。コンピュータ言語処理では、意味処理は通常構文処理の後に行われます。ただし、場合によっては、完全な構文解析に意味処理が重要であるため、それらは同時にまたは一緒に行われます。コンパイラでは、構文解析はフロントエンドを含み、意味解析はバックエンド(およびフェーズが区別される場合はミドルエンド)を含みます。
構文のレベル
コンピュータ言語の構文は通常、3つの異なるレベルに分類されます。
そのような方法で区別することは、あらゆるレベルが別々にそしてしばしば独立して処理されることを記述されることを可能にするモジュール性を生み出す。これは、トークンの直鎖配列に文字の線状配列を回すレクサーによって開始されます。これは、 字句解析や字句と呼ばれています。
次に、パーサーはトークンの線形シーケンスを階層構文木と呼ばれるものに変換します。これは構文解析と呼ばれます 。
第三に、文脈分析はチェックと名前のタイプを解決します。構文解析段階自体は2つの部分に細分することができます。 具体的な構文木または文法によって決定される構文解析木 、およびこれを形式に単純化する抽象構文木 (AST)です。それは使えます。
構文対意味
言語の構文は有効なプログラムの形式を表しますが、プログラムの意味やそのプログラムの実行に伴う結果に関する情報は提供しません。シンボルの組み合わせに与えられる意味は、セマンティクス(ハードコーディングされているか、または参照実装では正式なもの)によって処理されます。構文的に正しいすべてのプログラムが意味的に正しいわけではありません。それにもかかわらず、言語の規則によれば、構文的に正しいプログラムは数多くあります。そして(言語仕様と実装の健全性に関して)実行や翻訳にエラーをもたらすかもしれません。場合によっては、そのようなプログラムは未定義の動作を示すことがあります。プログラムが言語で明確に定義されているときでさえ、それはその作者によって意図されていない意味をまだ持つことができます。
自然言語の例では、文法的に正しい意味を文に与えることは不可能かもしれません。例えば、