Skip to content

Regular expression interpreter / validator with support for recursion

Notifications You must be signed in to change notification settings

GerbenAaltink/rrex

Folders and files

NameName
Last commit message
Last commit date
Sep 24, 2024
Aug 24, 2024
Sep 24, 2024
Sep 24, 2024
Aug 25, 2024
Sep 10, 2024
Aug 24, 2024
Aug 24, 2024
Sep 3, 2024
Sep 9, 2024
Sep 24, 2024
Sep 3, 2024
Sep 3, 2024
Aug 30, 2024
Sep 10, 2024
Sep 10, 2024
Sep 11, 2024
Sep 11, 2024
Sep 24, 2024
Sep 24, 2024

Repository files navigation

RREX

Regular expression interpreter / validator

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 and test

Benchmark vs. glibc regex. (Animated gif, takes some time to load)

Gif of build process

Todo / issues

  • 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

Make

all:

Runs the following tasks sequentially:

  • one-file: Merges, formats, and compiles a single C file.
  • format_all: Formats all .c and .h files using clang-format.
  • build: Compiles the main program (rrex2.c) with optimization and static linking.
  • run: Executes the compiled program (rrex2).

format_all:

Formats all .c and .h files in the directory using clang-format.

build:

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.

run:

Runs the compiled program (rrex2).

test:

Rebuilds the project by running the build target and then runs the program with test as an argument.

cli:

Runs the build target and then executes the program in CLI mode.

compiler:

Compiles compiler.c into an optimized executable compiler.o and then runs it.

backup:

Creates a compressed archive (rrex.rzip) of all .c, .h, Makefile, and markdown files in the directory.

coverage:

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 using genhtml.
  • Opens the coverage report in Google Chrome.
  • Cleans up intermediate coverage files and the binary.

About

Regular expression interpreter / validator with support for recursion

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published