【原创源码】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 == ';')//如果当前char是;
{
if(NoteOfBracket == 0)//表示当前字符在类外
{
Note = string.Empty;//重置标记
}else//表示在类内
{
Content += myOri;
}
}else if (myOri == '{')//如果当前字符为{
{
NoteOfBracket++;//标记自增
if(NoteOfBracket == 1)//表示顶级类的开始
{
Class.Name = Note;//把标记赋值给类的名称
}else//表示在顶级类内部
{
Content += myOri;
}
}else if (myOri == '}')
{
NoteOfBracket--;//标记自减
if(NoteOfBracket == 0)//顶级类结束
{
Class.Content = Content;
myResult.Add(Class);
Class = new UClass();
Note = string.Empty;
Content = string.Empty;
}else//表示在顶级类内部
{
Content += myOri;
}
}else//如果是其他字符
{
if(NoteOfBracket == 0)//表示在类外
{
Note += myOri;
}else//表示在类内
{
Content += myOri;
}
}
}
//-----------------------------------
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;
}
}
}
}
——————————下面是测试图:
测试图中涉及的代码: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.Name);
}
}
private void lBox_Click(object sender, EventArgs e)
{
if(lBox .SelectedIndex > -1)
{
tBox_Name.Text = Classes.Name;
tBox_Content .Text = Classes.Content;
}
}
}
}
——————————与自己促膝长谈,听一听你想要的。
附上之前章节地址:
第一章:http://www.52pojie.cn/thread-470085-1-1.html
第二章:http://www.52pojie.cn/thread-470424-1-2.html
第三章:http://www.52pojie.cn/thread-471306-1-1.html
第四章:http://www.52pojie.cn/thread-471637-1-1.html
第五章:http://www.52pojie.cn/thread-471937-1-1.html
第六章:http://www.52pojie.cn/thread-472899-1-1.html
第六章.下:http://www.52pojie.cn/thread-473861-1-1.html
第七章:http://www.52pojie.cn/thread-476054-1-1.html
第八章:http://www.52pojie.cn/thread-478357-1-1.html
第八章.下:http://www.52pojie.cn/thread-478971-1-1.html
第九章:http://www.52pojie.cn/thread-481291-1-1.html
第十章:http://www.52pojie.cn/thread-482243-1-1.html
第十一章:http://www.52pojie.cn/thread-483382-1-1.html
第十二章:http://www.52pojie.cn/thread-484707-1-1.html
第十三章:http://www.52pojie.cn/thread-486262-1-1.html
第十四章:http://www.52pojie.cn/thread-488239-1-1.html
第十五章:http://www.52pojie.cn/thread-490649-1-1.html
第十六章:http://www.52pojie.cn/thread-495034-1-1.html
第十七章:http://www.52pojie.cn/thread-497199-1-1.html
第十八章:http://www.52pojie.cn/thread-499323-1-1.html
第十九章:http://www.52pojie.cn/thread-500216-1-1.html
感谢支持!
6666我要学C# 你这不是在写C#,你是在诉说情怀啊。。:loveliness:,支持一下~~ 不错,aspaspasp666666666666666 楼主大神,一直都在关注
页:
[1]