[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")
- [elpa] externals/parser-generator 38c2040 032/434: Improved markdown code examples, (continued)
- [elpa] externals/parser-generator 38c2040 032/434: Improved markdown code examples, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator e463bae 041/434: Passing tests for sorting lists, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 840c418 044/434: Improved comment about follow function, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 2a3a02d 083/434: Removed cache for LR-items for prefixes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 3ba5250 090/434: Removed debugging stuff, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 83298fe 099/434: Passing test for function that generates possible look-ahead permutations, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator e9697ea 100/434: Added function that tests if a look-ahead is valid or not, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 53c09f7 119/434: Added hash-table for productions indexed by production-number, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 58e5806 129/434: Renamed plugin from parser to parser-generator, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 0695275 143/434: More updates to docs, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 1b17ef8 159/434: Added another unit tests for translations,
ELPA Syncer <=
- [elpa] externals/parser-generator 04fdc96 167/434: Added unit-test for incremental translations, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator fa6237a 170/434: Added TODO items, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 71f03cc 171/434: Updated example, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 0b72792 177/434: Added failing unit tests for FIRST, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 181b499 178/434: Fixed bug in FIRST generation where multiple equal LHS:s, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator c4455db 179/434: Added TODO-item, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 84ffb4e 181/434: f-set max index is now set depending on if all non-terminals have been expanded or not, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 4aeed22 191/434: Passed tests for e-free first function, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 18d7c63 195/434: Added new function to merge lists of terminals, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 60d9968 202/434: Fixed valid look-ahead with k above 1, ELPA Syncer, 2021/11/29