Commit Graph

71 Commits

Author SHA1 Message Date
mark
82f2f028fa fixed line counts ignoring newlines after a // comment 2023-05-26 21:47:47 +02:00
mark
4356858ab2 made syntax cheat sheet a bit clearer 2023-05-26 20:18:09 +02:00
mark
45f6f30de3 revamped switch and match syntax 2023-05-26 20:02:46 +02:00
mark
be9403d63d added destructuring assignments for tuples (and lists on the left) 2023-05-26 18:46:47 +02:00
mark
e766e78e96 updated site + added docs/builtins.md + statements can end with ',' to differentiate '1, -2' from '1 - 2' == '-1'. 2023-05-25 00:22:03 +02:00
mark
b4b33b1c82 added := for initialization/declaration 2023-05-24 22:32:54 +02:00
mark
8e16140b0f fixed oversight 2023-05-24 01:00:42 +02:00
mark
c32419508e fixed examples 2023-05-23 23:56:45 +02:00
mark
9d3a149648 to_runnable treats assignment to a variable as initialization/declaration unless is_ref is true. if the variable doesn't exist yet, it will be created. for custom parser implementations, this means that making all variable assignments ones where is_ref is true will work just fine, but explicit declarations can be done by setting it to false if desired. always leaving it at false will repeatedly shadow the variable, so this isn't recommended although it does work. 2023-05-23 23:30:12 +02:00
mark
1ec7296f50 . 2023-05-23 20:52:48 +02:00
mark
9fd09eff37 fixed order of operations 2023-05-23 20:49:39 +02:00
mark
22b4ace81b added \r and \0 escape sequences 2023-05-23 20:24:32 +02:00
mark
07a443a60b <, <=, > and >= are ordered to happen before == and != instead of defaulting to left-to-right 2023-05-23 19:12:26 +02:00
mark
14d1995d8b add order of operations to the parser ( . | + - | * / % | == != < <= > >= | = ) 2023-05-23 12:20:36 +02:00
mark
7af9902b6a fixed [[2]].0.0 parsing 0.0 as a float, removed get_ref() and made get() return a reference to the inner value if called on a reference to a collection (&[int ...].get(0) returns []/[&int]). 2023-05-23 12:01:27 +02:00
mark
56b457e1b3 add missing file 2023-05-19 21:28:57 +02:00
mark
b5924b5da1 -f+c will print the parsed script with colored highlighting 2023-05-19 21:25:05 +02:00
mark
f2f5af94a7 . 2023-05-18 02:31:04 +02:00
mark
ac8d3befb7 temporarily made cloning actually clone, giving up on CopyOnWrite for now because I kept finding tiny bugs. This might harm performance, but overall performance was bad and will still be bad so who even cares, at least everything kindof works now. 2023-05-18 00:08:28 +02:00
mark
aff55fdc9e changed VData system again, renamed src/script to src/lang and added src/c.mers, which is an example something that currently does not work properly due to the VData implementation (and serves as a reminder to fix the issue) 2023-05-14 00:11:36 +02:00
mark
f8102c8fe6 (maybe?) fixed inner mutability on immutable (shared) values 2023-05-12 15:32:56 +02:00
mark
c501a6e558 fixed bug with function args and custom types 2023-05-12 15:03:20 +02:00
mark
f76ff55401 removed type_syntax.mers test because type force syntax will change (and has been removed for now).
i plan to move it to the statement itself rather than the assignment
2023-05-12 01:02:42 +02:00
mark
bba48b311f changed assignment parser from var = statement to statement = statement
left side of assignments can now be various different things instead of just variables. any statement that returns a reference can be used to assign to the value behind that reference. variables are automatically referenced, so the '&' can be omitted. if the variable contains a reference and that reference should be used, dereference it with *varname instead of just varname.
2023-05-12 00:44:47 +02:00
mark
6f31abd5cc changed VData implementation. It will now always (exception: references) behave like a clone BUT it will avoid cloning whenever possible using Copy-on-Write-style logic. 2023-05-11 14:49:49 +02:00
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
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
5a8edd9605 update site 2023-05-04 05:42:45 +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
b83f54cb2d added basic tests 2023-04-30 22:21:46 +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