Пример #1
0
 public static List <Formatter.Token> Lex(string text)
 {
     Formatter.Lexer lexer = new Formatter.Lexer()
     {
         text = text
     };
     Formatter.Lexer.State state = new Formatter.Lexer.State(lexer.Str);
     while (lexer.position < lexer.text.Length)
     {
         state = state();
     }
     lexer.WritePatternString();
     return(lexer.tokens);
 }
Пример #2
0
 private Formatter.Lexer.State ParamTag(Formatter.TokenType t, Func <string, object> parse)
 {
     this.Next();
     this.StartNewToken();
     Formatter.Lexer.State state = null;
     state = () => {
         if (this.Current() != ']')
         {
             this.Next();
             return(state);
         }
         object obj = parse(this.Token());
         if (obj == null)
         {
             this.Reset();
             return(new Formatter.Lexer.State(this.Str));
         }
         this.Next();
         this.Add(t, obj);
         this.StartNewPattern();
         return(new Formatter.Lexer.State(this.Str));
     };
     return(state);
 }