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