public ConditionBuilder(StrategyModel model) { _model = model; _firstArgumentBuilder = new FormulaItemBuilder(model); _secondArgumentBuilder = new FormulaItemBuilder(model); _operationBuilder = new CompareOperationBuilder(); _builders = new BuilderSequence() .Add(_firstArgumentBuilder) .Add(_operationBuilder) .Add(_secondArgumentBuilder); }
/// <summary> /// Parse source id /// </summary> /// <param name="text">Text to parse</param> /// <exception cref="InvalidSemanticItemException"></exception> /// <exception cref="NotEnoughDataException"></exception> /// <returns>Parsed source</returns> public FormulaItem Parse(string text) { var words = text.Split(new char[] { ' ', '\n' }).Select(w => new Token() { Data = w }).ToList(); var builder = new FormulaItemBuilder(_model); foreach (var token in words) { if (!builder.TryAddWord(token)) { throw new InvalidSemanticItemException(_model, token.Data); } } var res = builder.Build(); res.UsersInput = text; return(res); }