2 3 4 規範推導和規範歸約

2021-10-08 20:29:26 字數 1395 閱讀 2978

例如,設有文法 g [ n 1 ]:

n 1 → n

n → nd | d

d →0|1|2

該文法所定義的語言是由數字 0 ,1 , 2 組成的所有無符號整數。符號串 12 是該文法的乙個句子,該句子可以通過下列 3 個不同的推導序列推導出來:

① n 1 ⇒ n ⇒ nd ⇒ n 2⇒ d 2⇒12

② n 1 ⇒ n ⇒ nd ⇒ dd ⇒1 d ⇒12

③ n 1 ⇒ n ⇒ nd ⇒ dd ⇒ d 2⇒12

所謂最左(最右)推導,是指對於乙個推導序列中的每一步直接推導 α ⇒ β ,都是對 α 中的最左(最右)非終結符進行替換。例如,在上面的 3 個推導序列中:

① 是最右推導;

② 是最左推導;

③ 既不是最左推導,也不是最右推導

最右推導也稱為規範推導,用規範推導推導出的句型稱為規範句型

規範推導的逆過程,稱為最左歸約,也稱為規範歸約

事實上,歸約是與推導相對的概念,推導是把句型中的非終結符用規則的乙個右部來替換的過程,而歸約則是把句型中的某個子串用乙個非終結符來替換的過程。

若用 ⇒•表示歸約,設 a → α 是文法 g 中的乙個規則,則有

xay ⇒ xαy

xαy⇒• xay

例如,文法 g [ n 1 ]中有規範推導

n 1 ⇒ n ⇒ nd ⇒ n 2⇒ d 2⇒12
則有規範歸約

12⇒*d2⇒*n 2⇒*nd ⇒*n ⇒*n1
【例 2.10 】設有文法 g [ s ]:

s → ab

a → a 0|1 b

b →0| s 1

請給出句子 101001 的最左、最右推導。

分析 最右推導是指在推導過程中任何一步 α ⇒ β (α 和 β 是句型),都是對 α 中的最右非終結符進行替換。句子 101001 的最右推導為

s ⇒ ab ⇒ as 1⇒ aab 1⇒ aa 01⇒ a 1 b 01⇒ a 1001⇒1 b 1001⇒101001
最左推導是指在推導過程中任何一步 α ⇒ β ,都是對 α 中的最左非終結符進行替換。句子101001 的最左推導為

s ⇒ ab ⇒1 bb ⇒10 b ⇒10 s 1⇒10 ab 1⇒101 bb 1⇒1010 b 1⇒101001
從例 2.10 中可以看出,在規範推導(最右推導)中,每步直接推導 xay ⇒xαy中的符號串 y只含終結符。

java編碼規範 空白和命名規範

1.空白 white space 7.1空行 blank lines 空行將邏輯相關的 段分隔開,以提高可讀性。下列情況應該總是使用兩個空行 乙個原始檔的兩個片段 section 之間 類宣告和介面宣告之間 下列情況應該總是使用乙個空行 兩個方法之間 方法內的區域性變數和方法的第一條語句之間 塊注釋...

規範和壓力

這兩天因為要呼叫另外乙個專案組的webservice,去讀了他們的實現。不讀罷了,一讀發現一堆問題 svn check in沒有注釋 引數沒有檢查 呼叫函式的返回值沒有檢查 邏輯錯誤 很驚訝.因為專案經理是我挖過來的,對他的能力我有信心,有他帶著不至於出現這種低階錯誤.於是和專案經理溝通,指出這些問...

PHP注釋語法規範和命名規範

php裡面常見的幾種注釋方式 1.檔案的注釋,介紹檔名,功能以及作者版本號等資訊 檔名簡單介紹 檔案功能 author 作者 version 版本號 date 2020 02 02 2.類的注釋,類名及介紹 類的介紹 類的詳細介紹 可選 author 作者 version 版本號 date 2020...