1.第二章をカーディング、概要を理解し、書きます。
章の文法と言語
2.1 文法の概念
文法定義:文法も構文として知られている正式な記述言語の構造や規則から言語の構造、の定義と説明です。
2.2 シンボルと文字列
アルファベット:アルファベットの要素の空でない有限集合であるが、また、アルファベットのシンボル・セットと呼ばれるシンボルアルファベット要素と呼びます。伝統的なシンボルアルファベットの文字、数字、句読点など様々な事業者。
シンボルの文字列:任意の記号列と貧弱な配列からなるシンボルアルファベット。アルファベットA = {A、B、Cの記号列 } 組成含むことをアルファベット{AB、AC、BC、 ABC、A、B、C}。X | | = M m個のシンボルXの記号列がある場合は、長さMと呼ばれ、それは次のように表現されます。ヌルシンボル列を、すなわち、すなわち、ε、0の長さで表されるシンボルのシンボル列を、含まれていない許可|ε| = 0。
記号文字列操作: ①接続記号列:εx=Xε= X。
製品の②セット:AB = {X-Y |x∈A、y∈Bは}、{ε}は、Aは、A = {ε} =。
③シンボル列べき乗:X = ABC、X ^ 2 = ABCABC。
④べき乗セット:X ^ 0 = E; X ^ 1 = X;·····;(パワーズと基本数学的整合性)
⑤とA +正閉鎖閉鎖A *:A * = {ε}∪A+
2.3 正式な文法と言語の定義
文法:文法は、言語の文法構造のいわゆるルールの形で記述されています。任意の文法は、4つのタプルG =(P、S)のように表すことができます 。その要素のそれぞれが終端記号と呼ばれ、空でない有限集合であり、それは、その要素のそれぞれが非終端呼ばれ、空でない有限集合であり、Sは、特別な非終端記号と呼ばれる文法でありますシンボルの開始; Pルール(α→β)が設定されています。
2.4 文法タイプ
タイプ0文法/無制限文法:α->β、α∈(Vn∪Vt)*および少なくとも一つの非ターミネーター、β∈(Vn∪Vt)*を含みます。1型文法/文脈依存文法:αAβ->αuβ、前記A∈Vn、α、β∈(Vn∪Vt)*、u∈(Vn∪Vt)+。
2型文法/文脈自由文法:A∈Vn、β∈(Vn∪Vt)* A->β、。一般的に構文解析に使用されます。
タイプ3文法/正規文法:一般的に使用される字句解析
。I右線形文法:のみ右プッシュ拡大し、A->αB|α、A、B∈Vn、α∈Vt*。
。Iiが線形文法を左:だけ左プッシュアウト配置、A->Bα|α、A、B∈Vn、α∈Vt*。
2.5 文脈自由文法や構文木
文脈自由文法の場合は、構文木は、文の導出の幾何学的な表現です。すべてのシンボルの終了は、それが識別するために、シンボルシーケンスである場合、指定された記号列は、文法又は導出するためのシンボル列構成構文木のルールに従うことを試みるとき、このように文章の文法が認識されますこれは、文法の文章ではありません。したがって、それはまただった解析ツリーやツリー解析と呼ばれる構文木。
2.6 文の分析
文型分析は、与えられたシンボル列は、文の文法(または文)であるか否かを判定するためのアルゴリズムを構築することを意味します。これは二つの方法に分けられる:①トップダウン分析(右端導出):スタートシンボル文または文に由来する;(左端減少)②ボトムアップ解析:文から減少または文文字を開始します。
2.6.1フレーズとハンドル
語句: S = *>αAδおよびA = +>βと呼ばれるベータ]文句αAδ非終端に関して、構文ツリー内のサブツリーの概念に対応します。
:直接フレーズ単純な構文木に対応するサブツリー; A =>βが直接導出されます。各フレーズは、ルールの直接の右側部分です。
ハンドル:直接フレーズ(すなわち、右ルールの部分)、との左端を有する、単純なサブツリーが左端のいずれかに対応します。
曖昧な文法:文法に対応する文が右端(左端)の導出(法律)の2つ以上を含む二つの異なる構文木を、存在する場合、文法が曖昧で使用してもよいです。あいまいさを排除するための文法の間の等価。構成等価明確な文法;そのような優先順位などの非フォーム定義構文の摂取量を増加させるために、任意の元の構文の文法規則を変更しません。
曖昧あいまいな文法及び言語: 2つの言語の文法を生成した場合と同じ、すなわち、L(G)= L(G )、 両方とも同等の文法であると言わ。時にはあいまいな文法は等価で、明確な文法に変換することができます。一部の言語では、明確な文法を存在しない、この言語は曖昧の言語と呼ばれています。
2.文法PL / 0言語を記述してください。(または、より良い言語規則思います)
整数N
<番号> => 0 | 1 | 2 ... 7 | 8 | 9
I識別子
<識別子>→<文字> {<文字> | <番号>}
式e
<式>→[+ | - ]の<item> {<減算演算子> <用語>}
条件文
<条件文>→もし、<条件>そして<声明>
割り当て
<代入文>→<識別子>:= <式>
複合文
<複合文>→開始<ステートメント> {、<文>}終了
プログラム
<プログラム>→<ブロック>。
<ブロック>→[<定数説明セクション>] [<変数説明セクション>] [<プロセスの説明セクション>] <声明>
声明
<文>→<割り当て> | <条件文> | <ときループ型> | <プロシージャ呼び出し文> | <文の読み> | <write文> | <複合文> | <空>
割り当て
<代入文>→<識別子>:= <式>
複合文
<複合文>→開始<ステートメント> {、<文>}終了
声明読みます
<読み出しステートメント>→読み出す(<識別子> {<識別子>})
書かれた文
<書き込みステートメント>→ライト(<式> {<式>})