public override void ResolveDataInQueue() { #region //获取枚举的匹配集合 if (string.IsNullOrWhiteSpace(SourceHtml)) { return; } Regex regex = new Regex(@"<(?<HxTag>h\d+)\s+[^>]*id=""枚举[^>]+>((?<Nested><\k<HxTag>[^>]*>)|</\k<HxTag>>(?<-Nested>)|.*?)*</\k<HxTag>>(?<clumns>((?!</table>).|\n)*)", RegexOptions.IgnoreCase | RegexOptions.Compiled); var enumsMatchs = regex.Matches(SourceHtml); #endregion #region //将每个HTML的内容描述转换为EnumDesc对象 //循环处理 foreach (Match m in enumsMatchs) { //定义数据表描述对象处理上下文 EnumDescContext context = new EnumDescContext(m.Value); //将HTMl信息解释为枚举EnumDesc的解释器 List <EnumExpression> exps = new List <EnumExpression>(); exps.Add(new EnumDescExpression()); //枚举描述信息解释器 exps.Add(new EnumOptionsExpression()); //枚举成员解释器 //循环执行文法解释器 foreach (var exp in exps) { exp.Interpret(context); } //将解释出来的EnumDesc加入数据队列 DataQueue.Enqueue(context.EnumDesc); } #endregion }
/// <summary> /// 文法解释 /// </summary> /// <param name="context"><seealso cref="EnumDescContext"/>对象实例</param> public abstract void Interpret(EnumDescContext context);