Add boolean constant words
This commit is contained in:
parent
74dd36638f
commit
ac72c73e99
1 changed files with 22 additions and 0 deletions
|
@ -66,6 +66,9 @@ pub enum Instruction {
|
||||||
Mod,
|
Mod,
|
||||||
AsmQuote(String),
|
AsmQuote(String),
|
||||||
|
|
||||||
|
True,
|
||||||
|
False,
|
||||||
|
|
||||||
Multiple {
|
Multiple {
|
||||||
instruction: Box<Self>,
|
instruction: Box<Self>,
|
||||||
count: usize,
|
count: usize,
|
||||||
|
@ -535,6 +538,14 @@ impl compiler::Compilable<compiler::Compiler, hence::parser::ast::Body> for Inst
|
||||||
name: "std_set".to_string(),
|
name: "std_set".to_string(),
|
||||||
args: vec![hence::arg::Arg::Variable("MEM_ALLOC_PTR".to_string())],
|
args: vec![hence::arg::Arg::Variable("MEM_ALLOC_PTR".to_string())],
|
||||||
},
|
},
|
||||||
|
hence::parser::ast::Node::Call {
|
||||||
|
name: "tsr".to_string(),
|
||||||
|
arg: Some(hence::arg::Arg::Variable("CORE_REG_A".to_string())),
|
||||||
|
},
|
||||||
|
hence::parser::ast::Node::Call {
|
||||||
|
name: "tls".to_string(),
|
||||||
|
arg: None,
|
||||||
|
},
|
||||||
]),
|
]),
|
||||||
Instruction::Dot => Ok(vec![
|
Instruction::Dot => Ok(vec![
|
||||||
hence::parser::ast::Node::MacroCall {
|
hence::parser::ast::Node::MacroCall {
|
||||||
|
@ -1263,6 +1274,15 @@ impl compiler::Compilable<compiler::Compiler, hence::parser::ast::Body> for Inst
|
||||||
None => bail!("Condition by index not found: {}", x),
|
None => bail!("Condition by index not found: {}", x),
|
||||||
},
|
},
|
||||||
|
|
||||||
|
Instruction::True => Ok(vec![hence::parser::ast::Node::Call {
|
||||||
|
name: "push".to_string(),
|
||||||
|
arg: Some(hence::arg::Arg::Variable("TRUE".to_string())),
|
||||||
|
}]),
|
||||||
|
Instruction::False => Ok(vec![hence::parser::ast::Node::Call {
|
||||||
|
name: "push".to_string(),
|
||||||
|
arg: Some(hence::arg::Arg::Variable("FALSE".to_string())),
|
||||||
|
}]),
|
||||||
|
|
||||||
Instruction::Multiple { instruction, count } => {
|
Instruction::Multiple { instruction, count } => {
|
||||||
if *count == 0 {
|
if *count == 0 {
|
||||||
Ok(vec![])
|
Ok(vec![])
|
||||||
|
@ -1536,6 +1556,8 @@ impl Instruction {
|
||||||
"*" => Some(Instruction::Times),
|
"*" => Some(Instruction::Times),
|
||||||
"/" => Some(Instruction::Divide),
|
"/" => Some(Instruction::Divide),
|
||||||
"mod" => Some(Instruction::Mod),
|
"mod" => Some(Instruction::Mod),
|
||||||
|
"true" => Some(Instruction::True),
|
||||||
|
"false" => Some(Instruction::False),
|
||||||
_ => None,
|
_ => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue