mindustry logic execution, map- and schematic- parsing and rendering
Diffstat (limited to 'lemu/src/parser/mod.rs')
| -rw-r--r-- | lemu/src/parser/mod.rs | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/lemu/src/parser/mod.rs b/lemu/src/parser/mod.rs index b72c3b8..fc87a7a 100644 --- a/lemu/src/parser/mod.rs +++ b/lemu/src/parser/mod.rs @@ -16,13 +16,13 @@ use super::{ debug::info::{VarData, VarInfo}, executor::{ExecutorBuilderInternal, Instruction, UPInstr}, instructions::{ + AlwaysJump, ConditionOp, DynJump, End, Instr, Jump, MathOp1, MathOp2, Op1, Op2, PackColor, + Set, Stop, draw::{ Clear, Flush, Line, LinePoly, Poly, RectBordered, RectFilled, SetCol, SetColor, SetStroke, Triangle, }, io::{Print, Read, Write}, - AlwaysJump, ConditionOp, DynJump, End, Instr, Jump, MathOp1, MathOp2, Op1, Op2, PackColor, - Set, Stop, }, lexer::{Lexer, Token}, memory::{LAddress, LVar}, @@ -111,31 +111,31 @@ pub fn parse<'source, W: Wr>( let mut dbg_info: Vec<VarInfo> = Vec::with_capacity(64); macro_rules! push { // push a ident - ($var:expr) => {{ + (const $var:expr) => {{ let v = $var; dbg_info.push(VarInfo { - data: VarData::Variable(v), + data: VarData::Constant(v.clone().into()), span: tokens.span(), }); - executor.mem.push(LVar::null()); - mem.push(Some(v)); + executor.mem.push(LVar::from(v)); + mem.push(None); used = used .checked_add(1) .ok_or(Error::TooManyVariables(tokens.span()))?; - // SAFETY: just initialized executor.mem unsafe { Ok(LAddress::addr(used - 1)) } }}; - (const $var:expr) => {{ + ($var:expr) => {{ let v = $var; dbg_info.push(VarInfo { - data: VarData::Constant(v.clone().into()), + data: VarData::Variable(v), span: tokens.span(), }); - executor.mem.push(LVar::from(v)); - mem.push(None); + executor.mem.push(LVar::null()); + mem.push(Some(v)); used = used .checked_add(1) .ok_or(Error::TooManyVariables(tokens.span()))?; + // SAFETY: just initialized executor.mem unsafe { Ok(LAddress::addr(used - 1)) } }}; } @@ -145,7 +145,7 @@ pub fn parse<'source, W: Wr>( match mem .iter() .zip(0..used) - .find(|(&v, _)| v == Some(val)) + .find(|&(&v, _)| v == Some(val)) .map(|(_, i)| i) { Some(n) => unsafe { Ok(LAddress::addr(n)) }, |