资源简介

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个文件信息

评论

共有 条评论