编译原理实验报告二(共5页).doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《编译原理实验报告二(共5页).doc》由会员分享,可在线阅读,更多相关《编译原理实验报告二(共5页).doc(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上编译原理实验报告二姓名: 学号:班级:10级计科一班1.编写一个对于Pascal源程序的预处理程序。该程序的作用是,每次被调用时都将下一个完整的语句送进扫描缓冲区,去掉注解行,同时要对源程序列表打印。%(* lexical analyzer for Pascal)%(* 本程序通过扫描对照关键字表来识别关键字 *)(* 过程和函数定义 *)procedure commenteof;(* 检查并返回错误输入 *) begin writeln(unexpected EOF inside comment at line , yylineno); end(*commenteo
2、f*);function upper(str : String) : String; (* 将字符串转换为大写 *) var i : integer; begin for i := 1 to length(str) do stri := upCase(stri); upper := str end(*upper*);function is_keyword(id : string; var token : integer) : boolean; (* 检查 id 是否为 Pascal 关键字; 若是, 返回 token 中相应的 token number *) const id_len = 20
3、; type Ident = stringid_len; const (* Pascal 关键字表: *) (* 用 Pascal 关键字表: *) no_of_keywords = 39; keyword : 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, OTHERW
4、ISE, PACKED, PROCEDURE, PROGRAM, 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, _FOR
5、WARD, _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 : integer; begin id := upper(id); (* 二分法检索: *) m := 1; n := no_of_keywords; while mkeywordk then m :=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 实验 报告
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内