public void Read() { // arrange var reader = new SpiceNetlistReader(new SpiceNetlistReaderSettings(new SpiceNetlistCaseSensitivitySettings(), () => null)); var netlist = new SpiceNetlist(string.Empty, new Statements()); // act var result = reader.Read(netlist); // assert Assert.NotNull(result); }
/// <summary> /// Parses the netlist. /// </summary> /// <param name="spiceNetlist">Netlist to parse.</param> /// <returns> /// A parsing result. /// </returns> public SpiceParserResult ParseNetlist(string spiceNetlist) { if (spiceNetlist == null) { throw new ArgumentNullException(nameof(spiceNetlist)); } var result = new SpiceParserResult { ValidationResult = new SpiceParserValidationResult() }; // Get tokens try { var tokens = TokenProviderPool.GetSpiceTokenProvider(Settings.Lexing).GetTokens(spiceNetlist); SpiceNetlist originalNetlistModel = SingleNetlistParser.Parse(tokens); // Preprocessing var preprocessedNetListModel = GetPreprocessedNetListModel(originalNetlistModel, result.ValidationResult); // Reading model var reader = new SpiceNetlistReader(Settings.Reading); ISpiceModel <Circuit, Simulation> spiceModel = reader.Read(preprocessedNetListModel); result.OriginalInputModel = originalNetlistModel; result.PreprocessedInputModel = preprocessedNetListModel; result.SpiceModel = spiceModel; result.ValidationResult.Reading.AddRange(result.SpiceModel.ValidationResult); } catch (LexerException e) { result.ValidationResult.Lexing.Add( new ValidationEntry( ValidationEntrySource.Lexer, ValidationEntryLevel.Error, e.ToString(), null)); } catch (ParseException e) { result.ValidationResult.Parsing.Add( new ValidationEntry( ValidationEntrySource.Parser, ValidationEntryLevel.Error, e.ToString(), null)); } return(result); }