自己动手设计代码编辑器——(五)分析源代码

本文介绍了作者在重构代码编辑器过程中,如何实现源代码分析。重点讲解了UParser类中的GetNextCut函数,该函数负责将源码解析为UCodeCut集合,涉及关键字识别和变量识别等。通过状态机循环处理不同代码片段,包括普通字符串,并在循环结束后进行关键字和变量的最后检查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为之前的设计不合理,就重新开了工程。花了几天时间,重做的进度赶上之前的了


今天来说说分析源代码


源码分析中会用到的其它东西,之前都介绍过了。

接下来看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;
                        }

                        if (b == UConfig.DoubleQuote)
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值