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);
        }