Merge branch 'feature/coercions' of ssh://git.ablecorp.us:20/AbleScript/able-script into feature/coercions

pull/1/head
Alex Bethel 2021-12-14 16:16:44 -06:00
commit 235a5ae3a0
1 changed files with 10 additions and 6 deletions

View File

@ -37,12 +37,7 @@ impl<'source> Parser<'source> {
Token::Comment => continue,
// T-Dark block (replace `lang` with `script`)
Token::TDark => {
self.tdark = true;
let mut block = self.get_block()?;
ast.append(&mut block.block);
self.tdark = false;
}
Token::TDark => ast.extend(self.tdark_flow()?.block),
token => ast.push(self.parse(token)?),
}
}
@ -329,12 +324,21 @@ impl<'source> Parser<'source> {
loop {
match self.checked_next()? {
Token::RightCurly => break,
Token::TDark => block.extend(self.tdark_flow()?.block),
t => block.push(self.parse(t)?),
}
}
Ok(Block { block })
}
/// Parse T-Dark block
fn tdark_flow(&mut self) -> Result<Block, Error> {
self.tdark = true;
let block = self.get_block();
self.tdark = false;
block
}
/// If Statement parser gets any kind of value (Identifier or Literal)
/// It cannot parse it as it do not parse expressions. Instead of it it
/// will parse it to function call or print statement.