Ragel favicon

Ragel

Ragel is a finite-state machine compiler and a parser generator targeting C, C++ and ASM. It can recognize byte sequences and execute code at arbitrary points in the process.

POTENTIAL USES Writing robust protocol implementations. Parsing data formats. Lexical analysis of programming languages. Validating user input.

FEATURES Construct finite state machines using: regular language operators state chart operators a scanner operator some mix of the above Embed actions into machines in arbitrary places. Control non-determinism using guarded operators. Minimize state machines using Hopcroft’s algorithm. Visualize output with Graphviz. Use byte, double byte or word-sized alphabets. Generate C, C++ or ASM (GNU, x86_64, System V ABI) code with no dependencies. Choose from table or control flow driven state machines.

Flex

Flex

Flex (fast lexical analyzer generator) is a tool for generating scanners. A scanner, sometimes called a tokenizer, is a progra ...