日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【计算理论】上下文无关语法 ( 语法组成 | 规则 | 语法 | 语法示例 | 约定的简写形式 | 语法分析树 )

發(fā)布時間:2025/6/17 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【计算理论】上下文无关语法 ( 语法组成 | 规则 | 语法 | 语法示例 | 约定的简写形式 | 语法分析树 ) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

        • I . 語法組成
        • II . 規(guī)則
        • III . 語法
        • IV . 語法示例
        • V . 語法簡寫形式
        • VI . 語法分析樹
        • VII . 代數(shù)表達(dá)式 語法





I . 語法組成



上下文無關(guān)語法 組成 : {V,Σ,R,S}\{ \quad V , \Sigma , R , S \quad \}{V,Σ,R,S} 四部分組成 ;


變量集 VVV : 有限的變量集合 ;

終端字符集 Σ\SigmaΣ : 有限的終端字符組成的集合 ; 相當(dāng)于常量的含義 , 與變量相對 ;

規(guī)則集 RRR : 有限的規(guī)則組成的集合 , 規(guī)則規(guī)定如何進(jìn)行代換操作 , 規(guī)定 變量 , 終端字符 , 字符串變量 等 ;

開始變量 SSS : 該變量作為開始變量 ;





II . 規(guī)則



規(guī)則 簡介 :


① 已知條件 : 假設(shè) u,v,wu, v , wu,v,w變量 ( 變元 )終端字符集 ( 常量 / 常元 ) ;

② 規(guī)則描述 : 規(guī)則是一個箭頭 , A→wA \to wAw , AAA 是變元 , www 是 變元 和 常元 組成的終端字符 ;

③ 規(guī)則用法 : 在字符串中 , 根據(jù) A→wA \to wAw 規(guī)則進(jìn)行替換 , 只需要將 AAA 變元替換成 www 字符串即可 ;

④ 規(guī)則示例 : uAvuAvuAv 中使用上述規(guī)則進(jìn)行替換 , 將 AAA 替換成 www , 替換結(jié)果是得到新字符串 uwvuwvuwv ;

uAv?uwvuAv \Rightarrow uwvuAv?uwv





III . 語法



1 . 有限次規(guī)則替換 : u??vu \Rightarrow *vu??v 表示有限多次替換后 , 每一步替換的臨時結(jié)果序列組成集合 {u1,u2,?,uk}\{u_1 , u_2 , \cdots , u_k\}{u1?,u2?,?,uk?} , 最終結(jié)果是 終端字符 ;


2 . 有限次規(guī)則替換 步驟 :


  • uuu 根據(jù)某規(guī)則進(jìn)行替換得到 u1u_1u1? ;
  • u1u_1u1? 根據(jù)某規(guī)則進(jìn)行替換得到 u2u_2u2? ;
  • ?\vdots?
  • uku_kuk? 根據(jù)某規(guī)則進(jìn)行替換得到 vvv ;

3 . 最終規(guī)則替換結(jié)果要求 : vvv 中不包含變元 , 全部由 終端字符 ( 常元 ) 組成的 字符串 ;

vvv 是由 uuu 生成的 ;


4 . 語法定義 : 從開始變元 , 使用規(guī)則逐步替換 , 替換到最后 , 將所有 終端字符組成字符串 放在一個集合中 , 稱為語法生成的語言 ;

L(G)={w∈Σ?:S??w}L(G) = \{ w \in \Sigma^* : S \Rightarrow *w \}L(G)={wΣ?:S??w}





IV . 語法示例



1 . 語法組成部分 : G3=({S},{a,b},R,S)G3 =( \; \{ S \}, \{ a, b \}, R , S \; )G3=({S},{a,b},R,S) 其組成如下 :


  • 變量集 {S}\{ S \}{S} ;

  • 終端字符集 {a,b}\{ a, b \}{a,b} ;

  • 規(guī)則 RRR ;

  • 開始變量 SSS ;


2 . 規(guī)則 RRR 描述 :

S→aSb∣SS∣εS \to aSb \; | \; SS \; | \; \varepsilonSaSbSSε

  • SSS 變量 可以使用 aSbaSbaSb 字符串替換 ;
  • SSS 變量 可以使用 SSSSSS 字符串替換 ;
  • SSS 變量 可以使用 ε\varepsilonε 字符串替換 ;

3 . 規(guī)則替換過程 :


SSS 是開始變量 , 可以使用 aSbaSbaSb 替換 :

S?aSbS \Rightarrow aSbS?aSb


使用 aSbaSbaSb 替換 SSS :

S?aSb?aaSbbS \Rightarrow aSb \Rightarrow aaSbbS?aSb?aaSbb


使用 SSSSSS 替換 SSS :

S?aSb?aaSbb?aaSSbbS \Rightarrow aSb \Rightarrow aaSbb \Rightarrow aaSSbbS?aSb?aaSbb?aaSSbb


使用 aSbaSbaSb 替換第一個 SSS :

S?aSb?aaSbb?aaSSbb?aaaSbSbbS \Rightarrow aSb \Rightarrow aaSbb \Rightarrow aaSSbb \Rightarrow aaaSbSbbS?aSb?aaSbb?aaSSbb?aaaSbSbb


使用 ε\varepsilonε 替換第一個 SSS :

