日期:2014-05-19  浏览次数:20846 次

使用正则表达式实现语法分析,讨论与完善
昨天有人问怎么用RichTextBox做语法高亮
这就需要用到语法分析
还有很多论坛里也支持语法高亮的功能、代码折叠的功能
这也算是一个常用的功能
所以就随手搭建一个语法分析的框架
思路是利用正则表达式逐步取得各种语法构成部分

这里欢迎大家测试、找BUG、完善正则表达式
谢谢参与


初步代码如下:
///   <summary>
///   语法分析引擎基类
///   </summary>
class   SyntaxEngine
{
        ///   <summary>
        ///   语法项
        ///   </summary>
        public   class   SyntaxItem
        {
                #region   私有字段
                private   string   FPattern;   //   正则表达式
                private   RegexOptions   FOptions;   //   正则表达式附加选项
                private   string   FName;   //   语法名称
                private   int   FIndex;   //   序号
                #endregion   私有字段

                #region   公有属性
                public   string   Pattern   {   get   {   return   FPattern;   }   }   //   正则表达式
                public   RegexOptions   Options   {   get   {   return   FOptions;   }   }   //   正则表达式附加选项
                public   string   Name   {   get   {   return   FName;   }   }   //   名称
                public   int   Index   {   get   {   return   FIndex;   }   }   //   序号
                #endregion   公有属性

                public   SyntaxItem(string   APattern,   RegexOptions   AOptions,  
                        string   AName,   int   AIndex)
                {
                        FPattern   =   APattern;
                        FOptions   =   AOptions;
                        FName   =   AName;
                        FIndex   =   AIndex;
                }
        }
        ///   <summary>
        ///   语法分析返回项
        ///   </summary>
        public   class   AnalyzeReslut  
        {
                #region   私有字段
                private   SyntaxItem   FItem;   //   所属语法项
                private   string   FBlock;   //   文字块