// parse path value private HoconPath ParseKey() { // sanity check if (_tokens.Current.IsNonSignificant() || _tokens.Current.Type != TokenType.LiteralValue) { throw HoconParserException.Create(_tokens.Current, Path, $"Internal parser error, ParseKey() is called on an invalid token. Should be `{TokenType.LiteralValue}`, found `{_tokens.Current.Type}` instead."); } var keyTokens = new HoconTokenizerResult(); while (_tokens.Current.Type == TokenType.LiteralValue) { keyTokens.Add(_tokens.Current); _tokens.Next(); } // TODO: this is janky, fix this keyTokens.Reverse(); while (keyTokens.Count > 0 && keyTokens[0].LiteralType == TokenLiteralType.Whitespace) { keyTokens.RemoveAt(0); } keyTokens.Reverse(); keyTokens.Add(new Token("", TokenType.EndOfFile, null)); return(HoconPath.FromTokens(keyTokens)); }