using System;
using System.Text ;
using System.Text .RegularExpressions ;
public class Test
{
public static void Main( )
{
StringBuilder sb = new StringBuilder( ) ;
sb.AppendLine ( "using System;" ) ;
sb.AppendLine ( ) ;
sb.AppendLine ( "namespace Foo.Bar" ) ;
sb.AppendLine ( "{" ) ;
sb.AppendLine ( "\t public class Baz" ) ;
sb.AppendLine ( "\t {" ) ;
sb.AppendLine ( "\t \t public static void Main()" ) ;
sb.AppendLine ( "\t \t {" ) ;
sb.AppendLine ( "\t \t \t String[] a = new[]{\" foo\" ,\" bar\" ,\" baz\" ,\" class\" ,\" foreach\" };" ) ;
sb.AppendLine ( "\t \t \t foreach (var b in a) Console.WriteLine(b);" ) ;
sb.AppendLine ( "\t \t \t xforeachx (var b in a) Console.WriteLine(b);" ) ;
sb.AppendLine ( "\t \t }" ) ;
sb.AppendLine ( "\t }" ) ;
sb.AppendLine ( "}" ) ;
Console.Write ( sb.ToString ( ) ) ;
Console.WriteLine ( ) ;
String[ ] keywords = new String[ ] {
"using" , "namespace" , "for" , "if" , "else" , "foreach" , "public" , "static" , "class"
} ;
String code = sb.ToString ( ) ;
foreach ( String keyword in keywords) {
String pattern = @"(?<=^|[\s\.\(])(" + Regex.Escape ( keyword) + @")(?=[\s\.\)])" ;
String replacement = "<span class='keyword'>$1</span>" ;
code = Regex.Replace ( code, pattern, replacement) ;
}
Console.WriteLine ( code) ;
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGV4dDsKdXNpbmcgU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewogICAgU3RyaW5nQnVpbGRlciBzYiA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7CiAgICBzYi5BcHBlbmRMaW5lKCJ1c2luZyBTeXN0ZW07Iik7CiAgICBzYi5BcHBlbmRMaW5lKCk7CiAgICBzYi5BcHBlbmRMaW5lKCJuYW1lc3BhY2UgRm9vLkJhciIpOwogICAgc2IuQXBwZW5kTGluZSgieyIpOwogICAgc2IuQXBwZW5kTGluZSgiXHRwdWJsaWMgY2xhc3MgQmF6Iik7CiAgICBzYi5BcHBlbmRMaW5lKCJcdHsiKTsKICAgIHNiLkFwcGVuZExpbmUoIlx0XHRwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpIik7CiAgICBzYi5BcHBlbmRMaW5lKCJcdFx0eyIpOwogICAgc2IuQXBwZW5kTGluZSgiXHRcdFx0U3RyaW5nW10gYSA9IG5ld1tde1wiZm9vXCIsXCJiYXJcIixcImJhelwiLFwiY2xhc3NcIixcImZvcmVhY2hcIn07Iik7CiAgICBzYi5BcHBlbmRMaW5lKCJcdFx0XHRmb3JlYWNoICh2YXIgYiBpbiBhKSBDb25zb2xlLldyaXRlTGluZShiKTsiKTsKICAgIHNiLkFwcGVuZExpbmUoIlx0XHRcdHhmb3JlYWNoeCAodmFyIGIgaW4gYSkgQ29uc29sZS5Xcml0ZUxpbmUoYik7Iik7CiAgICBzYi5BcHBlbmRMaW5lKCJcdFx0fSIpOwogICAgc2IuQXBwZW5kTGluZSgiXHR9Iik7CiAgICBzYi5BcHBlbmRMaW5lKCJ9Iik7CgogICAgQ29uc29sZS5Xcml0ZShzYi5Ub1N0cmluZygpKTsKICAgIENvbnNvbGUuV3JpdGVMaW5lKCk7CgogICAgU3RyaW5nW10ga2V5d29yZHMgPSBuZXcgU3RyaW5nW117CiAgICAgICJ1c2luZyIsICJuYW1lc3BhY2UiLCAiZm9yIiwgImlmIiwgImVsc2UiLCAiZm9yZWFjaCIsICJwdWJsaWMiLCAic3RhdGljIiwgImNsYXNzIgogICAgfTsKICAgIFN0cmluZyBjb2RlID0gc2IuVG9TdHJpbmcoKTsKICAgIGZvcmVhY2ggKFN0cmluZyBrZXl3b3JkIGluIGtleXdvcmRzKXsKICAgICAgU3RyaW5nIHBhdHRlcm4gPSBAIig/PD1efFtcc1wuXChdKSgiICsgUmVnZXguRXNjYXBlKGtleXdvcmQpICsgQCIpKD89W1xzXC5cKV0pIjsKICAgICAgU3RyaW5nIHJlcGxhY2VtZW50ID0gIjxzcGFuIGNsYXNzPSdrZXl3b3JkJz4kMTwvc3Bhbj4iOwogICAgICBjb2RlID0gUmVnZXguUmVwbGFjZShjb2RlLCBwYXR0ZXJuLCByZXBsYWNlbWVudCk7CiAgICB9CiAgICBDb25zb2xlLldyaXRlTGluZShjb2RlKTsKCX0KfQ==
stdout
using System;
namespace Foo.Bar
{
public class Baz
{
public static void Main()
{
String[] a = new[]{"foo","bar","baz","class","foreach"};
foreach (var b in a) Console.WriteLine(b);
xforeachx (var b in a) Console.WriteLine(b);
}
}
}
<span class='keyword'>using</span> System;
<span class='keyword'>namespace</span> Foo.Bar
{
<span class='keyword'>public</span> <span class='keyword'>class</span> Baz
{
<span class='keyword'>public</span> <span class='keyword'>static</span> void Main()
{
String[] a = new[]{"foo","bar","baz","class","foreach"};
<span class='keyword'>foreach</span> (var b in a) Console.WriteLine(b);
xforeachx (var b in a) Console.WriteLine(b);
}
}
}