diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2015-07-09 07:15:10 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2015-07-09 07:15:10 -0700 |
commit | 54d43f3260baaad25f5598ff876799711fe109ea (patch) | |
tree | 2a11d79234c7f2767094129fe44ba9b118039c1e /ChangeLog | |
parent | 64f9da2d4335178f7ffa0008a33ed1ee375e807d (diff) | |
download | txr-54d43f3260baaad25f5598ff876799711fe109ea.tar.gz txr-54d43f3260baaad25f5598ff876799711fe109ea.tar.bz2 txr-54d43f3260baaad25f5598ff876799711fe109ea.zip |
Parser cleanup: embed scanner in parser.
* parser.c (parser_destroy): New GC finalizer static function.
(parser_ops): Register parser_destroy.
(parser_common_init): New function, shared by parse and parse_once.
Initializes embedded scanner.
(parser_cleanup): New function, shared by parse_once and
parser_destroy.
(parser): Use parser_common_init.
* parser.h (parser_t): New member, yyscan.
(reset_scanner, parser_common_init): Declared.
* parser.l (reset_scanner): New function.
* parser.y (parse_once): Use parser_common_init, and
thus perform only a few initializations. Do not
define scanner as a local variable.
(parse): Call reset_scanner instead of
yylex_init since the scanner is being reused,
and for the same reason do not call yylex_destroy.
GC will do that now.
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 25 |
1 files changed, 25 insertions, 0 deletions
@@ -1,3 +1,28 @@ +2015-07-09 Kaz Kylheku <kaz@kylheku.com> + + Parser cleanup: embed scanner in parser. + + * parser.c (parser_destroy): New GC finalizer static function. + (parser_ops): Register parser_destroy. + (parser_common_init): New function, shared by parse and parse_once. + Initializes embedded scanner. + (parser_cleanup): New function, shared by parse_once and + parser_destroy. + (parser): Use parser_common_init. + + * parser.h (parser_t): New member, yyscan. + (reset_scanner, parser_common_init): Declared. + + * parser.l (reset_scanner): New function. + + * parser.y (parse_once): Use parser_common_init, and + thus perform only a few initializations. Do not + define scanner as a local variable. + (parse): Call reset_scanner instead of + yylex_init since the scanner is being reused, + and for the same reason do not call yylex_destroy. + GC will do that now. + 2015-07-08 Kaz Kylheku <kaz@kylheku.com> Bugfix: define-modify-macro not registered for auto-loading. |