From c328bff80cca96e18cdc16a9394e44f586c753bc Mon Sep 17 00:00:00 2001 From: fbz <fbz@onyx.(none)> Date: Fri, 25 Apr 2014 11:47:30 +0200 Subject: [PATCH] a first edit of a man page for hammer --- docs/hammerman.1 | 55 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 docs/hammerman.1 diff --git a/docs/hammerman.1 b/docs/hammerman.1 new file mode 100644 index 00000000..82a0ecf5 --- /dev/null +++ b/docs/hammerman.1 @@ -0,0 +1,55 @@ +.TH HAMMER 1 2014-04-23 Hammer +.SH NAME +Hammer \- a bit oriented parsing library +.SH SYNOPSIS +#include <hammer\/hammer.h> +.SH DESCRIPTION +.B Hammer +is a parsing library. Like many modern parsing libraries, it provides a parser combinator interface for writing grammars as inline domain-specific languages, but Hammer also provides a variety of parsing backends. It's also bit-oriented rather than character-oriented, making it ideal for parsing binary data such as images, network packets, audio, and executables. + +Hammer is written in C, but will provide bindings for other languages. If you don't see a language you're interested in on the list, just ask. + +Hammer currently builds under Linux, OS X, and Windows. +.SH NOTES +Bit-oriented -- grammars can include single-bit flags or multi-bit constructs that span character boundaries, with no hassle + +Thread-safe, reentrant + +Benchmarking for parsing backends -- determine empirically which backend will be most time-efficient for your grammar + + Parsing backends: + Packrat parsing + LL(k) + GLR + LALR + Regular expressions + Language bindings: + C++ + Java (not currently building; give us a few days) + Python + Ruby + Perl + Go + PHP + .NET +.SH EXAMPLE +.nf + 1 #include <hammer/hammer.h> + 2 #include <stdio.h> + 3 + 4 int main(int argc, char *argv[]) { + 5 uint8_t input[1024]; + 6 size_t inputsize; + 7 + 8 HParser *hello_parser = h_token("Hello World", 11); + 9 +10 inputsize = fread(input, 1, sizeof(input), stdin); +11 +12 HParseResult *result = h_parse(hello_parser, input, inputsize); +13 if(result) { +14 printf("yay!\n"); +15 } else { +16 printf("boo!\n"); +17 } +18 } +.fi -- GitLab