因为之前的设计不合理,就重新开了工程。花了几天时间,重做的进度赶上之前的了
今天来说说分析源代码
源码分析中会用到的其它东西,之前都介绍过了。
接下来看UParser这个类中最后的函数GetNextCut,是用来把源码分析为UCodeCut集合的。其中包括关键字设别,变量设别等等
开始
UCodeCut cut = new UCodeCut();
List<byte> cutData = new List<byte>();
byte b;
UCutType currType = UCutType.None; // 状态机的状态
bool inString = false; // 是否解析字符串
if (EndOfCode == true)
{
cut.CutType = UCutType.End;
return cut;
}
cut用于保存分析玩的CodeCut
cutData是cut中的具体数据
currType是当前状态机的状态
接下来是状态机的循环
while (!EndOfCode)
{
b = GetNextByte();
cutData.Add(b);
...
...
}
然后是状态机的入口
#region UCutType.None
if (currType == UCutType.None)
{
if (b == UConfig.Space)
{
currType = UCutType.Space;
continue;
}
if (b == UConfig.Tab)
{
currType = UCutType.Tab;
break;
}