diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2021-01-15 12:40:19 -0800 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2021-01-15 12:40:19 -0800 |
| commit | ce1868d707b0f0338a93057d017252c98e50e15d (patch) | |
| tree | 8ded2ca165610361d9ea21f7402db4a9fa6dd39c /compiler.c | |
| parent | 26fed0ec2848b023131df8c4fb967c360e0382a4 (diff) | |
Added support for `bp -p 'foo: "xx"; baz; baz: foo'`
Diffstat (limited to 'compiler.c')
| -rw-r--r-- | compiler.c | 21 |
1 files changed, 21 insertions, 0 deletions
@@ -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 |
