public bool Equals(PkgdefToken rhs) { return(rhs != null && this.startIndex == rhs.startIndex && this.text == rhs.text && this.tokenType == rhs.tokenType); }
public PkgdefToken GetRightSquareBracket() { PkgdefToken result = this.tokens.Last(); if (result.GetTokenType() != PkgdefTokenType.RightSquareBracket) { result = null; } return(result); }
public override string GetText() { return(PkgdefToken.GetText(this.tokens)); }
public override int GetStartIndex() { return(PkgdefToken.GetStartIndex(this.tokens)); }
public override int GetLength() { return(PkgdefToken.GetLength(this.tokens)); }
internal static PkgdefRegistryKeyDataItemSegment ParseRegistryKeyDataItem(PkgdefTokenizer tokenizer, Action <PkgdefIssue> onIssue) { PreCondition.AssertNotNull(tokenizer, nameof(tokenizer)); PreCondition.AssertTrue(tokenizer.HasCurrent(), "tokenizer.HasCurrent()"); PreCondition.AssertOneOf(tokenizer.GetCurrent().GetTokenType(), new[] { PkgdefTokenType.AtSign, PkgdefTokenType.DoubleQuote }, "tokenizer.GetCurrent().GetTokenType()"); PreCondition.AssertNotNull(onIssue, nameof(onIssue)); PkgdefToken registryKeyDataItemNameFirstToken = tokenizer.TakeCurrent(); List <PkgdefToken> tokens = new List <PkgdefToken>() { registryKeyDataItemNameFirstToken }; bool dataItemDone = false; if (registryKeyDataItemNameFirstToken.GetTokenType() == PkgdefTokenType.DoubleQuote) { if (!tokenizer.HasCurrent()) { onIssue(new PkgdefIssue(registryKeyDataItemNameFirstToken.GetStartIndex(), registryKeyDataItemNameFirstToken.GetLength(), "Missing registry key data item name closing double-quote ('\"').")); dataItemDone = true; } else { while (tokenizer.HasCurrent()) { PkgdefTokenType tokenType = tokenizer.GetCurrent().GetTokenType(); if (tokenType == PkgdefTokenType.NewLine) { onIssue(new PkgdefIssue(PkgdefToken.GetStartIndex(tokens), PkgdefToken.GetLength(tokens), "Missing registry key data item name closing double-quote ('\"').")); dataItemDone = true; break; } else { PkgdefToken token = tokenizer.TakeCurrent(); tokens.Add(token); if (token.GetTokenType() == PkgdefTokenType.DoubleQuote) { break; } } } } } if (!dataItemDone) { if (!tokenizer.HasCurrent()) { onIssue(new PkgdefIssue(PkgdefToken.GetStartIndex(tokens), PkgdefToken.GetLength(tokens), "Missing registry key data item equals sign ('=').")); dataItemDone = true; } else { while (tokenizer.HasCurrent()) { PkgdefTokenType tokenType = tokenizer.GetCurrent().GetTokenType(); if (tokenType == PkgdefTokenType.NewLine) { onIssue(new PkgdefIssue(PkgdefToken.GetStartIndex(tokens), PkgdefToken.GetLength(tokens), "Missing registry key data item equals sign ('=').")); dataItemDone = true; break; } else { PkgdefToken token = tokenizer.TakeCurrent(); tokens.Add(token); if (token.GetTokenType() == PkgdefTokenType.EqualsSign) { break; } else if (token.GetTokenType() != PkgdefTokenType.Whitespace) { onIssue(new PkgdefIssue(token.GetStartIndex(), token.GetLength(), "Expected registry key data item equals sign ('=').")); } } } } } if (!dataItemDone) { if (!tokenizer.HasCurrent()) { onIssue(new PkgdefIssue(PkgdefToken.GetStartIndex(tokens), PkgdefToken.GetLength(tokens), "Missing registry key data item value.")); } else { int dataItemValueTokenCount = 0; while (tokenizer.HasCurrent()) { PkgdefTokenType tokenType = tokenizer.GetCurrent().GetTokenType(); if (tokenType == PkgdefTokenType.NewLine) { if (dataItemValueTokenCount == 0) { onIssue(new PkgdefIssue(PkgdefToken.GetStartIndex(tokens), PkgdefToken.GetLength(tokens), "Missing registry key data item value.")); } break; } else { PkgdefToken token = tokenizer.TakeCurrent(); tokens.Add(token); if (token.GetTokenType() != PkgdefTokenType.Whitespace) { dataItemValueTokenCount++; } } } } } return(new PkgdefRegistryKeyDataItemSegment(tokens)); }
/// <inheritdoc/> public override int GetAfterEndIndex() { return(PkgdefToken.GetAfterEndIndex(this.tokens)); }
public static int GetEndIndex(IEnumerable <PkgdefToken> tokens) { PreCondition.AssertNotNullAndNotEmpty(tokens, nameof(tokens)); return(PkgdefToken.GetAfterEndIndex(tokens) - 1); }