emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/parser-generator 8c467b1bb1 07/82: Added another test f


From: Christian Johansson
Subject: [elpa] externals/parser-generator 8c467b1bb1 07/82: Added another test for merge max terminal sets
Date: Thu, 12 May 2022 13:28:13 -0400 (EDT)

branch: externals/parser-generator
commit 8c467b1bb18cf01fb7a07c2828d4b544475f58de
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>

    Added another test for merge max terminal sets
---
 parser-generator.el           | 38 ++++++++++++++++----------------------
 test/parser-generator-test.el | 11 ++++++++++-
 2 files changed, 26 insertions(+), 23 deletions(-)

diff --git a/parser-generator.el b/parser-generator.el
index c8cb20166a..c55cdeaceb 100644
--- a/parser-generator.el
+++ b/parser-generator.el
@@ -1317,28 +1317,22 @@
         (b-element)
         (b-index 0)
         (b-length (length b)))
-    (let ((continue t))
-      (while (and
-              (< a-index a-length)
-              (< merge-count k)
-              continue)
-        (setq a-element (nth a-index a))
-        (if (parser-generator--valid-e-p a-element)
-            (setq continue nil)
-          (push a-element merged)
-          (setq a-index (1+ a-index))
-          (setq merge-count (1+ merge-count)))))
-    (let ((continue t))
-      (while (and
-              (< b-index b-length)
-              (< merge-count k)
-              continue)
-        (setq b-element (nth b-index b))
-        (if (parser-generator--valid-e-p b-element)
-            (setq continue nil)
-          (push b-element merged)
-          (setq b-index (1+ b-index))
-          (setq merge-count (1+ merge-count)))))
+    (while (and
+            (< a-index a-length)
+            (< merge-count k))
+      (setq a-element (nth a-index a))
+      (unless (parser-generator--valid-e-p a-element)
+        (push a-element merged)
+        (setq merge-count (1+ merge-count)))
+      (setq a-index (1+ a-index)))
+    (while (and
+            (< b-index b-length)
+            (< merge-count k))
+      (setq b-element (nth b-index b))
+      (unless (parser-generator--valid-e-p b-element)
+        (push b-element merged)
+        (setq merge-count (1+ merge-count)))
+      (setq b-index (1+ b-index)))
     (nreverse merged)))
 
 ;; p. 357
diff --git a/test/parser-generator-test.el b/test/parser-generator-test.el
index f30622327c..931053399e 100644
--- a/test/parser-generator-test.el
+++ b/test/parser-generator-test.el
@@ -981,7 +981,16 @@
      '((a b b) (e))
      '((b) (b a b)))))
 
-  ;; TODO Example 5.14 p. 350 here
+  ;; Example 5.14 p. 350
+    (parser-generator-set-e-identifier 'e)
+    (parser-generator-set-look-ahead-number 2)
+    (should
+     (equal
+      '((a a) (a b) (b b))
+      (parser-generator--merge-max-terminal-sets
+       '((a b) (a e a) (b b) (b e b))
+       nil)))
+
 
   (message "Passed tests for (parser-generator--merge-max-terminal-sets)"))
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]