S?aSb?aaSbb?aaSSbb?aaaSbSbb?aaabSbbS \Rightarrow aSb \Rightarrow aaSbb \Rightarrow aaSSbb \Rightarrow aaaSbSbb \Rightarrow aaabSbbS?aSb?aaSbb?aaSSbb?aaaSbSbb?aaabSbb


使用 aSbaSbaSb 替換 SSS :

S?aSb?aaSbb?aaSSbb?aaaSbSbb?aaabSbb?aaabaSbbbS \Rightarrow aSb \Rightarrow aaSbb \Rightarrow aaSSbb \Rightarrow aaaSbSbb \Rightarrow aaabSbb \Rightarrow aaabaSbbbS?aSb?aaSbb?aaSSbb?aaaSbSbb?aaabSbb?aaabaSbbb


使用 ε\varepsilonε 替換 SSS :

S?aSb?aaSbb?aaSSbb?aaaSbSbb?aaabSbb?aaabaSbbb?aaababbbS \Rightarrow aSb \Rightarrow aaSbb \Rightarrow aaSSbb \Rightarrow aaaSbSbb \Rightarrow aaabSbb \Rightarrow aaabaSbbb \Rightarrow aaababbbS?aSb?aaSbb?aaSSbb?aaaSbSbb?aaabSbb?aaabaSbbb?aaababbb


最終得到 aaababbbaaababbbaaababbb 字符串 , 該字符串全部由終端字符構(gòu)成 , 是從 SSS 開始狀態(tài)出發(fā) , 按照 RRR 規(guī)則替換得來的 ;

稱該字符串由 語法 G3G3G3 生成的 ;





V . 語法簡寫形式



語法可以使用下面的形式簡單表示 , 沒有必要使用繁瑣的形式 , 可以使用約定的簡寫形式 ;


約定寫法 :

  • A→0A1A \to 0A1A0A1
  • A→BA \to BAB
  • B→lB \to lBl

開始狀態(tài)約定 : 左上方的變元 AAA 約定是 開始變元 ;

變元約定 : 大寫字母 A,BA,BA,B 約定為 變元 ;

終端字符約定 : 小寫字母 約定為 終端字符 ;





VI . 語法分析樹



語法分析樹 : 字符串生成的過程 , 可以寫成語法分析樹 ;


將上述 簡寫的 約定語法描述 , 生成 終端字符構(gòu)成的字符串 ;


1 . 開始狀態(tài) : AAA , 使用 0A10A10A1 替換 AAA ;

A?0A1A \Rightarrow 0A1A?0A1

當(dāng)前語法分析樹 :


2 . 使用 0A10A10A1 替換 AAA ;

A?0A1?00A11A \Rightarrow 0A1 \Rightarrow 00A11A?0A1?00A11

當(dāng)前語法分析樹 :


3 . 使用 0A10A10A1 替換 AAA ;

A?0A1?00A11?000A111A \Rightarrow 0A1 \Rightarrow 00A11 \Rightarrow 000A111A?0A1?00A11?000A111

當(dāng)前語法分析樹 :


4 . 使用 BBB 替換 AAA ;

A?0A1?00A11?000A111?000B111A \Rightarrow 0A1 \Rightarrow 00A11 \Rightarrow 000A111 \Rightarrow 000B111A?0A1?00A11?000A111?000B111

當(dāng)前語法分析樹 :


5 . 使用 lll 替換 BBB ;

A?0A1?00A11?000A111?000B111?000l111A \Rightarrow 0A1 \Rightarrow 00A11 \Rightarrow 000A111 \Rightarrow 000B111 \Rightarrow 000l111A?0A1?00A11?000A111?000B111?000l111

當(dāng)前語法分析樹 :


6 . 最終得到的字符串為 000l111000l111000l111 ;





VII . 代數(shù)表達(dá)式 語法



1 . 代數(shù)表達(dá)式 語法 : G4=(V,A,R,Expression)G4 = ( V , A , R , Expression )G4=(V,A,R,Expression) 是代數(shù)表達(dá)式語法 ;


① 終端字符集 : A={a,+,×,()}A = \{ a , + , \times , () \}A={a,+,×,()} ;

② 變量集 : V={Expression,Term,Factor}V = \{ Expression , Term , Factor \}V={Expression,Term,Factor} ;

  • ExpressionExpressionExpression 是表達(dá)式 ;
  • TermTermTerm 是項(xiàng) ;
  • FactorFactorFactor 是因子 ;

2 . ExpressionExpressionExpression 表達(dá)式 規(guī)則 :

Expression→Expression+Term∣TermExpression \to Expression + Term | TermExpressionExpression+TermTerm

ExpressionExpressionExpression ( 表達(dá)式 ) 可以通過 Expression+Term∣TermExpression + Term | TermExpression+TermTerm 代替 ;


3 . TermTermTerm 項(xiàng) 規(guī)則 :

Term→Term×Factor∣FactorTerm \to Term \times Factor | FactorTermTerm×FactorFactor

TermTermTerm 項(xiàng) 可以通過 Term×Factor∣FactorTerm \times Factor | FactorTerm×FactorFactor 代替 ;


4 . FactorFactorFactor 因子 規(guī)則 :

Factor→Expression∣aFactor \to Expression | aFactorExpressiona

FactorFactorFactor 因子 可以通過 Expression∣aExpression | aExpressiona 代替 ;

總結(jié)

以上是生活随笔為你收集整理的【计算理论】上下文无关语法 ( 语法组成 | 规则 | 语法 | 语法示例 | 约定的简写形式 | 语法分析树 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。