Change type to peekable

This commit is contained in:
greg 2015-07-22 03:42:21 -07:00
parent cea29094cd
commit 5213dd327f

View File

@ -1,4 +1,5 @@
use std::slice::Iter; use std::slice::Iter;
use std::iter::Peekable;
use tokenizer::{Token}; use tokenizer::{Token};
use tokenizer::Token::*; use tokenizer::Token::*;
@ -17,7 +18,7 @@ pub enum ParseResult {
Err(String) Err(String)
} }
type Tokens<'a> = Iter<'a,Token>; type Tokens<'a> = Peekable<Iter<'a,Token>>;
macro_rules! expect { macro_rules! expect {
($tok:expr, $tokens:expr) => ( if !expect_token($tok, $tokens) { ($tok:expr, $tokens:expr) => ( if !expect_token($tok, $tokens) {
@ -27,7 +28,7 @@ macro_rules! expect {
pub fn parse(input: Vec<Token>) -> ParseResult { pub fn parse(input: Vec<Token>) -> ParseResult {
let mut tokens = input.iter(); let mut tokens: Tokens = input.iter().peekable();
if let ParseResult::Ok(ast) = let_expression(&mut tokens) { if let ParseResult::Ok(ast) = let_expression(&mut tokens) {
expect!(EOF, &mut tokens); expect!(EOF, &mut tokens);