完整的VB.NET的语法解析程序

比较长,不过支持全部的关键字,直接就可以用了。

using System;

using System.Text;

using System.Text.RegularExpressions;

namespace Com.OSLeague.Component

{

/// <summary>

/// 语法分析器,将所有Code根据语法进行变色

/// <list type="VB">支持VB.NET</list>

/// <list type="CS">支持CS</list>

/// <author>掉掉</author>

/// <date>2002年5月14日</date>

/// <Memo>

/// 练习正则表达式

/// </Memo>

/// </summary>

public class CodeAnalysis

{

//

//定义HTML开始和结束的语句,用于语法变色

//

const string TAG_FNTRED = @"<font color=""red"">";

const string TAG_FNTBLUE = @"<font color=""blue"">" ;

const string TAG_FNTGRN = @"<font color=""green"">" ;

const string TAG_FNTMRN = @"<font color=""maroon"">" ;

const string TAG_FNTBLACK = @"<font color=""black"">" ;

const string TAG_EFONT = @"</font>" ;

const string TAG_SPNYELLOW = @"<span style=""background-color: yellow;"">";

const string TAG_ESPAN = @"</span>";

const string TAG_B = @"<b>";

const string TAG_EB = @"</b>";

const string TAG_COMMENT = @"<font colr=#008200>";

const string TAG_ECOMMENT = @"</font>";

//

public CodeAnalysis()

{

//

// Todo: 在此处添加构造函数逻辑

//

}

/// <summary>

/// 处理VB.NET代码彩色化..

/// </summary>

/// <param name="Code">传入的Code</param>

/// <returns>处理过后的代码</returns>

public string ParseVB(string Code)

{

//

//定义VB.NET中关键字,将其存为数组

//

string[] VB_Keyword = new string[]

;

//

//设定转换代码颜色

//

string ReplaceVBComment = TAG_COMMENT + "" + TAG_ECOMMENT;string ReplaceVBKeyword = TAG_FNTBLUE + "$" + TAG_EFONT;//开始转换for (int i=0;i<VB_Keyword.Length;i++){string TempDirectives = @"(?<char>(s" + VB_Keyword[i] + "|" + VB_Keyword[i] + @"s))";Code = Regex.Replace(Code,TempDirectives,ReplaceVBKeyword,RegexOptions.IgnoreCase);Code = Regex.Replace(Code,@"'(?<x>[^rn]*)",ReplaceVBComment);Code = Regex.Replace(Code,@"REM (?<x>[^rn]*)",ReplaceVBComment);}return Code; }}}

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...