• 大小: 9KB
    文件类型: .rar
    金币: 2
    下载: 2 次
    发布日期: 2021-07-07
  • 语言: Java
  • 标签: 编译器  

资源简介

java模拟编译器,实现词法,语法分析,生成语法树

资源截图

代码片段和文件信息

package analyzer;

/**
 * Created by myz on 2016/6/29.
 */

import javax.swing.*;
import java.util.ArrayList;

public class LexAnalysis {

    private JTextArea errorArea;

    public ArrayList tokenlist=new ArrayList<>();
    String[] sss;

    public LexAnalysis(JTextArea jTextArea){
        this.errorArea=jTextArea;
    }

    public  ArrayList lexical_analysis(String input) {
        String s = input;
        char[] a = s.toCharArray();//char数组


        int Lnumber = 0;//左括号的数目
        int Rnumber = 0;//右括号的数目
        int Istrue = 0;//是否错误 0为没有错误 1为有错误

        int[] b = new int[a.length];//整数型
        for (int ii = 0; ii < a.length; ii++) {
            b[ii] = (int) a[ii];
        }

        for (int i = 0; i < a.length; i++) {


            if (i == 0) {
                if (b[i] > 47 && b[i] < 58)
                {
                    //Llist.set(0“s“);
                    //Llist.remove(1);
                    //a[i] = ‘s‘;
                }
                if (b[i] < 48 || b[i] > 57) {
                    if (b[i] != 40 && b[i] != 41 && b[i] != 42 && b[i] != 43 && b[i] != 45 && b[i] != 47) {
                        System.out.println(“不能识别的运算符!“);
                        errorArea.append(“error:不能识别的运算符!\n“);
                        Istrue = 1;
                        break;
                    }
                    if (b[i] != 40) {
                        System.out.println(“运算式首位不能是运算符!“);
                        errorArea.append(“error:运算式首位不能是运算符!\n“);
                        Istrue = 1;
                        break;
                    }
                }
                if (b[i] == 40) {
                    //b[i]==40是左括号
                    Lnumber++;
                    //System.out.println(“bixie“);
                    int ssss = 0;//判断是否有右括号
                    if (b[i + 1] == 41) {
                        System.out.println(“左右括号之间不能为空!“);
                        errorArea.append(“error:左右括号之间不能为空!\n“);
                        Istrue = 1;
                        break;
                    }
                    if (b[i + 1] == 43 || b[i + 1] == 45 || b[i + 1] == 42 || b[i + 1] == 47) {
                        System.out.println(“左括号右侧不能是运算符!“);
                        errorArea.append(“error:左括号右侧不能是运算符!\n“);
                        Istrue = 1;
                        break;
                    }
                    for (int j = i; j < a.length; j++) {
                        //b[j]=(int)a[j];
                        if (b[j] == 41) {
                            ssss = 1;
                            //break;
                        }
                    }
                    if (ssss == 0) {
                        System.out.println(“左括号不能找到与之匹配的右括号!“);
                        errorArea.append(“error:左括号不能找到与之匹配的右括号!\n“);
                        Istrue = 1;
                        break;
                    }

                }
            }//首位
            else if (i+1 == a.length )
            {
                if

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      11367  2016-06-29 20:17  src\analyzer\LexAnalysis.java

     文件      10206  2016-06-29 20:12  src\analyzer\SLRParsing.java

     文件       2840  2016-06-29 19:26  src\analyzer\Wordsplit.java

     文件         89  2016-06-29 19:49  src\bean\Grammar.java

     文件       7664  2016-06-29 20:22  src\client\compilerCilent.java

     文件       3204  2016-06-29 20:22  src\client\compilerCilent.jfd

     文件       2088  2016-06-29 20:19  src\client\paintTree.java

     文件        192  2016-06-29 14:52  src\tree\Nodes.java

     文件       1693  2016-06-29 14:52  src\tree\TernaryTree.java

     目录          0  2016-06-29 20:17  src\analyzer

     目录          0  2016-06-29 19:49  src\bean

     目录          0  2016-06-29 20:22  src\client

     目录          0  2016-06-29 14:52  src\tree

     目录          0  2016-06-29 19:45  src

----------- ---------  ---------- -----  ----

                39343                    14


评论

共有 条评论