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

📄 semanalysis.cs

📁 编译原理语法分析和词法分析综合实验: 源程序、可执行程序、测试程序文件、程序运行说明文件、实验报告。
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.Text;

namespace syn
{
    class semAnalysis
    {

        public string VariableStack = "";//int型变量栈

        public string reDefine = "";//重定义的变量
        public string unDefine = "";//没有定义变量
        //构造方法
        
        public semAnalysis()
        {
            
        }

        protected void AddToVariableStack(string str)//入栈
        {
            VariableStack += str+",";
        }

        protected void AddToReDefine(string str)//入栈
        {
            reDefine += str + ",";
        }

        protected void AddToUnDefine(string str)//入栈
        {
            unDefine += str + ",";
        }

        public void IsVarible()//声明变量时则入栈
        {
            int state=0;//遇到int时置1,遇到;时变回0

            for (int i = 12; i < Form1.subStringCollection.Count - 1; i++)
            {
                string str0=(string)Form1.subStringCollection[i];
                if (str0.Equals("int"))
                {
                    state = 1;

                }
                if (str0.Equals(";"))
                {
                    state = 0;

                }
                if (state == 1)
                {
                    if (Form1.CategoryCode(str0) == 46)
                        //判断是否为变量
                        if (((string)Form1.subStringCollection[i - 1]).Equals("int") || ((string)Form1.subStringCollection[i - 1]).Equals(","))
                        {
                            if (VariableStack.Contains(str0))
                                AddToReDefine(str0);
                            else
                                AddToVariableStack(str0);
                        }
                        else //判断是否被声明
                        {
                            if (VariableStack.Contains(str0) == false && (syntaxAnalyser.isInvalid("[0-9]", str0) == false))
                                AddToUnDefine(str0);
                        }
                }
                else
                {
                    if (Form1.CategoryCode(str0) == 46&&(syntaxAnalyser.isInvalid("[0-9]",str0)==false))
                        if (VariableStack.Contains(str0) == false)
                            AddToUnDefine(str0);
                }
            }
            //mainForm
        }


    }
}

⌨️ 快捷键说明

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