aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bp.c16
-rw-r--r--grammar.c15
-rw-r--r--grammar.h4
-rw-r--r--types.h2
4 files changed, 16 insertions, 21 deletions
diff --git a/bp.c b/bp.c
index bcc8b98..90f0652 100644
--- a/bp.c
+++ b/bp.c
@@ -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);
diff --git a/grammar.c b/grammar.c
index b980196..ba9d2a0 100644
--- a/grammar.c
+++ b/grammar.c
@@ -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;
diff --git a/grammar.h b/grammar.h
index 7aa92fc..5f03bc9 100644
--- a/grammar.h
+++ b/grammar.h
@@ -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))
diff --git a/types.h b/types.h
index 67d5e33..db22eb3 100644
--- a/types.h
+++ b/types.h
@@ -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;