framer.java
来自「桂林电子科技大学编译原理完整JAVA源代码(词法、语法、语义) 此为完整版本」· Java 代码 · 共 768 行 · 第 1/3 页
JAVA
768 行
// TODO 将在此处添加您的处理代码:
this.jTextArea1.setText("");
jFileChooser1.setVisible(true);
int state=jFileChooser1.showOpenDialog(null);
File file=jFileChooser1.getSelectedFile();
try{
FileReader fr=new FileReader(file);
this.jTextArea1.read(fr,this);
} catch(IOException e){
new JOptionPane().showMessageDialog(this,"打开失败");
}
}//GEN-LAST:event_jButton9ActionPerformed
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton5ActionPerformed
// TODO 将在此处添加您的处理代码:
this.jTextArea1.setText("");
}//GEN-LAST:event_jButton5ActionPerformed
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed
// TODO 将在此处添加您的处理代码:
this.jTextArea2.setText("");
String line,lie = "",message="",value,err ="",err1;
str="";err1="";
Scanner scan=new Scanner();
Lexer L=new Lexer();
ResultSet rs,rs1,rs2;
char ch[]=new char [500];
Sql sq=new Sql();
String sql,name;
sql="delete from 词法分析";
sq.executeSql(sql);
for(int j=0;j<500;j++) {
ch[j]='\0';
}
ch=this.getText().toCharArray();
scan.splist(ch);
String s[]=scan.getS();
int col[]=scan.getCol();
boolean flag=false;
for(int n=0;n<s.length;n++) {
if(s[n]!=null) {
scan.check(s[n]);
if(!s[n].equals("\n")) {
sql="insert into 词法分析(说明,内部码,名称,行,列,错误) values('"+scan.getMessage()+"','"+scan.getValue()+"','"+scan.getName()+"','"+scan.getLine()+"','"+col[n]+"','"+scan.getErr()+"')";
sq.executeSql(sql);
}
}
// System.out.print(s[n]);
}
sql="select * from 词法分析 where 名称 <> 'null'";
try{
rs=sq.getResult(sql);
rs.beforeFirst();
while(rs.next()) {
line=rs.getString("行");
name=rs.getString("名称");
value=rs.getString("内部码");
message=rs.getString("说明");
lie=rs.getString("列");
err=rs.getString("错误");
if(!err.equals("No")) {
err1+="Error: "+err+" "+name+" 在第"+line+"行"+lie+"列;\n";
flag=true;
this.jButton7.setEnabled(false);
this.jButton7.setToolTipText("不能进行语法分析");
this.jMenu7.setEnabled(false);
}
str+=message+" ( "+value+" , "+name+" )"+" ( "+line+"行 , "+lie+"列 )\n";
}
rs.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
if(!flag&&scan.getZushierr().equals("")) {
str=str+"词法分析成功!";
this.jButton7.setEnabled(true);
this.jMenuItem7.setEnabled(true);
}else {
str=str+err1+scan.getZushierr();
this.jButton7.setEnabled(false);
this.jButton7.setToolTipText("不能进行语法分析");
this.jMenuItem7.setEnabled(false);
}
//System.out.print(scan.getZushierr());
this.jTextArea2.setText(str);
str="";
}//GEN-LAST:event_jButton4ActionPerformed
private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton7ActionPerformed
// TODO 将在此处添加您的处理代码:
Celser c=new Celser();
c.P_p();
String err1="";
err1=c.err;
this.jTextArea2.setText(err1);
}//GEN-LAST:event_jButton7ActionPerformed
private void jTextArea1MouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTextArea1MouseEntered
// TODO 将在此处添加您的处理代码:
}//GEN-LAST:event_jTextArea1MouseEntered
private void jMenu2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenu2ActionPerformed
// TODO 将在此处添加您的处理代码:
}//GEN-LAST:event_jMenu2ActionPerformed
private void jMenuItem10ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem10ActionPerformed
// TODO 将在此处添加您的处理代码:
this.jTextArea2.setText("");
}//GEN-LAST:event_jMenuItem10ActionPerformed
private void jMenuItem13ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem13ActionPerformed
// TODO 将在此处添加您的处理代码:
jTextArea1.cut();
}//GEN-LAST:event_jMenuItem13ActionPerformed
private void jMenuItem12ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem12ActionPerformed
// TODO 将在此处添加您的处理代码:
jTextArea1.copy();
}//GEN-LAST:event_jMenuItem12ActionPerformed
private void jMenuItem11ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem11ActionPerformed
// TODO 将在此处添加您的处理代码:
jTextArea1.paste();
}//GEN-LAST:event_jMenuItem11ActionPerformed
private void jTextArea1MousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTextArea1MousePressed
// TODO 将在此处添加您的处理代码:
if (evt.getClickCount() == 1 && SwingUtilities.isRightMouseButton(evt))
jPopupMenu2.show(jTextArea1,evt.getX(),evt.getY());
}//GEN-LAST:event_jTextArea1MousePressed
private void jMenuItem10MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jMenuItem10MouseClicked
// TODO 将在此处添加您的处理代码:
}//GEN-LAST:event_jMenuItem10MouseClicked
private void jTextArea2MousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTextArea2MousePressed
// TODO 将在此处添加您的处理代码:
if (evt.getClickCount() == 1 && SwingUtilities.isRightMouseButton(evt))
jPopupMenu1.show(jTextArea2,evt.getX(),evt.getY());
}//GEN-LAST:event_jTextArea2MousePressed
private void jTextArea2AncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_jTextArea2AncestorAdded
// TODO 将在此处添加您的处理代码:
}//GEN-LAST:event_jTextArea2AncestorAdded
private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem4ActionPerformed
// TODO 将在此处添加您的处理代码:
System.exit(0);
}//GEN-LAST:event_jMenuItem4ActionPerformed
private void jMenuItem5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem5ActionPerformed
// TODO 将在此处添加您的处理代码:
FileDialog saveasfd=new FileDialog(this,"另存为",FileDialog.SAVE);
saveasfd.setVisible(true);
}//GEN-LAST:event_jMenuItem5ActionPerformed
private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem3ActionPerformed
// TODO 将在此处添加您的处理代码:
jFileChooser1.setVisible(true);
int state=jFileChooser1.showSaveDialog(null);
File fileName=jFileChooser1.getSelectedFile();
try{
FileWriter fw = new FileWriter(fileName);
BufferedWriter bw = new BufferedWriter(fw);
String str = this.jTextArea1.getText();
bw.write(str);
bw.close();
fw.close();
new JOptionPane().showMessageDialog(this,"保存成功");
} catch (IOException e1) {
new JOptionPane().showMessageDialog(this,"保存失败");
e1.printStackTrace();
}
}//GEN-LAST:event_jMenuItem3ActionPerformed
private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed
// TODO 将在此处添加您的处理代码:
this.jTextArea1.setText("");
jFileChooser1.setVisible(true);
int state=jFileChooser1.showOpenDialog(null);
File file=jFileChooser1.getSelectedFile();
try{
FileReader fr=new FileReader(file);
this.jTextArea1.read(fr,this);
} catch(IOException e){
new JOptionPane().showMessageDialog(this,"打开失败");
}
}//GEN-LAST:event_jMenuItem2ActionPerformed
private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
// TODO 将在此处添加您的处理代码:
this.jTextArea1.setText("");
}//GEN-LAST:event_jMenuItem1ActionPerformed
/**
* @param args the command line arguments
*/
public String getText(){
return jTextArea1.getText().toString();
}
// 变量声明 - 不进行修改//GEN-BEGIN:variables
private javax.swing.JButton jButton4;
private javax.swing.JButton jButton5;
private javax.swing.JButton jButton6;
private javax.swing.JButton jButton7;
private javax.swing.JButton jButton8;
private javax.swing.JButton jButton9;
private javax.swing.JLabel jLabel1;
private javax.swing.JMenu jMenu1;
private javax.swing.JMenu jMenu2;
private javax.swing.JMenu jMenu5;
private javax.swing.JMenu jMenu6;
private javax.swing.JMenu jMenu7;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JMenuItem jMenuItem1;
private javax.swing.JMenuItem jMenuItem10;
private javax.swing.JMenuItem jMenuItem11;
private javax.swing.JMenuItem jMenuItem12;
private javax.swing.JMenuItem jMenuItem13;
private javax.swing.JMenuItem jMenuItem2;
private javax.swing.JMenuItem jMenuItem3;
private javax.swing.JMenuItem jMenuItem4;
private javax.swing.JMenuItem jMenuItem5;
private javax.swing.JMenuItem jMenuItem6;
private javax.swing.JMenuItem jMenuItem7;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel4;
private javax.swing.JPopupMenu jPopupMenu1;
private javax.swing.JPopupMenu jPopupMenu2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JTextArea jTextArea2;
private javax.swing.JToolBar jToolBar1;
private javax.swing.JTree jTree1;
// 变量声明结束//GEN-END:variables
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?