summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2015-07-10 08:12:40 -0700
committerKaz Kylheku <kaz@kylheku.com>2015-07-10 08:12:40 -0700
commitc15319c711c8f91cd2d44db7065169c8081b94aa (patch)
treed8c8f1d4bb81fc48d0763f9ebe1dd43f95e82a43
parent5c4e844c2c9c25324c3c1cb6d47b2967f65c633d (diff)
downloadtxr-c15319c711c8f91cd2d44db7065169c8081b94aa.tar.gz
txr-c15319c711c8f91cd2d44db7065169c8081b94aa.tar.bz2
txr-c15319c711c8f91cd2d44db7065169c8081b94aa.zip
Remove unused "primer" member from parser_t.
* parser.c (parser_mark, parser_common_init): Remove reference to primer. (parser): Don't take primer argument, remove reference to member. (ensure_parser): Don't take primer argument, don't pass to parser function. (lisp_parse): Don't pass primer string to ensure_parser. * parser.h (primer_t): Remove primer member. (parser): Declaration updated.
-rw-r--r--ChangeLog13
-rw-r--r--parser.c11
-rw-r--r--parser.h3
3 files changed, 18 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index ade86529..aa862461 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,18 @@
2015-07-10 Kaz Kylheku <kaz@kylheku.com>
+ Remove unused "primer" member from parser_t.
+
+ * parser.c (parser_mark, parser_common_init): Remove reference to primer.
+ (parser): Don't take primer argument, remove reference to member.
+ (ensure_parser): Don't take primer argument, don't pass to parser
+ function.
+ (lisp_parse): Don't pass primer string to ensure_parser.
+
+ * parser.h (primer_t): Remove primer member.
+ (parser): Declaration updated.
+
+2015-07-10 Kaz Kylheku <kaz@kylheku.com>
+
Bugfix: lexer loses unmatched "hold char" between top-level forms.
Test case: file containing 4(prinl 3). Scanner consumes 4 and (.
diff --git a/parser.c b/parser.c
index 97c8f44a..26d7dfba 100644
--- a/parser.c
+++ b/parser.c
@@ -61,7 +61,6 @@ static void parser_mark(val obj)
gc_mark(p->prepared_msg);
if (p->syntax_tree != nao)
gc_mark(p->syntax_tree);
- gc_mark(p->primer);
}
static void parser_destroy(val obj)
@@ -87,7 +86,6 @@ void parser_common_init(parser_t *p)
p->name = nil;
p->prepared_msg = nil;
p->syntax_tree = nil;
- p->primer = nil;
yylex_init(&p->yyscan);
p->scanner = convert(scanner_t *, p->yyscan);
yyset_extra(p, p->scanner);
@@ -99,7 +97,7 @@ void parser_cleanup(parser_t *p)
yylex_destroy(p->scanner);
}
-val parser(val stream, val lineno, val primer)
+val parser(val stream, val lineno)
{
parser_t *p = coerce(parser_t *, chk_malloc(sizeof *p));
val parser;
@@ -108,7 +106,6 @@ val parser(val stream, val lineno, val primer)
p->parser = parser;
p->lineno = c_num(default_arg(lineno, one));
p->stream = stream;
- p->primer = primer;
return parser;
}
@@ -118,13 +115,13 @@ static parser_t *get_parser_impl(val parser)
return coerce(parser_t *, cobj_handle(parser, parser_s));
}
-static val ensure_parser(val stream, val primer)
+static val ensure_parser(val stream)
{
val cell = gethash_c(stream_parser_hash, stream, nulloc);
val pars = cdr(cell);
if (pars)
return pars;
- return set(cdr_l(cell), parser(stream, one, primer));
+ return set(cdr_l(cell), parser(stream, one));
}
void prime_parser(parser_t *p, int hold_byte)
@@ -244,7 +241,7 @@ val lisp_parse(val source_in, val error_stream, val error_return_val, val name_i
if3(stringp(source),
lit("string"),
stream_get_prop(input_stream, name_k)));
- val parser = ensure_parser(input_stream, lit("@\x01" "E"));
+ val parser = ensure_parser(input_stream);
val saved_dyn = dyn_env;
parser_t *pi = get_parser_impl(parser);
diff --git a/parser.h b/parser.h
index 83bd7c38..054c0ee1 100644
--- a/parser.h
+++ b/parser.h
@@ -39,7 +39,6 @@ typedef struct {
val name;
val prepared_msg;
val syntax_tree;
- val primer;
yyscan_t yyscan;
scanner_t *scanner;
} parser_t;
@@ -76,7 +75,7 @@ val lisp_parse(val source, val error_stream, val error_return_val, val name);
val read_eval_stream(val stream, val error_stream, val hash_bang_support);
void parser_common_init(parser_t *);
void parser_cleanup(parser_t *);
-val parser(val stream, val lineno, val primer);
+val parser(val stream, val lineno);
val get_parser(val stream);
val parser_errors(val parser);
void parse_init(void);