summaryrefslogtreecommitdiff
path: root/src/ragel
diff options
context:
space:
mode:
authorJari Vetoniemi <mailroxas@gmail.com>2018-02-23 12:54:43 +0200
committerJari Vetoniemi <mailroxas@gmail.com>2018-02-23 12:54:43 +0200
commit4750be2da326297830691c54adbab0a5dea14802 (patch)
treeae7b9643ce3fdbf6c0ddc78c2626fb81416f1404 /src/ragel
parent22fb54a917676e61f19d773cc4f931300ace925e (diff)
wip
Diffstat (limited to 'src/ragel')
-rw-r--r--src/ragel/ragel.h30
-rw-r--r--src/ragel/ragel.rl91
2 files changed, 0 insertions, 121 deletions
diff --git a/src/ragel/ragel.h b/src/ragel/ragel.h
deleted file mode 100644
index b2c7572..0000000
--- a/src/ragel/ragel.h
+++ /dev/null
@@ -1,30 +0,0 @@
-#pragma once
-
-#include <stdint.h>
-#include <stdbool.h>
-
-struct ragel_mem {
- const char *data, *end;
- bool binary; // binary input bit
-};
-
-struct ragel {
- struct ragel_mem input; // block of input data
- uint64_t lineno; // current line
- const char *p, *pe, *eof; // see ragel doc
- const char *cl; // current line start
- const char *name; // may be current file name for example
- bool error; // error thrown bit
-};
-
-__attribute__((format(printf, 2, 3))) void
-ragel_throw_error(struct ragel *ragel, const char *fmt, ...);
-
-void
-ragel_set_name(struct ragel *ragel, const char *name);
-
-void
-ragel_advance_line(struct ragel *ragel);
-
-void
-ragel_feed_input(struct ragel *ragel, const bool eof, const struct ragel_mem *input);
diff --git a/src/ragel/ragel.rl b/src/ragel/ragel.rl
deleted file mode 100644
index 7e51030..0000000
--- a/src/ragel/ragel.rl
+++ /dev/null
@@ -1,91 +0,0 @@
-#include "ragel.h"
-#include <inttypes.h>
-#include <stdio.h>
-#include <stdarg.h>
-#include <assert.h>
-
-%%{
- machine ragel;
- write data noerror nofinal;
-
- action red { fputs("\x1b[31m", stderr); }
- action reset { fputs("\x1b[0m", stderr); }
- action end { fputs("\x1b[0m\n", stderr); }
- action mark { fputc((fpc == *error ? '^' : '~'), stderr); }
- action lead { fputc(' ', stderr); }
- action char { fputc(fc, stderr); }
-
- valid = ^cntrl - space - punct;
- mark_token = (space valid | punct) ${ *error = fpc; };
- search_err := ((any | mark_token) when { fpc != ragel->pe && fpc <= ragel->p })*;
-
- word = print | valid*;
- until_err = (any when { fpc != *error })*;
- print_err := (until_err <: (word - '\n') >red %reset <: (print - '\n')*) $char >*lead %!end %/end;
- print_mark := (until_err $lead <: (any | word) >red $mark) >*lead %!end %/end;
-}%%
-
-static void
-ragel_exec_error(const struct ragel *ragel, const int start_cs, const char **error)
-{
- (void)ragel_start;
- assert(ragel && ragel->cl && error);
- int cs = start_cs;
- const char *p = ragel->cl, *pe = ragel->pe, *eof = ragel->eof;
- assert(p <= pe);
- %% write exec;
-}
-
-void
-ragel_throw_error(struct ragel *ragel, const char *fmt, ...)
-{
- assert(ragel && fmt);
- ragel->error = true;
-
- const char *error = ragel->p;
-
- if (!ragel->input.binary)
- ragel_exec_error(ragel, ragel_en_search_err, &error);
-
- const char *name = (ragel->name ? ragel->name : "");
- assert(error >= ragel->cl);
- uint64_t column = (error - ragel->cl);
- fprintf(stderr, "\x1b[37m%s:%" PRIu64 ":%" PRIu64 " \x1b[31merror: \x1b[0m", name, ragel->lineno, column);
-
- va_list args;
- va_start(args, fmt);
- vfprintf(stderr, fmt, args);
- va_end(args);
- fputc('\n', stderr);
-
- if (!ragel->input.binary) {
- ragel_exec_error(ragel, ragel_en_print_err, &error);
- ragel_exec_error(ragel, ragel_en_print_mark, &error);
- }
-}
-
-void
-ragel_set_name(struct ragel *ragel, const char *name)
-{
- assert(ragel);
- ragel->name = name;
-}
-
-void
-ragel_advance_line(struct ragel *ragel)
-{
- assert(ragel);
- ++ragel->lineno;
- ragel->cl = ragel->p;
-}
-
-void
-ragel_feed_input(struct ragel *ragel, const bool eof, const struct ragel_mem *input)
-{
- assert(ragel);
- ragel->input = *input;
- ragel->cl = ragel->p = ragel->input.data;
- ragel->pe = ragel->input.end;
- ragel->eof = (eof ? ragel->pe : NULL);
- assert(ragel->p <= ragel->pe);
-}