ln.application/configuration/ConfigurationParser.cs

57 lines
1.5 KiB
C#

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<Token> tokenStream = new ArrayStream<Token>(tokens.Where((e) => !(e is Token.WhiteSpaceToken)));
ParseContainer(tokenStream,RootContainer);
}
private void ParseContainer(ArrayStream<Token> 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);
}
}
}