Skip to content

Commit

Permalink
雉兔
Browse files Browse the repository at this point in the history
  • Loading branch information
sozysozbot committed Jul 21, 2020
1 parent 8d6da57 commit c710778
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 2 deletions.
34 changes: 32 additions & 2 deletions src/compile/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,37 @@ fn compile_name_multi_statement(mut env: &mut Env, idents: &[parse::Identifier])

fn compile_statement(mut env: &mut Env, st: &parse::Statement) -> String {
match st {
parse::Statement::Reference { data, ident } => unimplemented!("reference"),
parse::Statement::Reference { data, ident: None } => { /* not named */
env.ans_counter += 1;
let r = format!(
"{}let _ans{} = {};\n",
" ".repeat(env.indent_level),
env.ans_counter,
compile_literal(&env, data)
);

env.variables_not_yet_named.push(format!("_ans{}", env.ans_counter));

return r;
},
parse::Statement::Reference { data, ident: Some(ident) } => {
env.ans_counter += 1;
let r = format!(
"{}let _ans{} = {};\n{}let {}{} = _ans{};\n",
" ".repeat(env.indent_level),
env.ans_counter,
compile_literal(&env, data),
" ".repeat(env.indent_level),
if env.ident_map.is_mutable(&ident) {
"mut "
} else {
""
},
env.ident_map.translate_from_hanzi(&ident),
env.ans_counter,
);
return r;
},
parse::Statement::NameMulti { idents } => {
return compile_name_multi_statement(&mut env, &idents)
}
Expand Down Expand Up @@ -352,7 +382,7 @@ fn compile_statement(mut env: &mut Env, st: &parse::Statement) -> String {
));
new_zhi1.push(format!("_ans{}", env.ans_counter));
}
env.variables_not_yet_named = new_zhi1;
env.variables_not_yet_named = new_zhi1; /* POSSIBLY FIXME */
return r;
}
parse::Statement::Print => {
Expand Down
4 changes: 4 additions & 0 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,10 @@ mod tests {
fn test043() {
test("test043")
}
#[test]
fn test044() {
test("test044")
}
}

use std::collections::HashMap;
Expand Down
12 changes: 12 additions & 0 deletions test044.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
fn main() {
let TOU2 = 35.0;
let ZU2 = 94.0;
let _ans1 = ZU2 / 2.0;
let _ans2 = _ans1 - TOU2;
let TU4 = _ans2;
let _ans3 = TOU2 - TU4;
let ZHI4 = _ans3;
let _ans4 = ZHI4;
let _ans5 = TU4;
println!("{} {}", _ans4, _ans5);
}
4 changes: 4 additions & 0 deletions test044.wy
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
吾有二數。曰三十五。曰九十四。名之曰「頭」曰「足」。
除「足」以二。減其以「頭」。名之曰「兔」。
減「頭」以「兔」。名之曰「雉」。
夫「雉」夫「兔」。書之。

0 comments on commit c710778

Please sign in to comment.