feat(tazjin/rlox): Implement unary negation operator
Change-Id: I9a5bd3581d4ed05371651697ec496341eb7971ae Reviewed-on: https://cl.tvl.fyi/c/depot/+/2572 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
This commit is contained in:
parent
47ffa80711
commit
2d9456d247
5 changed files with 32 additions and 0 deletions
|
|
@ -116,6 +116,10 @@ fn rule_for<T: Iterator<Item = Token>>(token: &TokenKind) -> ParseRule<T> {
|
|||
ParseRule::new(Some(Compiler::literal), None, Precedence::None)
|
||||
}
|
||||
|
||||
TokenKind::Bang => {
|
||||
ParseRule::new(Some(Compiler::unary), None, Precedence::None)
|
||||
}
|
||||
|
||||
_ => ParseRule::new(None, None, Precedence::None),
|
||||
}
|
||||
}
|
||||
|
|
@ -168,6 +172,7 @@ impl<T: Iterator<Item = Token>> Compiler<T> {
|
|||
|
||||
// Emit operator instruction
|
||||
match kind {
|
||||
TokenKind::Bang => self.emit_op(OpCode::OpNot),
|
||||
TokenKind::Minus => self.emit_op(OpCode::OpNegate),
|
||||
_ => unreachable!("only called for unary operator tokens"),
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue