aboutsummaryrefslogtreecommitdiffstats
path: root/src/compiler.rs
diff options
context:
space:
mode:
authorEdvard Thörnros <edvard.thornros@gmail.com>2021-01-30 23:17:49 +0100
committerEdvard Thörnros <edvard.thornros@gmail.com>2021-01-30 23:17:49 +0100
commitd2fd074370d829d3d1dfbc6279f1fcbde769eeb3 (patch)
treeecd4e350205eb1bfece02f2baaac1282897f4ecb /src/compiler.rs
parent6b5e59311511b1462c7a10ba1389782f640e77a0 (diff)
downloadsylt-d2fd074370d829d3d1dfbc6279f1fcbde769eeb3.tar.gz
Add in the yield keyword
Diffstat (limited to 'src/compiler.rs')
-rw-r--r--src/compiler.rs8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/compiler.rs b/src/compiler.rs
index 92bf3fc..b7fdce1 100644
--- a/src/compiler.rs
+++ b/src/compiler.rs
@@ -473,7 +473,8 @@ impl Compiler {
let mut function_block = Block::new(&name, &self.current_file, self.line());
let block_id = self.blocks.len();
- self.blocks.push(Rc::new(RefCell::new(Block::new(&name, &self.current_file, self.line()))));
+ let new_block = Block::new(&name, &self.current_file, self.line());
+ self.blocks.push(Rc::new(RefCell::new(new_block)));
let _ret = push_frame!(self, function_block, {
loop {
@@ -888,6 +889,11 @@ impl Compiler {
}
}
+ (Token::Yield, ..) => {
+ self.eat();
+ block.add(Op::Yield, self.line());
+ }
+
(Token::Identifier(name), Token::ColonEqual, ..) => {
self.eat();
self.eat();