38b5b48289
Support classes in construct step
2024-11-03 11:55:05 +00:00
3c4146468e
Reorder header includes in compile.c
2024-11-03 11:54:56 +00:00
d6d5951b95
Fix allocation issue in FSA module
2024-11-02 23:15:27 +00:00
232295fff4
Fix bug in table growing routine
2024-11-02 23:14:59 +00:00
34fee99232
Fix bug in construct_nfa
...
Intermediate final states were being left in by add_fsa(); we always
want to mark the added FSA's final state as non-final.
2024-11-02 23:12:23 +00:00
c6f0cf6381
Recurse on subexpression when desugaring
2024-11-02 17:24:40 +00:00
18271a2988
Create compile module combining passes together
2024-11-02 16:23:44 +00:00
018aec5339
Move procedure for running NFA into FSA module
2024-11-02 16:23:44 +00:00
557ab451a8
Implement conversion from NFA to DFA
2024-11-02 16:23:44 +00:00
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