PL0语言语法分析器试验报告_第1页
PL0语言语法分析器试验报告_第2页
PL0语言语法分析器试验报告_第3页
PL0语言语法分析器试验报告_第4页
PL0语言语法分析器试验报告_第5页
已阅读5页,还剩7页未读, 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、PL/O语言语法分析器实验报告信息资源管理学院10级档案班马雪静 2010202609一、实验内容用bison工具生成一个PD0语言的语法分析程序,对PL/0源程序进行语法分析,并输 出归约时所用的语法规则。二实验环境语法分析器生成工具:bison编程语言:C三、程序设计原理与方法l.cifa%# mclude<stdio.h> #mclude<string.h> #mclude<stdlib.h>%Letter A-Za-zDigit 0-9D 1-9LetterDigit A-Za-zO-9%H+H n7HSPACE ntf040retuin ADD:r

2、etuin MINUS;retuin MULTIPLY;letuin DIVIDE;return EQUAL;letuin UNEQUAL;retuin LESS;return LESSEQUAL;retuin MORE;return MOREEQUAL;retiiin EVALUATE;letuin LPARENTHESES;retuin RPARENTHESES;letuin COMMA;letuin SENDCOLON;retuin DOT;lfflF11MtlienM|MTHENH "wIhI&T'WHILE” “doTDCT MreadM|HREADH Mw

3、nteH|nMUTEH McallH|"CALLn MbegmH|nBEGINH MendH|HENDn MconstH|nCONSTHretuin IF:return THEN;return WHILE;return DO;return READ;return XMUTE;return CALL:return BEG;return END;return CONST;piocedureH|HPROCEDUREHreturn VAR;return PROCEDURE;oddH|nODDH D Digit *0”return ODD;return NO SIGNINTEGER;Lette

4、r LetteiDigit *leturn IDENT;Digit LetteiDigit *leturn ERROR;SPACE*return ERRORCHAR;% mt yywrap()return 1;2.Yufa.vJ%#iiiclude<stdio.h>#mclude<stiing.h># mcludeHlex.yy.c" % %token IF THEN WHILE DO READ WRITE CALL BEG END CONST VAR PROCEDUREODD%token ADD MINUS MULTIPLY DIVIDE EQUAL UNE

5、QUAL LESS LESSEQUAL MOREMOREEQUAL EVALUATE%token LPARENTHESES RPARENTHESES COMMA SEMICOLON DOT ERRORERRORCHAR%token NOSIGNINTEGER IDENT%/<程序 >:=< 分程序.Program:PaitialProgiam DOT printf(n<程序av分程序>.nH);分程序:=V常量说明部分V变量说明部分V过程说明部分语句PartialProgiam:ConstantDeclaiation VariableDeclaration Pro

