[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator 21fef5c 388/434: Passing all tests for
From: |
ELPA Syncer |
Subject: |
[elpa] externals/parser-generator 21fef5c 388/434: Passing all tests for infix calculator |
Date: |
Mon, 29 Nov 2021 16:00:22 -0500 (EST) |
branch: externals/parser-generator
commit 21fef5c21bcfe79d749c6682972706353de8def1
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
Passing all tests for infix calculator
---
test/parser-generator-lr-test.el | 115 ++++++++++++++++++++++++++++++++++-----
1 file changed, 102 insertions(+), 13 deletions(-)
diff --git a/test/parser-generator-lr-test.el b/test/parser-generator-lr-test.el
index e0e19f6..3137457 100644
--- a/test/parser-generator-lr-test.el
+++ b/test/parser-generator-lr-test.el
@@ -388,12 +388,12 @@
(exp "\n" (lambda(args) (nth 0 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 "+" exp (lambda(args) (+ (float (nth 0 args)) (nth 2 args))))
+ (exp "-" exp (lambda(args) (- (float (nth 0 args)) (nth 2 args))))
+ (exp "*" exp (lambda(args) (* (float (nth 0 args)) (nth 2 args))))
+ (exp "/" exp (lambda(args) (/ (float (nth 0 args)) (nth 2 args))))
+ ("-" exp %prec NEG (lambda(args) (- (float (nth 1 args)))))
+ (exp "^" exp (lambda(args) (expt (float (nth 0 args)) (nth 2 args))))
("(" exp ")" (lambda(args) (nth 1 args)))))
start))
(parser-generator-process-grammar)
@@ -451,7 +451,7 @@
(let ((translate (parser-generator-lr-translate)))
(should
(equal
- 17
+ 17.0
translate)))
(kill-buffer))
(message "Passed correct precedence of 2+3*5 = 2+(3*5) = 17")
@@ -467,7 +467,7 @@
(let ((translate (parser-generator-lr-translate)))
(should
(equal
- 16
+ 16.0
translate)))
(kill-buffer))
(message "Passed incorrect precedence of 2*3+5 => 2*(3+5) = 16")
@@ -490,7 +490,7 @@
(let ((translate (parser-generator-lr-translate)))
(should
(equal
- 17
+ 17.0
translate)))
(message "Passed correct precedence of 2+3*5 => 2+(3*5) = 17")
@@ -499,19 +499,108 @@
(let ((translate (parser-generator-lr-translate)))
(should
(equal
- 11
+ 11.0
translate)))
(message "Passed correct precedence of 2*3+5 => (2*3)+5 = 11")
- ;; TODO Should make this work
+ (kill-region (point-min) (point-max))
+ (insert "2-3*5\n")
+ (let ((translate (parser-generator-lr-translate)))
+ (should
+ (equal
+ -13.0
+ translate)))
+ (message "Passed correct precedence of 2-3*5 => 2-(3*5) = -13")
+
+ (kill-region (point-min) (point-max))
+ (insert "2*3-5\n")
+ (let ((translate (parser-generator-lr-translate)))
+ (should
+ (equal
+ 1.0
+ translate)))
+ (message "Passed correct precedence of 2*3-5 => (2*3)-5 = 1")
+
+ (kill-region (point-min) (point-max))
+ (insert "2+10/5\n")
+ (let ((translate (parser-generator-lr-translate)))
+ (should
+ (equal
+ 4.0
+ translate)))
+ (message "Passed correct precedence of 2+10/5 => 2+(10/5) = 4")
+
+ (kill-region (point-min) (point-max))
+ (insert "10/5+2\n")
+ (let ((translate (parser-generator-lr-translate)))
+ (should
+ (equal
+ 4.0
+ translate)))
+ (message "Passed correct precedence of 10/5+2 => (10/5)+2 = 4")
+
+ (kill-region (point-min) (point-max))
+ (insert "- 55\n")
+ (let ((translate (parser-generator-lr-translate)))
+ (should
+ (equal
+ -55.0
+ translate)))
+ (message "Passed correct precedence of - 55")
+
+ (kill-region (point-min) (point-max))
+ (insert "-56 + 2\n")
+ (let ((translate (parser-generator-lr-translate)))
+ (should
+ (equal
+ -54.0
+ translate)))
+ (message "Passed correct precedence of -56 + 2 = -54")
+
+ (kill-region (point-min) (point-max))
+ (insert "3+-3\n")
+ (let ((translate (parser-generator-lr-translate)))
+ (should
+ (equal
+ 0.0
+ translate)))
+ (message "Passed correct precedence of 3+-3 = 0")
+
+ (kill-region (point-min) (point-max))
+ (insert "(8*3+-3)\n")
+ (let ((translate (parser-generator-lr-translate)))
+ (should
+ (equal
+ 21.0
+ translate)))
+ (message "Passed correct precedence of (8*3+-3) = 21")
+
+ (kill-region (point-min) (point-max))
+ (insert "34/(8*3+-3)\n")
+ (let ((translate (parser-generator-lr-translate)))
+ (should
+ (equal
+ 1.619047619047619
+ translate)))
+ (message "Passed correct precedence of (34/(8*3+-3)) = 1.619047619047619")
+
(kill-region (point-min) (point-max))
(insert "4 + 4.5 - (34/(8*3+-3))\n")
(let ((translate (parser-generator-lr-translate)))
(should
(equal
- 6.880952381
+ 6.880952380952381
+ translate)))
+ (message "Passed correct precedence of 4 + 4.5 - (34/(8*3+-3)) =
6.880952380952381")
+
+ (kill-region (point-min) (point-max))
+ (insert "3 ^ 2\n")
+ (let ((translate (parser-generator-lr-translate)))
+ (should
+ (equal
+ 9.0
translate)))
- (message "Passed correct precedence of 4 + 4.5 - (34/(8*3+-3)) =
6.880952381")
+ (message "Passed correct precedence of 3 ^ 2 = 9.0")
(kill-buffer))
- [elpa] externals/parser-generator 8013f69 384/434: Unit tests for testing precedence table generation now passes, (continued)
- [elpa] externals/parser-generator 8013f69 384/434: Unit tests for testing precedence table generation now passes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator e070522 396/434: Fixed broken link in documentation, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 5b95baf 401/434: More work on last feature, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 4da88bf 406/434: Added another test for e-identifier in middle of rule, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 72796d0 408/434: Fixed bug with FIRST calculation with multiple symbols and e-identifiers, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 843bc57 398/434: Fixed invalid reference to parser-generator to fetch translation by production number, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 7eb8cab 397/434: Small fixes to documentation about syntax analysis, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 3a178ed 393/434: Exported LR parser now passes all tests, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator c606043 389/434: Passing all tests with new precedence generation, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator cfa9561 407/434: Added TODO item, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 21fef5c 388/434: Passing all tests for infix calculator,
ELPA Syncer <=
- [elpa] externals/parser-generator 4fe014a 394/434: Updating documentation regarding operator precedence, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator aafb3cc 411/434: Passing test for grammar containing e-identifier in middle or a rule, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator b8de1c4 414/434: LR-exporter now supports optional header, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator e157091 413/434: Fixed error signaling in invalid LR-parser and generated LR-parser, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 827aa5c 433/434: Another bug for same thing, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator ee78a6c 430/434: LR-parser now passes terminal data to SDT for non-terminals containing only one symbol, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 3657a68 427/434: Merge branch 'master' of git.cvj.se:/home/git/emacs-parser-generator, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 2481361 425/434: Improved readme, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator e59baa8 416/434: Added move feature of lex-analyzer into exported LR lex-analyzer, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 29568c3 428/434: Added support for copyright text in exported LR-parser, ELPA Syncer, 2021/11/29