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 + -
显示快捷键?