branch: externals/parser-generator
commit 3a178ed7d1e91431e351c4f10d10b63891c5b604
Author: Christian Johansson <christ...@cvj.se>
Commit: Christian Johansson <christ...@cvj.se>

    Exported LR parser now passes all tests
---
 parser-generator-lr-export.el           | 57 ++++-----------------------------
 parser-generator-lr.el                  |  7 ++--
 test/parser-generator-lr-export-test.el |  9 +++---
 3 files changed, 14 insertions(+), 59 deletions(-)

diff --git a/parser-generator-lr-export.el b/parser-generator-lr-export.el
index 2862221..e295322 100644
--- a/parser-generator-lr-export.el
+++ b/parser-generator-lr-export.el
@@ -520,8 +520,6 @@
                namespace
                namespace
                namespace
-               namespace
-               namespace
                namespace))
 
       (insert "
@@ -574,12 +572,14 @@
                   ;; (c) If f(u) = error, we halt parsing (and, in practice
                   ;; transfer to an error recovery routine)."
                namespace))
+
       (insert "
                   (error
                    (format
                     \"Invalid syntax! Expected one of %s found %s at %s\"
                     possible-look-aheads
                     look-ahead")
+
       (insert (format "
                     %s-lex-analyzer--index)
                    possible-look-aheads
@@ -702,8 +702,6 @@
                namespace
                namespace
                namespace
-               namespace
-               namespace
                namespace))
 
       (insert "
@@ -716,29 +714,9 @@
 ")
 
       (insert (format "
-                                  ;; If we have a translation for symbol, pop 
one
-                                  ;; otherwise push nil on translation 
argument stack
+                              ;; If we have a translation for symbol, pop one
+                              ;; otherwise push nil on translation argument 
stack
                               (if (gethash
-                                   temp-hash-key
-                                   translation-symbol-table)
-                                  (let ((symbol-translations
-                                         (gethash
-                                          temp-hash-key
-                                          translation-symbol-table)))
-                                    (push
-                                     partial-translation
-                                     symbol-translations)
-                                    (puthash
-                                     temp-hash-key
-                                     symbol-translations
-                                     translation-symbol-table)
-                                    (setq
-                                     translation
-                                     partial-translation))))))
-
-                          ;; If we have a translation for symbol, pop one
-                                  ;; otherwise push nil on translation 
argument stack
-                                  (if (gethash
                                        temp-hash-key
                                        translation-symbol-table)
                                       (let ((symbol-translations
@@ -772,13 +750,7 @@
                                        (funcall
                                         
(parser-generator--get-grammar-translation-by-number
                                          production-number)
-                                        popped-items-meta-contents)))"
-                      namespace
-                      namespace
-                      namespace
-                      namespace
-                      namespace
-                      namespace))
+                                        popped-items-meta-contents)))"))
 
       (insert "
                                   (let ((temp-hash-key
@@ -804,14 +776,7 @@
 
                               ;; When no translation is specified just use 
popped contents as translation
                               (let ((partial-translation
-                                     popped-items-meta-contents))"
-                                          namespace
-                                          namespace
-                                          namespace
-                                          namespace
-                                          namespace
-                                          namespace
-                                          namespace))
+                                     popped-items-meta-contents))"))
                (insert "
                                 (let ((temp-hash-key
                                        (format
@@ -903,13 +868,6 @@
                namespace
                namespace
                namespace
-               namespace
-               namespace
-               namespace
-               namespace
-               namespace
-               namespace
-               namespace
                ))
 
       ;; Parse
@@ -932,8 +890,6 @@
           history)))
     (nth 0 result)))\n"
                namespace
-               namespace
-               namespace
                namespace))
 
       ;; Translate
@@ -963,6 +919,7 @@
        (format
         "\n(provide '%s)"
         namespace))
+
       (insert
        (format
         "\n\n;;; %s.el ends here"
diff --git a/parser-generator-lr.el b/parser-generator-lr.el
index 00f0161..713d055 100644
--- a/parser-generator-lr.el
+++ b/parser-generator-lr.el
@@ -1011,7 +1011,6 @@
         (a)
         (a-look-ahead)
         (a-follow)
-        (a-follow-full)
         (a-index 0)
         (a-production)
         (a-production-number)
@@ -1157,10 +1156,9 @@
                           (when
                               signal-on-false
                             (error
-                             "Inconsistent grammar! '%S' (index: %d) with 
look-ahead '%S' conflicts with '%S' (index: %d) with look-ahead '%S' in 
sets:\n%S"
+                             "Inconsistent grammar! '%S' (index: %d) conflicts 
with '%S' (index: %d) with look-ahead '%S' in sets:\n%S"
                              a
                              a-index
-                             a-follow-full
                              b
                              b-index
                              b-suffix-follow-eff-item
@@ -1169,10 +1167,9 @@
                     (when
                         signal-on-false
                       (error
-                       "Inconsistent grammar! '%S' (index: %d) with look-ahead 
'%S' conflicts with '%S' (index: %d) with look-ahead '%S' in sets:\n%S"
+                       "Inconsistent grammar! '%S' (index: %d) conflicts with 
'%S' (index: %d) with look-ahead '%S' in sets:\n%S"
                        a
                        a-index
-                       a-follow-full
                        b
                        b-index
                        b-suffix-follow-eff-item
diff --git a/test/parser-generator-lr-export-test.el 
b/test/parser-generator-lr-export-test.el
index b9a7558..c2f0b68 100644
--- a/test/parser-generator-lr-export-test.el
+++ b/test/parser-generator-lr-export-test.el
@@ -62,7 +62,7 @@
     ;; Export parser
     (let ((export (parser-generator-lr-export-to-elisp "ba")))
       (parser-generator--debug
-       (message "export:\n%s\n" export))
+       (message "export:\n%S\n" export))
       (with-temp-buffer
         (insert export)
         (eval-buffer)
@@ -177,8 +177,8 @@
 
   ;; Export parser
   (let ((export (parser-generator-lr-export-to-elisp "e")))
-
-    (message "export:\n%S\n" export)
+    (parser-generator--debug
+     (message "export:\n%S\n" export))
 
     (with-temp-buffer
       (insert export)
@@ -232,7 +232,8 @@
     ;; Export parser
     (let ((export (parser-generator-lr-export-to-elisp "fa")))
       (with-temp-buffer
-        (message "Export:\n%S" export)
+        (parser-generator--debug
+         (message "export:\n%S\n" export))
         (insert export)
         (eval-buffer)
         (should

Reply via email to