use token::Token;
use std::mem::replace;
pub struct Buffer {
token: Option<Token>
}
impl Buffer {
pub fn new() -> Buffer {
Buffer {
token: None
}
}
pub fn is_empty(&mut self) -> bool {
self.token.is_none()
}
pub fn push_token(&mut self, token: Token) {
debug_assert!(self.token.is_none());
self.token = Some(token)
}
pub fn read_token(&mut self) -> Token {
debug_assert!(self.token.is_some());
replace(&mut self.token, None).unwrap()
}
pub fn peek_token(&mut self) -> &Token {
debug_assert!(self.token.is_some());
self.token.as_ref().unwrap()
}
pub fn unread_token(&mut self, token: Token) {
debug_assert!(self.token.is_none());
self.token = Some(token);
}
}