From ce1868d707b0f0338a93057d017252c98e50e15d Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Fri, 15 Jan 2021 12:40:19 -0800 Subject: Added support for `bp -p 'foo: "xx"; baz; baz: foo'` --- compiler.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'compiler.c') diff --git a/compiler.c b/compiler.c index 951462a..8e782cc 100644 --- a/compiler.c +++ b/compiler.c @@ -593,4 +593,25 @@ vm_op_t *bp_pattern(file_t *f, const char *str) return op; } +// +// Match a definition (id__`:__pattern) +// +def_t *bp_definition(file_t *f, const char *str) +{ + const char *name = after_spaces(str); + str = after_name(name); + if (!str) return NULL; + size_t namelen = (size_t)(str - name); + if (!matchchar(&str, ':')) return NULL; + vm_op_t *pat = bp_pattern(f, str); + if (!pat) return NULL; + matchchar(&pat->end, ';'); // TODO: verify this is safe to mutate + def_t *def = new(def_t); + def->file = f; + def->namelen = namelen; + def->name = name; + def->op = pat; + return def; +} + // vim: ts=4 sw=0 et cino=L2,l1,(0,W4,m1 -- cgit v1.2.3