Skip to content

Commit 3b00121

Browse files
committed
Merge branch 'v0.2-beta' into 'main'
v0.2.3-beta See merge request mech-lang/mech!56
2 parents 8a024f8 + 352f7bf commit 3b00121

File tree

15 files changed

+1600
-2031
lines changed

15 files changed

+1600
-2031
lines changed

Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "mech"
3-
version = "0.2.3"
3+
version = "0.2.4"
44
authors = ["Corey Montella <[email protected]>"]
55
description = "Toolchain for the Mech programming language."
66
documentation = "https://mech-lang.org/docs"
@@ -18,8 +18,8 @@ gitlab = { repository = "mech-lang/mech", branch = "main" }
1818
maintenance = { status = "actively-developed" }
1919

2020
[dependencies]
21-
mech-core = "0.2.3"
22-
mech-syntax = "0.2.3"
21+
mech-core = "0.2.4"
22+
mech-syntax = "0.2.4"
2323
#mech-program = "0.2.2"
2424
#mech-utilities = "0.2.2"
2525

src/bin/mech.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ use serde_json;
2525

2626

2727
fn main() -> Result<(), MechError> {
28-
let version = "0.2.3";
28+
let version = "0.2.4";
2929
let text_logo = r#"
3030
┌─────────┐ ┌──────┐ ┌─┐ ┌──┐ ┌─┐ ┌─┐
3131
└───┐ ┌───┘ └──────┘ │ │ └┐ │ │ │ │ │

src/core/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "mech-core"
3-
version = "0.2.3"
3+
version = "0.2.4"
44
authors = ["Corey Montella <[email protected]>"]
55
description = "The Mech language runtime."
66
documentation = "http://docs.mech-lang.org"

src/syntax/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "mech-syntax"
3-
version = "0.2.3"
3+
version = "0.2.4"
44
authors = ["Corey Montella <[email protected]>"]
55
description = "A toolchain for compiling textual syntax into Mech blocks."
66
documentation = "http://docs.mech-lang.org"
@@ -21,7 +21,7 @@ default = []
2121
no-std = ["mech-core/no-std", "rlibc"]
2222

2323
[dependencies]
24-
mech-core = "0.2.3"
24+
mech-core = "0.2.4"
2525

2626
hashbrown = "0.14.5"
2727
lazy_static = "1.4.0"

src/syntax/benches/interpreter.rs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,10 @@ use hashbrown::{HashMap, HashSet};
1717

1818
use std::collections::VecDeque;
1919
use std::thread;
20-
use mech_core::*;
21-
use mech_core::function::table;
2220

2321
use std::fmt::*;
2422
use std::ops::*;
2523

26-
use mech_syntax::parser;
27-
use mech_syntax::ast::Ast;
28-
use mech_syntax::compiler::Compiler;
2924
use mech_core::*;
3025
use mech_syntax::parser;
3126
//use mech_syntax::analyzer::*;

src/syntax/src/interpreter.rs

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -346,23 +346,27 @@ fn subscript(sbscrpt: &Subscript, val: &Value, plan: Plan, symbols: SymbolTableR
346346
_ => todo!(),
347347
}
348348
},
349-
Subscript::Range(x) => todo!(),
349+
Subscript::Range(rng) => {
350+
let result = range(rng,plan.clone(), symbols.clone(), functions.clone())?;
351+
match result.as_vecusize() {
352+
Some(v) => Ok(v.to_value()),
353+
None => Err(MechError{tokens: vec![], msg: file!().to_string(), id: line!(), kind: MechErrorKind::UnhandledIndexKind}),
354+
}
355+
},
350356
Subscript::Swizzle(x) => todo!(),
351-
Subscript::Formula(fctr) => {return factor(fctr,plan.clone(), symbols.clone(), functions.clone());},
357+
Subscript::Formula(fctr) => {
358+
let result = factor(fctr,plan.clone(), symbols.clone(), functions.clone())?;
359+
result.as_index()
360+
},
352361
Subscript::Bracket(subs) => {
353362
let mut resolved_subs = vec![];
354363
for s in subs {
355364
let result = subscript(&s, val, plan.clone(), symbols.clone(), functions.clone())?;
356-
match result.as_index() {
357-
Some(ix) => resolved_subs.push(ix),
358-
None => { return Err(MechError{tokens: vec![], msg: file!().to_string(), id: line!(), kind: MechErrorKind::UnhandledIndexKind});}
359-
}
365+
resolved_subs.push(result);
360366
}
361-
let sub_value = match resolved_subs.len() {
362-
1 => resolved_subs[0].clone(),
363-
x => resolved_subs.iter().map(|s| s.as_usize().unwrap()).collect::<Vec<usize>>().to_value(),
364-
};
365-
let new_fxn = MatrixAccess{}.compile(&vec![val.clone(),sub_value])?;
367+
let mut fxn_input = vec![val.clone()];
368+
fxn_input.append(&mut resolved_subs);
369+
let new_fxn = MatrixAccess{}.compile(&fxn_input)?;
366370
new_fxn.solve();
367371
let res = new_fxn.out();
368372
let mut plan_brrw = plan.borrow_mut();

src/syntax/src/matrix.rs

Lines changed: 187 additions & 184 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)