示例#1
0
        public List <SignalDefenition> ParseSignals(string vhdl)
        {
            var signalSection = Regex.Match(vhdl, signalSectionPattern).Value;
            List <SignalDefenition> signals = new List <SignalDefenition>();

            MatchesToStrings(Regex.Matches(signalSection, SignalPattern)).ForEach(x =>
            {
                Match pTypeMatch          = Regex.Match(x, PortType);
                var remainngWithValueType = x.Substring(pTypeMatch.Index + pTypeMatch.Length);
                var defaultPart           = Regex.Match(remainngWithValueType, Default).Value;
                var portEnumeration       = Regex.Match(remainngWithValueType, Enumeration).Value;

                var newSignal = new SignalDefenition(Document.Entity)
                {
                    Name         = Regex.Match(x, PortName).Value,
                    ValueType    = pTypeMatch.Value,
                    DefaultValue = defaultPart != String.Empty ? Regex.Match(defaultPart, DefaultValue).Value : null,
                    Enumeration  = !String.IsNullOrWhiteSpace(portEnumeration) ? EnumerationParser.Parse(portEnumeration) : null
                };

                signals.Add(newSignal);
            });

            return(signals);
        }