using System; using System.Collections.Generic; using System.IO; using Salamander.Core.Lexer; namespace PolyFeed { internal enum SubstitutionToken { Unknown = 0, Text, BraceOpen, BraceClose, Identifier } internal class SubstitutionLexer : Lexer { public SubstitutionLexer() { AddRules(new List>() { new LexerRule(SubstitutionToken.Text, @"[^{}]+"), new LexerRule(SubstitutionToken.Identifier, @"[^{}]+"), new LexerRule(SubstitutionToken.BraceOpen, @"\{+"), new LexerRule(SubstitutionToken.BraceClose, @"\}+"), }); } public override void Initialise(StreamReader reader) { base.Initialise(reader); DisableRule(SubstitutionToken.Identifier); } } }