資源簡介
編譯原理詞法分析器 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? eachText[a]?=?str1.nextToken();
}
outTextArea.append(“1?為關鍵字???2?為標識符“?+?“\n“?+?“3?為常數?????4?為運算符“?+?“\n“
+?“5?為分隔符“?+?“\n“);
outTextArea.append(“====================================\n“);
for?(int?i?=?0;?i?
outer:?for?(int?j?=?0;?j? //?判斷為關鍵字
if?(eachText[i].equals(keyWords[j]))?{
outTextArea.append(“(1“?+?eachText[i]?+?“)“?+?“\n“);
i++;
break?outer;
}
}
for?(int?k?=?0;?k? {
if?(eachText[i].equals(operator[k]))
outTextArea.append(“(4“?+?eachText[i]?+?“)“?+?“\n“);
}
for?(int?m?=?0;?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百度地圖實戰項目視頻,文檔
評論
共有 條評論