luallaby 0.1.0

**Work in progress** A pure-Rust Lua interpreter/compiler
Documentation
use crate::ast::{Block, Exp, Parser};
use crate::error::Result;
use crate::lexer::{Pos, Token};

/// ```text
/// stat ::= repeat block until exp
/// ```
pub struct Repeat {
    pub block: Box<Block>,
    pub cond: Box<Exp>,
    pub pos_until: Pos,
}

impl<'a> Parser<'a> {
    pub(super) fn parse_repeat(&mut self) -> Result<Repeat> {
        tok_expect!(self, Token::Repeat);

        let block = Box::new(self.parse_block()?);

        let pos_until = tok_expect!(self, Token::Until);

        let cond = Box::new(self.parse_exp()?);

        Ok(Repeat {
            block,
            cond,
            pos_until,
        })
    }
}