收藏 分享(赏)

Java编写的C语言词法分析器.doc

上传人:tkhy51908 文档编号:6778261 上传时间:2019-04-22 格式:DOC 页数:11 大小:161KB
下载 相关 举报
Java编写的C语言词法分析器.doc_第1页
第1页 / 共11页
Java编写的C语言词法分析器.doc_第2页
第2页 / 共11页
Java编写的C语言词法分析器.doc_第3页
第3页 / 共11页
Java编写的C语言词法分析器.doc_第4页
第4页 / 共11页
Java编写的C语言词法分析器.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、 这是 java 编写的 C 语言词法分析器,我将核心代码整理起来,准备放在 QQ 空间和博客上,目的是互相学习借鉴,希望可以得到高手改进。这个词法分析器实现的功能有打开文件、保存文件、打开帮助文档、文本域内容的剪切和复制和黏贴、进行词法分析程序的项目结构如图,Word 类和 Unidentifiable 类是两个 JavaBean 类,存放的参数有两个 row(整型)、word(String),row 用于获取行数,word 用于获取标识符,LexerFrame 是词法分析器的界面类,Analyze 封装了进行词法分析的核心代码 ,doc 文件夹放一个帮助文档,当用户点击帮助按钮时可以弹出来

2、以帮助用户使用。/核心程序:package com.lexer;import java.util.ArrayList;/*120 号为关键字,用下标表示,i+1 就是其机器码;2140 号为操作符,用下标表示,i+21 就是其机器码;4160 号为分界符,* 用下标表示,i+41 就是其机器码;用户自定义的标识符,其机器码为 51;常数的机器码为52;不可以识别的标识符,其机器码为 0*/ public class Analyze /关键字private String keyword=“int“,“long“,“char“,“if“,“else“,“for“,“while“,“return“,

3、“break“,“continue“,“switch“,“case“,“default“,“float“,“double“,“void“,“struct“,“static“,“do“,“short“;/运算符private String operator=“+“,“-“,“*“,“/“,“%“,“=“,“,“=“,“=0else/字符数等于 2 的情况lc=str.charAt(str.length()-1);if(ch=String s=“;char ch;int i;int row=1;for(i=0;i=0ArrayList ulist=new ArrayList();String s,

4、ts,str;Word word;int i;int opcodes=-1;int errorNum=0;int count=0;s=fileContentTextArea.getText();if(s.length()1)ts=analyze.preFunction(s);wlist=analyze.divide(ts);values=new Stringwlist.size()3;while(wlist.size()0)word=(Word)wlist.remove(0);str=word.getWord();i=analyze.check(str);switch (i) case 1:o

5、pcodes=analyze.checkDigit(str);break;case 2:opcodes=analyze.checkChar(str);break;case 3:opcodes=analyze.checkString(str);break;if(opcodes=0)Unidentifiable u=new Unidentifiable(word.getRow(), str);ulist.add(u);errorNum+;valuescount0=String.valueOf(word.getRow();valuescount1=str;valuescount2=String.va

6、lueOf(opcodes);count+;/更新表格内容DefaultTableModel model=(DefaultTableModel)table.getModel();while(model.getRowCount()0)model.removeRow(model.getRowCount()-1);model.setDataVector(values,title);table=new JTable(model);consoleTextArea.append(“共有“+errorNum+“处错误!“+“n“);while (ulist.size()0) int r;String string;Unidentifiable uni=ulist.remove(0);r=uni.getRow();string=uni.getWord();consoleTextArea.append(“第“+r+“行:“+“错误,“+string+“n“);elseint j;j=JOptionPane.showConfirmDialog(this, “请输入程序!“);if(j!=JOptionPane.YES_OPTION)return;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报