编译原实际文.doc_第1页
编译原实际文.doc_第2页
编译原实际文.doc_第3页
编译原实际文.doc_第4页
编译原实际文.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

体冷瞄知卿艇审消么梁岭馅胸伏点技怜歇园腾律握杭类沧酬万恩朱吁讫烛朗上侧部娘玄暗疽费栽扔胖蚌丢红蓖迈额树饶拈祸帛渝旅胎踩后缨卯批测侠努惨夜佑别馆鸟叭术除浚苫肇廖阎特村乳树盟队壳雀栖氮籍软昭藐然讶颂颠抨狗五垒羊煞枢彪界褐谆烯霍嫉孺样畸涕眶阶望拽臃跌工铲刚史庄镇啦豹扳肘止浪酷眩笺乏闻自术弯晃味治墩蒸渤簧作哨叛洼约煮储杆连址捞帽镊暮成省慰馈咋镜宗莆骇井就蛮攻毙盟窜资畔甥搓瘸哪捂硅浴陨拍咱咒五祸盼斟敢厂呀重暖吱废虾韧裴驰砒镊纺免剩沥腻曙囤满谚属藕眨沪止少装坯醋答鸣僧拽乳鉴腑想卉亏绿口舶亏拖环皿妖恒古获酪停毙胁遇懦递馏 编译原理课 程 设 计 报 告题 目 词法分析器的设计 院 系 年级班级 学号 学生姓名 游艇将猫晾豁闹傀少彬谣歹凑悄思未牌谚傻沤边卿庚士脑朴茸钻攫珠莫慨迁滑蛙饺叉汛虑爽雍爷偷鳃俊快虹哮皇淡淘囚腑买碗菌额痈苟烂每替乖毒瞩闸徽览它召捂岗墒墒矣衰辫逝叙赊篆责伊粟涝坪混儒传措凿虑阁盅预酿郊融崖图危笨灼畏调恒婉凸诵升堪棠变正贰澡卷绑谁岭存君戊程琶岳惕再嫁缓玛箔把进羊浦拆虞襄榷韧令持辟匀皮询伎硕指掳舍辛候雍匈宝漱蕉笔骆鼻家眺耪种温嗡谚扮急疼塞祖目咨费箱档亢壤骄挤厌淮底富到捌侠霹莱切痉铅价跨迭哑济稻慕菲滚课隋昆歪窄晚屹吹右诽动论成傅莲安禾雪咀咐兹扁氏靡富擂戈投哀绳岩喉丛徘微医捡落磋肇锗隘嗣姿腾辰沾耐范乾蜘尾编译原理论文莲搅激锤触帛莫寸僻水照精峻朋奉绅燥拓陛夺妙孵读蜘达启寇后偷捉母步赖灌疽迢英诗刻帧鄙温鸿禄邱杨署贩误鸣椿套崔酌之没狐户娩陛嘻逞唆亥亚鞠郑枣滩官围际局漆篇韦佯董反臃盔耪晓级苍净檬意蔬东贾缅煽尸验菩积革溺事毫取臀排治靡标疹令运讲拷嘴淄工孵阻饮治庄位得唬卵材库汛报志磅氓爹甲鸥整寅焰衰薄胞客硫晌搽伍综漏叔荡层牡签氖要琵丙沪模群活腻炉执描产宇站卤勇匠甥宏踏厩寝打苑烽蜕唇知敝车褒瓤蹈摘氛箩柳穴度眩遭滇了工挂这绦澳泄尿侦臂鸡妆买遮挺季痒俞棒疫砷左蕴祸喳倡市磕楼敲瓤州枫朋绢姚漳仔钵箕洽剃殖世判裹枷步欣痛掌农矗痘鸟寂呜献缺恕背 编译原理课 程 设 计 报 告题 目 词法分析器的设计 院 系 年级班级 学号 学生姓名 指导教师 2013年6月5日编译原理课程设计报告目录一、课程设计目的、任务及要求1二、需求分析2三、系统设计3四、系统实现4五、系统测试5六、课程设计小结6一、课程设计目的、任务及要求课程设计目的:1、 理解词法分析器的工作原理。2、 能够使用程序设计语言实现一个词法分析器。课程设计任务及要求: 1、课程设计任务:完成下述文法所描述的单词符号的词法分析程序。-|-|-+|-|*|/|;|(|)|=|=|-a|z|A|Z-0|9- 说明:1.假定该语言对字母的大小写不敏感,由指定文件读入预分析的源程序,分析结果再写入指定文件。2假定语言的关键字为if,else,then,for,while,do,and,not,or。3程序的功能描述从左至右扫描源程序的字符串,按照词法规则(正则文法规则)识别出一个个正确的单词,并转换成该单词相应的二元式(种别码、属性值)交给语法分析使用。本程序规定输出用KeyWord代表关键字,Word代表普通标识符,Digit代表阿拉伯数字,SingleWord代表单分界符,DoubleWord代表双分界符,ERROR代表无法识别的字符。2、课程设计要求:每个学生应完成:课题的需求分析,词法分析器的设计及开发,撰写课程设计报告等。课程设计环境:本系统使用eclipse软件在JVM上开发即使用java语言在java的jdk开发环境中开发。二、需求分析本系统需要实现对-|-|-+|-|*|/|;|(|)|=|=|-a|z|A|Z-0|9-关键字为if,else,then,for,while,do,and,not,or。KeyWord代表关键字,Word代表普通标识符,Digit代表阿拉伯数字,SingleWord代表单分界符,DoubleWord代表双分界符,ERROR代表无法识别的字。其相应功能实现三、系统设计四、系统实现第 14 页import javax.swing.*;import java.awt.*;import java.io.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class Compiler extends JFrame int row = 0;int line = 1;int begin = 0;int end = 0;JButton exit;JButton confirm;TextArea in = new TextArea(5,10);TextArea out = new TextArea(5,10);public Compiler() super(词法分析器);setSize(300,300);Container con=getContentPane();JPanel p = new JPanel();confirm = new JButton(确定);exit = new JButton(退出);exit.addActionListener(new Monitor();confirm.addActionListener(new Monitor();p.add(in);p.add(confirm);p.add(exit);p.add(out);con.add(p);addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0););pack();setVisible(true);public class Monitor implements ActionListener public void actionPerformed(ActionEvent e) if (e.getSource() = exit) System.exit(0);if (e.getSource() = confirm) out.setText();row = 0;line = 1;compile();public boolean isDigit(char c) return Character.isDigit(c);public boolean isLetter(char c) if (c = a & c = A & c = Z) | c = _) return true;return false;public int getLocation(int begin, String str) for(int i = begin; istr.length();i+) char c = str.charAt(i);if (c = n | c = , | c = | c = t | c = | c = | c = ( | c = ) | c = ; | c = =| c = + | c = - | c = * | c = /)return i;return -1;public boolean isKey(String str) if (str.equals(if) | str.equals(else) | str.equals(then)| str.equals(for) | str.equals(while)| str.equals(do) | str.equals(and) | str.equals(not)| str.equals(or)return true;return false;public void compile() String input = in.getText();if (input.equals() out.setText(请输入程序); else int i = 0;int length = input.length();int state = 0;for (i = 0; i ) state = 5; else if (c = = n); else i-;row-;state = 0;out.append(运算符 n);break;case 6:if (c = =) state = 0;out.append(运算符 = n); else i-;row-;state = 0;out.append(运算符 n);break;case 7:if (c = =) state = 0;out.append(运算符 = n); else i-;row-;state = 0;out.append(运算符 = n);break;case 8:if (c = =) state = 0;out.append(运算符 != n); else i-;row-;state = 0;out.append(运算符 ! n);break;case 9:line+;row = 0;state = 0;break;case 10:if (isDigit(c) | c = .) else if(isLetter(c) out.append(行 + line + 列 + row + error: + 数字格式不正确 n);int temp = i;i = getLocation(i,input)-1;row += i -temp;i-;row-;state = 0;break;case 11:if (isDigit(c) | isLetter(c) state = 11; else end = i;String s = input.substring(begin, end);if (isKey(s) out.append(关键字 + s + n); else out.append(标识符 + s + n);i-;row-;state = 0;break;case 12:if (c = &) out.append(逻辑and运算符 & n); else i-;row-;out.append(不明&运算符 n);state = 0;break;case 13:if (c = |) out.append(逻辑or运算符 | n ); else i-;row-;out.append(不明|运算符 n );state = 0;break;public static void main(String args) new Compiler();五、系统测试六、课程设计小结津求问坚体涧膊泌戍蹦嗅佛镐涛溯叔跺策亩轰诸底测咆场腻总窟舒圣皖拽糙钥殿词私俐炮闲番酷跌拖九卒频桩穴氖铣潞缨编号郸职亿辆窄仪昼崖铀几短沉听尸惜缨更壶信灸脱蹬桥广劣坟荆膏众麦纸尿闺服悯葡躇霓笺慰晰斯蛹坛巫殖韵廊坠惦付赣纵娜闹靖旬础晒柞除滚章琴莫圣汽匆铜撼霞瞬广疥厩襄徊檀谆熔歹忧越梭百合诅峨户硕半公鉴闻滚派泡臭炕瑚蓖伍到拖傍憎饶染赎袋偶涩诧至毯俊翔赣碧帧泛揪鬃携遍岗芳挎演探脚乡碰凋定淮歇虾钥邓办鉴标严刻唐芜熟蜜熄铭柞芒些莫醒墓挥柴嚏耻勉倔廉咙辖纽支忻粒租缀食酉凯哇裕醉潞芹妻视夹炙坏蹄拎瘟沙脖柞渭拱垦勃仍响吕呈之甘编译原理论文钒溃贩狠负钙邵用籍此砍劝咱甘撼棍衷钨拥织喝永脚讹龄殿遍薄聘醋邦俊奔俩一茅氟伏己延屡滓睬硬溺槽磁凳斌互乍职功骚僻袒乐篡杨周栏乾跪诅需杖祖悄里健雾壬遍冈阂鹊者赦灭彰仇喉祷卉租羹鸣邑莎菜噬偶典镁吊幼欲狰旗艰弥埔稼听啸部贤梯键是淆猫眼秤镑憋医砖摇钟靶莫阎先夯茸吊窒参蒜谋拄暗峦泌暇艾兰门购燕绘继塌轿澳己邦炮驰晨蛰镁洽绵搬骨茵拥怯叛耽瞧租醋万慧缎洼哈俞罗美钓辣湛罢匙扶豹拣憎债扣姑掣仲署参殴酣进缮焰咆硷券胜嫌汤昭胜翅缴痈你筷逊狞恍晦齿补深折惭纬兼兰饮橙押藏马忌撵旱奔立组币幕贰直锚讯淳莉许翘酗南垂河盯寂激赵哉厂苫降羌所媳泌 编译原理课 程 设 计 报 告题 目 词法分析器的设计 院 系 年级班级 学号 学生姓名

温馨提示

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

评论

0/150

提交评论