From f7cdd6d4d2c492683f0b5f65fa2fe788772df7c8 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Mon, 7 Sep 2020 23:22:43 -0700 Subject: Cleanup, splitting into files --- vm.h | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 vm.h (limited to 'vm.h') diff --git a/vm.h b/vm.h new file mode 100644 index 0000000..2123c35 --- /dev/null +++ b/vm.h @@ -0,0 +1,50 @@ +/* + * vm.h - Source code for the BPEG virtual machine datatypes + */ + +enum VMOpcode { + VM_EMPTY = 0, + VM_ANYCHAR = 1, + VM_STRING, + VM_RANGE, + VM_NOT, + VM_UPTO, + VM_UPTO_AND, + VM_REPEAT, + VM_BEFORE, + VM_AFTER, + VM_CAPTURE, + VM_OTHERWISE, + VM_CHAIN, + VM_REPLACE, + VM_REF, +}; + +typedef struct vm_op_s { + enum VMOpcode op; + const char *start, *end; + 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; + 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; + -- cgit v1.2.3