Move parser util functions into separate module
This commit is contained in:
parent
101437d9fe
commit
4c085e89d4
1 changed files with 61 additions and 56 deletions
|
@ -1,5 +1,6 @@
|
|||
use crate::compiler::{
|
||||
ast::Expression::{self, *},
|
||||
parser::parser_utilities::*,
|
||||
token::{Token, TokenType},
|
||||
};
|
||||
|
||||
|
@ -131,7 +132,10 @@ fn parse_identifier<'source>(pos: &mut usize, tokens: &[Token<'source>]) -> Expr
|
|||
Identifier(token.text)
|
||||
}
|
||||
|
||||
fn consume_string<'source>(
|
||||
mod parser_utilities {
|
||||
use super::*;
|
||||
|
||||
pub fn consume_string<'source>(
|
||||
pos: &mut usize,
|
||||
tokens: &[Token<'source>],
|
||||
expected_string: &str,
|
||||
|
@ -139,7 +143,7 @@ fn consume_string<'source>(
|
|||
consume_strings(pos, tokens, &[expected_string])
|
||||
}
|
||||
|
||||
fn consume_strings<'source>(
|
||||
pub fn consume_strings<'source>(
|
||||
pos: &mut usize,
|
||||
tokens: &[Token<'source>],
|
||||
strings: &[&str],
|
||||
|
@ -156,7 +160,7 @@ fn consume_strings<'source>(
|
|||
}
|
||||
}
|
||||
|
||||
fn consume_type<'source>(
|
||||
pub fn consume_type<'source>(
|
||||
pos: &mut usize,
|
||||
tokens: &[Token<'source>],
|
||||
expected_type: TokenType,
|
||||
|
@ -164,7 +168,7 @@ fn consume_type<'source>(
|
|||
consume_types(pos, tokens, &[expected_type])
|
||||
}
|
||||
|
||||
fn consume_types<'source>(
|
||||
pub fn consume_types<'source>(
|
||||
pos: &mut usize,
|
||||
tokens: &[Token<'source>],
|
||||
types: &[TokenType],
|
||||
|
@ -181,13 +185,13 @@ fn consume_types<'source>(
|
|||
}
|
||||
}
|
||||
|
||||
fn consume<'source>(pos: &mut usize, tokens: &[Token<'source>]) -> Token<'source> {
|
||||
pub fn consume<'source>(pos: &mut usize, tokens: &[Token<'source>]) -> Token<'source> {
|
||||
let token = peek(pos, tokens);
|
||||
*pos += 1;
|
||||
token
|
||||
}
|
||||
|
||||
fn peek<'source>(pos: &mut usize, tokens: &[Token<'source>]) -> Token<'source> {
|
||||
pub fn peek<'source>(pos: &mut usize, tokens: &[Token<'source>]) -> Token<'source> {
|
||||
if let Some(token) = tokens.get(*pos) {
|
||||
token.clone()
|
||||
} else if let Some(last_token) = tokens.get(*pos - 1) {
|
||||
|
@ -196,6 +200,7 @@ fn peek<'source>(pos: &mut usize, tokens: &[Token<'source>]) -> Token<'source> {
|
|||
panic!("Input to parser appears to be empty!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
|
|
Reference in a new issue