コード例 #1
0
        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);
        }
コード例 #2
0
        /// <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);
        }