繁体中文
设为首页
加入收藏
当前位置:.Net技术首页 >> VB.Net语言 >> OK.这个是完整的VB.NET的语法解析程序。比较长,不过支持全部的关键字,直接就可以用了。

OK.这个是完整的VB.NET的语法解析程序。比较长,不过支持全部的关键字,直接就可以用了。

2004-10-01 08:26:10  作者:  来源:互联网  浏览次数:30  文字大小:【】【】【
简介:using System; using System.Text; using System.Text.RegularExpressions; namespace Com.OSLeague.Component {     /// <summary>     /// 语法分析器,将所有...

using System;

using System.Text;

using System.Text.RegularExpressions;

namespace Com.OSLeague.Component

{

///

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

/// 支持VB.NET

/// 支持CS

/// 掉掉

/// 2002年5月14日

///

/// 练习正则表达式

///

///

public class CodeAnalysis

{

//

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

//

const string TAG_FNTRED = @"";

const string TAG_FNTBLUE = @"" ;

const string TAG_FNTGRN = @"" ;

const string TAG_FNTMRN = @"" ;

const string TAG_FNTBLACK = @"" ;

const string TAG_EFONT = @"" ;

const string TAG_SPNYELLOW = @"";

const string TAG_ESPAN = @"";

const string TAG_B = @"";

const string TAG_EB = @"";

const string TAG_COMMENT = @"";

const string TAG_ECOMMENT = @"";

//

public CodeAnalysis()

{

//

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

//

}

///

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

///

/// 传入的Code

/// 处理过后的代码

public string ParseVB(string Code)

{

//

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

//

string[] VB_Keyword = new string[]

{

"AddHandler","AddressOf","AndAlso","Alias","And","Ansi","As","Assembly","Auto","Boolean",

"ByRef","Byte","ByVal","Call","Case","Catch","CBool","CByte","CChar",

"CDate","CDec","CDbl","Char","CInt","Class","CLng","CObj","Const",

"CShort","CSng","CStr","CType","Date","Decimal","Declare","Default",

"Delegate","Dim","DirectCast","Do","Double","Each","Else","ElseIf","End",

"Enum","Erase","Error","Event","Exit","False",

"Finally","For","Friend","Function","Get","GetType","GoTo","Handles","If",

"Implements","Imports","In","Inherits","Integer","Interface",

"Is","Let","Lib","Like","Long","Loop","Me","Mod","Module",

"MustInherit","MustOverride","MyBase","MyClass","Namespace","New","Next","Not","Nothing",

"NotInheritable","NotOverridable","Object","On","Option","Optional","Or","OrElse",

"Overloads","Overridable","Overrides","ParamArray","Preserve","Private","Property","Protected","Public",

"RaiseEvent","ReadOnly","ReDim","RemoveHandler","Resume","Return",

"Select","Set","Shadows","Shared","Short","Single","Static","Step","Stop",

"String","Structure","Sub","SyncLock","Then","Throw",

"To","True","Try","TypeOf","Unicode","Until","Variant","When","While",

"With","WithEvents","WriteOnly","Xor"

};

//

//设定转换代码颜色

//

string ReplaceVBComment = TAG_COMMENT + "$1" + TAG_ECOMMENT;

string ReplaceVBKeyword = TAG_FNTBLUE + "${char}" + TAG_EFONT;

//开始转换

for (int i=0;i

{

string TempDirectives = @"(?(\s" + VB_Keyword[i] + "|" + VB_Keyword[i] + @"\s))";

Code = Regex.Replace(Code,TempDirectives,ReplaceVBKeyword,RegexOptions.IgnoreCase);

Code = Regex.Replace(Code,@"'(?[^\r\n]*)",ReplaceVBComment);

Code = Regex.Replace(Code,@"REM (?[^\r\n]*)",ReplaceVBComment);

}

return Code;

}

}<

责任编辑:admin
相关文章