編譯原理課程設(shè)計報告2014._第1頁
編譯原理課程設(shè)計報告2014._第2頁
編譯原理課程設(shè)計報告2014._第3頁
編譯原理課程設(shè)計報告2014._第4頁
編譯原理課程設(shè)計報告2014._第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、1課 程 設(shè) 計 報 告課程名稱課程名稱 編譯程序設(shè)計原理編譯程序設(shè)計原理 課題名稱課題名稱 帶括號的四則混合運算帶括號的四則混合運算 專專 業(yè)業(yè) 計算機科學與技術(shù)計算機科學與技術(shù) 班班 級級 學學 號號 姓姓 名名 指導教師指導教師 2014 年年 6 月月 19 日日 2湖南工程學院湖南工程學院課課 程程 設(shè)設(shè) 計計 任任 務務 書書課程名稱課程名稱 編譯程序設(shè)計原理編譯程序設(shè)計原理 課課 題題 帶括號的四則混合運算帶括號的四則混合運算 專業(yè)班級專業(yè)班級 學生姓名學生姓名 學學 號號 指導老師指導老師 審審 批批 任務書下達日期 2014 年 6 月 16 日任務完成日期 2014 年 6

2、 月 19 日22011 級編譯原理課程設(shè)計任務書一、課程設(shè)計的性質(zhì)和目的編譯原理課程設(shè)計是計算機專業(yè)課程,通過課程設(shè)計使學生進一步鞏固課堂所學知識,全面熟悉、掌握編譯程序編寫的基本設(shè)計方法和技巧,進一步提高分析問題、解決問題及上機操作能力,為將來從事高層次的計算機軟件開發(fā)工作打下一定的專業(yè)基礎(chǔ)。二、設(shè)計課題課題一:應用編譯原理的方法實現(xiàn)帶括號的四則混合運算 給定條件:1、 詞法符號定義如下:INTC D+ FLOATC (D+.D+) | (D+.) | ( .D+) FLOATC ( (D+.D+) | (D+.) | ( .D+)| (D+) ) ( E | e ) ( + | | )

3、D+ OPADD +OPSUB OPMUL *OPDIV /LPAREN (RPAREN )LINE nASSIGN =2、 表達式文法定義如下:01. S E02. E T03. E E OPADD T04. E E OPSUB T05. T P06. T T OPMUL P07. T T OPDIV P08. P INTC09. P FLOATC10. P LPAREN E RPAREN基本要求:1、 以 ASSIGN 作為文法結(jié)束符號; 2、 應用詞法分析技術(shù)識別單詞;3、 應用 SLR(1)分析技術(shù)判別表達式的合法性;4、 應用尾動作文法技術(shù)計算表達式的類型與值;5、 要求表達式的類型

4、與值嚴格一致。3課題二:Micro 語言詞法語法分析 給定條件:1、 詞法符號定義如下:ID L(L|D)*INTC D+REALC D+ D+PLUS +MULT *LPAREN (RPAREN )COLON :ASSIGN :SEMI ;LINE nSTOP FEOF EOF2、 表達式文法定義如下:01. PROGBEGIN DECL BODY END STOP02. DECLDECL VAR ID COLON TYPE SEMI03. DECLVAR ID COLON TYPE SEMI04. TYPEREAL 05. TYPEINTEGER 06. BODYBODY SEMI STM

5、07. BODYSTM08. STMID ASSIGN EXP09. STMWRITE LPAREN EXP RPAREN10. STMREAD LPAREN ID RPAREN11. EXPEXP PLUS FACT12. EXPFACT13. FACTFACT MULT PRIM14. FACTPRIM15. PRIMID16. PRIMINTC17. PRIMREALC18. PRIMLPAREN EXP RPAREN基本要求:1、 以 FEOF 作為文法結(jié)束符號; 2、 應用詞法分析技術(shù)識別單詞; 3、 應用 SLR(1)分析方法進行語法分析;4、 報錯要指明所在行。4三、課程設(shè)計報告

