吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

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

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

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


第十九章.下
天上的明月,地上的清风,都叫人起思念。
这个世界其实很简单:
帅的遇到漂亮的,有钱的遇到帅的,有权势的遇到漂亮的....
美好的总会遇到美好的,其他的丑拒。
所以,尚且停下你的思念,去听一听这个世界想要说的。
——————————
这一步,我们实现上一章说的:找出集合
——————————
下面是代码:
[C#] 纯文本查看 复制代码
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
105
106
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#] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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, 2025-7-7 10:13

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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