diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2015-06-07 20:08:22 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2015-06-07 20:08:22 -0700 |
commit | 76927b80247a348ea92732e0cf15e6beb2d56826 (patch) | |
tree | d928c16fcc8525313d4268784d91f7082b7102a7 /parser.y | |
parent | de547e4ec4e375531ac3d797c3e82ff2544f9464 (diff) | |
download | txr-76927b80247a348ea92732e0cf15e6beb2d56826.tar.gz txr-76927b80247a348ea92732e0cf15e6beb2d56826.tar.bz2 txr-76927b80247a348ea92732e0cf15e6beb2d56826.zip |
* parser.c (stream_parser_hash): New static variable.
(parser_mark): Mark parser and primer members.
(parser, ensure_parser): new argument: primer.
(get_parser_impl, ensure_parser): New static
functions.
(prime_parser): New function.
(lisp_parse): Multiple calls to this function on the same stream
now logically continue the parse, not resetting the line
number to 1.
(parse_init): Initialize and gc-protect stream_parser_hash.
* parser.h (parser_t): New members, primer and parser.
(prime_parser): Declared.
(parser): Declaration updated.
* parser.y (parse): Now responsible for calling prime_parser.
Diffstat (limited to 'parser.y')
-rw-r--r-- | parser.y | 1 |
1 files changed, 1 insertions, 0 deletions
@@ -1459,6 +1459,7 @@ int parse(parser_t *parser) parser->errors = 0; parser->prepared_msg = nil; parser->syntax_tree = nil; + prime_parser(parser->parser); yylex_init(&scanner); parser->scanner = convert(scanner_t *, scanner); |