资源简介

编译原理词法分析器 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


评论

共有 条评论