版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、PL/0語言語法分析器實驗報告信息資源管理學(xué)院10級檔案班馬雪靜一、實驗內(nèi)容用bison工具生成一個PL/0語言的語法分析程序,對PL/0源程序進(jìn)行語法分析,并輸出歸約時所用的語法規(guī)則。二、實驗環(huán)境語法分析器生成工具:bison編程語言:C三、程序設(shè)計原理與方法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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026廣東深圳北理莫斯科大學(xué)材料科學(xué)系微流控校企聯(lián)合實驗室招聘考試重點試題及答案解析
- 開發(fā)廊合同范本
- 崗位保密協(xié)議書
- 委托征收協(xié)議書
- 意向團(tuán)購協(xié)議書
- 資金托底協(xié)議書
- 小學(xué)分手協(xié)議書
- 裝燈施工協(xié)議書
- 賬務(wù)平攤協(xié)議書
- 志愿星級協(xié)議書
- 外科題庫選擇題及答案
- 專題07 人與動物讀后續(xù)寫-2025年高考英語話題寫作高頻熱點通關(guān)攻略(原卷版)
- 思政大一上期末復(fù)習(xí)測試附答案
- 乳腺癌靶向治療藥物研究進(jìn)展
- 墻繪施工合同協(xié)議書
- 國家開放大學(xué)行管專科《行政組織學(xué)》期末紙質(zhì)考試總題庫(2025春期版)
- 中國慢性冠脈綜合征患者診斷及管理指南2024版解讀
- iso28000-2022供應(yīng)鏈安全管理手冊程序文件表單一整套
- 2024年保安員證考試題庫及答案(共130題)
- 2024年中國紅芪市場調(diào)查研究報告
- NB-T42167-2018預(yù)制艙式二次組合設(shè)備技術(shù)要求
評論
0/150
提交評論