You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We have designed an SQL parser using sqlparser's Parser, and we wish to implement two helper methods for consuming tokens—similar to Parser::consume_token and Parser::consume_tokens—but with the ability to accept string inputs and perform case-insensitive matching.
However, since the Parser does not provide a method to mutate the Parser::index, we are unable to correctly implement our own consume_tokens because we need to revert the parser state if consumption fails mid-way.
We propose adding and exposing a new method in sqlparser's Parser, such as set_index or index_mut, to allow users to mutate the index.
The expected implementation of our consume_token and consume_tokens:
/// Consumes the next token if it matches the expected token, otherwise return false.////// Note, the matching is not case sensitive.fnconsume_token(&mutself,expected:&str) -> bool{ifself.parser.peek_token().to_string().to_uppercase() == *expected.to_uppercase(){self.parser.next_token();true}else{false}}/// If the current and subsequent tokens exactly match the `tokens` sequence, consume them and returns true./// Otherwise, no tokens are consumed and returns false////// Note, the matching is not case sensitive.fnconsume_tokens(&mutself,tokens:&[&str]) -> bool{let index = self.parser.index();for token in tokens {if !self.consume_token(*token){// Or: `*self.parser.index_mut() = index;`self.parser.set_index(index);returnfalse;}}true}
The text was updated successfully, but these errors were encountered:
We have designed an SQL parser using sqlparser's
Parser
, and we wish to implement two helper methods for consuming tokens—similar toParser::consume_token
andParser::consume_tokens
—but with the ability to accept string inputs and perform case-insensitive matching.However, since the Parser does not provide a method to mutate the
Parser::index
, we are unable to correctly implement our ownconsume_tokens
because we need to revert the parser state if consumption fails mid-way.We propose adding and exposing a new method in sqlparser's
Parser
, such asset_index
orindex_mut
, to allow users to mutate the index.The expected implementation of our
consume_token
andconsume_tokens
:The text was updated successfully, but these errors were encountered: