上下文無關文法(Context-Free Grammar, CFG)是一個4元組G=(V, T, S, P),其中,V和T是不相交的有限集,S∈V,P是一組有限的產生式規則集,形如A→α,其中A∈V,且α∈(V∪T)*。V的元素稱為非終結符,T的元素稱為終結符,S是一個特殊的非終結符,稱為文法開始符。 設G=(V, T, S, P)是一個CFG,則G產生的語言是所有可由G產生的字符串組成的集合,即L(G)={x∈T* | Sx}。一個語言L是上下文無關語言(Context-Free Language, CFL),當且僅當存在一個CFG G,使得L=L(G)。 *⇒ 例如,設文法G:S→AB A→aA|a B→bB|b 則L(G)={a^nb^m | n,m>=1} 其中非終結符都是大寫字母,開始符都是S,終結符都是小寫字母。
標簽: Context-Free Grammar CFG
上傳時間: 2013-12-10
上傳用戶:gaojiao1999
一:需求分析 1. 問題描述 魔王總是使用自己的一種非常精練而抽象的語言講話,沒人能聽懂,但他的語言是可逐步解釋成人能聽懂的語言,因為他的語言是由以下兩種形式的規則由人的語言逐步抽象上去的: ----------------------------------------------------------- (1) a---> (B1)(B2)....(Bm) (2)[(op1)(p2)...(pn)]---->[o(pn)][o(p(n-1))].....[o(p1)o] ----------------------------------------------------------- 在這兩種形式中,從左到右均表示解釋.試寫一個魔王語言的解釋系統,把 他的話解釋成人能聽得懂的話. 2. 基本要求: 用下述兩條具體規則和上述規則形式(2)實現.設大寫字母表示魔王語言的詞匯 小寫字母表示人的語言的詞匯 希臘字母表示可以用大寫字母或小寫字母代換的變量.魔王語言可含人的詞匯. (1) B --> tAdA (2) A --> sae 3. 測試數據: B(ehnxgz)B 解釋成 tsaedsaeezegexenehetsaedsae若將小寫字母與漢字建立下表所示的對應關系,則魔王說的話是:"天上一只鵝地上一只鵝鵝追鵝趕鵝下鵝蛋鵝恨鵝天上一只鵝地上一只鵝". | t | d | s | a | e | z | g | x | n | h | | 天 | 地 | 上 | 一只| 鵝 | 追 | 趕 | 下 | 蛋 | 恨 |
上傳時間: 2014-12-02
上傳用戶:jkhjkh1982
產生BCH碼多項式,其中碼字長度為N,消息長度為K
上傳時間: 2015-11-21
上傳用戶:dave520l
(1) 、用下述兩條具體規則和規則形式實現.設大寫字母表示魔王語言的詞匯 小寫字母表示人的語言詞匯 希臘字母表示可以用大寫字母或小寫字母代換的變量.魔王語言可含人的詞匯. (2) 、B→tAdA A→sae (3) 、將魔王語言B(ehnxgz)B解釋成人的語言.每個字母對應下列的語言.
上傳時間: 2013-12-30
上傳用戶:ayfeixiao
設有一個背包可以放入的物品重量最重為s,現有n件物品,它們的重量分別為w[0]、 w[1]、w[2]、…、w[n-1]。問能否從這n件物品中選擇若干件放入此背包中,使得放入的重量之和正好為s。如果存在一種符合上述要求的選擇,則稱此背包問題有解(或稱其解為真);否則稱此背包問題無解(或稱其解為假)。試用遞歸方法設計求解背包問題的算法。
標簽:
上傳時間: 2016-03-15
上傳用戶:bcjtao
、該個詞法分析器要求至少能夠識別以下幾類單詞: a. 關鍵字:else if int return void while共6個,所有的關鍵字都是保留字,并且必須是小寫; b. 標識符:識別與C語言詞法規定相一致的標識符,通過下列正則表達式定義:ID = letter (letter | digit)*; c. 常數:NUM=(+ | - |ε)digit digit*(.digit digit* |ε)(e(+ | - |ε) digit digit* |ε),letter = a|..|z|A|..|Z|,digit = 0|..|9,包括整數,如123, -123, +123等;小數,如123.45, +123.45, -123.45;科學計數法表示的常數,如+1.23e3,-2.3e-9; d. 專用符號:+ - * / < <= > >= == != = , ( ) [ ] { } /* */;
上傳時間: 2013-12-08
上傳用戶:gtf1207
1.有三根桿子A,B,C。A桿上有若干碟子 2.每次移動一塊碟子,小的只能疊在大的上面 3.把所有碟子從A桿全部移到C桿上 經過研究發現,漢諾塔的破解很簡單,就是按照移動規則向一個方向移動金片: 如3階漢諾塔的移動:A→C,A→B,C→B,A→C,B→A,B→C,A→C 此外,漢諾塔問題也是程序設計中的經典遞歸問題
上傳時間: 2016-07-25
上傳用戶:gxrui1991
圖文混排工具 1、新建一個Web工程 2、將Jsp下的頁面與.js文件拷貝到工程的WebRoot下面 3、將images文件夾拷貝到工程的WebRoot下面 4、運行工程顯示頁面Gls.htm就可以圖文混排編輯器。 5.向Oracle數據庫中插入大文本數據: a)將需要插入大文本的字段定義為long數據類型 b)Source下的GlsTest.java即為向Qracle中插入大文本的方法及數據庫操作 運行注意事項: 1、注意包名的大小寫情況 2、注意頁面的編碼問題
上傳時間: 2014-01-02
上傳用戶:lx9076
河內塔問題 #include<stdio.h> #include<stdlib.h> int fun_a(int) void fun_b(int,int,int,int) int main(void) { int n int option printf("題目二:河內塔問題\n") printf("請輸入要搬移的圓盤數目\n") scanf("%d",&n) printf("最少搬移的次數為%d次\n",fun_a(n)) printf("是否顯示移動過程? 是請輸入1,否則輸入0\n") scanf("%d",&option) if(option==1) { fun_b(n,1,2,3) } system("pause") return 0 } int fun_a(int n) { int sum1=2,sum2=0,i for(i=n i>1 i--) { sum1=sum1*2 } sum2=sum1-1 return sum2 } void fun_b(int n,int left,int mid,int right) { if(n==1) printf("把第%d個盤子從第%d座塔移動到第%d座塔\n",n,left,right) else { fun_b(n-1,left,right,mid) printf("把第%d個盤子從第%d座塔移動到第%d座塔\n",n,left,right) fun_b(n-1,mid,left,right) } }
上傳時間: 2016-12-08
上傳用戶:努力努力再努力
1. 下列說法正確的是 ( ) A. Java語言不區分大小寫 B. Java程序以類為基本單位 C. JVM為Java虛擬機JVM的英文縮寫 D. 運行Java程序需要先安裝JDK 2. 下列說法中錯誤的是 ( ) A. Java語言是編譯執行的 B. Java中使用了多進程技術 C. Java的單行注視以//開頭 D. Java語言具有很高的安全性 3. 下面不屬于Java語言特點的一項是( ) A. 安全性 B. 分布式 C. 移植性 D. 編譯執行 4. 下列語句中,正確的項是 ( ) A . int $e,a,b=10 B. char c,d=’a’ C. float e=0.0d D. double c=0.0f
上傳時間: 2017-01-04
上傳用戶:netwolf