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