• 大小: 8.25MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-10-09
  • 语言: 其他
  • 标签:

资源简介

右线性文法生成的语言是右线性语言,有限自动机识别和接受的语言是正则语言。而正则文法是左线性文法和右线性文法的统称,所以右线性语言类与正则语言类是同一语言类。

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;

/****************************************************************************
 * 
 * 
 * 程序功能:右线性文法转换为FA
 * 
 * 版本:V 1.0
 * 作者:朱雯
 * 学号:2009206350011
 * 学习单位:WHU.SKLSE
 * 
 * 
 * **************************************************************************/


namespace RLg_FA
{
    class FA
    {
        private ArrayList internal_state=new ArrayList ();//内部状态有限集合
        private ArrayList input_alphabet=new ArrayList ();//输入字母表
        private SortedList transfer_function = new SortedList();//转移函数
        private string initial_state;//初始态
        private string final_state;//终态

        public void setInternalState(ArrayList s)//内部状态有限集合赋值
        {
            this.internal_state = s; 
        }
        public ArrayList getInternalState()//得到内部状态有限集合
        {
            return this.internal_state;
        }
        public void addInternalState(string s)//添加内部状态
        {
            this.internal_state.Add(s);
        }
        public void setInputAlphabet(ArrayList s)//输入字母表赋值
        {
            this.input_alphabet = s;
        }
        public ArrayList getInputAlphabet()//得到输入字母表
        {
            return this.input_alphabet;
        }
        public void addInputAlphabet(string s)//向字母表中添加终结符
        {
            this.input_alphabet.Add(s);
        }
        public void setTransferFunction(SortedList s)//转移函数赋值
        {
            this.transfer_function = s;
        }
        public SortedList getTransferFunction()//得到转移函数
        {
            return this.transfer_function;
        }

        /**
         * 增加转移函数 &(leftkeyrightkey)={value}
         * 如果转移函数的左部key已存在,则在值列表中加入值 key=leftkeyrightkey
         * 否则值列表中只包含value
         * */
        public void addTransferFunction(string leftkeystring rightkeystring value)
        {
            string key=leftkey+““+rightkey;
            if (!this.transfer_function.Contains(key))
                this.transfer_function.Add(key value);
                //this.transfer_function.Add(key new ArrayList().Add(value));
            else
            {
                int index = this.transfer_function.IndexOfKey(key);
                string v = (string)this.transfer_function.GetByIndex(index);
                if(!containsValue(valuev))
                    transfer_function.SetByIndex(index v + ““ + value);
            }
        }

        //判断是否包含同一条转移函数
        public bool containsValue(string valuestring s)
        {
            string[] valueList = s.Split(‘‘);
            foreach (string str in valueList)
            {
                if (str.Equals(value)) return true;
            }

            return false;
 
        }

        public void setInitialState(string s)//初始态赋值
        {
            this.initial_state = s;
        }
        public string getInitialState()//得到初始态
        {
    

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-05-27 20:13  右线性文法构造有穷自动机\
     目录           0  2019-05-27 20:13  右线性文法构造有穷自动机\.vs\
     目录           0  2019-05-27 20:13  右线性文法构造有穷自动机\.vs\RLg_FA\
     目录           0  2019-05-27 20:13  右线性文法构造有穷自动机\.vs\RLg_FA\v15\
     文件       61440  2018-06-26 21:53  右线性文法构造有穷自动机\.vs\RLg_FA\v15\.suo
     目录           0  2019-05-27 20:13  右线性文法构造有穷自动机\.vs\RLg_FA\v15\Server\
     目录           0  2019-05-27 20:13  右线性文法构造有穷自动机\.vs\RLg_FA\v15\Server\sqlite3\
     文件           0  2018-05-10 08:25  右线性文法构造有穷自动机\.vs\RLg_FA\v15\Server\sqlite3\db.lock
     文件      503808  2018-06-23 17:16  右线性文法构造有穷自动机\.vs\RLg_FA\v15\Server\sqlite3\storage.ide
     目录           0  2019-05-27 20:13  右线性文法构造有穷自动机\Backup\
     目录           0  2019-05-27 20:13  右线性文法构造有穷自动机\Backup\RLg_FA\
     文件        3453  2010-01-06 14:09  右线性文法构造有穷自动机\Backup\RLg_FA\FA.cs
     文件       16316  2010-01-06 13:07  右线性文法构造有穷自动机\Backup\RLg_FA\Form1.Designer.cs
     文件        8909  2010-01-07 20:48  右线性文法构造有穷自动机\Backup\RLg_FA\Form1.cs
     文件        6221  2010-01-06 13:07  右线性文法构造有穷自动机\Backup\RLg_FA\Form1.resx
     文件         465  2010-01-02 20:20  右线性文法构造有穷自动机\Backup\RLg_FA\Program.cs
     目录           0  2019-05-27 20:13  右线性文法构造有穷自动机\Backup\RLg_FA\Properties\
     文件        1160  2010-01-02 20:20  右线性文法构造有穷自动机\Backup\RLg_FA\Properties\AssemblyInfo.cs
     文件        2866  2010-01-02 20:20  右线性文法构造有穷自动机\Backup\RLg_FA\Properties\Resources.Designer.cs
     文件        5612  2010-01-02 20:20  右线性文法构造有穷自动机\Backup\RLg_FA\Properties\Resources.resx
     文件        1089  2010-01-02 20:20  右线性文法构造有穷自动机\Backup\RLg_FA\Properties\Settings.Designer.cs
     文件         249  2010-01-02 20:20  右线性文法构造有穷自动机\Backup\RLg_FA\Properties\Settings.settings
     文件        2139  2010-01-06 16:41  右线性文法构造有穷自动机\Backup\RLg_FA\RLg.cs
     文件        3323  2010-01-04 19:00  右线性文法构造有穷自动机\Backup\RLg_FA\RLg_FA.csproj
     文件       12215  2010-01-07 20:48  右线性文法构造有穷自动机\Backup\RLg_FA\parser.cs
     文件         907  2010-01-02 20:20  右线性文法构造有穷自动机\Backup\RLg_FA.sln
     目录           0  2019-05-27 20:13  右线性文法构造有穷自动机\RLg_FA\
     文件        3383  2018-05-10 10:12  右线性文法构造有穷自动机\RLg_FA\FA.cs
     文件       18943  2018-05-11 10:24  右线性文法构造有穷自动机\RLg_FA\Form1.Designer.cs
     文件        8931  2018-05-11 12:01  右线性文法构造有穷自动机\RLg_FA\Form1.cs
     文件        6221  2018-05-11 10:24  右线性文法构造有穷自动机\RLg_FA\Form1.resx
............此处省略56个文件信息

评论

共有 条评论