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

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

[elpa] externals/parser-generator 1b17ef8 159/434: Added another unit te


From: ELPA Syncer
Subject: [elpa] externals/parser-generator 1b17ef8 159/434: Added another unit tests for translations
Date: Mon, 29 Nov 2021 15:59:31 -0500 (EST)

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

    Added another unit tests for translations
---
 parser-generator-lex-analyzer.el           |  6 +-
 test/parser-generator-lex-analyzer-test.el | 20 ++++---
 test/parser-generator-lr-test.el           | 94 ++++++++++++++++--------------
 3 files changed, 66 insertions(+), 54 deletions(-)

diff --git a/parser-generator-lex-analyzer.el b/parser-generator-lex-analyzer.el
index 97eee8c..3e978c6 100644
--- a/parser-generator-lex-analyzer.el
+++ b/parser-generator-lex-analyzer.el
@@ -64,7 +64,7 @@
                 (when (< look-ahead-length parser-generator--look-ahead-number)
                   (push next-look-ahead-item look-ahead)
                   (setq look-ahead-length (1+ look-ahead-length))
-                  (setq index (1+ index)))))
+                  (setq index (cdr (cdr next-look-ahead-item))))))
           (push (list parser-generator--e-identifier) look-ahead)
           (setq look-ahead-length (1+ look-ahead-length))
           (setq index (1+ index)))))
@@ -83,12 +83,12 @@
       (setq token (list token)))
     (let ((first-token (car token)))
       (setq parser-generator-lex-analyzer--index
-            (1+ parser-generator-lex-analyzer--index))
+            (cdr (cdr first-token)))
       first-token)))
 
 (defun parser-generator-lex-analyzer--reset ()
   "Reset lex-analyzer."
-  (setq parser-generator-lex-analyzer--index 0)
+  (setq parser-generator-lex-analyzer--index 1)
   (when parser-generator-lex-analyzer--reset-function
     (funcall parser-generator-lex-analyzer--reset-function)))
 
diff --git a/test/parser-generator-lex-analyzer-test.el 
b/test/parser-generator-lex-analyzer-test.el
index ad4df4c..7666a57 100644
--- a/test/parser-generator-lex-analyzer-test.el
+++ b/test/parser-generator-lex-analyzer-test.el
@@ -25,12 +25,12 @@
    (lambda (index)
      (let* ((string '(("a" 1 . 2) ("b" 2 . 3) ("c" 3 . 4) ("d" 4 . 5)))
             (string-length (length string))
-            (max-index (1+ index))
+            (max-index index)
             (tokens))
        (while (and
-               (< index string-length)
-               (< index max-index))
-         (push (nth index string) tokens)
+               (< (1- index) string-length)
+               (< (1- index) max-index))
+         (push (nth (1- index) string) tokens)
          (setq index (1+ index)))
        (nreverse tokens))))
   (should-error
@@ -39,6 +39,8 @@
   (should-error
    (parser-generator-lex-analyzer--peek-next-look-ahead))
 
+  (message "Passed failing lex analysis")
+
   (setq parser-generator--look-ahead-number 1)
   (should
    (equal
@@ -74,18 +76,20 @@
    (lambda (index)
      (let* ((string '(("a" 1 . 2) ("b" 2 . 3)))
             (string-length (length string))
-            (max-index (1+ index))
+            (max-index index)
             (tokens))
        (while (and
-               (< index string-length)
-               (< index max-index))
-         (push (nth index string) tokens)
+               (< (1- index) string-length)
+               (< (1- index) max-index))
+         (push (nth (1- index) string) tokens)
          (setq index (1+ index)))
        (nreverse tokens))))
   (should-error
    (parser-generator-lex-analyzer--pop-token))
   (parser-generator-lex-analyzer--reset)
 
+  (message "Passed failing lex analysis 2")
+
   (should
    (equal
     '("a" 1 . 2)
diff --git a/test/parser-generator-lr-test.el b/test/parser-generator-lr-test.el
index 0a3215b..ab71d3a 100644
--- a/test/parser-generator-lr-test.el
+++ b/test/parser-generator-lr-test.el
@@ -237,12 +237,12 @@
    (lambda (index)
      (let* ((string '((a 1 . 2) (a 2 . 3) (b 3 . 4) (b 4 . 5)))
             (string-length (length string))
-            (max-index (1+ index))
+            (max-index index)
             (tokens))
        (while (and
-               (< index string-length)
-               (< index max-index))
-         (push (nth index string) tokens)
+               (< (1- index) string-length)
+               (< (1- index) max-index))
+         (push (nth (1- index) string) tokens)
          (setq index (1+ index)))
        (nreverse tokens))))
 
@@ -258,12 +258,12 @@
    (lambda (index)
      (let* ((string '((a 1 . 2) (a 2 . 3) (b 3 . 4) (b 4 . 5) (b 5 . 6)))
             (string-length (length string))
-            (max-index (1+ index))
+            (max-index index)
             (tokens))
        (while (and
-               (< index string-length)
-               (< index max-index))
-         (push (nth index string) tokens)
+               (< (1- index) string-length)
+               (< (1- index) max-index))
+         (push (nth (1- index) string) tokens)
          (setq index (1+ index)))
        (nreverse tokens))))
 
@@ -284,12 +284,12 @@
    (lambda (index)
      (let* ((string '(("a" 1 . 2) ("a" 2 . 3) ("b" 3 . 4) ("b" 4 . 5)))
             (string-length (length string))
-            (max-index (1+ index))
+            (max-index index)
             (tokens))
        (while (and
-               (< index string-length)
-               (< index max-index))
-         (push (nth index string) tokens)
+               (< (1- index) string-length)
+               (< (1- index) max-index))
+         (push (nth (1- index) string) tokens)
          (setq index (1+ index)))
        (nreverse tokens))))
 
@@ -305,12 +305,12 @@
    (lambda (index)
      (let* ((string '(("a" 1 . 2) ("a" 2 . 3) ("b" 3 . 4) ("b" 4 . 5) ("b" 5 . 
6)))
             (string-length (length string))
-            (max-index (1+ index))
+            (max-index index)
             (tokens))
        (while (and
-               (< index string-length)
-               (< index max-index))
-         (push (nth index string) tokens)
+               (< (1- index) string-length)
+               (< (1- index) max-index))
+         (push (nth (1- index) string) tokens)
          (setq index (1+ index)))
        (nreverse tokens))))
 
