using ln.collections; using ln.parse.tokenizer; using System; using System.Linq; namespace ln.application.configuration { public class ConfigurationParser { ConfigurationContainer RootContainer { get; } public ConfigurationParser() { RootContainer = new ConfigurationContainer(); } public ConfigurationParser(ConfigurationContainer rootContainer) { RootContainer = rootContainer; } public void Parse(String source) { Parse(configurationTokenizer.Parse(source)); } public void Parse(Token[] tokens) { ArrayStream tokenStream = new ArrayStream(tokens.Where((e) => !(e is Token.WhiteSpaceToken))); ParseContainer(tokenStream,RootContainer); } private void ParseContainer(ArrayStream tokenStream,ConfigurationContainer container) { while (tokenStream.Current is Token.BracketToken bracket && bracket.Value.Equals("}")) { } } static Tokenizer configurationTokenizer; static ConfigurationParser() { configurationTokenizer = new Tokenizer() .Add(TokenMatcher.WHITESPACE) .Add(TokenMatcher.FLOAT) .Add(TokenMatcher.INTEGER) .Add(TokenMatcher.STRING) .Add(TokenMatcher.OPERATOR) .Add(TokenMatcher.BRACKET); } } }