Beispiel #1
0
        private static bool IsSkipableBodyRe(CapturedNodeRegex re)
        {
            if ((re.Regex.Flags & SyntaxAnalysis.NodeRegexFlags.IsStringLiteral) == 0)
            {
                return(false);
            }
            var skipableChars = "|-/\\ \t-()[]#\"'";
            Func <char, bool> isNotSkipableChar = c => skipableChars.IndexOf(c) < 0;

            return(re.Regex.StringLiteral.Any(isNotSkipableChar) == false);
        }
Beispiel #2
0
        static void ReportRendererUsage(
            CapturedNodeRegex rendererNodeRe,
            string outputFieldDescription,
            ImportLog log)
        {
            var re = rendererNodeRe;

            log.AddMessage(ImportLog.MessageType.RendererUsageReport, ImportLog.MessageSeverity.Info)
            .AddText("Renderer")
            .AddCustom(re.Regex.AddLinkToSelf)
            .AddTextFmt("was used to parse {0}", outputFieldDescription)
            .SetLayoutId(rendererNodeRe.LayoutId);
        }
Beispiel #3
0
        static void WarnAboutConditionalRenderer(
            CapturedNodeRegex rendererNodeRe,
            string rendererDescription,
            ImportLog log)
        {
            var re = rendererNodeRe;

            Debug.Assert((re.Regex.Flags & SyntaxAnalysis.NodeRegexFlags.IsConditional) != 0);
            var warn = log.AddMessage(ImportLog.MessageType.ImportantFieldIsConditional, ImportLog.MessageSeverity.Warn)
                       .AddText(rendererDescription)
                       .AddCustom(re.Regex.AddLinkToSelf)
                       .AddTextFmt("is not guaranteed to produce output")
                       .SetLayoutId(rendererNodeRe.LayoutId);

            if (re.Regex.WrapperThatMakesRegexConditional != null)
            {
                warn.AddText("because it is wrapped by conditional renderer")
                .AddCustom(re.Regex.WrapperThatMakesRegexConditional.Value.AddLinkToSelf)
                .SetLayoutId(rendererNodeRe.LayoutId);
            }
        }