资源简介
编译原理词法分析器 java版
包括内容:
1.所识别语言的词法的EBNF描述。
2.所采用的二元式格式说明(如一个单词(不包括用户定义的标识符)一个种别,还是一类一个种别,对用户定义的标识符归为一个种别)。
3.词法分析程序包含的模块、各模块间的关系图、程序流程图、全局变量、函数接口等。
4.词法分析程序源代码。
代码片段和文件信息
package zero.compiler;
import javax.swing.*;
import java.awt.*;
import java.util.*;
import java.awt.event.*;
import java.io.*;
public class compile extends Jframe {
/**
*
*/
private static final long serialVersionUID = 699911785225676998L;
private JButton jButtonRun = new JButton(“运行“);
private JButton jButtonClear = new JButton(“清空“);
private JLabel inLabel = new JLabel(“原码“);
private JLabel outLabel = new JLabel(“分析结果“);
private TextArea inTextArea = new TextArea(15 35);
private TextArea outTextArea = new TextArea(15 35);
String[] keyWords = { “public“ “private“ “auto“ “break“ “case“ “char“
“const“ “continue“ “default“ “do“ “double“ “else“ “enum“
“float“ “for“ “if“ “int“ “long“ “rebister“ “return“ “short“
“signed“ “sizeof“ “static“ “struct“ “switch“ “typedef“
“union“ “unsigned“ “void“ “volatile“ “while“ “main“ “cin“
“cout“ };// 关键字数组
String[] operator = { “+“ “-“ “*“ “/“ “%“ “=“ “.“ “>“ “<“ “?“ };// 运算符
String[] sepretor = { “;“ “:“ “{“ “}“ “(“ “)“ “[“ “]“ };// 分隔符
private void initListener() // 事件监听器
{
ActListener actListener = new ActListener();
jButtonRun.addActionListener(actListener);
jButtonClear.addActionListener(actListener);
}
class ActListener implements ActionListener // 构建事件监听器
{
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == jButtonRun) {
porRun();
}
if (e.getSource() == jButtonClear) {
inTextArea.setText(““);
outTextArea.setText(““);
}
}
}
private void porRun() // 分析过程
{
String inText = inTextArea.getText();// 定义字符串
StringTokenizer str1 = new StringTokenizer(inText
“ \n\t\r;+=-\“\‘)(}{][<>“ true);
// 分隔符集合
int n = str1.countTokens();
String[] eachText = new String[n];
for (int a = 0; a < n; a++) {
eachText[a] = str1.nextToken();
}
outTextArea.append(“1 为关键字 2 为标识符“ + “\n“ + “3 为常数 4 为运算符“ + “\n“
+ “5 为分隔符“ + “\n“);
outTextArea.append(“====================================\n“);
for (int i = 0; i < eachText.length; i++) {
outer: for (int j = 0; j < keyWords.length; j++) {
// 判断为关键字
if (eachText[i].equals(keyWords[j])) {
outTextArea.append(“(1“ + eachText[i] + “)“ + “\n“);
i++;
break outer;
}
}
for (int k = 0; k < operator.length; k++) // 判断为运算符
{
if (eachText[i].equals(operator[k]))
outTextArea.append(“(4“ + eachText[i] + “)“ + “\n“);
}
for (int m = 0; m < sepretor.length; m++) {
if (eachText[i].equals(sepretor[m])) // 判断为分隔符
outTextArea.append(“(5“ + eachText[i] + “)“ + “\n“);
}
char[] inChar = eachText[i].toCharArray();
if (Character.isDigit(inChar[0]))
outTextArea.append(“(3“ + eachText[i] + “)“ + “\n“);
if (Character.isLetter(inChar[0]))
outTextArea.append(“(2“ + eachText[i] + “)“ + “\n“);
}
}
public compile() throws IOExce
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 301 2012-04-17 10:18 Compiler\.classpath
文件 384 2012-04-17 10:18 Compiler\.project
文件 827 2009-05-30 18:43 Compiler\in.txt
文件 4075 2009-05-30 18:48 Compiler\src\zero\compiler\compile.java
文件 531 2009-05-30 18:27 Compiler\src\zero\compiler\Test.java
文件 5438 2009-05-30 18:48 Compiler\bin\zero\compiler\compile.class
文件 1104 2009-05-30 18:48 Compiler\bin\zero\compiler\compile$ActListener.class
文件 1303 2009-05-30 18:27 Compiler\bin\zero\compiler\Test.class
文件 629 2012-04-17 10:18 Compiler\.settings\org.eclipse.jdt.core.prefs
目录 0 2012-04-17 15:26 Compiler\src\zero\compiler
目录 0 2009-05-30 18:12 Compiler\bin\zero\compiler
目录 0 2012-04-17 15:26 Compiler\src\zero
目录 0 2009-05-30 18:12 Compiler\bin\zero
目录 0 2012-04-17 15:26 Compiler\src
目录 0 2012-04-17 15:26 Compiler\bin
目录 0 2012-04-17 15:26 Compiler\.settings
目录 0 2012-04-17 15:26 Compiler
文件 11776 2012-04-17 09:54 实验要求 .doc
----------- --------- ---------- ----- ----
26368 18
- 上一篇:java聊天室软件源代码
- 下一篇:黑马Android百度地图实战项目视频,文档
相关资源
- mysql数据处理,java用户登录处理
- 法律咨询信息系统(java+jsp+sqlserver)
- Java快速开发平台源码(renren-fast)
- 锐聘学院QST青软JavaWeb十二个打包
- 3.3.6微信支付JAVA版demo
- javaweb网上购物系统源码(附数据库脚
- javaweb校园宿舍系统(附数据库脚本)
- JavaWeb书城项目(附数据库脚本)
- 基于JAVA_JSP电子书系统(源码+数据库
- Java网络编程知识点总结.xmind
- 一站式Java网络编程 BIO-NIO-AIO资料源码
- jsp讲解
- 基于SSH框架的JavaWeb项目—人员信息管
- javaweb实现的邮件收发系统(附数据库
- Java 仿QQ(附客户端以及服务端源码)
- Java TCP IP Socket
- java定时发送邮件(基于quartz)
- Java Swing开发的《星际争霸》游戏
- java+数据库商品交易管理系统(附数据
- 使用java语言编译一个计算器
- java swing工资管理系统(源码+数据库
- JAVALibrary
- 微信企业号回调模式Java版
- 顺丰丰桥接口开发详细教程源码含下
- Java博客概要设计文档
- 药品进销存管理系统(论文范文_JSP
- 奖学金管理系统java+jsp+mysql
- 毕设参考——基于java酒店管理
- Java写的一个简单的字体更改程序
- java8学习教程之lambda表达式的使用方法
评论
共有 条评论