




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、PL/0语言语法分析器实验报告信息资源管理学院10级档案班马雪静一、实验内容用bison工具生成一个PL/0语言的语法分析程序,对PL/0源程序进行语法分析,并输出归约时所用的语法规则。二、实验环境语法分析器生成工具:bison编程语言:C三、程序设计原理与方法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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年单相电能表耐压走字台项目投资价值分析报告
- 2025至2030年全自动卧式模切机项目投资价值分析报告
- 2025至2030年全棉实心绳项目投资价值分析报告
- 食堂日常行为规范
- 上海市长宁青浦宝山嘉定四区2025年高考压轴卷物理试卷含解析
- 拎包即住单身公寓出租合同
- 教科版二年级下册科学小组合作计划
- 酒店前台内容培训
- 基层医疗工作者的黄大年精神学习心得体会
- 2025年心理健康意识提升计划
- 孕产期甲状腺疾病防治管理指南
- 网球项目运营指导方案
- 《如何在小学语文教学中有效实施书法教学的研究》课题结题汇报课件
- 2024-2025学年人教版七年级英语Unit1-2单元练习卷(含答案)
- 12《台阶》教学评一致性教学设计
- 2024版肿瘤患者静脉血栓防治指南解读 课件
- 苏科版(2024)八年级下册物理期末复习重要知识点考点提纲
- 技术服务分包合同模板
- 北京市通州区2023-2024学年高一下学期期中物理试卷(原卷版)
- CJ/T 123-2016 给水用钢骨架聚乙烯塑料复合管
- 跟着音乐游中国智慧树知到期末考试答案章节答案2024年广州大学
评论
0/150
提交评论