Commit Graph

106 Commits

Author SHA1 Message Date
mark
79b169d951 fixed bug where all but the first loop iterations would write data to the mutable variables from the last iteration(s) even though the variables are supposed to be completely local: is_init can be set on steatements that have an output_to to force them to always redeclare and never reassign the new value. 2023-05-11 01:56:33 +02:00
mark
9ec4acaf70 made custom type names case-insensitive 2023-05-11 01:11:12 +02:00
mark
4efee9e2a2 completely changed the VData/VDataEnum system: Multiple VData can share one VDataEnum via an Arc<Mutex<VDataEnum>>. If one wants to modify the data, it copies it (Copy on Write). This copying is skipped for shared mutable data (references). This was necessary for the get_ref() function. Expect bugs! 2023-05-11 01:04:15 +02:00
mark
ceddb886a9 changed usize/isize static size types from u32/i32 to u64/i64 2023-05-10 20:02:36 +02:00
mark
924715cce1 changed while to loop in example .mers files 2023-05-09 22:18:39 +02:00
mark
a7bb3e67fa libraries can now work threaded if they wish (see http_requests). This means that multiple functions provided by one library can run at the same time (using thread(), see http.mers) and actually do the work they need to do simultaneously. 2023-05-09 22:11:13 +02:00
mark
9b92c5b353 . 2023-05-04 05:54:01 +02:00
mark
65dc9e577e . 2023-05-04 05:51:27 +02:00
mark
5e2b4a38b1 . 2023-05-04 05:46:23 +02:00
mark
df0a195a1f . 2023-05-04 05:45:28 +02:00
mark
5a8edd9605 update site 2023-05-04 05:42:45 +02:00
mark
f8e23d0ce8 Added index.html for the github page. Built from site/index.html using site/build.mers as a preprocessor. 2023-05-04 03:58:16 +02:00
mark
4c86897a71 fix nushell_plugins not compiling due to rename of parse module to parsing 2023-05-01 01:05:22 +02:00
mark
77cd1358e6 fixed bad error message if no arguments are provided 2023-04-30 22:41:36 +02:00
Mark
ea20d9960f
Update README.md 2023-04-30 22:34:11 +02:00
Mark
779605e7e6
Update rust.yml 2023-04-30 22:31:43 +02:00
mark
b83f54cb2d added basic tests 2023-04-30 22:21:46 +02:00
Mark
657f282006
Create rust.yml
i have no clue what i'm doing
2023-04-30 21:41:34 +02:00
mark
a36002b11d Merge branch 'main' of https://github.com/Dummi26/mers 2023-04-30 21:39:31 +02:00
mark
c370fc7e1e changed gitignore 2023-04-30 21:38:37 +02:00
Mark
d3f81af1d0
Delete nu_plugin_mers 2023-04-30 21:38:15 +02:00
Mark
644ff1bba8
Delete mers 2023-04-30 21:38:07 +02:00
mark
ca3dd4c798 forgot to add files to last commit. L. 2023-04-30 21:37:13 +02:00
Dummi26
0feb1b8778 added nushell support. 2023-04-30 17:31:50 +02:00
mark
1a446248e4 fixed 'type [custom type] does not fit in [litterally the same type but not custom]' problem 2023-04-29 19:56:54 +02:00
mark
ef5874747e added custom types that can be defined using 'type <name> <type>' 2023-04-29 19:04:38 +02:00
mark
8bafe58593 safety commit because i want to try cargo fix 2023-04-29 16:35:25 +02:00
Dummi26
690a4716fd add missing files 2023-04-29 01:48:06 +02:00
Dummi26
09d0d29138 added macro support, syntax is !(macro-type ...), i.e. !(mers my_file.mers) or !(mers { "value to compute at compile-time".regex("\\S+").assume_no_enum() }) 2023-04-29 01:45:00 +02:00
Dummi26
0a2c67c2d5 changed syntax from var::type to var: type 2023-04-26 22:53:22 +02:00
Dummi26
d9c354685f changed syntax from var::type = statement to var: type = statement 2023-04-26 22:52:31 +02:00
Dummi26
dd017ffea4 added clone() to dereference by cloning 2023-04-26 17:53:25 +02:00
Dummi26
9741fa64cc added thread(t) type to parser 2023-04-26 15:09:59 +02:00
Dummi26
e4ef85a9ea fixed bug with function-iterators 2023-04-26 14:18:57 +02:00
Dummi26
34be9adef2 fixed interactive mode activating on cli arguments that shouldn't activate it. 2023-04-26 13:52:30 +02:00
Dummi26
49f465c444 updated tutor and changed 'while' to 'loop' because while should be while <condition> <statement> while loop is loop <statement>, which is the actual syntax mers uses. 2023-04-25 20:54:35 +02:00
Dummi26
e8ee005743 removed print statement from tutor/mod.rs because it messed with cli editors 2023-04-25 19:43:11 +02:00
Dummi26
89cc7971ee - revamped fmt methods for VData, VType, and some others => value == parse(value.fmtgi(..))
- updated debug() method to output static_type :: dynamic_type :: value
- updated to_string() to output "val" if called on a string (it just uses the fmt methods)
- updated format() to only take strings as arguments
2023-04-25 19:38:00 +02:00
Dummi26
99f8c504a4 tutor 2023-04-25 15:15:21 +02:00
Dummi26
d66a0f37f2 tutor 2023-04-25 15:15:03 +02:00
Dummi26
ca1dbf2722 changed "var type = value" syntax to "var::type = value" and added the tutor (mers -t) 2023-04-25 02:55:16 +02:00
Dummi26
7baa1c2aba removed some temporary eprints 2023-04-24 16:27:42 +02:00
Dummi26
9c1564b426 added var_name var_type = statement syntax, which forces the statements return type to fit in var_type. This is useful if your initial value doesn't cover all types (like [ ...], which is a list with an inner type that cannot exist because there are 0 valid types, making the list completely useless. but arr [int/string ...] = [] expands that inner type to int/string, making the list usable) 2023-04-24 15:55:37 +02:00
Dummi26
14d004d848 added dereferences to assignments: x = 1 y = &x *y = 2 x.debug() will print 2 because we changed x through the reference. 2023-04-24 13:49:20 +02:00
Dummi26
ed8aecde86 added support for shebangs: if the file starts with "#!", the first line will be ignored. 2023-04-20 19:37:29 +02:00
Dummi26
5bb4d2e4a5 readme claimed &statement was valid, but it isn't. now it correctly states that &varname must be used to get a reference. 2023-04-19 16:16:34 +02:00
Dummi26
2fc3d52626 update readme to include the correct fn type syntax and fixed an example where list types didn't use ... yet. 2023-04-19 16:13:45 +02:00
Dummi26
2ac19dcd00 added iterators: any function that takes no arguments can be used in a for loop. Each iteration, it will be called once. If its value matches, the for loop will execute its block with that value. If the value doesn't match, the for loop will stop. This also required adding function types: fn((input11 input12 output1) (input21 input22 output2)). The type maps inputs to outputs, because the add function isn't add(int/float int/float) -> int/float, but rather add((int int int) (int float float) (float int float) (float float float)) (notice that add(int int) can't return float and any other add can't return ints). 2023-04-19 15:40:05 +02:00
Dummi26
2293e9365c added boolean functions not(a), and(a v) and or(a b). and and or are short-circuiting. 2023-04-19 14:32:30 +02:00
Dummi26
ea5346f81c fixed a bug where the character directly following a float literal would be ignored (because parsing the float accidentally used that character). this is what caused [12.5] to break. 2023-04-15 16:01:34 +02:00