From 98aa7937b780b4fa0f50af95a0589840b7b988f6 Mon Sep 17 00:00:00 2001 From: Dmitry Ponyatov Date: Wed, 27 Feb 2019 12:04:49 +0400 Subject: [PATCH 1/3] + ragel Signed-off-by: Dmitry Ponyatov --- .gitignore | 3 +++ README.md | 10 ++++++++++ 2 files changed, 13 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..70bb2a2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*~ +*.swp + diff --git a/README.md b/README.md index 32d1f7e..f098a03 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,16 @@ file formats, network protocols or bitstreams. patterns. Generates an efficient stream based reader and writer for the runtime execution. +#### Generators suitable for resource-constrained embedded systems (low-end microcontrollers with few Kb of RAM) + +- [ragel](http://www.colm.net/open-source/ragel/) (embedded C, C++, Java, Go, Ruby, C#): + Ragel compiles executable finite state machines from regular languages. + Ragel state machines can not only recognize byte sequences as regular + expression machines do, but can also **execute code at arbitrary points + while the recognition process goes**. The key feature is a very compact + and human-readable *embedded C* code does not consume any buffers + and don't use external libraries. + ### Stand-alone software ##### Hex editors with grammars From 8821d3513627d24f4675cf23db4bc073c525b8b2 Mon Sep 17 00:00:00 2001 From: Dmitry Ponyatov Date: Wed, 27 Feb 2019 12:07:58 +0400 Subject: [PATCH 2/3] * light highlight (bold -> italic) Signed-off-by: Dmitry Ponyatov --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f098a03..1477c80 100644 --- a/README.md +++ b/README.md @@ -71,8 +71,8 @@ file formats, network protocols or bitstreams. - [ragel](http://www.colm.net/open-source/ragel/) (embedded C, C++, Java, Go, Ruby, C#): Ragel compiles executable finite state machines from regular languages. Ragel state machines can not only recognize byte sequences as regular - expression machines do, but can also **execute code at arbitrary points - while the recognition process goes**. The key feature is a very compact + expression machines do, but can also *execute code at arbitrary points + while the recognition process goes*. The key feature is a very compact and human-readable *embedded C* code does not consume any buffers and don't use external libraries. From aac581a9b6e23d303e00533184010bf5d9d251c0 Mon Sep 17 00:00:00 2001 From: Dmitry Ponyatov Date: Wed, 27 Feb 2019 12:18:09 +0400 Subject: [PATCH 3/3] + re2c Signed-off-by: Dmitry Ponyatov --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1477c80..93bcad3 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,13 @@ file formats, network protocols or bitstreams. expression machines do, but can also *execute code at arbitrary points while the recognition process goes*. The key feature is a very compact and human-readable *embedded C* code does not consume any buffers - and don't use external libraries. + and don't use external libraries. Has *FSM plotting for code documentation*. +- [re2c](http://re2c.org) (embedded C): + re2c is a free and open-source lexer generator for C and C++. + Its main goal is generating fast and compact embeddable lexers. + Instead of using traditional table-driven approach, re2c encodes the + generated finite state automata directly in the form of conditional + jumps and comparisons. Generated code does not use OS/libc buffering and I/O. ### Stand-alone software