aboutsummaryrefslogtreecommitdiff
path: root/bpeg.h
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2020-09-11 01:28:06 -0700
committerBruce Hill <bruce@bruce-hill.com>2020-09-11 01:28:06 -0700
commit2a11acc66738d6300bfa90a22adcd540371060f3 (patch)
tree4966c9864434da3e43594f0d86dd9362f367fd8e /bpeg.h
parent8a846230f7b4269af08a6b6496ebd28c4ff459ba (diff)
Major overhaul refactor restructuring
Diffstat (limited to 'bpeg.h')
-rw-r--r--bpeg.h112
1 files changed, 0 insertions, 112 deletions
diff --git a/bpeg.h b/bpeg.h
deleted file mode 100644
index 459bd65..0000000
--- a/bpeg.h
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * bpeg.h - Header file for the bpeg parser
- */
-#include <ctype.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#include "utils.h"
-
-const char *usage = (
- "Usage:\n"
- " bpeg [flags] <pattern> [<input files>...]\n\n"
- "Flags:\n"
- " -h --help\t print the usage and quit\n"
- " -v --verbose\t print verbose debugging info\n"
- " -s --slow\t run in slow mode for debugging\n"
- " -r --replace <replacement> replace the input pattern with the given replacement\n"
- " -g --grammar <grammar file> use the specified file as a grammar\n");
-
-/*
- * BPEG virtual machine opcodes
- */
-enum VMOpcode {
- VM_EMPTY = 0,
- VM_ANYCHAR = 1,
- VM_ANYTHING_BUT,
- VM_STRING,
- VM_RANGE,
- VM_NOT,
- VM_UPTO_AND,
- VM_REPEAT,
- VM_BEFORE,
- VM_AFTER,
- VM_CAPTURE,
- VM_OTHERWISE,
- VM_CHAIN,
- VM_REPLACE,
- VM_REF,
-};
-
-/*
- * A struct reperesenting a BPEG virtual machine operation
- */
-typedef struct vm_op_s {
- enum VMOpcode op;
- unsigned int multiline:1;
- const char *start, *end;
- // Length of the match, if constant, otherwise -1
- ssize_t len;
- union {
- const char *s;
- struct {
- char low, high;
- } range;
- struct {
- ssize_t min, max;
- struct vm_op_s *sep, *repeat_pat;
- } repetitions;
- // TODO: use a linked list instead of a binary tree
- struct {
- struct vm_op_s *first, *second;
- } multiple;
- struct {
- struct vm_op_s *replace_pat;
- const char *replacement;
- } replace;
- struct {
- struct vm_op_s *capture_pat;
- char *name;
- } capture;
- struct vm_op_s *pat;
- } args;
-} vm_op_t;
-
-/*
- * Pattern matching result object
- */
-typedef struct match_s {
- // Where the match starts and ends (end is after the last character)
- const char *start, *end;
- unsigned int is_capture:1, is_replacement:1, is_ref:1;
- const char *name_or_replacement;
- struct match_s *child, *nextsibling;
- vm_op_t *op;
-} match_t;
-
-static inline const char *after_spaces(const char *str);
-static match_t *free_match(match_t *m);
-static match_t *match(const char *str, vm_op_t *op);
-static vm_op_t *compile_bpeg(const char *source, const char *str);
-static vm_op_t *load_grammar(const char *grammar);
-static vm_op_t *add_def(const char *name, const char *source, vm_op_t *op);
-static vm_op_t *load_def(const char *name, const char *source);
-static vm_op_t *chain_together(vm_op_t *first, vm_op_t *second);
-static vm_op_t *compile_bpeg_string(const char *source, const char *str);
-static vm_op_t *expand_chain(const char *source, vm_op_t *first);
-static vm_op_t *expand_choices(const char *source, vm_op_t *op);
-static void print_match(match_t *m, const char *color);
-static void set_range(vm_op_t *op, ssize_t min, ssize_t max, vm_op_t *pat, vm_op_t *sep);
-
-
-typedef struct {
- const char *name;
- const char *source;
- vm_op_t *op;
-} def_t;
-
-static def_t defs[1024] = {{NULL, NULL, NULL}};
-size_t ndefs = 0;