PL0語言語法分析器實(shí)驗(yàn)報(bào)告_第1頁
PL0語言語法分析器實(shí)驗(yàn)報(bào)告_第2頁
PL0語言語法分析器實(shí)驗(yàn)報(bào)告_第3頁
PL0語言語法分析器實(shí)驗(yàn)報(bào)告_第4頁
PL0語言語法分析器實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、PL/0語言語法分析器實(shí)驗(yàn)報(bào)告信息資源管理學(xué)院10級(jí)檔案班馬雪靜一、實(shí)驗(yàn)內(nèi)容用bison工具生成一個(gè)PL/0語言的語法分析程序,對(duì)PL/0源程序進(jìn)行語法分析,并輸出歸約時(shí)所用的語法規(guī)則。二、實(shí)驗(yàn)環(huán)境語法分析器生成工具:bison編程語言:C三、程序設(shè)計(jì)原理與方法1.cifa.l%#include#include#include%Letter A-Za-zDigit 0-9D 1-9LetterDigit A-Za-z0-9SPACE ntf040%+return ADD;-return MINUS;*return MULTIPLY;/return DIVIDE;=return EQUAL;#r

2、eturn UNEQUAL;return LESS;return MORE;=return MOREEQUAL;:=return EVALUATE;(return LPARENTHESES; )return RPARENTHESES;,return COMMA;return SEMICOLON;.return DOT;if|IFreturn IF;then|THENreturn THEN;while|WHILEreturn WHILE;do|DOreturn DO;read|READreturn READ;write|WRITEreturn WRITE;call|CALLreturn CALL

3、;begin|BEGINreturnBEG;end|ENDreturn END;const|CONSTreturn CONST;var|VARreturn VAR;procedure|PROCEDUREreturn PROCEDURE;odd|ODDreturn ODD;DDigit*|0 return NOSIGNINTEGER;LetterLetterDigit* return IDENT;DigitLetterDigit* return ERROR;SPACE* . return ERRORCHAR;%int yywrap()return 1;2. Yufa.y%#include#inc

4、lude#includelex.yy.c%token IF THEN WHILE DO READ WRITE CALL BEG END CONST VAR PROCEDURE ODD%token ADD MINUS MULTIPLY DIVIDE EQUAL UNEQUAL LESS LESSEQUAL MORE MOREEQUAL EVALUATE%token LPARENTHESES RPARENTHESES COMMA SEMICOLON DOT ERROR ERRORCHAR%token NOSIGNINTEGER IDENT %/ := .Program:PartialProgram

5、 DOT printf( - .n);/ := PartialProgram:ConstantDeclaration VariableDeclaration ProcedureDeclaration Statementprintf( - n);|VariableDeclaration ProcedureDeclaration Statementprintf( - n);|ConstantDeclaration ProcedureDeclaration Statementprintf( - n);|ConstantDeclaration VariableDeclaration Statement

6、printf( - n);|ConstantDeclaration Statementprintf( - n);|VariableDeclaration Statementprintf( - n);|ProcedureDeclaration Statementprintf( - n);|Statementprintf( - n);/ := CONST,; ConstantDeclaration:CONST ConstList SEMICOLONprintf( - CONST ;n);/ := |,ConstList:ConstDefinationprintf( - n);|ConstList

7、COMMA ConstDefinationprintf( - ,n);/ := :=ConstDefination:IDENT EVALUATE NOSIGNINTEGERprintf( - :=n);/ := VAR,; VariableDeclaration:VAR IdentList SEMICOLONprintf( - VAR ;n);/ := |, IdentList:IDENTprintf( - n);|IdentList COMMA IDENTprintf( - ,n);/ := ; ProcedureDeclaration :ProcedureHead PartialProgr

8、am SEMICOLON ProcedureDeclaration SEMICOLONprintf(-;);|ProcedureHead PartialProgram SEMICOLON printf(-;n);/ := PROCEDURE; ProcedureHead:PROCEDURE IDENT SEMICOLONprintf( - PROCEDURE;n);/ := | Statement:EvaluateStatementprintf( - n);|ComplexStatementprintf( - n);|ConditionStatementprintf( - n);|WhileS

9、tatementprintf( - n);|ProcedureCallStatementprintf( - n);|ReadStatementprintf( - n);|WriteStatementprintf( - n);|printf( - n);/ := :=EvaluateStatement:IDENT EVALUATE Expressionprintf( - :=n);/ := BEGIN;ENDComplexStatement:BEG StatementList ENDprintf( - BEGINENDn);/ := |;StatementList:Statementprintf

10、( - n);|StatementList SEMICOLON Statementprintf( - ;n);/ := |ODDCondition:Expression RelationOperator Expressionprintf( - n);|ODD Expressionprintf( - ODDn);/ := IFTHENConditionStatement:IF Condition THEN Statementprintf( - IFTHENn);/ := +|-Expression:ADD TermListprintf( - +n);|MINUS TermListprintf(

11、- -n);|TermListprintf( - n);/ := |TermList:Termprintf( - n);|TermList ADD Termprintf( - +n);|TermList MINUS Termprintf( - -n);/ := Term:GeneListprintf( - n);/ := |GeneList:Geneprintf( - n);|GeneList MULTIPLY Geneprintf( - *n);|GeneList DIVIDE Geneprintf( - /n);/ := |() Gene:IDENTprintf( - n);|NOSIGN

12、INTEGERprintf( - n);|LPARENTHESES Expression RPARENTHESESprintf( - ()n);/ := =|#|= */RelationOperator:EQUALprintf( - =n);|UNEQUALprintf( - #n);|LESSprintf( - n);|LESSEQUALprintf( - =n);|MOREprintf( - n);|MOREEQUALprintf( - =n);/ := WHILEDO WhileStatement:WHILE Condition DO Statementprintf( - WHILEDO

13、n);/ := CALL */ProcedureCallStatement:CALL IDENTprintf( - CALLn);/ := READ(,) ReadStatement:READ LPARENTHESES IdentList RPARENTHESESprintf( - READ()n);/ := WRITE(,) WriteStatement:WRITE LPARENTHESES ExpressionList RPARENTHESESprintf( - WRITE()n);/ := |, ExpressionList:Expressionprintf( - n);|ExpressionList COMMA Expressionprintf( - ,n);%int main()char filename20;printf(file name:);scanf(%s,filename);yyin=fopen(filename,r);if(!yyin)printf(nno filesn);return 0;yyparse(); fclose(yyin); return 0;yyerror(char *s) printf

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論