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); }
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); }