

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 編譯原理課程設(shè)計(jì)</b></p><p> 一、使用詞法分析,語法分析將布爾表達(dá)式轉(zhuǎn)換為逆波蘭式</p><p> 二、LL(1)語法分析程序</p><p><b> 設(shè)計(jì)要求</b></p><p> ?。?)對(duì)輸入文法,它能判斷是否為L(zhǎng)L(1)文法,若是,則
2、轉(zhuǎn)(2);否則報(bào)錯(cuò)并終止;</p><p> (2)輸入已知文法,由程序自動(dòng)生成它的LL(1)分析表;</p><p> ?。?)對(duì)于給定的輸入串,應(yīng)能判斷識(shí)別該串是否為給定文法的句型。</p><p> 三、設(shè)計(jì)題目:詞法自動(dòng)機(jī)</p><p> 設(shè)計(jì)要求:用C語言或其它高級(jí)語言對(duì)PASCAL子集編制一個(gè)一遍掃描的小型編譯程序?qū)υ~法
3、分析,完成識(shí)別語言單詞的任務(wù)。對(duì)語法分析,若輸入串是文法的句子,則輸出語法分析成功,否則,給出錯(cuò)誤的行號(hào),錯(cuò)誤的性質(zhì)。語法描述:文法: <程序>→begin <語句串> end <語句串>→<語句> { ;<語句> }<語句>→<賦值語句> | <條件語句> | <循環(huán)語句><賦值語句>→<變量>
4、 := <表達(dá)式><條件語句>→if <條件> then <語句><循環(huán)語句>→while <條件> do <語句><條件> →<表達(dá)式><關(guān)系符><表達(dá)式><表達(dá)式>→<項(xiàng)> { + <項(xiàng)> | — <項(xiàng)> }<項(xiàng)>→<因子>
5、; { * <因子> | / <因子> }<因子>→<變量> | <無符號(hào)整數(shù)> | ( <表達(dá)式> )<無符號(hào)整數(shù)>→<數(shù)字> { <數(shù)字> }<變量>→<標(biāo)識(shí)符><標(biāo)識(shí)符>→<字母> { <字母> | <數(shù)字> }<關(guān)系符>→ <
6、; | <= | > | >= | = | < ><字母>→ a | b | c | ... | x | y | z<數(shù)字</p><p> 四、設(shè)計(jì)題目:有限自動(dòng)機(jī)的運(yùn)行</p><p><b> 設(shè)計(jì)目的: </b></p><p> 1、
7、0; 理解有限自動(dòng)機(jī)的作用 </p><p> 2、 利用轉(zhuǎn)態(tài)圖和狀態(tài)表表示有限自動(dòng)機(jī) </p><p> 3、
8、 以程序?qū)崿F(xiàn)有限自動(dòng)機(jī)的運(yùn)行過程</p><p> 設(shè)計(jì)內(nèi)容:(注:題目詳細(xì)要求) </p><p> 利用狀態(tài)表和有限自動(dòng)機(jī)的運(yùn)行原理編制程序,使得程序能夠識(shí)別一個(gè)輸入串是否為一個(gè)有效的符號(hào)串,具體可以選擇下面之一:無符號(hào)定點(diǎn)實(shí)數(shù)、自然數(shù)、整數(shù)、十六進(jìn)制數(shù)或其它自己定義的符號(hào)串。</p><p><b> 設(shè)計(jì)思想: </b></
9、p><p> 本程序?qū)崿F(xiàn)對(duì)無符號(hào)定點(diǎn)實(shí)數(shù)的判斷,正確接受,否則不接受。 </p><p> 本程序的關(guān)鍵在狀態(tài)表和緩沖區(qū)的運(yùn)用。首先定義了一個(gè)布爾型函數(shù)ReadALine把輸入的字符串送到緩沖區(qū)中;然后定義了布爾型函數(shù)Run 和Getchar實(shí)現(xiàn)對(duì)輸入字符串的正確性判斷,更改Run函數(shù)可以改變程序功能:如可將狀態(tài)表改變成識(shí)別“偶數(shù)”的有限自動(dòng)機(jī)的狀態(tài)表。 </p>
10、<p> 附錄:(完整代碼) 有限自動(dòng)機(jī)</p><p> #include <stdio.h>#include <string.h>//狀態(tài)表相關(guān)存儲(chǔ)信息:#define STATE_NUMBER 4 //狀態(tài)數(shù)目#define CHAR_NUMBER 2
11、160; //輸入字符的種類: d 和 .#define DIGIT 0 //輸入數(shù)字在狀態(tài)表中位于第0列//State[][]為狀態(tài)表,以整數(shù)組形式存放,0,1,2,3表示狀態(tài),-1表示沒有此狀態(tài)int State[STATE_NUMBER][CHAR_NUMBER]=
12、; {{1,-1},{1,2}, {3,-1}, {3,-1}};int Q[STATE_NUMBER] = {0,1,0,1}; //終態(tài)標(biāo)志:0非終態(tài),1終態(tài)。//緩沖區(qū)://輸入緩沖區(qū):由專門函數(shù)操作(ReadALine(),GetChar())#define BUFFER_SIZE 1
13、000 //表達(dá)式緩沖區(qū)大小char Buffer[BUFFER_SIZE]; //表達(dá)式緩沖區(qū),以'\0'表示結(jié)束int ipBuffer = 0; //表達(dá)式緩</p><
14、;p> 附錄:詞法自動(dòng)機(jī)。 </p><p> import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import java.io.*;import java.util.*;class frame extends JFrame implements Acti
15、onListener{ JButton button1=new JButton("打開現(xiàn)有文件"); JButton button2=new JButton("現(xiàn)場(chǎng)輸入文件"); Choice ch=new Choice(); JButton button=new JButton("執(zhí)行"); TextArea ta
16、=new TextArea(); TextArea tb=new TextArea(); JFileChooser chooser=new JFileChooser(); FileInputStream readfile=null; int b; byte buffer[]=new byte[25000];</p><p> }
17、0; if(j==n1-1) { tb.append(s+"\n"); }
18、; } if((d[0]<=57&&d[0]>=48)||d[0]==45) { int j=0; for(int i=1;i
19、<n1;i++) { String ss=s.substring(i,i+1); byte f[]=ss.getBytes();
20、160; if((f[0]<=57&&f[0]>=48)||f[0]==46) { j+=1; } &
21、#160; } if(j==n1-1) { tb.append(s+"\n"); }
22、 } if(d[0]==39) { int j=0; for(int i=1;i<n1;i++) &
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 編譯原理課程設(shè)計(jì)詞法分析
- 編譯原理課程設(shè)計(jì)--詞法分析
- 編譯原理課程設(shè)計(jì)--- 詞法分析程序
- 課程設(shè)計(jì)----編譯原理詞法分析器
- 編譯原理課程設(shè)計(jì)報(bào)告詞法分析器
- 編譯原理課程設(shè)計(jì)詞法分析器文檔
- 編譯原理課程設(shè)計(jì)報(bào)告之詞法分析器
- 編譯原理課程設(shè)計(jì)-詞法語法分析器
- 編譯原理詞法分析器語法分析課程設(shè)計(jì)
- 編譯原理課程設(shè)計(jì)
- 編譯原理課程設(shè)計(jì)
- c-minus詞法分析和語法分析設(shè)計(jì)編譯器編譯原理課程設(shè)計(jì)
- 編譯原理課程設(shè)計(jì)--pascal語言詞法、語法分析器設(shè)計(jì)
- 編譯原理-詞法分析
- 編譯原理課程設(shè)計(jì)--c-編譯器詞法分析與語法分析的實(shí)現(xiàn)
- 編譯原理課程設(shè)計(jì)--編譯器
- 有窮自動(dòng)機(jī)與詞法分析器
- 有限自動(dòng)機(jī)與詞法分析器
- 編譯原理課程設(shè)計(jì)報(bào)告
- 編譯原理課程設(shè)計(jì) (2)
評(píng)論
0/150
提交評(píng)論