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

下载本文档

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

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论