From 94516408d333ab37fb2b3957aaa314330c31c526 Mon Sep 17 00:00:00 2001 From: Roberto Alsina Date: Mon, 10 Jul 2023 16:39:01 -0300 Subject: [PATCH] Ragel state machine --- shortcodes.rl | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 shortcodes.rl diff --git a/shortcodes.rl b/shortcodes.rl new file mode 100644 index 0000000..2c0d2a9 --- /dev/null +++ b/shortcodes.rl @@ -0,0 +1,41 @@ +#include +#include "bstrlib/bstrlib.h" + +%%{ + machine shortcode; + + label = alpha+ > {label_start = p; printf("%s", label_start);} > {printf("=>%s", label_start);}; + + start = '{{' % {printf("start");}; + end = '}}' > {printf("end");}; + + main := (start label? end); + +}%% + +bstring parse(char *_input) { + %%write data; + char *eof, *ts, *te = 0; + int cs, act = 0; + + bstring output = bfromcstr("out"); + + bstring input = bfromcstr(_input); + char *p = input->data; + char *pe = p + blength(input); + + char *label_start = 0; + char *label_end = 0; + + + %% write init; + %% write exec; + + return output; +} + +int main(int argc, char **argv) { + bstring output = parse("{{foo}}"); + printf("\n%s\n", output->data); + return 0; +}