Commit Graph

335 Commits (7febb8f5b1c9a68d5022324ef9232c3e276459ba)

Author SHA1 Message Date
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