第二次作業 理解文法和語文

2022-09-06 00:42:09 字數 1245 閱讀 3370

1.理解符號串與集合運算。

l=d=

說明下表示的含義:

ludld

l4l*

d+l(lud)*

解:lud:所有大小寫字母和數字的集合

ld:由乙個字母和乙個數字組成的所有符號串的集合

l4:由四個字母組成的符號串的集合

l*:ξ和由字母組成的所有符號串的集合

d+:由乙個或若干個數字組成的所有符號串

l(lud)*:以字母開頭,後面是所有字母和數字組成的所有符號串的集合

2.文法g(z):z->azb|ab定義的是什麼樣的語言?

解: 產生式:z->azb, z->ab 

推導出:z->azb->aazzbb->aaaabbbb

所以語言為:l(g[z])=

3.寫出教材22頁例2.2中識別符號的文法四元組形式(vn,vt,p,s)。

解:文法g=(vn,nt,p,s),設b為識別符號,l為字母,d為數字。

其中,vn==,vt=

p={->

->

->

->a

->b

->z

->0

->1

->9  

s=4.寫出下列表示式的最左推導、最右推導。

g(e):

e=> e + t | t

t=>t * f | f

f=>(e)| i

注意觀察最左和最右推導過程的不同。

解:i*i+i:

最左推導:e=>e+t=>t+t=>t*f+t=>f*f+t=>i*f+t=>i*i+t=>i*i+f=i*i+i

最右推導:e=>e+t=>e+f=>e+i=>t+i=>t*f+i=>t*i+i=>f*i+i=>i*i+i

i+i*i:

最左推導:e=>e+t=>t+t=>f+t=>i+t=>i+t*f=>i+f*f=>i+i*f=i+i*i

最右推導:e=>e+t=>e+t*f=>e+t*i=>e+f*i=>e+i*i=>t+i*i=>f+i*i=>i+i*i

i+(i+i):

最左推導:e=>e+t=>t+t=>f+t=>i+t=>i+f=>i+(e)=>i+(e+t)=>i+(t+t)=>i+(f+t)=>i+(i+t)=>i+(i+f)=>i+(i+i)

最右推導:e=>e+t=>e+f=>e+(e)=>e+(e+t)=>e+(e+f)=>e+(e+i)=>e+(t+i)=>e+(f+i)=>e+(i+i)=>t+(i+i)=>f+(i+i)=>i+(i+i)

第二次作業

execise02 1.查詢85年以後出生的學生姓名 性別和出生日期 2.列表顯示所有可能的學生選課組合 學號 課程號 3.查詢1 2 4班中陳姓同學的資訊 4.查詢所有及格的學生姓名 所選課程名及所得分數 5.統計各門課程的及格人數 課程編號 課程名 及格人數 6.統計各門課程的總人數 及格人數和...

第二次作業

第一題 p1 1 遞迴寫法,效率低 include 1.寫乙個函式返回引數值為1的個數 比如 15 0000 1111 4個1 程式原型 int count one bits unsigned int value int fuc int x else return 0 void mainp1 p1 ...

第二次作業

檔名稱 516.cpp 作 者 闕文榮 完成日期 2016 年 3 月 11 日 版 本 號 v1.1 對任務及求解方法的描述部分 用while語句控制輸出 輸入描述 略 問題描述 現在北京有一套房子,200萬,假設房價每年 10 乙個軟體工程師每年固定能賺40萬。他想買這套房子,多大的 率能夠忍受...