⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cifafenxiframe.java

📁 一个词法分析程序,用JAVA实现的,是图形界面的
💻 JAVA
字号:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.StringTokenizer;

import javax.swing.*;

 

 class CiFaFenXiFrame extends JFrame  implements ActionListener {
 private JTextArea inputTextArea;
 private JTextField 标识TextField;
 private JTextField 关键字TextField;
 private JTextField 运算符TextField;
 private JTextField 常数TextField;
 private JTextField 分界符TextField;
 private JLabel 标识lable;
 private JLabel 关键字lable;
 private JLabel 运算符lable;
 private JLabel 常数lable;
 private JLabel 分界符lable;
 private JButton beginbutton;
 private GridLayout girdlayout;
  CiFaFenXiFrame(){
  setSize(400,400);
  setVisible(true);
  Container con=getContentPane();
  JPanel inputPanel=new JPanel();
  JPanel outputPanel=new JPanel();
  inputTextArea=new JTextArea(8,20);
  标识TextField=new JTextField(15);
  关键字TextField=new JTextField(15);
  运算符TextField=new JTextField(15);
  常数TextField=new JTextField(15);
  分界符TextField=new JTextField(15);
  JLabel 标识lable=new JLabel("标识",JLabel.CENTER);
  JLabel 关键字lable=new JLabel("关键字",JLabel.CENTER);
  JLabel 常数lable=new JLabel("常数",JLabel.CENTER);
  JLabel 分界符lable=new JLabel("分界符",JLabel.CENTER);
  JLabel 运算符lable=new JLabel("运算符",JLabel.CENTER);
  beginbutton=new JButton("开始分析");
  inputPanel.add(inputTextArea);inputPanel.add(beginbutton);
  girdlayout=new GridLayout(5,2);
  outputPanel.setLayout(girdlayout);
  outputPanel.add(标识lable);outputPanel.add(标识TextField);
  outputPanel.add(关键字lable);outputPanel.add(关键字TextField);
  outputPanel.add(运算符lable);outputPanel.add(运算符TextField);
  outputPanel.add(常数lable);outputPanel.add(常数TextField);
  outputPanel.add(分界符lable);outputPanel.add(分界符TextField);
  con.add(inputPanel,BorderLayout.CENTER);
  con.add(outputPanel,BorderLayout.SOUTH);
  beginbutton.addActionListener(this);
  addWindowListener(new WindowAdapter(){
   public void windowClosing(WindowEvent e){
    System.exit(0);
   }
  });
  
    }
 
 public void actionPerformed(ActionEvent e){
     String s1=null,s2=null,s3=null,s4=null,s5=null;
  String s=inputTextArea.getText();
  StringTokenizer fenxi=new StringTokenizer(s,"  ;");
  int number=fenxi.countTokens();
  String inputArray[]=new String[number];
  for(int i=0;i<number;i++){
   inputArray[i]=fenxi.nextToken();
   
  }
  for(int i=0;i<number;i++){
   if(gjzbijiao(inputArray[i])){
    s1=s1+inputArray[i]+" ";
    
   }
   else if(ysfbijiao(inputArray[i])){
    s2=s2+inputArray[i]+" ";
    
   }
   else if(fjfbijiao(inputArray[i])){
    s3=s3+inputArray[i]+" ";
    
   }
   else if(csbijiao(inputArray[i]))
   { 
      s5=s5+inputArray[i]+" ";
      
   }
    else{
    
     s4=s4+inputArray[i]+" ";
    }
   
  }
  标识TextField.setText(s5);关键字TextField.setText(s1);
  
  分界符TextField.setText(s3);常数TextField.setText(s4);
  运算符TextField.setText(s2);
  
  }
 public boolean gjzbijiao(String s){
  int count=0;
  String guanjianzi[]={"int","for","main","long"};
  for(int i=0;i<guanjianzi.length;i++){
   if(s.equals(guanjianzi[i])){
    count++;
    break;
    
   }
  }
   if(count==1)
    return true;
   else
    return false;
  
    }
 public boolean ysfbijiao(String s){
  int count=0;
  String yunsuanfu[]={"+","-","*","/"};
  for(int i=0;i<yunsuanfu.length;i++){
   if(s.equals(yunsuanfu[i])){
    count++;
    break;
    
   }
  }
   if(count==1)
    return true;
   else
    return false;
  
    }
 public boolean fjfbijiao(String s){
  int count=0;
  String fenjiefu[]={"(",")","{","}"};
  for(int i=0;i<fenjiefu.length;i++){
   if(s.equals(fenjiefu[i])){
    count++;
    break;
    
   }
  }
   if(count==1)
    return true;
   else
    return false;
  
    }
 public boolean csbijiao(String s){
  int count=0;
  
  for(int i=0;i<s.length();i++){
    if(s.charAt(i)<'0'||s.charAt(i)>'9'){
     count++;
     break;
   }
  }
   if(count==1)
    return true;
   else
    return false;
  
    }
 }
 

public class CiFaFenXi {
 public static void main(String args[]){
  CiFaFenXiFrame fr=new CiFaFenXiFrame();
  fr.pack();
 }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -