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