6、要求1、 課程設(shè)計報告必須按本系規(guī)定的格式要求打印成冊;2、 課程設(shè)計報告每人一份,正文必須包含如下幾個方面的內(nèi)容:1)基本設(shè)計思想;2)主要數(shù)據(jù)結(jié)構(gòu);3)總結(jié)與體會。3、 課程設(shè)計報告裝訂順序:封面、任務書、目錄、正文、源程序清單。四、選題及考核辦法1、 一人一組,學號為奇數(shù)者做課題一,學號為偶數(shù)者做課題二。2、 成績考核按個人課題完成情況、設(shè)計報告質(zhì)量及對課程設(shè)計的態(tài)度等綜合評定。五、設(shè)計進度安排1、 講課時間安排: 19 周周五上午2、 上機調(diào)試時間安排: 19 周周六周日上午3、 答辯時間安排: 20 周周一上午4、 其余時間:查閱資料,確定方案,設(shè)計課題相關(guān)程序。5目錄一 設(shè)計內(nèi)容與

7、設(shè)計要求.61.1 課程設(shè)計的性質(zhì)和目的課程設(shè)計的性質(zhì)和目的.61.2 設(shè)計課題設(shè)計課題.61.3 進度安排進度安排.7二 基本設(shè)計思想.82.1 詞法分析詞法分析.82.2 語法分析語法分析.9三 主要數(shù)據(jù)結(jié)構(gòu).14四 調(diào)試運行結(jié)果.15五 總結(jié)與體會.16參考文獻.176一 設(shè)計內(nèi)容與設(shè)計要求1.11.1 課程設(shè)計的性質(zhì)和目的課程設(shè)計的性質(zhì)和目的編譯原理課程設(shè)計是計算機專業(yè)課程,通過課程設(shè)計使學生進一步鞏固課堂所學知識,全面熟悉、掌握編譯程序編寫的基本設(shè)計方法和技巧,進一步提高分析問題、解決問題及上機操作能力,為將來從事高層次的計算機軟件開發(fā)工作打下一定的專業(yè)基礎(chǔ)。1.21.2 設(shè)計課題設(shè)

8、計課題課題一:應用編譯原理的方法實現(xiàn)帶括號的四則混合運算 給定條件:1、詞法符號定義如下:INTC D+ FLOATC (D+.D+) | (D+.) | ( .D+) FLOATC ( (D+.D+) | (D+.) | ( .D+)| (D+) ) ( E | e ) ( + | | ) D+ OPADD +OPSUB OPMUL *OPDIV /LPAREN (RPAREN )LINE nASSIGN =2、表達式文法定義如下:01. S E02. E T03. E E OPADD T04. E E OPSUB T05. T P06. T T OPMUL P07. T T OPDIV P

9、08. P INTC09. P FLOATC10. P LPAREN E RPAREN基本要求:1、以 ASSIGN 作為文法結(jié)束符號; 2、應用詞法分析技術(shù)識別單詞;3、應用 SLR(1)分析技術(shù)判別表達式的合法性;4、應用尾動作文法技術(shù)計算表達式的類型與值;5、要求表達式的類型與值嚴格一致。71.31.3 進度安排進度安排計算機計算機 0701/0702 班:班:第 18 周:星期五 8:0012:00 星期六 8:0012:00 第 19 周:星期天 8:0012:00 計算機計算機 0703 班:班: 第 18 周:星期五 14:0018:00 星期六 14:0018:00第 19 周

10、:星期天 14:0018:008二二 基本設(shè)計思想基本設(shè)計思想本計算器采用編譯原理的方法構(gòu)建,先用有窮自動機輔助進行詞法,把字符串形式的算術(shù)表達式的格式標準化,分離出一個個詞法單元。然后采用 SLR(1)文法分析法進行文法分析,檢查表達式的正確性。并在過程中計算出已分析出的部分表達式的值。最終得出表達式的值。2.12.1 詞法分析詞法分析由于各詞法元素都可以用正則表達式來表示,所以做詞法分析時采用正則表達式形式化表示各個元素以便于程序?qū)崿F(xiàn)。四則混合運算各詞法元素的正則表達式如下所示:INTC D+ FLOATC D+.D+ | D+. | .D+ FLOATC ( D+.D+ | D+. |

11、.D+ | D+ ) ( E | e ) ( + | | ) D+ OPADD +OPSUB OPMUL *OPDIV /LPAREN (RPAREN )LINE nASSIGN =正則表達式把能夠把各詞法元素的格式用形式化的方法表示出來,是格式的判斷能夠用程序來完成,但最終寫程序時,用正則表達式直接分析對人來說仍然是不太直接,不方便,所以把正則表達式轉(zhuǎn)化為有限自動機,以是寫程序?qū)崿F(xiàn)詞法分析方便。如圖 1.1 為四則混合運算的有限自動機。9圖 2.1 四則混合運算的有限自動機2.22.2 語法分析語法分析 四則混合運算算術(shù)表達式符合 SLR(1)文法但不符合 LR(0)文法,所以語法分析采用

