Skip to content

Latest commit

 

History

History
86 lines (65 loc) · 2.5 KB

README.md

File metadata and controls

86 lines (65 loc) · 2.5 KB

Moore Machine Filter

Boost.Test License: GPL v3

An experimental implementation of Moore machine filter for timed and untimed pattern matching. This implementation is tested on Ubuntu (18.04 and 20.04) and macOS 10.15 Catalina.

asciicast

Getting Started

Requirements

  • C++ compiler supporting C++17 and the corresponding libraries.
  • Boost (>= 1.59)
  • Eigen
  • CMake

Building

mkdir build
cd build && cmake -DCMAKE_BUILD_TYPE=Release -DBUFFER_SIZE=10 .. && make

Configuration

BUFFER_SIZE : The size of buffer in the Moore machine (default: 10).

Usage

Synopsis

filt [OPTIONS] -f FILE

Options

-h, --help Print a help message.
-V, --version Print the version.
-f file, --automaton file Read a (timed) automaton from file.
-u, --untimed (default) Untimed filtering mode.
-t, --timed Timed filtering mode.

Syntax of Timed Automata

You can use DOT language to represent a timed automaton or a NFA. For the timing constraints and other information, you can use the following custom attributes.

attribute value description
vertex init0 or 1init=1 if the state is initial
vertexmatch0 or 1match=1 if the state is accepting
edgelabel[a-z], [A-Z]the value represents the event on the transition
edgereseta list of integersthe set of variables reset after the transition
edgeguarda list of inequality constraintsthe guard of the transition

References

  • Waga, Masaki, and Ichiro Hasuo. "Moore-machine filtering for timed and untimed pattern matching." IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems 37.11 (2018): 2649-2660.