46 Commits

Author SHA1 Message Date
6b52d4d9cd Implement min heap 2024-11-02 14:15:22 +00:00
730ec80220 No longer set state zero to be final in fsa_init() 2024-10-29 13:14:35 +00:00
d35fa4e9da Rename construct to construct_nfa and improve tests 2024-10-29 09:29:10 +00:00
55e4e4f5ee Add non-base-case construct tests and fix construct logic 2024-10-27 17:07:19 +00:00
d4b7a0a25c Revert "Use char instead of int for FSA rule input"
This reverts commit eb22abfb1b6dbdf6dc702e3d9d99314cbbb22d7b.
2024-10-27 13:55:12 +00:00
d5b40f9324 Support subexpressions in construct() 2024-10-27 13:35:45 +00:00
bbecd12c91 Implement star construction 2024-10-27 13:33:40 +00:00
d54080032c Remove invalid assert() in construct() 2024-10-27 13:24:12 +00:00
280168bb6f Handle initial state being final in merge_fsas() 2024-10-27 13:23:15 +00:00
755f3f6805 Add runtime assertion on unhandled case in concat_fsas() 2024-10-27 13:21:29 +00:00
99b8d3bcd0 Define PARSE_FAIL and use instead of -1 in parse.c 2024-10-27 02:16:14 +00:00
8743a45b2a Use runtime asserts on allocation success in parse.c 2024-10-27 02:15:37 +00:00
721d0a2b49 Use runtime asserts instead of error returns in desugar.c
The error paths are not tested and are mostly for NULL allocations so
it makes more sense to use runtime asserts for now for simplicity's
sake.
2024-10-27 02:15:34 +00:00
eb22abfb1b Use char instead of int for FSA rule input 2024-10-27 01:52:33 +00:00
852102cab9 Implement union construction 2024-10-27 01:50:35 +00:00
007cddc292 Add some runtime assertions for state zero being final
I'm using this invariant to save work finding the final state so it
makes sense to test it.
2024-10-27 01:24:43 +01:00
c58cabd2e6 Replace build scripts with CMake
Rebuilding everything each time was getting a bit slow.
2024-10-27 00:12:57 +01:00
403d081e13 Move headers into include directories 2024-10-27 00:06:15 +01:00
2804638d84 Support sequences in construct() 2024-10-27 00:06:15 +01:00
2ac92f62f1 Implement NFA construction for empty expression and literals 2024-10-27 00:06:15 +01:00
ad6c385f42 Define FSA data structure 2024-10-26 22:17:53 +01:00
0ecab6c142 Rename free procedures 2024-10-26 19:36:59 +01:00
e508cc62f5 Rename structures and free procedures to reflect module change 2024-10-26 19:33:10 +01:00
b2a2cb9036 Move structures and free procedures back to dedicated files 2024-10-26 19:33:10 +01:00
3a578e190f Assert success of alloc in deep_copy_* loops
Returning false here would leave the destination sequence in an
invalid state and may lead to leaked memory; until this is solved
properly it is safer to assert().
2024-10-26 19:21:05 +01:00
ecfbf2e5c4 Implement (non-negated) class desugaring 2024-10-26 19:21:05 +01:00
07fc46ce38 Add success result to desugar_regex() 2024-10-26 19:21:05 +01:00
ac4e9911d8 Implement question mark desugaring 2024-10-26 19:21:05 +01:00
7e7a7f1cb7 Implement plus desugaring 2024-10-26 19:21:05 +01:00
295b68efa2 Rename some things in parse tree data structures 2024-10-26 19:21:05 +01:00
fd9fd7ce7f Add empty to term types 2024-10-26 15:49:37 +01:00
9494c08f36 Write invariant tests for desugaring 2024-10-26 15:39:13 +01:00
2bcdfbcd61 Expose parse tree free procedures 2024-10-26 15:09:06 +01:00
316cba949d Rename parser* files to parse* 2024-10-26 15:04:23 +01:00
5011e516e4 Add parse_ prefix to parser type names 2024-10-26 13:34:27 +01:00
e906c64bda Modify grammar slighly to simplify parse tree 2024-10-26 12:44:00 +01:00
0c4b033d75 Rename regex_t to parse_tree_t and merge module into parser 2024-10-26 12:10:35 +01:00
01fb9be1e7 Initialize everything explicitly in parser 2024-10-25 18:49:16 +01:00
b2f474336a Implement character class parsing 2024-10-25 18:49:16 +01:00
40db26a62d Handle quantifiers in parse_term() 2024-10-25 18:22:49 +01:00
80a26997b8 Add paren support to parser 2024-10-25 18:22:49 +01:00
da0175105d Implement special character escaping 2024-10-25 18:22:49 +01:00
a9b8e24007 Handle . in parse_term() 2024-10-25 18:22:49 +01:00
f434af5c96 Handle sequences in parser 2024-10-25 18:22:49 +01:00
584e92c29c Implement first iteration of parser and write test scripts 2024-10-25 14:24:50 +01:00
27b4b28fba Define regex_t data structure and write build script 2024-10-25 14:24:50 +01:00