• 大小: 12KB
    文件类型: .zip
    金币: 2
    下载: 0 次
    发布日期: 2024-01-28
  • 语言: Java
  • 标签: 编译原理  C语言  

资源简介

编译原理课程实验题目,实现了C语言、Java语言词法分析器的功能,包括图形用户界面,可以打开指定的文件,可以保存相应的分析结果。

资源截图

代码片段和文件信息

package compile;

import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.Jframe;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.border.EmptyBorder;
import javax.swing.border.titledBorder;

/**
 * C语言词法分析器
 * @author 王伟
 *
 */
public class CLanguageCompile extends Jframe implements ActionListener {

private static final long serialVersionUID = -5936979066746570003L;
private String[] s1 = {“文件“ “帮助“};
private String[][] s2 = {{“打开“ “保存“ “退出“} {“关于词法分析器“}};
JMenu[] jMenus = new JMenu[s1.length];
JMenuItem[][] jMenuItems = new JMenuItem[s1.length][s2[0].length];
private int lineCount = 0;

//C语言识别保留字
//private String[] keyWord = {“if“ “else“ “int“ “for“ “while“ “do“ “ruturn“ “break“ “countinue“ “printf“ “scanf“ “void“};
//Java语言识别保留字
private String[] keyWord = {“if“ “else“ “byte“ “char“ “short“ “int“ “long“ “float“ “double“ “String“ “for“ “while“ “do“ “ruturn“ “break“ “countinue“ “println“ “print“ “void“ “static“ “private“ “protected“ “public“ “final“};
//特殊字符
private String[] specialChar = {“;“ ““ “““ “(“ “)“ “{“ “}“ “+“ “-“ “*“ “/“ “<=“ “>=“ “==“ “!=“ “:“ “[“ “]“}; 
//临时字符串
StringBuilder sBuilder = new StringBuilder();
//最终分析结果字符串
StringBuilder resultBuilder = new StringBuilder();

private JTextArea contentArea resultArea;
private JButton analyze reset;

/**
 * 构造
 */
public CLanguageCompile() {
init();
}

/**
 * 初始化界面方法
 */
public void init() {
this.settitle(“Java语言此法分析器 BY 王伟“);
this.setBounds(100 100 850 700);
this.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
this.setResizable(false);
this.setContentPane(createTotalPane());
JMenuBar jmb = new JMenuBar();

/**
 * 设置菜单栏
 */
for(int i=0; i jMenus[i] = new JMenu(s1[i]);
jMenus[i].setFont(new Font(““ Font.BOLD 20));
jmb.add(jMenus[i]);
for(int j=0; j jMenuItems[i][j] = new JMenuItem(s2[i][j]);
jMenuItems[i][j].setFont(new Font(““ Font.BOLD 20));
jMenus[i].add(jMenuItems[i][j]);
jMenuItems[i][j].addActionListener(this);
}
}
this.setJMenuBar(jmb);
}

public JPanel createTotalPane() {
JPanel pane = new JPanel(new BorderLayout());
pane.setBorder(new EmptyBorder(10 10 10 10));
pane.add(BorderLayout.NORTH createLabelPane());
pane.add(BorderLayout.CENTER createTextAreaPane());
pane.add(BorderLayout.SOUTH createButtonPan

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2012-05-19 14:20  CLanguageCompile\
     文件         232  2012-05-02 18:07  CLanguageCompile\.classpath
     文件         392  2012-05-02 18:07  CLanguageCompile\.project
     目录           0  2012-05-19 14:20  CLanguageCompile\bin\
     目录           0  2012-05-19 14:20  CLanguageCompile\bin\compile\
     文件        1244  2012-05-09 19:50  CLanguageCompile\bin\compile\CLanguageCompile$1.class
     文件         924  2012-05-09 19:50  CLanguageCompile\bin\compile\CLanguageCompile$2.class
     文件       10340  2012-05-09 19:50  CLanguageCompile\bin\compile\CLanguageCompile.class
     目录           0  2012-05-19 14:20  CLanguageCompile\src\
     目录           0  2012-05-19 14:20  CLanguageCompile\src\compile\
     文件        9950  2012-05-09 19:50  CLanguageCompile\src\compile\CLanguageCompile.java

评论

共有 条评论