




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编译原理实验报告2名称:学号:课程:10级家庭1.为Pascal源程序编写预处理程序。这个程序的作用是,每次调用时,将以下整个语句发送到扫描缓冲区,删除注释行,打印源代码列表。%(* lexical analyzer for Pascal)%(*此程序扫描比较关键字表以标识关键字*。)(*定义流程和函数*)Procedure commenteof(*确认并返回错误输入*)Beginwriteln(YY line no unexpected eof inside comment at line,YY line no);end(* comment eof *);Function upper (str:字符串):字符串;(*将字符串转换为大写*)Var I : integerBeginFor I :=1 to length(str) dostrI:=up case(strI);Upper :=strend(* upper *);function is _ keyword(id : string;var token : integer): boolean;(*验证id是否为Pascal关键字;如果是,则返回token中相应的token number *ConstId _ len=20Typeident=stringid _ len;Const(* Pascal关键字表: *)(使用* Pascal关键字表: *)No _ of _ keywords=39Keyword : array 1.no _ of _ keywords of ident=(AND、ARRAY、BEGIN、CASE、CONST、DIV、DO、DOWNTO、ELSE、END、EXTERNAL、EXTERN、FILE、FOR、FORWARD、FUNCTION、goto、if、in、label、MOD、NIL、NOT、OF、OR、OTHERWISE、PACKED、PROCEDURE、程序、record、repeat、set、THEN、TO、TYPE、UNTIL、VAR、WHILE、WITH);Keyword _ token: array 1.no _ of _ keywords of integer=(_AND、_ARRAY、_BEGIN、_CASE、_CONST、_DIV、_DO、_DOWNTO、_ELSE、_END、_EXTERNAL、_EXTERNAL、(* external : 2 spellings(see above)!*)_FILE、_FOR、_FORWARD、_FUNCTION、_GOTO、_IF、_IN、_LABEL、_MOD、_NIL、_NOT、_OF、_ or、_ otherwise、_ packed、_ procedure、_PROGRAM、_RECORD、_REPEAT、_SET、_THEN、_TO、_TYPE、_UNTIL、_VAR、_WHILE、_ WITH);Var m、n、k : integerBeginid :=upper(id);(*二分法搜索: *)m :=1; n :=no _ of _ keywordsWhile m=n doBegink :=m(n-m)div 2;If id=keywordk thenBeginIs _ keyword :=truetoken :=keyword _ tokenkk;ExitEndElse if idkeywordk thenM :=k 1ElseN :=k-1EndIs_keyword :=falseend(* is _ keyword *);%32;n quote%(*规则部分*)%Var c : charKw : integer%a-za-z(a-za-z0-9)* if is _ keyword(yym text,kw) thenReturn(kw)Elsereturn(IDENTIFIER);:= return(ASSIGNMENT);( NC quote |)return(character _ string);: return(COLON);, return(COMMA);0-9return(DIGSEQ);.return(DOT);.return(dot dot);= return(EQUAL);= return(GE);return(GT);“return(LBRAC);= return(LE);( return(LPAREN);return(LT);- return(MINUS);return(NOTEQUAL);返回(plus);“return(RBRAC);0-9 . 0-9return(real number);() return(r paren);return(semic olon);/ return(SLASH);* return(STAR);* * return(star star);-|返回(up arrow);(* |beginRepeatC :=get _ charCase c of :* : beginC :=get _ charIf c=) then exit else unget_char(c)End#0 : beginCommenteofExitEndEndUntil falseEnd n t f;return(ILLEGAL);2.结合示例3-3和示例3-4的状态图,设计和实现一次返回一个单词种类和属性的词法分析器函数。考虑关键字if、then、while、do。准备主程序以完成测试(输入和输出)。Int code,valuestrtoken :=;GetChar();GetBC();If(IsLetter()BeginWhile (isletter()或isdigiit()Beginconcat();GetChar();Endretract();code :=Reserve();If(code=0)Begin值:=insert id(strt oken);Return($ID,value);EndElse if(IsDigit()BeginWhile(IsDigit()Beginconcat();GetChar();Endretract();值:=insert const(str token);Return(%INT,value);EndElseif (ch=/) return ($ div,-);Elseif (ch=) return ($ as sgin,-);Elseif (ch=) return ($ plus,-);Elseif (ch= * )BeginGetChar();If (ch= *) return ($ power,-);retract();Return($STAR,-);Endelse if(ch=;)return ($ semiicon,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 东莞美容院加盟合同范本
- 个人房产与中介合同范本
- 先拿货后付款合同范例
- 2024年吴忠市人民医院自主招聘事业单位工作人员考试真题
- 加盟授权合同范例范例
- 农村空地出售合同范本
- 2024年曲靖六十九医院人才招聘考试真题
- 以资抵债合同范本
- 2024年广州市天河区体育西路小学聘用制专任教师招聘考试真题
- 创意园厂房合同范例
- 2025年企业法务顾问聘用协议范本
- 无菌手术台铺置的细节管理
- 《康复评定技术》课件-第五章 运动控制
- 议论文8(试题+审题+范文+点评+素材)-2025年高考语文写作复习
- 【理特咨询】2024生成式人工智能GenAI在生物医药大健康行业应用进展报告
- 2025新人教版英语七年级下单词默写表(小学部分)
- 2025年春新外研版(三起)英语三年级下册课件 Unit6第1课时Startup
- 2025江苏苏州高新区狮山商务创新区下属国企业招聘9人高频重点提升(共500题)附带答案详解
- 平抛运动的经典例题
- 录井作业现场风险评估及控制措施
- 2025年度商会工作计划
评论
0/150
提交评论