@@ -126,23 +126,28 @@ impl<'a> Parser<'a> {
126
126
let mut tokenizer = Tokenizer :: new ( dialect, sql) ;
127
127
let tokens = tokenizer. tokenize ( ) ?;
128
128
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 > {
129
135
let mut stmts = Vec :: new ( ) ;
130
136
let mut expecting_statement_delimiter = false ;
131
- debug ! ( "Parsing sql '{}'..." , sql) ;
132
137
loop {
133
138
// ignore empty statements (between successive statement delimiters)
134
- while parser . consume_token ( & Token :: SemiColon ) {
139
+ while self . consume_token ( & Token :: SemiColon ) {
135
140
expecting_statement_delimiter = false ;
136
141
}
137
142
138
- if parser . peek_token ( ) == Token :: EOF {
143
+ if self . peek_token ( ) == Token :: EOF {
139
144
break ;
140
145
}
141
146
if expecting_statement_delimiter {
142
- return parser . expected ( "end of statement" , parser . peek_token ( ) ) ;
147
+ return self . expected ( "end of statement" , self . peek_token ( ) ) ;
143
148
}
144
149
145
- let statement = parser . parse_statement ( ) ?;
150
+ let statement = self . parse_statement ( ) ?;
146
151
stmts. push ( statement) ;
147
152
expecting_statement_delimiter = true ;
148
153
}
0 commit comments