branch: externals/parser-generator commit bbcb22f06590e41118c50409c698d35bbe8eb5ce Author: Christian Johansson <christ...@cvj.se> Commit: Christian Johansson <christ...@cvj.se>
Optimized memory usage for f-sets --- parser-generator.el | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/parser-generator.el b/parser-generator.el index bb77a76..b3da68e 100644 --- a/parser-generator.el +++ b/parser-generator.el @@ -30,18 +30,10 @@ nil "Generated F-sets for grammar.") -(defvar parser-generator--f-sets-max-index - nil - "Max index for generated F-sets for grammar.") - (defvar parser-generator--f-free-sets nil "Generated e-free F-sets for grammar.") -(defvar parser-generator--f-free-sets-max-index - nil - "Max index for generated e-free F-sets for grammar.") - (defvar parser-generator--look-ahead-number nil "Current look-ahead number used.") @@ -676,13 +668,10 @@ (puthash i f-set f-sets) (setq i (+ i 1)))) (if disallow-e-first - (progn - (setq parser-generator--f-free-sets f-sets) - (setq parser-generator--f-free-sets-max-index (1- i))) - (setq parser-generator--f-sets f-sets) - (setq parser-generator--f-sets-max-index (1- i)))))) - (parser-generator--debug - (message "Generated F-sets"))))) + (setq parser-generator--f-free-sets (gethash (1- i) f-sets)) + (setq parser-generator--f-sets (gethash (1- i) f-sets))))))) + (parser-generator--debug + (message "Generated F-sets")))) ;; p. 357 (defun parser-generator--f-set (input-tape state stack) @@ -921,8 +910,8 @@ (if (and disallow-e-first (= first-length 0)) - (setq symbol-f-set (gethash symbol (gethash parser-generator--f-free-sets-max-index parser-generator--f-free-sets))) - (setq symbol-f-set (gethash symbol (gethash parser-generator--f-sets-max-index parser-generator--f-sets)))) + (setq symbol-f-set (gethash symbol parser-generator--f-free-sets)) + (setq symbol-f-set (gethash symbol parser-generator--f-sets))) (parser-generator--debug (message "symbol-f-set: %s" symbol-f-set)) (if (not symbol-f-set)