regex-engine/README
Camden Dixie O'Brien c58cabd2e6 Replace build scripts with CMake
Rebuilding everything each time was getting a bit slow.
2024-10-27 00:12:57 +01:00

35 lines
1.2 KiB
Plaintext

REGEX ENGINE
I've thought for a while it would be fun and interesting to write my
own regular expression engine using Thompson's construction algorithm,
so here we are.
Grammar
This engine is not going to be strictly supporting any standard
syntax; the expression syntax I intend to support follows.
regex ::= sequence ( '|' sequence )*
sequence ::= term+
term ::= ( '.' | class | literal | '(' regex ')' ) quantifier?
class ::= '[' '^'? literal+ ']'
literal ::= non-special | '\' special
quantifier ::= '*' | '+' | '?'
special ::= quantifier | '|' | '(' | ')' | '[' | ']' | '^' | '\'
Building and Running Tests
The build uses CMake. There are two scripts, build.sh and test.sh,
which will (much to everybody's shock) build the project and run the
tests. The build script specifies Clang but the code is ISO C11 so it
should compile just fine with GCC or something instead.
scripts/build.sh # Compile library and tests
scripts/test.sh # Run tests
There is also an entr.sh script which will watch all the project's
files and rebuild then rerun the tests on any changes (uses entr --
hence the name of the script).