[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator b8a81c5 330/434: Added failing test
From: |
ELPA Syncer |
Subject: |
[elpa] externals/parser-generator b8a81c5 330/434: Added failing test |
Date: |
Mon, 29 Nov 2021 16:00:09 -0500 (EST) |
branch: externals/parser-generator
commit b8a81c5dcdeeb45d384196992866b443e477abc9
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
Added failing test
---
test/parser-generator-lr-test.el | 67 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 67 insertions(+)
diff --git a/test/parser-generator-lr-test.el b/test/parser-generator-lr-test.el
index 2b7ed8b..b33c09b 100644
--- a/test/parser-generator-lr-test.el
+++ b/test/parser-generator-lr-test.el
@@ -484,6 +484,70 @@
(parser-generator-lr-test--parse-incremental-vs-regular)
(message "Passed incremental-tests")
+ ;; TODO Test grammar that requires global and context-sensitive precedence
here
+ ;; https://www.gnu.org/software/bison/manual/html_node/Infix-Calc.html
+ (setq
+ parser-generator--e-identifier
+ '%empty)
+ (parser-generator-set-look-ahead-number 1)
+ (parser-generator-set-grammar
+ '(
+ (start input line exp)
+ ("+" "-" "*" "/" "^" "(" ")" "\n" NUM)
+ (
+ (start input)
+ (input
+ %empty
+ (input line))
+ (line
+ "\n"
+ (exp "\n" (lambda(args) (message "%s" args))))
+ (exp
+ NUM
+ (exp "+" exp (lambda(args) (+ (nth 0 args) (nth 2 args))))
+ (exp "-" exp (lambda(args) (- (nth 0 args) (nth 2 args))))
+ (exp "*" exp (lambda(args) (* (nth 0 args) (nth 2 args))))
+ (exp "/" exp (lambda(args) (/ (nth 0 args) (nth 2 args))))
+ ("-" (exp (%prec NEG)) (lambda(args) (- (nth 1 args))))
+ (exp "^" exp (lambda(args) (expt (nth 0 args) (nth 2 args))))
+ ("(" exp ")" (lambda(args) (nth 1)))))
+ start))
+ (setq
+ parser-generator-lex-analyzer--function
+ (lambda (index)
+ (with-current-buffer "*buffer*"
+ (let ((token))
+ (goto-char index)
+ (cond
+ ((looking-at "[0-9]+")
+ (setq
+ token
+ `(NUM ,(match-beginning 0) ,(match-end 0))))
+ ((looking-at "\\(\\+\\|\-\\|\*\\|\/\\|\\^\\|)\\|(\\|\n\\)")
+ (let ((symbol
+ (buffer-substring-no-properties
+ (match-beginning 0)
+ (match-end 0))))
+ (setq
+ token
+ `(,symbol ,(match-beginning 0) ,(match-end 0)))))
+ (t (error "Unexpected input at %d!" index)))
+ token))))
+ (setq
+ parser-generator-lex-analyzer--get-function
+ (lambda (token)
+ (car token)))
+ (parser-generator-process-grammar)
+ (parser-generator-lr-generate-parser-tables)
+ (let ((buffer (generate-new-buffer "*buffer*")))
+ (switch-to-buffer buffer)
+ (kill-region (point-min) (point-max))
+ (insert "5+5\n")
+ (should
+ (equal
+ 10
+ (parser-generator-lr-translate))))
+
(message "Passed tests for (parser-generator-lr--parse)"))
(defun parser-generator-lr-test-parse-k-2 ()
@@ -1064,6 +1128,9 @@
(parser-generator-set-grammar '((Sp S) ("a" "b") ((Sp S) (S (S "a" S "b"
(lambda(args) (let ((list "")) (dolist (item args) (when item (setq list
(format "%s%s" item list)))) list)))) (S e)) Sp))
(parser-generator-set-look-ahead-number 1)
+ (setq
+ parser-generator--e-identifier
+ 'e)
(parser-generator-process-grammar)
(parser-generator-lr-generate-parser-tables)
- [elpa] externals/parser-generator a86c658 305/434: Improved output, (continued)
- [elpa] externals/parser-generator a86c658 305/434: Improved output, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator dcbbdee 315/434: Started on support for symbol attributes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 0c1b8b6 316/434: Passing tests for symbol attributes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator c886537 311/434: Using references for distinct goto-tables to optimize memory usage, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 06bff4b 321/434: Improved validation of conflict-resolution using attributes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator ea898ce 317/434: Fixed code-styling, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator ae51103 323/434: Passing test for resolving conflict using precedence attributes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 35d6be3 327/434: Added TODO-items, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 4d60ed4 328/434: Added validation to context-sensitive attributes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator ce9ae69 329/434: Improved comment, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator b8a81c5 330/434: Added failing test,
ELPA Syncer <=
- [elpa] externals/parser-generator 06d23f5 340/434: More debugging, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator f213255 348/434: Passed all old unit tests again after translation refactor, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 886af5c 349/434: Uncommented export tests until refactor is ok, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 99aa5b6 350/434: Added more unit tests for calculator, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator d8fb2da 354/434: Just white-space fixes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 3964649 359/434: Added more failing unit tests, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 6e0e781 360/434: More debugging, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 2c262a4 362/434: Added new error when there is grammar conflict in action-table generation and no precedence comparison function is defined, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator a7a9506 366/434: Refactored structure of context-sensitive attributes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 98ab0e4 377/434: More work on precedence logic in unit tests, ELPA Syncer, 2021/11/29