Beispiel #1
0
        public override object VisitNormalTemplateString([NotNull] LGFileParser.NormalTemplateStringContext context)
        {
            var result = new List <object>();

            foreach (ITerminalNode node in context.children)
            {
                switch (node.Symbol.Type)
                {
                case LGFileParser.DASH:
                case LGFileParser.MULTILINE_PREFIX:
                case LGFileParser.MULTILINE_SUFFIX:
                    break;

                case LGFileParser.ESCAPE_CHARACTER:
                    result.Add(node.GetText().Escape());
                    break;

                case LGFileParser.EXPRESSION:
                    result.Add(EvalExpression(node.GetText()));
                    break;

                default:
                    result.Add(node.GetText());
                    break;
                }
            }

            if (result.Count == 1 && !(result[0] is string))
            {
                return(result[0]);
            }

            return(string.Join(string.Empty, result));
        }
Beispiel #2
0
        public override AnalyzerResult VisitNormalTemplateString([NotNull] LGFileParser.NormalTemplateStringContext context)
        {
            var result = new AnalyzerResult();

            foreach (ITerminalNode node in context.children)
            {
                switch (node.Symbol.Type)
                {
                case LGFileParser.DASH:
                    break;

                case LGFileParser.EXPRESSION:
                    result.Union(AnalyzeExpression(node.GetText()));
                    break;

                case LGFileParser.TEMPLATE_REF:
                    result.Union(AnalyzeTemplateRef(node.GetText()));
                    break;

                case LGFileLexer.MULTI_LINE_TEXT:
                    result.Union(AnalyzeMultiLineText(node.GetText()));
                    break;

                default:
                    break;
                }
            }

            return(result);
        }
        /// <summary>
        /// Get prefix error message from normal template sting context.
        /// </summary>
        /// <param name="context">normal template sting context.</param>
        /// <returns>prefix error message.</returns>
        public static string GetPrefixErrorMessage(this LGFileParser.NormalTemplateStringContext context)
        {
            var errorPrefix = string.Empty;

            if (context.Parent?.Parent?.Parent is LGFileParser.IfConditionRuleContext conditionContext)
            {
                errorPrefix = "Condition '" + conditionContext.ifCondition()?.EXPRESSION(0)?.GetText() + "': ";
            }
            else
            {
                if (context.Parent?.Parent?.Parent is LGFileParser.SwitchCaseRuleContext switchCaseContext)
                {
                    var state = switchCaseContext.switchCaseStat();
                    if (state?.DEFAULT() != null)
                    {
                        errorPrefix = "Case 'Default':";
                    }
                    else if (state?.SWITCH() != null)
                    {
                        errorPrefix = $"Switch '{state.EXPRESSION(0)?.GetText()}':";
                    }
                    else if (state?.CASE() != null)
                    {
                        errorPrefix = $"Case '{state.EXPRESSION(0)?.GetText()}':";
                    }
                }
            }

            return(errorPrefix);
        }
            public override List <Diagnostic> VisitNormalTemplateString([NotNull] LGFileParser.NormalTemplateStringContext context)
            {
                var result = new List <Diagnostic>();

                foreach (ITerminalNode node in context.children)
                {
                    switch (node.Symbol.Type)
                    {
                    case LGFileParser.TEMPLATE_REF:
                        result.AddRange(CheckTemplateRef(node.GetText(), context));
                        break;

                    case LGFileParser.EXPRESSION:
                        result.AddRange(CheckExpression(node.GetText(), context));
                        break;

                    case LGFileLexer.MULTI_LINE_TEXT:
                        result.AddRange(CheckMultiLineText(node.GetText(), context));
                        break;

                    case LGFileLexer.TEXT:
                        result.AddRange(CheckErrorMultiLineText(node.GetText(), context));
                        break;

                    default:
                        break;
                    }
                }

                return(result);
            }
Beispiel #5
0
        public override List <string> VisitNormalTemplateString([NotNull] LGFileParser.NormalTemplateStringContext context)
        {
            var result = new List <string>()
            {
                string.Empty
            };

            foreach (ITerminalNode node in context.children)
            {
                switch (node.Symbol.Type)
                {
                case LGFileParser.DASH:
                case LGFileParser.MULTILINE_PREFIX:
                case LGFileParser.MULTILINE_SUFFIX:
                    break;

                case LGFileParser.ESCAPE_CHARACTER:
                    result = StringListConcat(result, EvalEscape(node.GetText()));
                    break;

                case LGFileParser.EXPRESSION:
                    result = StringListConcat(result, EvalExpression(node.GetText()));
                    break;

                default:
                    result = StringListConcat(result, new List <string>()
                    {
                        node.GetText()
                    });
                    break;
                }
            }

            return(result);
        }
        public override AnalyzerResult VisitNormalTemplateString([NotNull] LGFileParser.NormalTemplateStringContext context)
        {
            var result = new AnalyzerResult();

            foreach (var expression in context.EXPRESSION())
            {
                result.Union(AnalyzeExpression(expression.GetText()));
            }

            return(result);
        }
Beispiel #7
0
        public override List <Diagnostic> VisitNormalTemplateString([NotNull] LGFileParser.NormalTemplateStringContext context)
        {
            var result = new List <Diagnostic>();

            foreach (var expression in context.EXPRESSION())
            {
                result.AddRange(CheckExpression(expression.GetText(), context));
            }

            var multiLinePrefix = context.MULTILINE_PREFIX();
            var multiLineSuffix = context.MULTILINE_SUFFIX();

            if (multiLinePrefix != null && multiLineSuffix == null)
            {
                result.Add(BuildLGDiagnostic(LGErrors.NoEndingInMultiline, context: context));
            }

            return(result);
        }
            public override List <Diagnostic> VisitNormalTemplateString([NotNull] LGFileParser.NormalTemplateStringContext context)
            {
                var result = new List <Diagnostic>();

                foreach (var expression in context.EXPRESSION())
                {
                    result.AddRange(CheckExpression(expression.GetText(), context));
                }

                var multiLinePrefixNum = context.MULTILINE_PREFIX().Length;
                var multiLineSuffixNum = context.MULTILINE_SUFFIX().Length;

                if (multiLinePrefixNum > 0 && multiLinePrefixNum > multiLineSuffixNum)
                {
                    result.Add(BuildLGDiagnostic("Close ``` is missing.", context: context));
                }

                return(result);
            }