• 大小: 66KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-07-23
  • 语言: Java
  • 标签: DFA  NFA  词法分析  

资源简介

基于Java实现了DFA,NFA,DFA最小化,NFA转化为DFA以及正则表达式转化为NFA的算法,对于初学者来说,是学习词法分析的一份不错资源

资源截图

代码片段和文件信息

package com.kmsoft.mes;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;

/**
 * Hello world!
 *
 */
public class NFA
{
    public static void main( String[] args ) throws IOException {
        int n m;
        BufferedReader in = new BufferedReader(new FileReader(“/实例代码练习/Java/kmsoft-mes/kmsoft-mes-infrastructure/src/main/java/com/kmsoft/mes/NFA.in“));
        StringTokenizer st = new StringTokenizer(in.readLine());
        n = Integer.parseInt(st.nextToken());
        m = Integer.parseInt(st.nextToken());
        while (n != 0)
        {
            int[][][] move = new int[n][m][];
            for(int i=0; i            {
                String line = in.readLine();
                int k = 0;
                for (int j=0; j                {
                    while (line.charAt(k) != ‘{‘) k++;
                    k++;
                    String states = ““;
                    while (line.charAt(k) != ‘}‘)
                    {
                        states = states + line.charAt(k);
                        k++;
                    }
                    states = states.trim();
                    if (states.length() > 0)
                    {
                        String[] stateArray = states.split(““);
                        move[i][j] = new int[stateArray.length];
                        for (int l=0; l                    }
                    else move[i][j] = new int[0];
                }
            }
            String[] temp = in.readLine().split(“\\s“);
            int[] accept = new int[temp.length];
            for (int i=0; i            String word = null;
            try {
                word = in.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            while (word.compareTo(“#“) != 0)
            {
                NFA nfa = new NFA();
                if (nfa.recognizeString(move accept word)) System.out.println(“YES“); else System.out.println(“NO“);
                word = in.readLine();
            }
            st = new StringTokenizer(in.readLine());
            n = Integer.parseInt(st.nextToken());
            m = Integer.parseInt(st.nextToken());
        }
    }


    boolean recognizeString(int move[][][] int accept_state[] String word)
    {
        int[] current = new int[2500];
        int[] next = new int[2500];
        int i;
        int j;
        int m;
        int n;
        int sum = 1;
        int number;
        int p = 0;
        char temp;
        current[0] = 0;
        for(i = 0; i < word.length(); i++)
        {
            number = 0;
            temp = word.charAt(i);
            j = temp - ‘a‘ + 1;
            for(m = 0; m < sum; m++)
            {
                for(n = 0; n < move[current[m]][j].length; n++)
   

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-11-04 00:21  kmsoft-mes-infrastructure\
     文件        6148  2018-11-04 00:21  kmsoft-mes-infrastructure\.DS_Store
     目录           0  2018-11-04 01:03  __MACOSX\
     目录           0  2018-11-04 01:03  __MACOSX\kmsoft-mes-infrastructure\
     文件         120  2018-11-04 00:21  __MACOSX\kmsoft-mes-infrastructure\._.DS_Store
     文件        2593  2018-11-02 17:27  kmsoft-mes-infrastructure\pom.xml
     目录           0  2018-11-04 00:21  kmsoft-mes-infrastructure\src\
     文件        6148  2018-11-04 00:21  kmsoft-mes-infrastructure\src\.DS_Store
     目录           0  2018-11-04 01:03  __MACOSX\kmsoft-mes-infrastructure\src\
     文件         120  2018-11-04 00:21  __MACOSX\kmsoft-mes-infrastructure\src\._.DS_Store
     目录           0  2018-11-04 00:21  kmsoft-mes-infrastructure\src\main\
     文件        6148  2018-11-04 00:21  kmsoft-mes-infrastructure\src\main\.DS_Store
     目录           0  2018-11-04 01:03  __MACOSX\kmsoft-mes-infrastructure\src\main\
     文件         120  2018-11-04 00:21  __MACOSX\kmsoft-mes-infrastructure\src\main\._.DS_Store
     目录           0  2018-11-04 00:21  kmsoft-mes-infrastructure\src\main\java\
     文件        6148  2018-11-04 00:21  kmsoft-mes-infrastructure\src\main\java\.DS_Store
     目录           0  2018-11-04 01:03  __MACOSX\kmsoft-mes-infrastructure\src\main\java\
     文件         120  2018-11-04 00:21  __MACOSX\kmsoft-mes-infrastructure\src\main\java\._.DS_Store
     目录           0  2018-11-04 00:21  kmsoft-mes-infrastructure\src\main\java\com\
     文件        6148  2018-11-04 00:21  kmsoft-mes-infrastructure\src\main\java\com\.DS_Store
     目录           0  2018-11-04 01:03  __MACOSX\kmsoft-mes-infrastructure\src\main\java\com\
     文件         120  2018-11-04 00:21  __MACOSX\kmsoft-mes-infrastructure\src\main\java\com\._.DS_Store
     目录           0  2018-11-04 00:30  kmsoft-mes-infrastructure\src\main\java\com\kmsoft\
     文件        6148  2018-11-04 00:30  kmsoft-mes-infrastructure\src\main\java\com\kmsoft\.DS_Store
     目录           0  2018-11-04 01:03  __MACOSX\kmsoft-mes-infrastructure\src\main\java\com\kmsoft\
     文件         120  2018-11-04 00:30  __MACOSX\kmsoft-mes-infrastructure\src\main\java\com\kmsoft\._.DS_Store
     目录           0  2018-11-04 00:29  kmsoft-mes-infrastructure\src\main\java\com\kmsoft\mes\
     文件        6148  2018-11-04 00:38  kmsoft-mes-infrastructure\src\main\java\com\kmsoft\mes\.DS_Store
     目录           0  2018-11-04 01:03  __MACOSX\kmsoft-mes-infrastructure\src\main\java\com\kmsoft\mes\
     文件         120  2018-11-04 00:38  __MACOSX\kmsoft-mes-infrastructure\src\main\java\com\kmsoft\mes\._.DS_Store
     目录           0  2018-11-04 00:43  kmsoft-mes-infrastructure\src\main\java\com\kmsoft\mes\dfa\
............此处省略59个文件信息

评论

共有 条评论