RPA Library

The Regular Pattern Analyzer Library (RPA) is a top-down recursive parser and pattern matching engine. The input grammar notation is Backus–Naur Form (BNF) and the produced output is a browsable Abstract Syntax Tree (AST). The grammar allows Regular Expressions, so the parser can also be used as RegEx or search engine. The execution engine supports muti-threading and it can parse multiple input streams simultaneously.

  • Features

  • - Backus–Naur Form (BNF)
  • - Produces a browsable Syntax Tree
  • - Regular Expressions
  • - Input Encodings: UTF8, UTF16
  • - Case sensitive/insensitive searching or parsing
  • - Left-Recursive expressions (direct and indirect)
  • - Right-Recursive expressions (direct and indirect)
  • - Multi-Threading.

If you would like to see the RPA engine in action, please check out the Online Demo

REX Library

The Regular Expressions Library (REX) is a Deterministic Finite Automata (DFA) implementation. One of the key features in REX is the native support for wide characters. By default REX uses 32-bit integer to encode the transtion symbols, but this could be redefined at build time to any other integral data type. REX will NOT split wide characters across multiple DFA states as other implementations supporting wide characters do. REX will always generate the same number of DFA states for a given regular expression complexity no matter what type and size of symbols are used.

If you would like to experiment with REX please check out REX Grep program.


REXJSON is a tiny library for parsing JSON format. It uses a DFA generated by the rexcc compiler. The implementation has a very small footprint. For more information check REX JSON Parser page.

The JSON parser is used in my open drone project for the JSON RPC communication between STM32F429 processor running FreeRTOS and i.MX6 Cortex-A9 ARM processor running embedded Linux. For more information please check the project website www.sigmadrone.org