当前位置: 首页>>代码示例>>C#>>正文


C# Lexer.Ignore方法代码示例

本文整理汇总了C#中Lexer.Ignore方法的典型用法代码示例。如果您正苦于以下问题:C# Lexer.Ignore方法的具体用法?C# Lexer.Ignore怎么用?C# Lexer.Ignore使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Lexer的用法示例。


在下文中一共展示了Lexer.Ignore方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: RantLexer

 static RantLexer()
 {
     Rules = new Lexer<R>
     {
         {reader => reader.EatWhile(Char.IsWhiteSpace), R.Whitespace},
         // Comments
         {
             reader =>
             {
                 reader.SkipWhiteSpace();
                 if (!reader.Eat('#')) return false;
                 reader.ReadUntilAny('\r', '\n');
                 return true;
             }, R.Ignore, 3
         },
         // Blackspace (^\s*)
         {
             reader =>
             {
                 if (reader.Position == 0) return reader.EatWhile(Char.IsWhiteSpace);
                 return reader.IsNext('\r', '\n') && reader.EatWhile(Char.IsWhiteSpace);
             }, R.Ignore, 2
         },
         // Blackspace (\s*[\r\n]+\s*)
         {
             reader =>
             {
                 reader.EatWhile(
                     c => Char.IsWhiteSpace(c.Character) && c.Character != '\r' && c.Character != '\n');
                 if (!reader.EatAll('\r', '\n')) return false;
                 reader.EatWhile(Char.IsWhiteSpace);
                 return true;
             }, R.Ignore, 2
         },
         // Blackspace (\s*$)
         {
             reader =>
             {
                 while (!reader.EndOfStringe)
                 {
                     if (reader.EatAll('\r', '\n')) return true;
                     if (!reader.SkipWhiteSpace()) return false;
                 }
                 return true;
             }, R.Ignore, 2
         },
         // Escape sequence
         {
             reader =>
             {
                 if (!reader.Eat('\\')) return false;
                 if (reader.EatWhile(Char.IsDigit))
                 {
                     if (reader.Eat('.')) reader.EatWhile(Char.IsDigit);
                     reader.EatAny('k', 'M', 'B');
                     if (!reader.Eat(','))
                         throw new RantCompilerException(reader.Origin, reader.Stringe.Substringe(reader.Position - 1, 1), "Expected ',' after quantifier.");
                 }
                 if (reader.Eat('u'))
                 {
                     for (int i = 0; i < 4; i++)
                     {
                         var c = reader.ReadChare().Character;
                         if (!((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F')))
                             return false;
                     }
                 }
                 else
                 {
                     reader.ReadChare();
                 }
                 return true;
             }, R.EscapeSequence
         },
         // Regex
         {
             reader =>
             {
                 if (!reader.Eat('`')) return false;
                 var token = reader.Stringe.Substringe(reader.Position - 1, 1);
                 while (!reader.EndOfStringe)
                 {
                     reader.EatAll("\\`");
                     if (reader.ReadChare() == '`') break;
                 }
                 if (reader.EndOfStringe)
                     throw new RantCompilerException(reader.Origin, token, "Unterminated regular expression.");
                 reader.Eat('i');
                 return true;
             }, R.Regex
         },
         // Constant literal
         {
             reader =>
             {
                 if (!reader.Eat('"')) return false;
                 var token = reader.Stringe.Substringe(reader.Position - 1, 1);
                 while (!reader.EndOfStringe)
                 {
                     reader.EatAll("\"\"");
//.........这里部分代码省略.........
开发者ID:W-h-a-t-s,项目名称:Rant,代码行数:101,代码来源:RantLexer.cs


注:本文中的Lexer.Ignore方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。