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

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

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

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

            return(result);
        }
예제 #2
0
        public override List <string> VisitNormalTemplateString([NotNull] LGFileParser.NormalTemplateStringContext context)
        {
            var prefixErrorMsg = context.GetPrefixErrorMessage();
            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, new List <string>()
                    {
                        node.GetText().Escape()
                    });
                    break;

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

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

            return(result);
        }
예제 #3
0
        public override object VisitNormalTemplateString([NotNull] LGFileParser.NormalTemplateStringContext context)
        {
            var prefixErrorMsg = context.GetPrefixErrorMessage();

            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(), context, prefixErrorMsg));
                    break;

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

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

            return(string.Join(string.Empty, result));
        }