@@ -334,9 +334,9 @@
      parser-generator-lex-analyzer--function
      (lambda (index)
        (with-current-buffer buffer
-         (when (<= (+ index 2) (point-max))
-           (let ((start (+ index 1))
-                 (end (+ index 2)))
+         (when (<= (+ index 1) (point-max))
+           (let ((start index)
+                 (end (+ index 1)))
              (let ((token (buffer-substring-no-properties start end)))
                `(,token ,start . ,end)))))))
 
@@ -361,7 +361,7 @@
     (switch-to-buffer buffer)
     (insert "if (a) { b; }")
 
-    (parser-generator-set-grammar '((Sp S) (";" OPEN_ROUND_BRACKET 
CLOSE_ROUND_BRACKET IF OPEN_CURLY_BRACKET CLOSE_CURLY_BRACKET VARIABLE) ((Sp S) 
(S (IF OPEN_ROUND_BRACKET VARIABLE CLOSE_ROUND_BRACKET OPEN_CURLY_BRACKET 
VARIABLE CLOSE_CURLY_BRACKET (lambda(args) (nreverse args))))) Sp))
+    (parser-generator-set-grammar '((Sp S) (";" OPEN_ROUND_BRACKET 
CLOSE_ROUND_BRACKET IF OPEN_CURLY_BRACKET CLOSE_CURLY_BRACKET VARIABLE) ((Sp S) 
(S (IF OPEN_ROUND_BRACKET VARIABLE CLOSE_ROUND_BRACKET OPEN_CURLY_BRACKET 
VARIABLE ";" CLOSE_CURLY_BRACKET (lambda(args) (format "(when %s %s)" (nth 2 
args) (nth 5 args)))))) Sp))
     (parser-generator-set-look-ahead-number 1)
     (parser-generator-process-grammar)
     (parser-generator-lr-generate-parser-tables)
@@ -370,28 +370,28 @@
      parser-generator-lex-analyzer--function
      (lambda (index)
        (with-current-buffer buffer
-         (goto-char index)
-         (unless (looking-at "[^ \n\t]")
-           (search-forward-regexp "[^ \n\t]")
-           (forward-char -1))
-         (let ((token))
-           (cond
-            ((looking-at "if")
-             (setq token `(IF ,(match-beginning 0) . ,(match-end 0))))
-            ((looking-at "(")
-             (setq token `(OPEN_ROUND_BRACKET ,(match-beginning 0) . 
,(match-end 0))))
-            ((looking-at ")")
-             (setq token `(CLOSE_ROUND_BRACKET ,(match-beginning 0) . 
,(match-end 0))))
-            ((looking-at "{")
-             (setq token `(OPEN_CURLY_BRACKET ,(match-beginning 0) . 
,(match-end 0))))
-            ((looking-at "}")
-             (setq token `(CLOSE_CURLY_BRACKET ,(match-beginning 0) . 
,(match-end 0))))
-            ((looking-at ";")
-             (setq token `(";" ,(match-beginning 0) . ,(match-end 0))))
-            ((looking-at "[a-zA-Z]+")
-             (setq token `(VARIABLE ,(match-beginning 0) . ,(match-end 0)))))
-           (message "Token: %s, index: %s, point: %s" token index (point))
-           token))))
+         (unless (>= index (point-max))
+           (goto-char index)
+           (unless (looking-at "[^ \n\t]")
+             (search-forward-regexp "[^ \n\t]" nil t nil)
+             (forward-char -1))
+           (let ((token))
+             (cond
+              ((looking-at "if")
+               (setq token `(IF ,(match-beginning 0) . ,(match-end 0))))
+              ((looking-at "(")
+               (setq token `(OPEN_ROUND_BRACKET ,(match-beginning 0) . 
,(match-end 0))))
+              ((looking-at ")")
+               (setq token `(CLOSE_ROUND_BRACKET ,(match-beginning 0) . 
,(match-end 0))))
+              ((looking-at "{")
+               (setq token `(OPEN_CURLY_BRACKET ,(match-beginning 0) . 
,(match-end 0))))
+              ((looking-at "}")
+               (setq token `(CLOSE_CURLY_BRACKET ,(match-beginning 0) . 
,(match-end 0))))
+              ((looking-at ";")
+               (setq token `(";" ,(match-beginning 0) . ,(match-end 0))))
+              ((looking-at "[a-zA-Z]+")
+               (setq token `(VARIABLE ,(match-beginning 0) . ,(match-end 0)))))
+             token)))))
 
     (setq
      parser-generator-lex-analyzer--get-function
@@ -404,9 +404,17 @@
 
     (should
      (equal
-      '((2 2 2 1 1) ("b" "a" "b" "a"))
+      '((1) ("(when a b)"))
       (parser-generator-lr--parse)))
 
+    (switch-to-buffer buffer)
+    (kill-region (point-min) (point-max))
+    (goto-char 1)
+    (insert "if (a) { b }")
+
+    (should-error
+     (parser-generator-lr--parse))
+
     (kill-buffer buffer))
   (message "Passed test with translation 2")
 



reply via email to

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