12、SLR(1)語法分析方法。四則混合運算算術(shù)表達式的產(chǎn)生式如下: 12)0D1DD2E|e46DD7+8-11(INTCFLOATCOPADDOPMULOPDIVLINEASSIGN3 DE|e5+|-DFLOATC9*10/13n14=OPSUBRPARENLPAREN1001. S E02. E T03. E E OPADD T04. E E OPSUB T05. T P06. T T OPMUL P07. T T OPDIV P08. P INTC09. P FLOATC10. P LPAREN E RPAREN通過文法的產(chǎn)生式可以把四則混合運算算術(shù)表達式的文法中各個非終極符的FIRST

13、集合和 FOLLOW 集合一一求出來,以便進行下一步分析。其FIRST 集和FOLLOW 集如表 1.1 所示:表 2.1 四則混合運算算術(shù)表達式文法中非終極符的 FIRST 集和 FOLLOW 集符號FIRST 集合FOLLOW 集合SINTC FLOATC LPARENASSIGNEINTC FLOATC LPARENASSIGN OPADD OPSUB RPARENTINTC FLOATC LPARENASSIGN OPADD OPSUB RPAREN OPMUL OPDIVPINTC FLOATC LPARENASSIGN OPADD OPSUB RPAREN OPMUL OPDIV根

14、據(jù)文法的產(chǎn)生式和 FIRST 集、FOLLOW 集即可確定文法的規(guī)約活前綴 DFA (SLR(1)_DFA) ,如圖 1.2 所示。10S EE TE E OPADD TE E OPSUB TT PT T OPMUL PT T OPDIV PP INTCP FLOATCP LPAREN E RPARENE S1TS2PS3INTCS4FLOATCS5LPARENS61S EE E OPADD TE E OPSUB TASSIGNR1OPADDS7OPSUBS82E TT TOPMUL PT TOPDIV PASSIGNR2OPADDR2OPSUBR2RPARENR2OPMULS9OPDIVS1

15、04P INTCASSIGNR8OPADDR8OPSUBR8RPARENR8OPMULR8OPDIVR83T PASSIGNR5OPADDR5OPSUBR5RPARENR5OPMULR5OPDIVR55P FLOATCASSIGNR9OPADDR9OPSUBR9RPARENR9OPMULR9OPDIVR96P LPAREN E RPARENE TE E OPADD TE E OPSUB TT PT T OPMUL PT T OPDIV PP INTCP FLOATCP LPAREN E RPARENE S11TS2PS3INTCS4FLOATCS5LPARENS67E E OPADD TT P

16、T T OPMUL PT T OPDIV PP INTCP FLOATCP LPAREN E RPARENTS12PS3INTCS4FLOATCS5LPARENS63圖 2.2 SLR(1)_DFA9T T OPMUL PP INTCP FLOATCP LPAREN E RPARENPS14INTCS4FLOATCS5LPARENS611P LPAREN E RPARENE E OPADD TE E OPSUB TRPARENS16OPADDS7OPSUBS810T T OPDIV PP INTCP FLOATCP LPAREN E RPARENPS15INTCS4FLOATCS5LPAREN

17、S612E E OPADD TT T OPMUL PT T OPDIV PASSIGNR3OPADDR3OPSUBR3RPARENR3OPMULS9OPDIVS108E E OPSUB TT PT T OPMUL PT T OPDIV PP INTCP FLOATCP LPAREN E RPARENTS13PS3INTCS4FLOATCS5LPARENS613E E OPSUB TT T OPMUL PT T OPDIV PASSIGNR4OPADDR4OPSUBR4RPARENR4OPMULS9OPDIVS1014T T OPMUL P ASSIGNR6OPADDR6OPSUBR6RPARE

18、NR6OPMULR6OPDIVR615T T OPDIV P ASSIGNR7OPADDR7OPSUBR7RPARENR7OPMULR7OPDIVR716P LPAREN E RPARENASSIGNR10OPADDR10OPSUBR10RPARENR10OPMULR10OPDIVR104根據(jù) SLR(1)_DFA 即可用構(gòu)造文法的相應 action 表和 goto 表如表 1.3 和表 1.3 所示。表 2.2 SLR(1)_actionINTCFLOATCOPADDOPSUBOPMULOPDIVLPARENRPARENASSIGN0S4S5S31S7S8R12R2R2R2R23R5R5R5

19、R5R5R54R8R8R8R8R8R85R9R9R9R9R9R96S4S5S67S4S5S68S4S5S69S4S5S610S4S5S611S7S8S1612R3R3S9S10R3R313R4R4S9S10R4R414R6R6R6R6R6R615R7R7R7R7R7R716R10R10R10R10R10R10表 2.3 SLR(1)_gotoETP01231234561123712381339141015111213有了文法的 action 表和 goto 表,就可以根據(jù)表中所指示的狀態(tài)轉(zhuǎn)移情況,編寫程序并完成相應功能。5三三 主要數(shù)據(jù)結(jié)構(gòu)主要數(shù)據(jù)結(jié)構(gòu)程序的主要數(shù)據(jù)結(jié)構(gòu)為棧。1 詞法分析中用一

20、個棧來保存分析中到達的狀態(tài)。 static char lexstackBUFSIZE;2 語法分析中一個狀態(tài)棧用來保存已到達的狀態(tài),一個符號棧用來保存已讀入的符號或規(guī)約產(chǎn)生的符號中還沒被規(guī)約掉的語法符號。 struct int state; TokenType token; stackBUFSIZE;由于狀態(tài)棧,與符號棧的出入棧是同步的所以兩個棧寫在同一個結(jié)構(gòu)中。當讀入一個字符或前一個規(guī)約產(chǎn)生一個符號,之后若不能直接規(guī)約這將該符號入棧到token 并跳轉(zhuǎn)到新的狀態(tài),原狀態(tài)入棧 state。當一個活前綴被規(guī)約,被規(guī)約符號出棧,相應狀態(tài)也出棧。6四 調(diào)試運行結(jié)果 正確的輸入結(jié)果,得到值 407五

21、總結(jié)與體會編譯原理這門學科對于我來說算是比較難懂的了,對于自己在過去一周的課程設(shè)計中,我學到了不少的東西,當然是通過和同學交流討論所學習到的,雖然不是很精通,但是多少還是了解了一點皮毛,對于老師給我們的那段代碼,我還是自己很好的看了一下,對于程序的某些部分還是不怎么熟悉,所以在自己編譯和調(diào)試過程中出現(xiàn)了不少的問題和錯誤。雖然這樣,本次的課程設(shè)計還是讓我受益匪淺的,因為它極大的提升了我的編程能力和對程序的閱讀理解能力。這樣也使我對編譯原理中的詞法分析和語法分析部分比較深刻的了解和熟悉。真的,通過此次課程設(shè)計我學到了很多東西,當然自己還有許多不足的地方需要以后進一步的提高,這對我今后不管是學習還是

22、生活都會很有幫助,當然我也深刻的認識到了寫代碼必須要有比較過硬的理論基礎(chǔ)作為鋪墊才能編寫出好的程序。如果不熟練的掌握它們,很難寫出高水平的代碼,這樣就不能很好的提高自己和鍛煉自己。而這恰恰是我現(xiàn)在所缺乏的一種能力;希望以后很好的提升自己這方面的能力。在整個課程設(shè)計過程中多虧老師耐心的指導,否則我也很難完成任務,在這里我要感謝老師的悉心指導,這才讓我能夠很好的調(diào)試好代碼,當然除了老師的幫助外還有許多熱心的同學,他們同樣是我的榜樣,是他們給我的意見和見解,讓我的程序能夠更加完善。嗯,這些都是我的一點小小的體會,希望我們的指導老師周鐵山老師身體健康,工作順利,希望自己以后在學習中更上一層樓。8參考文

23、獻1 金成植,金英.編譯程序設(shè)計原理M.北京:高等教育出版社,20072 胡元義,柯麗芳.編譯原理學習指導M.西安電子科技大學出版社,20043 陳意云,張昱.編譯原理實驗教程M.北京:高等教育出版社,20094(美)Andrew W. Appel,(美)Maia Ginsburg.編譯原理 C 語言描述.北京:人民郵電出版社,20069附錄(源程序)#include #include #include #define BUFSIZE 256static FILE *in;static FILE *out; typedef enum NONE=-3, FEOF, ERROR, INTC,FLO

24、ATC,OPADD,OPSUB,OPMUL,OPDIV,LPAREN,RPAREN,LINE,ASSIGN, S,E,T,P/文法的非終極符 11-13 LexType;#define Macro_caseD 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9LexType lex(char *word) static int lexstacktop=-1; static char lextrywordBUFSIZE; static char lexstackBUFSIZE; static LexT

25、ype lextryflagBUFSIZE; static char lexcurch= ; static LexType lexstateflag= ERROR, INTC, FLOATC, ERROR,ERROR, ERROR, FLOATC,OPADD, OPSUB,OPMUL,OPDIV,LPAREN,RPAREN,LINE,ASSIGN; int state=0; int lexindex=0; doif (lexstacktop=-1) lexcurch=fgetc(in); else lexcurch=lexstacklexstacktop-;while(lexcurch= |l

26、excurch=t); while (1) switch (state) case 0: switch (lexcurch) case Macro_caseD: state=1;break; case .: state=3;break; case +: state=7;break; case -: state=8;break; case *: state=9;break; case /: state=10;break; case (: state=11;break; case ): state=12;break; case n: state=13;break; case =: state=14

27、;break; default: state=-1;break; ; break; case 1: switch (lexcurch) case Macro_caseD: state=1;break;10 case .: state=2;break; case E: case e: state=4;break; default: state=-1;break; ; break; case 2: switch (lexcurch) case Macro_caseD: state=2;break; case E: case e: state=4;break; default: state=-1;b

28、reak; ; break; case 3: switch (lexcurch) case Macro_caseD: state=2;break; default: state=-1;break; ; break; case 4: switch (lexcurch) case Macro_caseD: state=6;break; case +: case -: state=5;break; default: state=-1;break; ; break; case 5: switch (lexcurch) case Macro_caseD: state=6;break; default:

29、state=-1;break; ; break; case 6: switch (lexcurch) case Macro_caseD: state=6;break; default: state=-1;break; ; break; default: state=-1;break; if (state=-1) break; lextrywordlexindex+=lexcurch; /*maybe overflow*/lextryflaglexindex-1=lexstateflagstate; if (lexstacktop=-1) lexcurch=fgetc(in); else lex

30、curch=lexstacklexstacktop-; if (lexindex=0 & lexcurch=EOF)return FEOF; lextrywordlexindex=lexcurch; lextryflaglexindex=ERROR; while (lexindex0 & lextryflaglexindex=ERROR) lexstack+lexstacktop=lextrywordlexindex-; /*maybe overflow*/ lextrywordlexindex+1=0; strcpy(word,lextryword); return lext

31、ryflaglexindex;static int lineno=1;typedef struct11 LexType type; enum INT,FLOAT valuetype; union int intv; float floatv; value; TokenType;static TokenType curtoken,buftoken=NONE;void getnexttoken(char *word)if (buftoken.type=NONE) do curtoken.type=lex(word); if (curtoken.type=INTC) curtoken.valuety

32、pe=INT; v=atoi(word); if (curtoken.type=FLOATC) curtoken.valuetype=FLOAT; curtoken.value.floatv=atof(word); if (curtoken.type=ERROR) fprintf(out,Error line:%d %sn,lineno,word); if (curtoken.type=LINE) lineno+; while(curtoken.type=ERROR|curtoken.type=LINE); else memcpy(&curtoken

33、,&buftoken,sizeof(TokenType); buftoken.type=NONE; #define ERRORPROCESS fprintf(out,pError line:%dn,lineno); return#define shift(num) memcpy(&(stacktop.token),&curtoken,sizeof(TokenType); stack+top.state=num; getnexttoken(word);#define Macro_caseAASR ASSIGN: case OPADD: case OPSUB: case R

34、PAREN#define Macro_caseAASRMD Macro_caseAASR: case OPMUL: case OPDIV#define Macro_NextcaseMDto9_10AndOther case OPMUL: shift(9); break; case OPDIV: shift(10); break#define Macro_NextcaseIFLto456AndOther case INTC: shift(4); break; case FLOATC: shift(5); break; case LPAREN: shift(6); break; default:

35、ERRORPROCESS#define Macro_chhgInETPgoto(State) memcpy(&buftoken,&curtoken,sizeof(TokenType); memcpy(&curtoken,&(stack-top.token),sizeof(TokenType);curtoken.type=Statevoid parse(void) struct int state; TokenType token; stackBUFSIZE; int top=0; char word80; float ta,tb;12 stacktop.stat

36、e=0; getnexttoken(word); while (1) switch(stacktop.state) case 0: switch(curtoken.type) case E: shift(1); break; case T: shift(2); break; case P: shift(3); break; Macro_NextcaseIFLto456AndOther; break; case 1: switch(curtoken.type) case ASSIGN: /* R1 */ Macro_chhgInETPgoto(S); if (curtoken.valuetype

37、=INT)/ ACCEPT fprintf(out, %dn,v); if (curtoken.valuetype=FLOAT) fprintf(out, %fn,curtoken.value.floatv); return; case OPADD: shift(7); break; case OPSUB: shift(8); break; default: ERRORPROCESS; break; case 2: switch(curtoken.type) case Macro_caseAASR:/R2 Macro_chhgInETPgoto(E); br

38、eak; Macro_NextcaseMDto9_10AndOther; break; case 3: switch(curtoken.type) case Macro_caseAASRMD: Macro_chhgInETPgoto(T);break; default: ERRORPROCESS; break; case 4: switch(curtoken.type) case Macro_caseAASRMD: Macro_chhgInETPgoto(P);break; default: ERRORPROCESS; break; case 5: switch(curtoken.type)

39、case Macro_caseAASRMD: Macro_chhgInETPgoto(P);break; default: ERRORPROCESS; break;13 case 6: switch(curtoken.type) case E: shift(11); break; case T: shift(2); break; case P: shift(3); break; Macro_NextcaseIFLto456AndOther; break; case 7: switch(curtoken.type) case T: shift(12); break; case P: shift(

40、3); break; Macro_NextcaseIFLto456AndOther; break; case 8: switch(curtoken.type) case T: shift(13); break; case P: shift(3); break; Macro_NextcaseIFLto456AndOther; break; case 9: switch(curtoken.type) case P: shift(14); break; Macro_NextcaseIFLto456AndOther; break; case 10: switch(curtoken.type) case

41、 P: shift(15); break; Macro_NextcaseIFLto456AndOther; break; case 11: switch(curtoken.type) case RPAREN: shift(16); break; case OPADD: shift(7); break; case OPSUB: shift(8); break; default: ERRORPROCESS; break; case 12: switch(curtoken.type) case Macro_caseAASR:/* R3 */memcpy(&buftoken,&curt

42、oken,sizeof(TokenType);if ( stacktop-3.token.valuetype=INT & stacktop-1.token.valuetype=INT)curtoken.valuetype=INT;v=v +v;elsecurtoken.valuetype=FLOAT;if (stacktop-3.token.valuetype=INT) ta=(float)(v)

43、; else ta=stacktop-3.token.value.floatv; if (stacktop-1.token.valuetype=INT) tb=(float)(v); else tb=stacktop-1.token.value.floatv;curtoken.value.floatv =ta+tb;14 curtoken.type=E;top=top-3; break; Macro_NextcaseMDto9_10AndOther; break; case 13: switch(curtoken.type) case Mac

44、ro_caseAASR:/* R4 */memcpy(&buftoken,&curtoken,sizeof(TokenType); curtoken.type=E;if ( stacktop-3.token.valuetype=INT & stacktop-1.token.valuetype=INT)curtoken.valuetype=INT;v=v;elseif (stacktop-3.token.valuetype=INT

45、) ta=(float)(v); else ta=stacktop-3.token.value.floatv; if (stacktop-1.token.valuetype=INT) tb=(float)(v); else tb=stacktop-1.token.value.floatv;curtoken.value.floatv =ta-tb;top=top-3; break; Macro_NextcaseMDto9_10AndOther; break; case 14: switch(c

46、urtoken.type) case Macro_caseAASRMD: /* R6 */memcpy(&buftoken,&curtoken,sizeof(TokenType); curtoken.type=T;if ( stacktop-3.token.valuetype=INT & stacktop-1.token.valuetype=INT)curtoken.valuetype=INT;v=v *v;elsecurtoken.valu

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論