87 Commits
Author SHA1 Message Date
cdo 601829bd29 Increase length of benchmark strings 2024-11-10 16:29:44 +00:00
cdo 4131af3912 Assign match result to volatile in benchmarks
This is needed to avoid the compiler eliding the call in
highly-optimised builds.
2024-11-10 16:28:38 +00:00
cdo 97529fdd2b Write some matching benchmarks 2024-11-10 15:22:28 +00:00
cdo e4d3b08bf2 Create benchmarking library 2024-11-10 15:22:28 +00:00
cdo 15a6195bf0 Use entr's -c flag in script 2024-11-10 15:17:00 +00:00
cdo b7737fba39 Tweak README 2024-11-03 13:20:26 +00:00
cdo dad687216b Surround input regex with .*( ).* in demo 2024-11-03 12:31:06 +00:00
cdo 656726a8c1 Move regex_t into parse.h and rename to parse_tree_t 2024-11-03 12:23:58 +00:00
cdo 1f248ad4cd Remove desugaring step 2024-11-03 12:16:52 +00:00
cdo e283fd2c52 Support + and ? in construct_nfa() 2024-11-03 12:16:38 +00:00
cdo 1fea81b74b Remove wildcard assert from desugar 2024-11-03 12:06:27 +00:00
cdo 77e1a77e02 Support wildcards in construct 2024-11-03 11:59:56 +00:00
cdo 892ff89a66 Add integration test using negated class 2024-11-03 11:55:05 +00:00
cdo 3c89cc4e99 Remove class desugaring 2024-11-03 11:55:05 +00:00
cdo 38b5b48289 Support classes in construct step 2024-11-03 11:55:05 +00:00
cdo 3c4146468e Reorder header includes in compile.c 2024-11-03 11:54:56 +00:00
cdo f95de25842 Turn off extensions in set_default_target_options 2024-11-02 23:47:09 +00:00
cdo d6d5951b95 Fix allocation issue in FSA module 2024-11-02 23:15:27 +00:00
cdo 232295fff4 Fix bug in table growing routine 2024-11-02 23:14:59 +00:00
cdo 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
cdo 074b174d0f Create some integration tests 2024-11-02 17:35:04 +00:00
cdo 5dbcaaaf40 Add ASSERT_ACCEPTS and ASSERT_REJECTS testing macros 2024-11-02 17:24:40 +00:00
cdo c6f0cf6381 Recurse on subexpression when desugaring 2024-11-02 17:24:40 +00:00
cdo c935279def Make demo program 2024-11-02 17:24:39 +00:00
cdo 18271a2988 Create compile module combining passes together 2024-11-02 16:23:44 +00:00
cdo 018aec5339 Move procedure for running NFA into FSA module 2024-11-02 16:23:44 +00:00
cdo 557ab451a8 Implement conversion from NFA to DFA 2024-11-02 16:23:44 +00:00
cdo 6b52d4d9cd Implement min heap 2024-11-02 14:15:22 +00:00
cdo 730ec80220 No longer set state zero to be final in fsa_init() 2024-10-29 13:14:35 +00:00
cdo d35fa4e9da Rename construct to construct_nfa and improve tests 2024-10-29 09:29:10 +00:00
cdo 55e4e4f5ee Add non-base-case construct tests and fix construct logic 2024-10-27 17:07:19 +00:00
cdo 3eb782f59f Execute NFA rather than inspecting in construct_tests 2024-10-27 14:18:46 +00:00
cdo d4b7a0a25c Revert "Use char instead of int for FSA rule input"
This reverts commit eb22abfb1b.
2024-10-27 13:55:12 +00:00
cdo d5b40f9324 Support subexpressions in construct() 2024-10-27 13:35:45 +00:00
cdo bbecd12c91 Implement star construction 2024-10-27 13:33:40 +00:00
cdo d54080032c Remove invalid assert() in construct() 2024-10-27 13:24:12 +00:00
cdo 280168bb6f Handle initial state being final in merge_fsas() 2024-10-27 13:23:15 +00:00
cdo 755f3f6805 Add runtime assertion on unhandled case in concat_fsas() 2024-10-27 13:21:29 +00:00
cdo edc14bc1de Tweak build script and README 2024-10-27 02:39:24 +00:00
cdo 99b8d3bcd0 Define PARSE_FAIL and use instead of -1 in parse.c 2024-10-27 02:16:14 +00:00
cdo 8743a45b2a Use runtime asserts on allocation success in parse.c 2024-10-27 02:15:37 +00:00
cdo 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
cdo eb22abfb1b Use char instead of int for FSA rule input 2024-10-27 01:52:33 +00:00
cdo 852102cab9 Implement union construction 2024-10-27 01:50:35 +00:00
cdo afd4cf928c Enable test output on failure in test.sh 2024-10-27 01:50:28 +00:00
cdo 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
cdo c58cabd2e6 Replace build scripts with CMake
Rebuilding everything each time was getting a bit slow.
2024-10-27 00:12:57 +01:00
cdo 403d081e13 Move headers into include directories 2024-10-27 00:06:15 +01:00
cdo 2804638d84 Support sequences in construct() 2024-10-27 00:06:15 +01:00
cdo 2ac92f62f1 Implement NFA construction for empty expression and literals 2024-10-27 00:06:15 +01:00
cdo 5d980cf64b Make scripts directly executable 2024-10-27 00:06:15 +01:00
cdo 8a06c7ceb6 Add ASSERT_LT() testing macro 2024-10-26 22:17:53 +01:00
cdo ad6c385f42 Define FSA data structure 2024-10-26 22:17:53 +01:00
cdo 0ecab6c142 Rename free procedures 2024-10-26 19:36:59 +01:00
cdo e508cc62f5 Rename structures and free procedures to reflect module change 2024-10-26 19:33:10 +01:00
cdo b3d54c307b Ignore clangd files 2024-10-26 19:33:10 +01:00
cdo b2a2cb9036 Move structures and free procedures back to dedicated files 2024-10-26 19:33:10 +01:00
cdo 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
cdo ecfbf2e5c4 Implement (non-negated) class desugaring 2024-10-26 19:21:05 +01:00
cdo 8e7e0f1bc0 Finish subexpr invariant test 2024-10-26 19:21:05 +01:00
cdo 07fc46ce38 Add success result to desugar_regex() 2024-10-26 19:21:05 +01:00
cdo ac4e9911d8 Implement question mark desugaring 2024-10-26 19:21:05 +01:00
cdo 7e7a7f1cb7 Implement plus desugaring 2024-10-26 19:21:05 +01:00
cdo 295b68efa2 Rename some things in parse tree data structures 2024-10-26 19:21:05 +01:00
cdo fd9fd7ce7f Add empty to term types 2024-10-26 15:49:37 +01:00
cdo 9494c08f36 Write invariant tests for desugaring 2024-10-26 15:39:13 +01:00
cdo 2bcdfbcd61 Expose parse tree free procedures 2024-10-26 15:09:06 +01:00
cdo cdaea7a1ec Remove build/ contents at start of build script 2024-10-26 15:04:26 +01:00
cdo 316cba949d Rename parser* files to parse* 2024-10-26 15:04:23 +01:00
cdo 5011e516e4 Add parse_ prefix to parser type names 2024-10-26 13:34:27 +01:00
cdo e906c64bda Modify grammar slighly to simplify parse tree 2024-10-26 12:44:00 +01:00
cdo 0c4b033d75 Rename regex_t to parse_tree_t and merge module into parser 2024-10-26 12:10:35 +01:00
cdo a85367c2df Add more info to README 2024-10-25 19:09:36 +01:00
cdo 01fb9be1e7 Initialize everything explicitly in parser 2024-10-25 18:49:16 +01:00
cdo b2f474336a Implement character class parsing 2024-10-25 18:49:16 +01:00
cdo 40db26a62d Handle quantifiers in parse_term() 2024-10-25 18:22:49 +01:00
cdo 80a26997b8 Add paren support to parser 2024-10-25 18:22:49 +01:00
cdo da0175105d Implement special character escaping 2024-10-25 18:22:49 +01:00
cdo a9b8e24007 Handle . in parse_term() 2024-10-25 18:22:49 +01:00
cdo f434af5c96 Handle sequences in parser 2024-10-25 18:22:49 +01:00
cdo 584e92c29c Implement first iteration of parser and write test scripts 2024-10-25 14:24:50 +01:00
cdo 63facb3954 Write testing framework 2024-10-25 14:24:50 +01:00
cdo 1a607488ce Ignore build/ directory 2024-10-25 14:24:50 +01:00
cdo 27b4b28fba Define regex_t data structure and write build script 2024-10-25 14:24:50 +01:00
cdo 8f4fe21bcf Write script for formatting code 2024-10-25 14:22:20 +01:00
cdo 308deb3886 Add AGPL 3.0 license 2024-10-25 14:21:55 +01:00
cdo 2957e913c0 Create README with grammar spec 2024-10-25 13:33:59 +01:00