This regular expression validator is made with the target to be faster than the glibc regular expression validator and with success. In 23/25 tests it scores a better result than the original glibc validator. My bytecode compiler is way faster than the one provided by glibc and my executor often. For single validation, my validator is always a better choice.
Benchmark vs. glibc regex. (Animated gif, takes some time to load)
- Segmenation fault fix is expr ends with \d?
- rassert(!rrex("123", "[123]+b")); doesn't work
- abc with abc[gg]d matches valid. Shouldn't be so
Runs the following tasks sequentially:
one-file:
Merges, formats, and compiles a single C file.format_all:
Formats all.c
and.h
files usingclang-format
.build:
Compiles the main program (rrex2.c
) with optimization and static linking.run:
Executes the compiled program (rrex2
).
Formats all .c
and .h
files in the directory using clang-format
.
Compiles rrex2.c
into an executable named rrex2
with optimization (-O2
), all warnings enabled (-Wall
), and extra warnings enabled (-Wextra
). The executable is statically linked.
Runs the compiled program (rrex2
).
Rebuilds the project by running the build
target and then runs the program with test
as an argument.
Runs the build
target and then executes the program in CLI mode.
Compiles compiler.c
into an optimized executable compiler.o
and then runs it.
Creates a compressed archive (rrex.rzip
) of all .c
, .h
, Makefile, and markdown files in the directory.
Generates code coverage information:
- Removes existing coverage data files.
- Compiles
rrex2.c
with profiling and test coverage flags. - Executes the compiled coverage binary with
test
as an argument. - Captures coverage data with
lcov
and generates an HTML report usinggenhtml
. - Opens the coverage report in Google Chrome.
- Cleans up intermediate coverage files and the binary.