private List <List <string> > VisitStructureValue(LGFileParser.KeyValueStructureLineContext context) { var values = context.keyValueStructureValue(); var result = new List <List <string> >(); foreach (var item in values) { if (item.IsPureExpression(out var text)) { result.Add(EvalExpression(text, context)); } else { var itemStringResult = new List <string>() { string.Empty }; foreach (ITerminalNode node in item.children) { switch (node.Symbol.Type) { case LGFileParser.ESCAPE_CHARACTER_IN_STRUCTURE_BODY: itemStringResult = StringListConcat(itemStringResult, new List <string>() { node.GetText().Escape() }); break; case LGFileParser.EXPRESSION_IN_STRUCTURE_BODY: var errorPrefix = "Property '" + context.STRUCTURE_IDENTIFIER().GetText() + "':"; itemStringResult = StringListConcat(itemStringResult, EvalExpression(node.GetText(), item, errorPrefix)); break; default: itemStringResult = StringListConcat(itemStringResult, new List <string>() { node.GetText() }); break; } } result.Add(itemStringResult); } } return(result); }
private object VisitStructureValue(LGFileParser.KeyValueStructureLineContext context) { var values = context.keyValueStructureValue(); var result = new List <object>(); foreach (var item in values) { if (item.IsPureExpression(out var text)) { result.Add(EvalExpression(text, context)); } else { var itemStringResult = new StringBuilder(); foreach (ITerminalNode node in item.children) { switch (node.Symbol.Type) { case LGFileParser.ESCAPE_CHARACTER_IN_STRUCTURE_BODY: itemStringResult.Append(node.GetText().Escape()); break; case LGFileParser.EXPRESSION_IN_STRUCTURE_BODY: var errorPrefix = "Property '" + context.STRUCTURE_IDENTIFIER().GetText() + "':"; itemStringResult.Append(EvalExpression(node.GetText(), context, errorPrefix)); break; default: itemStringResult.Append(node.GetText()); break; } } result.Add(itemStringResult.ToString().Trim()); } } return(result.Count == 1 ? result[0] : result); }
private AnalyzerResult VisitStructureValue(LGFileParser.KeyValueStructureLineContext context) { var values = context.keyValueStructureValue(); var result = new AnalyzerResult(); foreach (var item in values) { if (item.IsPureExpression(out var text)) { result.Union(AnalyzeExpression(text)); } else { var expressions = item.EXPRESSION_IN_STRUCTURE_BODY(); foreach (var expression in expressions) { result.Union(AnalyzeExpression(expression.GetText())); } } } return(result); }