Skip to content

Commit c08817d

Browse files
Introduce Parser::parse_statements method
This is a preparation step for the introduction of generics in the next commit.
1 parent 890741a commit c08817d

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

src/parser.rs

+10-5
Original file line numberDiff line numberDiff line change
@@ -126,23 +126,28 @@ impl<'a> Parser<'a> {
126126
let mut tokenizer = Tokenizer::new(dialect, sql);
127127
let tokens = tokenizer.tokenize()?;
128128
let mut parser = Parser::new(tokens, dialect);
129+
debug!("Parsing sql '{}'...", sql);
130+
parser.parse_statements()
131+
}
132+
133+
/// Parse all tokens into a vector of statements.
134+
pub fn parse_statements(&mut self) -> Result<Vec<Statement>, ParserError> {
129135
let mut stmts = Vec::new();
130136
let mut expecting_statement_delimiter = false;
131-
debug!("Parsing sql '{}'...", sql);
132137
loop {
133138
// ignore empty statements (between successive statement delimiters)
134-
while parser.consume_token(&Token::SemiColon) {
139+
while self.consume_token(&Token::SemiColon) {
135140
expecting_statement_delimiter = false;
136141
}
137142

138-
if parser.peek_token() == Token::EOF {
143+
if self.peek_token() == Token::EOF {
139144
break;
140145
}
141146
if expecting_statement_delimiter {
142-
return parser.expected("end of statement", parser.peek_token());
147+
return self.expected("end of statement", self.peek_token());
143148
}
144149

145-
let statement = parser.parse_statement()?;
150+
let statement = self.parse_statement()?;
146151
stmts.push(statement);
147152
expecting_statement_delimiter = true;
148153
}

0 commit comments

Comments
 (0)