| using System; | 
 | using System.Collections.Generic; | 
 | using System.Linq; | 
 | using System.Text; | 
 | using OfficeOpenXml.FormulaParsing.Excel.Functions.Math; | 
 | using OfficeOpenXml.FormulaParsing.LexicalAnalysis; | 
 | using OfficeOpenXml.FormulaParsing.ExpressionGraph; | 
 | using OfficeOpenXml.FormulaParsing.Excel.Functions; | 
 | using OfficeOpenXml.FormulaParsing.Logging; | 
 | using OfficeOpenXml.FormulaParsing.Utilities; | 
 |  | 
 | namespace OfficeOpenXml.FormulaParsing | 
 | { | 
 |     public class ParsingConfiguration | 
 |     { | 
 |         public virtual ILexer Lexer { get; private set; } | 
 |  | 
 |         public IFormulaParserLogger Logger { get; private set; } | 
 |  | 
 |         public IExpressionGraphBuilder GraphBuilder { get; private set; } | 
 |  | 
 |         public IExpressionCompiler ExpressionCompiler{ get; private set; } | 
 |  | 
 |         public FunctionRepository FunctionRepository{ get; private set; } | 
 |  | 
 |         private ParsingConfiguration()  | 
 |         { | 
 |             FunctionRepository = FunctionRepository.Create(); | 
 |         } | 
 |  | 
 |         internal static ParsingConfiguration Create() | 
 |         { | 
 |             return new ParsingConfiguration(); | 
 |         } | 
 |  | 
 |         public ParsingConfiguration SetLexer(ILexer lexer) | 
 |         { | 
 |             Lexer = lexer; | 
 |             return this; | 
 |         } | 
 |  | 
 |         public ParsingConfiguration SetGraphBuilder(IExpressionGraphBuilder graphBuilder) | 
 |         { | 
 |             GraphBuilder = graphBuilder; | 
 |             return this; | 
 |         } | 
 |  | 
 |         public ParsingConfiguration SetExpresionCompiler(IExpressionCompiler expressionCompiler) | 
 |         { | 
 |             ExpressionCompiler = expressionCompiler; | 
 |             return this; | 
 |         } | 
 |  | 
 |         /// <summary> | 
 |         /// Attaches a logger, errors and log entries will be written to the logger during the parsing process. | 
 |         /// </summary> | 
 |         /// <param name="logger"></param> | 
 |         /// <returns></returns> | 
 |         public ParsingConfiguration AttachLogger(IFormulaParserLogger logger) | 
 |         { | 
 |             Require.That(logger).Named("logger").IsNotNull(); | 
 |             Logger = logger; | 
 |             return this; | 
 |         } | 
 |  | 
 |         /// <summary> | 
 |         /// if a logger is attached it will be removed. | 
 |         /// </summary> | 
 |         /// <returns></returns> | 
 |         public ParsingConfiguration DetachLogger() | 
 |         { | 
 |             Logger = null; | 
 |             return this; | 
 |         } | 
 |     } | 
 | } |