6、cedureDeclaiation Statementpiiiitf(n分程序一 常量说明部分 变量说明部分 过程说明部分V语句5”);|VaiiableDeclaration ProcedureDeclaiation Statement priiitf(n分程序 变量说明部分 过程说明部分 语句5”);|ConstantDeclaiation PioceduieDeclaration Statement priiitf(n分程序- 常量说明部分 过程说明部分 语句5”);|ConstantDeclaiation VaiiableDeclaiation Statement priiitf(n分

7、程序- 常量说明部分 变量说明部分X语句n”);|ConstantDeclaiation Statementprintf(M分程序 常量说明部分x语句|VaiiableDeclaiation Statementprintf(M分程序 变量说明部分x语句|ProceduieDeclaration Statement printf(M分程序 过程说明部分x语句iT); IStatement prmtf(H分程序- v语句常量说明部分:=CONST常量定义产常量定义;ConstantDeclaration:CONST ConstList SENDCOLON pnntf(M常量说明部分 一 CONST

8、 常量定义串常量定义串= 常量定义|常量定义串,常量定义ConstList:ConstDefiiiation prmtf(n常量定义串a 常量定义iiH);|ConstList COMMA ConstDefiiiation pnntf(M 常量定义串 常量定义串产常量定 义n”);常量定义 二= 标识符:=无符号整数ConstDefiiiationIDENT EVALUATE NOSIGNINTEGER prmtf(H常量定义- 标识符:=无符号整 数);变量说明部分:=VAR标识符,标识符;VariableDeclaration:VAR IdentList SEMICOLONpnntf(M变

9、量说明部分 一 VAR v标识符串a标识符串二= 标识符|标识符串产标识符IdentList:IDENT printf(n标识符串 一 标识符E);|IdentList COMMAIDENT pnntf(H标识符串- 标识符串,标识符aiT);过程说明部分:=V过程首部X分程序;过程说明部分;ProcedureDeclaration:ProceduieHead PaitialPiogram SEMICOLON ProceduieDeclaration SEMICOLON priiitf(, 过 程说明部分-过首部X分程序 ; 过程说明部分;”);|ProceduieHead PartialPi

10、ogram SEMICOLON printf(H过程说明部分-av过程首部x分程 序过程首部:=PROCEDURE 标识符;ProceduieHead:PROCEDURE LDENT SEMICOLON pnntf(H过程首部- PROCEDURE S标识符;nn);/V语句 :=V赋值语句|V复合语句|条件语句|当型循环语句|过程调用语句|读语 句|写语句|空Statement:EvaluateStatement prmtf(n语句 赋值语句|ComplexStatement prmtf(n语句一复合语句iiH);|ConditionStatementprintffv语句a v条件语句n”)

11、;|WluleStatementpnntf(”语句- 当型循环语句|ProcediueCallStatement printfC语句a v过程调用语句nn);|ReadStatementprmtf(u语句- v读语句nM);IWnteStatement prmtf(n语句v写语句iT);| prmtf(M语句- 空ir);赋值语句 :=V标识符:=表达式EvaluateStatement:IDENT EVALUATE Expression pnntf(M赋值语句 标识符:=表达式iiH);/复合语句:=BEGIN语句;语句ENDComplexstatement:BEG StatementLis

12、t ENDprintf(,«复合语句- BEGIN语句串ENDnM);V语句串 :=V语句|v语句串;V语句StatementList:Statementprmtf(H语句串- v语句nn);|StatementList SEMICOLON Statement语句串- 语句串;语句n”);条件:=V表达式v关系运算符v表达式|ODD表达式Condition:Expression RelationOperator Expression条件 表达式av关系运算符x表达式 n”);|ODD Expression prmtf(n条件一ODD表达式n”);V条件语句 :=IF条件THENV语句

13、Conditionstatement:IF Condition THEN Statementpnntf(M条件语句 IF条件THEN语句iiH);表达式:=+|-V项加法运算符项Expression:ADD TerniListprmtf(n表达式a 一+项串nH);MINUS TerniList prmtf(n表达式a 一项串iiH);|TerniList piintf(n表达式项串nM);H 项串:=V项|v项串加法运算符v项ATerniList:Tennpnntf(n项串- 项nH);|TerniList ADD Termpnntffv项串- 项串+项nH);|TerniList MINU

14、S Tenn priiitf(,项串a v项串项iiH);V项:=V因子V乘法运算符因子Term:GeneListpnntf(M项- 因子串/因子串 := 因子|因子串 乘法运算符 因子GeneList:Genepnntf(n因子串 - 因子曲);|GeneList MULTIPLY Gene printf(H因子串一 v因子串a*v因子nM);|GeneListDIVIDE Geneprintf(H因子串-因子串/因子nH);/因子:= 标识符|无符号整数 代 表达式丁GeneRENT pnntf(M因子- 标识符iT);|NOSIGNINTEGERprmtf(n因子a v无符号整数n”);

15、ILPARENTHESES Expression RPARENTHESESprmtffy因子a - fv表达式ynM);/ 关系运算符:=|#|=|= */Relationoperator:EQUAL printf(n关系运算符 =n");|UNEQUAL prmtf(H关系运算符 存iT);|LESSprintf(H关系运算符 -|LESSEQUALprmtf(H关系运算符 一 =nH);|MORE printf(n关系运算符 ir);|MOREEQUALprmtf(n关系运算符 =nM);当型循坏语句:=WHILEV条件DO语句WhileStatementWHILE Condit

16、ion DO Statementprmtf(u当型循坏语句- WHILE条件DO语句nn);过程调用语句 :=CALL标识符 */ProcedureCallStatement:CALL LDENTprmtf(n过程调用语句a 一 CALL标识符n”);读语句:=READG标识符,标识符丁Readstatement:READ LPARENTHESES IdentList RPARENTHESESprintf(H读语句- READ(标识符串 )1T);v写语句二=WRITEfv表达式,表达式丁Write StatementWRITE LPARENTHESES ExpressionList RPAR

17、ENTHESES pnntf(M写语句- WRITE( 表达式串)n”);/V表达式串 := 表达式|v表达式串,V表达式ExpressionList:Expression表达式串 表达式nM);|ExpressioiiList CONINIAExpression printf(M表达式串 一 表达式串,表达式an”);%mt mam()char filename20; pnntf(Mfile name:M); scanfC%s",fllenam 亡); yym=fbpen(filename,HrH); if(!yym)priiitf(n,*jino filesnn); return

18、 0; vyparseQ; fclose(yyiii);return 0; yyenor(chai *s)pnntf(MEiTor!nn);四.实验结果1 源文件:colunin.plOvar r? h5 len, al, a2, volunui:begmread(r);read(h);len := 2 * 3 * r;al := 3 * r * r;a2 := al + al + len * h; volumn := al * h;write(len); write(al); write(a2); write(volunm); end.2 归约结果:"C:UsersmxjDeskt

19、opiB; 分析> > > > > ;q> 识识识识轟 tx負昴串 > > > > >柯守 10识识识识识识U识呦 11标D<句句标D<句句号± RH<<<<<< - <EA语语 <EA语语符 "->->->->->->0->RW<1->Ri>> > 串句 符> <数*>串整> 敝軍 >串符子'<>:=语> < >

20、; 符>>数 >蛊串整 > >串'串 串标话句号子符子符子>> >子子因因> < 符 >>> .4$'>- - - -T- - '1-7 - > <】>>>>>> 部> ->i>i>i>i>i>i/>i>>i>neWHHHHt 明串 > 一 >串> 一 >一> 一 >一>>一>句一 >一r C 0.733 CP cc

21、 CP CP 、/-J、l CP CP CP 、y e识识识识识识量识语句句识语句句子子子子子子 > 串达值句句子子子子子 11!.夸标读语语标读语语因因因因因因顶靈K语语因因因因因诘<EA语语符因符因识因串 > 项 < 值语符因识因识因串 > 项 < 值语识闵 <7读<无<无<标<子项<->赋 <无<标 <标< 子项<->赋 <标< ->-><-><-><-><->因 <->一 <->

22、<-><-><->因 <->一 <-><-> >->-<>->>->- I ->->> - >句-> 卷SKKK付说曹 >串爲>串>串 >串>串一 >式语 >串>串 >串>串一 >式语>串>字 子>串因项项语语因闵<<<<<<<<<<<<<<<<<<<C:U

23、sersmDesktopi 吾法分 r§§Debugyufa.tab.exe"> <符 >>>脣串>>符于 > "符于符于>>+串标语w:子符于> 串 > 识因量识因识因wt顶 < 值语识因识因串 > 项<> * 页 >> > < > >- 卜 > >串31项项R因 <<->因 <<-><->因 <->一 <-><-><->因 <->一 <-><->因 <->一-><-><->因 <->一> - >> - >- >> - >句->->->>-一 > >串一 > >串>串一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论