private IReadOnlyList <MInstance> GetInstances(KpLinguaParser.LinkOperandContext context) { var instances = new List <MInstance>(); var instanceContext = context.instance(); var identifierContext = context.Identifier(); var wildcardContext = context.linkWildcardOperand(); if (instanceContext != null) { instances.Add(instanceContext.Accept(this) as MInstance); } if (identifierContext != null) { var instance = default(MInstance); var instanceName = GetIdentifier(identifierContext); if (_instancesByName.TryGetValue(instanceName, out instance)) { instances.Add(instance); } } if (wildcardContext != null) { var typeName = wildcardContext.Accept(this) as string; var instancesOfType = default(List <MInstance>); if (_instancesByType.TryGetValue(typeName, out instancesOfType)) { instances.AddRange(instancesOfType); } } return(instances); }
/// <summary> /// Visit a parse tree produced by <see cref="KpLinguaParser.linkOperand"/>. /// <para> /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/> /// on <paramref name="context"/>. /// </para> /// </summary> /// <param name="context">The parse tree.</param> /// <return>The visitor result.</return> public virtual Result VisitLinkOperand([NotNull] KpLinguaParser.LinkOperandContext context) { return(VisitChildren(context)); }
public object VisitLinkOperand(KpLinguaParser.LinkOperandContext context) { throw new NotImplementedException(); }