吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3948|回复: 5
收起左侧

[其他原创] 【原创源码】C#编写一款自己的脚本语言.第十九章.下

[复制链接]
moodlee 发表于 2016-5-25 22:15


第十九章.下
天上的明月,地上的清风,都叫人起思念。
这个世界其实很简单:
帅的遇到漂亮的,有钱的遇到帅的,有权势的遇到漂亮的....
美好的总会遇到美好的,其他的丑拒。
所以,尚且停下你的思念,去听一听这个世界想要说的。
——————————
这一步,我们实现上一章说的:找出集合
——————————
下面是代码:
[C#] 纯文本查看 复制代码
namespace ScriptCode_Set
{
    public class USet
    {
        /*
        该类实现一个功能:
        查找出所有的类(顶级类,不包含子类)
        */
        public List<UClass> Main(string myOri)
        {
            List<UClass> myResult = new List<UClass>();
            //-----------------------------------
            int NoteOfBracket = 0;//括号的标记,遇到{就+1,遇到}就-1
            string Content = string.Empty;//类包含的内容
            string Note = string.Empty;//类的标记
            UClass Class = new UClass();
            //-----------------------------------
            /*下面开始一个一个分析char*/
            for(int i=0;i<myOri.Length; i++)
            {
                if (myOri[i] == ';')//如果当前char是;
                {
                    if(NoteOfBracket == 0)//表示当前字符在类外
                    {
                        Note = string.Empty;//重置标记
                    }else//表示在类内
                    {
                        Content += myOri[i];
                    }

                }else if (myOri[i] == '{')//如果当前字符为{
                {
                    NoteOfBracket++;//标记自增
                    if(NoteOfBracket == 1)//表示顶级类的开始
                    {
                        Class.Name = Note;//把标记赋值给类的名称
                    }else//表示在顶级类内部
                    {
                        Content += myOri[i];
                    }
                }else if (myOri[i] == '}')
                {
                    NoteOfBracket--;//标记自减
                    if(NoteOfBracket == 0)//顶级类结束
                    {
                        Class.Content = Content;
                        myResult.Add(Class);
                        Class = new UClass();
                        Note = string.Empty;
                        Content = string.Empty;
                    }else//表示在顶级类内部
                    {
                        Content += myOri[i];
                    }
                }else//如果是其他字符
                {
                    if(NoteOfBracket == 0)//表示在类外
                    {
                        Note += myOri[i];
                    }else//表示在类内
                    {
                        Content += myOri[i];
                    }
                }
            }

            //-----------------------------------
            return myResult;
        }
    }
    /*下面是需要用到的类*/
    /*很简单,只是为了方便返回*/
    public class UClass
    {
        /*
        它有两个属性:
        1、名称
        2、内容
        */
        private string _Name;
        public string Name
        {
            get
            {
                return _Name;
            }
            set
            {
                _Name = value;
            }
        }

        private string _Content;
        public string Content
        {
            get
            {
                return _Content;
            }
            set
            {
                _Content = value;
            }
        }
    }
}

——————————
下面是测试图:
QQ截图20160525221338.png
测试图中涉及的代码:
[C#] 纯文本查看 复制代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ScriptCode_Set;
using Class = ScriptCode_Set.UClass;

namespace Test
{
    public partial class TestForm : Form
    {
        public TestForm()
        {
            InitializeComponent();
        }
        List<Class> Classes = new List<Class>();
        private void B_ToProcessed_Click(object sender, EventArgs e)
        {
            USet Set = new USet();
            Classes = Set.Main (tBox_Ori .Text);
            lBox.Items.Clear();
            for(int i = 0; i < Classes.Count; i++)
            {
                lBox.Items.Add(Classes[i].Name);
            }
        }

        private void lBox_Click(object sender, EventArgs e)
        {
            if(lBox .SelectedIndex > -1)
            {
                tBox_Name.Text = Classes[lBox.SelectedIndex].Name;
                tBox_Content .Text = Classes[lBox.SelectedIndex].Content;
            }
        }
    }
}

——————————
与自己促膝长谈,听一听你想要的。

免费评分

参与人数 2热心值 +2 收起 理由
lonely_coder + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
风霜 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| moodlee 发表于 2016-5-25 22:16
app2015111 发表于 2016-5-25 22:21
lonely_coder 发表于 2016-5-25 22:57
你这不是在写C#,你是在诉说情怀啊。。,支持一下~~
小黑赖了 发表于 2016-5-25 23:40
不错,aspaspasp666666666666666
tangheng 发表于 2016-5-26 19:39
楼主大神,一直都在关注
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 16:20

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表