|  | using OfficeOpenXml.FormulaParsing.Excel.Functions; | 
|  | using OfficeOpenXml.FormulaParsing.ExpressionGraph; | 
|  | using OfficeOpenXml.FormulaParsing.LexicalAnalysis; | 
|  | 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(); | 
|  | } | 
|  |  | 
|  | 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; | 
|  | } | 
|  | } |