資源簡介
1.本人就讀于JLU,苦于剛開始做編譯原理實驗時上網很難搜到可用的相關材料,故辛辛苦苦做完后把自己搜到的材料和寫的程序奉獻給后來居上的學弟,希望你們能從中學到東西,哪怕只有一點點,我也所做無憾了;
2.該資源分值較大,但保證物超所值!里面包含了我自己100%原創的Java程序和down的CSDN上的另一份程序,本人無意冒犯,只是覺得好就順手推薦一下,還有我自己寫的LL(1)分析表和別人分享的一本詳盡的電子書,相必大家也會很喜歡;
3.有一點希望大家注意:請大家適當借鑒,有所創新,嚴禁抄襲,否則后果自負,不過相信大家肯定不是那種人啦,但套話還是免不了的。
歡迎大家批評指正,如果覺得做得還行就贊一個,嘿嘿!

代碼片段和文件信息
import?java.awt.*;
import?java.awt.event.*;
import?javax.swing.*;
public?class?Compiler?extends?Jframe?{
JPanel?northJP?=?new?JPanel()?southJP?=?new?JPanel();//?此對話框采用邊界布局,根據中、南部而分別創建中、南面板
JScrollPane?scrollJSP?=?new?JScrollPane();
JScrollPane?scrollJSP2?=?new?JScrollPane();
static?JTextArea?displayJTA?=?new?JTextArea();
static?JTextArea?displayJTA2?=?new?JTextArea();
JButton?doTokenJB?=?new?JButton(“詞法分析“)?doGrammarJB?=?new?JButton(“語法分析“)helpJB=new?JButton(“幫助“);
JComboBox?select;
public?Compiler(){
settitle(“SNL語言的詞法&LL(1)語法分析器“);
//?使窗口長寬均為屏幕長寬的4/5,且居中顯示
Dimension?screenSize?=?Toolkit.getDefaultToolkit().getScreenSize();
int?windowWidth?=?(int)?(0.8?*?screenSize.width)?windowHeight?=?(int)?(0.8?*?screenSize.height);
setBounds((int)?((screenSize.width?-?windowWidth)?*?0.5)
(int)?((screenSize.height?-?windowHeight)?*?0.5)?windowWidth
windowHeight);
setLayout(new?BorderLayout());
add(northJP?BorderLayout.CENTER);
add(southJP?BorderLayout.SOUTH);
northJP.setLayout(new?GridLayout(1?2));
southJP.setLayout(new?FlowLayout());
northJP.add(scrollJSP);
scrollJSP.setViewportView(displayJTA);
displayJTA.setFont(new?Font(“宋體“?Font.PLAIN?16));
northJP.add(scrollJSP2);
scrollJSP2.setViewportView(displayJTA2);
displayJTA2.setFont(new?Font(“宋體“?Font.PLAIN?16));
select=new?JComboBox();
select.addItem(“外部表示“);
select.addItem(“內部表示“);
southJP.add(select);
southJP.add(doTokenJB);
southJP.add(doGrammarJB);
southJP.add(helpJB);
Data.initialize();
doTokenJB.addActionListener(new?ActionListener()?{
@Override
public?void?actionPerformed(ActionEvent?arg0)?{
//?TODO?Auto-generated?method?stub
if(DoToken.doToken(displayJTA.getText())){
doGrammarJB.setEnabled(true);
}else{
doGrammarJB.setEnabled(false);
}
if(select.getSelectedItem().toString().equals(“外部表示“)){
displayJTA2.setText(Data.tokenShow.toString());
}else{
displayJTA2.setText(Data.tokenShow2.toString());
}
}
});
doGrammarJB.setEnabled(false);//?設置語法分析按鈕初始時不可用
doGrammarJB.addActionListener(new?ActionListener()?{
@Override
public?void?actionPerformed(ActionEvent?arg0)?{
//?TODO?Auto-generated?method?stub
displayJTA2.setText(DoGrammar.doGrammar());
}
});
helpJB.addActionListener(new?ActionListener(){
@Override
public?void?actionPerformed(ActionEvent?arg0)?{
//?TODO?Auto-generated?method?stub
String?s=“1.進行詞法分析時,可以選擇Token的外部和內部表示:“
+?“\n??外部表示是由類型信息:1為分隔符;2為保留字;3為標識符;4為數字常量“
+?“\n?????和內容信息構成,直接顯示給用戶,方便易讀;“
+?“\n??內部表示則是真實Token序列的展現,依次為:當前單詞的行號,類型信息,該單詞在存儲該類型的列表中所處的下標,它是語法分析的輸入。“
+?“\n2.在語法分析的結果中,每個單詞前都用圓括號包含為了匹配到該終極符而規約的SNL對應下標的規則,用戶不妨檢驗一二。“
+?“\n3.為了安全起見,若詞法分析失敗,則語法分析功能將不可用,直到詞法分析成功。“
+?“\n4.為了簡單起見,語法分析時直接將所有標識符統一表示為ID,將所有數字常量統一表示為INTC。“;
JOptionPane.showMessageDialog(Compiler.this?s“幫助“JOptionPane.INFORMATION_
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2015-06-20?12:16??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\
?????目錄???????????0??2015-06-20?12:14??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\Compiler6171\
?????文件?????????301??2015-06-17?04:47??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\Compiler6171\.classpath
?????文件?????????388??2015-06-17?04:47??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\Compiler6171\.project
?????目錄???????????0??2015-06-20?12:14??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\Compiler6171\.settings\
?????文件?????????598??2015-06-17?04:47??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\Compiler6171\.settings\org.eclipse.jdt.core.prefs
?????目錄???????????0??2015-06-20?12:14??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\Compiler6171\bin\
?????文件????????1419??2015-06-20?12:11??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\Compiler6171\bin\Compiler$1.class
?????文件?????????779??2015-06-20?12:11??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\Compiler6171\bin\Compiler$2.class
?????文件????????1608??2015-06-20?12:11??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\Compiler6171\bin\Compiler$3.class
?????文件????????2975??2015-06-20?12:11??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\Compiler6171\bin\Compiler.class
?????文件???????16356??2015-06-20?12:11??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\Compiler6171\bin\Data.class
?????文件????????3374??2015-06-20?12:11??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\Compiler6171\bin\DoGrammar.class
?????文件????????5303??2015-06-20?12:12??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\Compiler6171\bin\DoToken.class
?????文件?????????419??2015-06-20?12:11??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\Compiler6171\bin\Rule.class
?????文件?????????809??2015-06-17?05:44??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\Compiler6171\bin\TestData.txt
?????文件?????????379??2015-06-20?12:11??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\Compiler6171\bin\Token.class
?????目錄???????????0??2015-06-20?12:14??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\Compiler6171\src\
?????文件????????3569??2015-06-19?00:39??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\Compiler6171\src\Compiler.java
?????文件???????22758??2015-06-17?05:47??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\Compiler6171\src\Data.java
?????文件????????3284??2015-06-19?00:38??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\Compiler6171\src\DoGrammar.java
?????文件????????9055??2015-06-20?12:12??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\Compiler6171\src\DoToken.java
?????文件?????????809??2015-06-17?05:44??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\Compiler6171\src\TestData.txt
?????文件???????39936??2015-06-18?13:04??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\SNL語言文法_3.doc
?????文件???????16896??2015-06-17?04:46??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\SNL語言文法的LL(1)分析表.xls
?????目錄???????????0??2015-06-20?12:14??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\snljava\
?????文件?????????301??2015-06-12?08:58??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\snljava\.classpath
?????文件?????????383??2015-06-12?09:11??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\snljava\.project
?????目錄???????????0??2015-06-20?12:14??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\snljava\.settings\
?????文件?????????598??2015-06-12?08:58??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\snljava\.settings\org.eclipse.jdt.core.prefs
?????文件??????????95??2015-06-12?09:11??用Java實現的基于SNL語言的詞法分析與LL(1)語法分析編譯器\snljava\.settings\org.jboss.ide.eclipse.as.core.prefs
............此處省略284個文件信息
- 上一篇:java 超級馬里奧
- 下一篇:畢向東老師35天基礎java全部源代碼
評論
共有 條評論