diff options
| -rw-r--r-- | bp.c | 16 | ||||
| -rw-r--r-- | grammar.c | 15 | ||||
| -rw-r--r-- | grammar.h | 4 | ||||
| -rw-r--r-- | types.h | 2 |
4 files changed, 16 insertions, 21 deletions
@@ -172,7 +172,7 @@ int main(int argc, char *argv[]) file_t *replace_file = spoof_file("<replace argument>", flag); vm_op_t *rep = bp_replacement(replace_file, patref, replace_file->contents); check(rep, "Replacement failed to compile: %s", flag); - add_def(g, replace_file, replace_file->contents, "replacement", rep); + add_def(g, replace_file, "replacement", rep); rule = "replace-all"; } else if (FLAG("--grammar") || FLAG("-g")) { file_t *f = load_file(flag); @@ -195,29 +195,29 @@ int main(int argc, char *argv[]) file_t *def_file = spoof_file(def, src); vm_op_t *pat = bp_pattern(def_file, def_file->contents); check(pat, "Failed to compile pattern: %s", flag); - add_def(g, def_file, src, def, pat); + add_def(g, def_file, def, pat); } else if (FLAG("--define-string") || FLAG("-D")) { char *def = flag; char *eq = strchr(def, ':'); check(eq, "Rule definitions must include an ':'\n\n%s", usage); *eq = '\0'; char *src = ++eq; - file_t *def_file = spoof_file(def, flag); + file_t *def_file = spoof_file(def, src); vm_op_t *pat = bp_stringpattern(def_file, def_file->contents); - check(pat, "Failed to compile pattern: %s", flag); - add_def(g, def_file, src, def, pat); + check(pat, "Failed to compile pattern: %s", src); + add_def(g, def_file, def, pat); } else if (FLAG("--pattern") || FLAG("-p")) { check(npatterns == 0, "Cannot define multiple patterns"); file_t *arg_file = spoof_file("<pattern argument>", flag); vm_op_t *p = bp_pattern(arg_file, arg_file->contents); check(p, "Pattern failed to compile: %s", flag); - add_def(g, arg_file, flag, "pattern", p); + add_def(g, arg_file, "pattern", p); ++npatterns; } else if (FLAG("--pattern-string") || FLAG("-P")) { file_t *arg_file = spoof_file("<pattern argument>", flag); vm_op_t *p = bp_stringpattern(arg_file, arg_file->contents); check(p, "Pattern failed to compile: %s", flag); - add_def(g, arg_file, flag, "pattern", p); + add_def(g, arg_file, "pattern", p); ++npatterns; } else if (FLAG("--mode") || FLAG("-m")) { rule = flag; @@ -242,7 +242,7 @@ int main(int argc, char *argv[]) file_t *arg_file = spoof_file("<pattern argument>", argv[i]); vm_op_t *p = bp_stringpattern(arg_file, arg_file->contents); check(p, "Pattern failed to compile: %s", argv[i]); - add_def(g, arg_file, argv[i], "pattern", p); + add_def(g, arg_file, "pattern", p); ++npatterns; } else { printf("Unrecognized flag: %s\n\n%s\n", argv[i], usage); @@ -13,12 +13,11 @@ /* * Add a definition to the grammar */ -void add_def(grammar_t *g, file_t *f, const char *src, const char *name, vm_op_t *op) +void add_def(grammar_t *g, file_t *f, const char *name, vm_op_t *op) { def_t *def = new(def_t); def->next = g->firstdef; def->file = f; - def->source = src; def->name = name; def->op = op; g->firstdef = def; @@ -35,21 +34,20 @@ vm_op_t *load_grammar(grammar_t *g, file_t *f) src = after_spaces(src); while (*src) { const char *name = src; - const char *name_end = after_name(name); - check(name_end > name, "Invalid name for definition: %s", name); - name = strndup(name, (size_t)(name_end-name)); - src = after_spaces(name_end); + src = after_name(name); + check(src > name, "Invalid name for definition: %s", name); + name = strndup(name, (size_t)(src-name)); check(matchchar(&src, ':'), "Expected ':' in definition"); vm_op_t *op = bp_pattern(f, src); if (op == NULL) break; //check(op, "Couldn't load definition"); - add_def(g, f, src, name, op); + add_def(g, f, name, op); if (ret == NULL) { ret = op; } src = op->end; src = after_spaces(src); - if (*src && matchchar(&src, ';')) + if (matchchar(&src, ';')) src = after_spaces(src); } if (src < f->end) { @@ -82,7 +80,6 @@ void push_backref(grammar_t *g, const char *name, match_t *capture) { backref_t *backref = new(backref_t); backref->name = name; - backref->capture = capture; vm_op_t *op = new(vm_op_t); op->op = VM_BACKREF; op->start = capture->start; @@ -7,8 +7,8 @@ #include "file_loader.h" #include "types.h" -__attribute__((nonnull(1,3,4,5))) -void add_def(grammar_t *g, file_t *f, const char *src, const char *name, vm_op_t *op); +__attribute__((nonnull(1,3,4))) +void add_def(grammar_t *g, file_t *f, const char *name, vm_op_t *op); __attribute__((nonnull)) void push_backref(grammar_t *g, const char *name, match_t *capture); __attribute__((nonnull)) @@ -93,7 +93,6 @@ typedef struct match_s { */ typedef struct def_s { const char *name; - const char *source; file_t *file; vm_op_t *op; struct def_s *next; @@ -104,7 +103,6 @@ typedef struct def_s { */ typedef struct backref_s { const char *name; - match_t *capture; vm_op_t *op; struct backref_s *next; } backref_t; |
