资源简介
使用直接分析法编制C语言子集的词法分析程序(带实验报告),最近翻出来的以前编译原理课程做的记法分析程序,有需要的参考一下吧,java实现
代码片段和文件信息
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
public class WordAnalyze extends Jframe{
ArrayList wordList=new ArrayList();
//char [] operators={‘=‘‘+‘‘-‘‘*‘‘/‘‘(‘‘)‘‘{‘‘}‘‘‘‘;‘‘#‘‘[‘‘]‘‘<‘‘>‘‘\“‘‘.‘};
StringBuffer temp=new StringBuffer();
String origin=null;
char ch=‘ ‘;
int index=0;
Properties keywords=new Properties();
Properties operators=new Properties();
JToolBar toolbar=new JToolBar();
int strLength=0;
JTextArea textArea;
DefaultTableModel tableModel;
JTable table;
JSplitPane split;
WordAnalyze() {
super(“--简易C语言词法分析器--“);
setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
int xy;
Dimension size=Toolkit.getDefaultToolkit().getScreenSize();
x=(size.width-400)/2;
y=(size.height-400)/2;
setSize(450400);
setLocation(xy);
textArea=new JTextArea();
textArea.setForeground(Color.BLUE);
textArea.setLineWrap(true);
String [] columnNames={“单词““编码““属性“};
tableModel=new DefaultTableModel();
table=new JTable(tableModel);
table.setForeground(Color.BLUE);
tableModel.addColumn(“单词“);
tableModel.addColumn(“编码“);
tableModel.addColumn(“说明“);
split=new JSplitPane(JSplitPane.HORIZONTAL_SPLITnew JScrollPane(textArea)new JScrollPane(table));
toolbar.add(new analyze(“analyze“new ImageIcon(“images\\analyze.gif“)));
toolbar.add(new quit(“quit“new ImageIcon(“images\\quit.gif“)));
getContentPane().add(toolbarBorderLayout.NORTH);
getContentPane().add(split);
split.setDividerLocation(210);
split.setResizeWeight(1);
}
class analyze extends AbstractAction {
public analyze(String text Icon icon) {
super(text icon);
}
public void actionPerformed(ActionEvent e) {
origin=textArea.getText();
tableModel.setRowCount(0);
strLength=origin.length();
wordList.clear();
loadKeywordAndOperator();
if(analyze())
showResault();
}
}
class quit extends AbstractAction {
public quit(String text Icon icon){
super(text icon);
}
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
void showResault() {
//textArea.setText(Arrays.toString(wordList.toArray()));
object [] wordArr=wordList.toArray();
String row[]=new String [3];
String code=null;
for(int i=0;i row[0]=(String)wordArr[i];
if((code=keywords.getProperty(row[0]))!=null){
row[1]=code;
row[2]=“关键字“;
}
else if((code=operators.getProperty(row[0]))!=null){
row[1]=code;
row[2]=“运算符/界符“;
}
else if(row[0].charAt(0)>47&&row[0].charAt(0)<58){
row[1]=“0“;
row[2]=“常数“;
}
else {
row[1]=“1“;
row[2]=“标识符“;
}
tableModel.addRow(row);
}
}
void loadKeywordAndOperator() {
try {
keywords.load(new FileInputStream(new File(“keywords.properties“)));
o 属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 134656 2007-04-15 15:37 实验一:使用直接分析法编制C语言子集的词法分析程序\使用直接分析法编制C语言子集的词法分析程序.doc
文件 1104 2007-04-13 16:46 实验一:使用直接分析法编制C语言子集的词法分析程序\源程序\images\analyze.gif
文件 1116 2007-04-13 16:46 实验一:使用直接分析法编制C语言子集的词法分析程序\源程序\images\quit.gif
..A.SH. 4608 2007-04-13 16:53 实验一:使用直接分析法编制C语言子集的词法分析程序\源程序\images\Thumbs.db
文件 295 2007-04-14 16:33 实验一:使用直接分析法编制C语言子集的词法分析程序\源程序\keywords.properties
文件 210 2007-04-14 17:04 实验一:使用直接分析法编制C语言子集的词法分析程序\源程序\operators.properties
文件 1180 2007-04-15 22:17 实验一:使用直接分析法编制C语言子集的词法分析程序\源程序\WordAnalyze$analyze.class
文件 560 2007-04-15 22:17 实验一:使用直接分析法编制C语言子集的词法分析程序\源程序\WordAnalyze$quit.class
文件 5963 2007-04-15 22:17 实验一:使用直接分析法编制C语言子集的词法分析程序\源程序\WordAnalyze.class
文件 4740 2007-04-15 22:17 实验一:使用直接分析法编制C语言子集的词法分析程序\源程序\WordAnalyze.java
目录 0 2007-04-13 16:53 实验一:使用直接分析法编制C语言子集的词法分析程序\源程序\images
目录 0 2007-04-15 15:32 实验一:使用直接分析法编制C语言子集的词法分析程序\源程序
目录 0 2007-06-30 16:55 实验一:使用直接分析法编制C语言子集的词法分析程序
----------- --------- ---------- ----- ----
154432 13
相关资源
- 基于java的在线考试系统-毕业设计
- 微博系统(Java源码,servlet+jsp),适
- java串口通信全套完整代码-导入eclip
- 美食天下项目Android版源码和Web版源码
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- u-blox_Android_GNSS_Driver_v3.10驱动源码+中
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- 个人根据Android移动开发案例详解手写
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 基于JSP的学生宿舍管理系统(源码 数
- mysql jsp网站源码下载
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
川公网安备 51152502000135号
评论
共有 条评论