mirror of
https://github.com/Noratrieb/crapderive.git
synced 2026-01-15 09:05:06 +01:00
mob
This commit is contained in:
parent
ce7deb7dc6
commit
f9a3d93558
5 changed files with 108 additions and 27 deletions
|
|
@ -9,6 +9,8 @@ use crate::error::{CompilerError, Result};
|
|||
pub enum Token<'a> {
|
||||
#[token("mov")]
|
||||
Mov,
|
||||
#[token("movb")]
|
||||
Movb,
|
||||
#[token("jmp")]
|
||||
Jmp,
|
||||
#[token("je")]
|
||||
|
|
@ -63,6 +65,7 @@ impl DebugPls for Stmt {
|
|||
#[derive(Debug, PartialEq, Eq, DebugPls)]
|
||||
pub enum StmtKind {
|
||||
Mov { to: Expr, from: Expr },
|
||||
Movb { to: Expr, from: Expr },
|
||||
Add { to: Expr, value: Expr },
|
||||
Sub { to: Expr, value: Expr },
|
||||
Mul { to: Expr, value: Expr },
|
||||
|
|
@ -160,6 +163,12 @@ where
|
|||
let from = self.expr()?;
|
||||
stmt(span.start..from.span.end, StmtKind::Mov { to, from })
|
||||
}
|
||||
Token::Movb => {
|
||||
let to = self.expr()?;
|
||||
expect!(self, Token::Comma);
|
||||
let from = self.expr()?;
|
||||
stmt(span.start..from.span.end, StmtKind::Movb { to, from })
|
||||
}
|
||||
Token::Jmp => {
|
||||
let to = self.expr()?;
|
||||
stmt(span.start..to.span.end, StmtKind::Jmp { to })
|
||||
|
|
@ -260,6 +269,7 @@ where
|
|||
expr(ExprKind::Symbol(name.to_owned()), span)
|
||||
}
|
||||
Token::Mov => return Err(CompilerError::not_allowed(span, "mov")),
|
||||
Token::Movb => return Err(CompilerError::not_allowed(span, "movb")),
|
||||
Token::Jmp => return Err(CompilerError::not_allowed(span, "jmp")),
|
||||
Token::Je => return Err(CompilerError::not_allowed(span, "je")),
|
||||
Token::Cmp => return Err(CompilerError::not_allowed(span, "cmp")),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue