public static string ConceptMemberValueType(ConceptMemberSyntax conceptMember) { if (conceptMember.IsStringType) { return("String"); } if (conceptMember.IsConceptInfoInterface) { return("IConceptInfo"); } return(conceptMember.ConceptType.TypeName); }
private void OnMemberRead(ITokenReader iTokenReader, ConceptSyntaxNode conceptInfo, ConceptMemberSyntax conceptMember, ValueOrError <object> valueOrError) { // have we reached a new keyword after target pos? if so, prevent further member parsing if (result.NextKeywordToken != null) { return; } var tokenReader = (TokenReader)iTokenReader; if (tokenReader.PositionInTokenList <= 0 || lastTokenBeforeTarget == null) { return; } var concept = conceptInfo.Concept; var lastTokenRead = result.Tokens[tokenReader.PositionInTokenList - 1]; // track last tokens/members parsed before or at target if (lastTokenRead.PositionInDslScript <= lastTokenBeforeTarget.PositionInDslScript && !valueOrError.IsError) { result.LastTokenParsed[concept] = lastTokenRead; result.LastMemberReadAttempt[concept] = conceptMember; } // we are interested in those concepts whose member parsing stops at or after target position if (lastTokenRead.PositionInDslScript >= lastTokenBeforeTarget.PositionInDslScript && !result.ActiveConceptValidTypes.Contains(concept)) { result.ActiveConceptValidTypes.Add(concept); } }
public static int IndexOfParameter(ConceptType conceptType, ConceptMemberSyntax conceptMember) { var members = GetParameters(conceptType); return(members.IndexOf(conceptMember)); }
public static string ConceptMemberDescription(ConceptMemberSyntax conceptMember) { return($"{conceptMember.Name}: {ConceptMemberValueType(conceptMember)}"); }