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); }