Daniel Kolesa
7febb8f5b1
remove internal_error
2021-05-03 00:39:00 +02:00
Daniel Kolesa
5b54c74f2a
remove call() methods from state
2021-05-02 22:44:38 +02:00
Daniel Kolesa
4dd1518f6c
s/run/call/
2021-04-30 02:55:20 +02:00
Daniel Kolesa
9c14e6ca65
rename r type to v
2021-04-29 20:02:04 +02:00
Daniel Kolesa
5d4bcaf797
use an ellipsis for variadics instead of V
2021-04-29 19:56:48 +02:00
Daniel Kolesa
e14d5c4aa3
remove automatic concatenating variadics
...
these were pretty much just pointless sugar for something that
can be better achieved with ordinary variadics and an extra call
(which is what it did, except in VM)
2021-04-29 19:29:51 +02:00
Daniel Kolesa
e52720ebb2
rename N in arglist to #
2021-04-29 04:15:16 +02:00
Daniel Kolesa
da7548664c
remove b and F arg types + renames + set default args to none
...
setting default args to none rather than whatever default
value allows for easily checking whether the arg was set,
without losing anything (since e.g. calling get_integer on
a none value still returns a 0)
'b' and 'F' were kinda ugly and handled special niches, which
are no longer a thing now that we're defaulting to none
2021-04-29 01:40:55 +02:00
Daniel Kolesa
a9afa89af6
rework API for by-name lookups/assignments, simplify VM for that
2021-04-28 03:23:17 +02:00
Daniel Kolesa
92281e88c1
remove state::get_alias(), make get_ident() return an optional
2021-04-26 02:42:08 +02:00
Daniel Kolesa
43e6dc9341
remove get_ utilities from ident
...
this is not a good api (it prevents extensibility, requires
handling errors twice to be safe - once on user side, once
internally - and so on); just cast it
2021-04-25 00:44:45 +02:00
Daniel Kolesa
f19fd57549
get rid of some more pointers in API
2021-04-24 23:50:06 +02:00
Daniel Kolesa
3e8db1042a
fix ivar and fvar lookup code
2021-04-24 23:43:34 +02:00
Daniel Kolesa
f4b8d077bb
alias_local and get_ident() memory safety (always return refs)
2021-04-24 23:34:44 +02:00
Daniel Kolesa
e7578f7e17
document error, ident
2021-04-20 02:52:27 +02:00
Daniel Kolesa
84f6d1f0d6
make std::span user replaceable
...
this will allow usage on some older compilers for those who want it
2021-04-15 20:27:24 +02:00
Daniel Kolesa
a5003678da
fix build with libc++, and try using it in CI with clang
2021-04-12 19:53:24 +02:00
Daniel Kolesa
5e9aefb52a
disable mac and mingw cross CI builds for now
...
apparently macos c++ stdlib is missing c++20 features (particularly
string_view doesn't seem to accept two pointers in a constructor)
and mingw is only present as gcc9 in ubuntu 20.04 (too old)
2021-04-12 03:59:01 +02:00
Daniel Kolesa
8114279816
fix warning with msvc
2021-04-12 00:17:07 +02:00
Daniel Kolesa
8207ef0ce3
use overloads for new var methods
2021-04-11 20:49:26 +02:00
Daniel Kolesa
b26bae3ec5
move standard library init outside state, make it never error
2021-04-11 19:36:41 +02:00
Daniel Kolesa
a2c50744da
remove public state::destroy()
2021-04-11 18:56:08 +02:00
Daniel Kolesa
e644674724
hide internal_state from all public headers
2021-04-11 18:46:45 +02:00
Daniel Kolesa
3ed7b59d0b
only store trivial types in any_value (manage strrefs manually)
2021-04-11 03:55:16 +02:00
Daniel Kolesa
d358dd83e7
halve the size of any_value by removing state pointer from it
...
this brings more advantages too like actually being default
constructible, so it can be used more easily in data structures etc
2021-04-11 03:32:33 +02:00
Daniel Kolesa
7229672f56
clean up command call parsing
2021-04-11 00:13:10 +02:00
Daniel Kolesa
0ee0ebfb42
clean up the main parser path
2021-04-10 19:32:01 +02:00
Daniel Kolesa
51f09c3dfb
clean up some more parser routines
2021-04-10 07:32:44 +02:00
Daniel Kolesa
a6426c60ee
rewrite compilearg
2021-04-10 05:53:17 +02:00
Daniel Kolesa
e5cf9452f2
rewirte compileblockmain
2021-04-10 05:32:07 +02:00
Daniel Kolesa
eac137e3c8
rewrite compileblocksub
2021-04-10 04:51:11 +02:00
Daniel Kolesa
c4d39caa61
rewrite compilelookup
2021-04-10 04:40:58 +02:00
Daniel Kolesa
416c6ba8fb
do not access parser state from error
2021-04-10 03:51:08 +02:00
Daniel Kolesa
83aa8bfd07
hide bcode pointers from public api
2021-04-10 03:37:59 +02:00
Daniel Kolesa
6d6a115d0c
remove leftover junk
2021-04-10 03:01:41 +02:00
Daniel Kolesa
d2b53b174e
move all codegen stuff, make instruction vector private
2021-04-10 02:56:49 +02:00
Daniel Kolesa
05661662d2
more codegen conversions
2021-04-10 02:15:06 +02:00
Daniel Kolesa
63023f8c5e
remove parser_state::gen_main
2021-04-10 00:54:28 +02:00
Daniel Kolesa
1bc94bf5af
move some more codegen into proper place
2021-04-10 00:42:01 +02:00
Daniel Kolesa
295c905c32
more codegen utils
2021-04-09 03:34:48 +02:00
Daniel Kolesa
3790435c34
add more codegen utils
2021-04-09 03:22:34 +02:00
Daniel Kolesa
51da22be06
add ivar/fvar/svar lookup funcs in codegen
2021-04-09 03:14:34 +02:00
Daniel Kolesa
bac186a0c7
move compileblockstr/compileunescapestr logic into gen
2021-04-09 02:54:36 +02:00
Daniel Kolesa
c0fc1aa452
abstract away ugly bcode reference creation
2021-04-09 01:12:52 +02:00
Daniel Kolesa
dcd5f61748
fewer direct accesses to code vector
2021-04-09 01:03:29 +02:00
Daniel Kolesa
e5a05a3199
remove parser_state::done()
2021-04-09 00:56:58 +02:00
Daniel Kolesa
283f23394d
add more codegen utilities
2021-04-09 00:50:13 +02:00
Daniel Kolesa
5f67b205df
initial bits for separation of codegen from parser
2021-04-09 00:41:55 +02:00
Daniel Kolesa
ccb0c09d59
rename codegen_state to parser_state and move it
...
later commits will rewrite the parser and separate the codegen
bits into their own API
2021-04-08 23:35:30 +02:00
Daniel Kolesa
9a2de6ffd3
move include install logic outside src/
2021-04-07 02:03:41 +02:00