Files
TextParser/TextParser/LineParser.cs

37 lines
1.0 KiB
C#

namespace Parsing;
using Parsing.Schema;
using Parsing.Tokenization;
public class LineParser
{
private string[] delimiters;
private bool removeEmptyEntries = false;
private InputSchema schema;
private InputSchemaContext context;
public LineParser(InputSchema schema, string[]? delimiters = null, bool removeEmptyEntries = true)
{
this.delimiters = delimiters ?? new string[] { " " };
this.removeEmptyEntries = removeEmptyEntries;
this.schema = schema;
}
private string[] ParseLineIntoWords(string line)
{
var options = StringSplitOptions.TrimEntries;
if (this.removeEmptyEntries)
{
options = options | StringSplitOptions.RemoveEmptyEntries;
}
return line.Split(this.delimiters, options);
}
public IList<IToken> ParseLine(string line)
{
this.context = this.schema.CreateContext();
var words = this.ParseLineIntoWords(line);
return this.schema.ProcessWordList(words);
}
}