[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator 6aff9d0 373/434: Made TODO notes
From: |
ELPA Syncer |
Subject: |
[elpa] externals/parser-generator 6aff9d0 373/434: Made TODO notes |
Date: |
Mon, 29 Nov 2021 16:00:18 -0500 (EST) |
branch: externals/parser-generator
commit 6aff9d0774f32e422734f15de558b7599f775811
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
Made TODO notes
---
parser-generator-lr.el | 6 ++-
test/parser-generator-lr-test.el | 105 +++++++++++++++++----------------------
2 files changed, 50 insertions(+), 61 deletions(-)
diff --git a/parser-generator-lr.el b/parser-generator-lr.el
index 4f132bd..3d45306 100644
--- a/parser-generator-lr.el
+++ b/parser-generator-lr.el
@@ -402,6 +402,10 @@
(gethash
index-hash-key
index-symbols)))
+ ;; TODO Here need to pass
production-number of reduction
+ ;; and symbol of conflict
+ ;; and production-number of B
+ ;; if it's a reduction
(if
(parser-generator-lr--production-takes-precedence-p
(car (cdr a))
@@ -440,7 +444,7 @@
index-hash-key
index-symbols)))
(error
- "Reduce/%S conflict for %S in state
%S"
+ "Reduce/%S conflict for %S in state
%S, %S vs %S"
(car (cdr conflicted-item))
u
goto-index
diff --git a/test/parser-generator-lr-test.el b/test/parser-generator-lr-test.el
index 4f7e7db..9aeb979 100644
--- a/test/parser-generator-lr-test.el
+++ b/test/parser-generator-lr-test.el
@@ -587,7 +587,7 @@
(setq
token
`(NUM ,(match-beginning 0) . ,(match-end 0))))
- ((looking-at "\\(\\+\\|\-\\|\*\\|\/\\|\\^\\|)\\|(\\|\n\\)")
+ ((looking-at "\\(\\+\\|-\\|*\\|/\\|\\^\\|)\\|(\\|\n\\)")
(let ((symbol
(buffer-substring-no-properties
(match-beginning 0)
@@ -613,66 +613,51 @@
(string-to-number symbol)))
symbol))))))
(parser-generator-process-grammar)
-
- (parser-generator-lr-generate-parser-tables)
-
- ;; LR-items set 14:
-;; (
-;; ((exp) (exp) ("*" exp) ("
-;; "))
-;; ((exp) (exp) ("*" exp) ("*"))
-;; ((exp) (exp) ("*" exp) ("+"))
-;; ((exp) (exp) ("*" exp) ("-"))
-;; ((exp) (exp) ("*" exp) ("/"))
-;; ((exp) (exp) ("*" exp) ("^"))
-;; ((exp) (exp) ("+" exp) ("
-;; "))
-;; ((exp) (exp) ("+" exp) ("*"))
-;; ((exp) (exp) ("+" exp) ("+"))
-;; ((exp) (exp) ("+" exp) ("-"))
-;; ((exp) (exp) ("+" exp) ("/"))
-;; ((exp) (exp) ("+" exp) ("^"))
-;; ((exp) (exp) ("-" exp) ("
-;; "))
-;; ((exp) (exp) ("-" exp) ("*"))
-;; ((exp) (exp) ("-" exp) ("+"))
-;; ((exp) (exp) ("-" exp) ("-"))
-;; ((exp) (exp) ("-" exp) ("/"))
-;; ((exp) (exp) ("-" exp) ("^"))
-;; ((exp) (exp) ("/" exp) ("
-;; "))
-;; ((exp) (exp) ("/" exp) ("*"))
-;; ((exp) (exp) ("/" exp) ("+"))
-;; ((exp) (exp) ("/" exp) ("-"))
-;; ((exp) (exp) ("/" exp) ("/"))
-;; ((exp) (exp) ("/" exp) ("^"))
-;; ((exp) (exp) ("^" exp) ("
-;; "))
-;; ((exp) (exp) ("^" exp) ("*"))
-;; ((exp) (exp) ("^" exp) ("+"))
-;; ((exp) (exp) ("^" exp) ("-"))
-;; ((exp) (exp) ("^" exp) ("/"))
-;; ((exp) (exp) ("^" exp) ("^"))
-;; ((exp) (exp "^" exp) nil ("
-;; "))
-;; ((exp) (exp "^" exp) nil ("*"))
-;; ((exp) (exp "^" exp) nil ("+"))
-;; ((exp) (exp "^" exp) nil ("-"))
-;; ((exp) (exp "^" exp) nil ("/"))
-;; ((exp) (exp "^" exp) nil ("^"))
-;; )
-
- ;; TODO Should error here in state 14 of GOTO-table generation
(should-error
- (progn
- (parser-generator-lr--prepare-global-declaration)
- (parser-generator-lr--generate-goto-tables)))
-
- ;; TODO Add global precedence and grammar should now pass
-
-
+ (parser-generator-lr-generate-parser-tables))
+ (message "Expected shift/reduce conflict in state 14")
- ;; TODO Refactor context-sensitive grammar to apply to entire rule instead
of specific element
+ ;; TODO Add global precedence and context-sensitive precedence and grammar
should now pass without conflicts
+ (setq
+ parser-generator--global-attributes
+ '(%left %precedence %right))
+ (setq
+ parser-generator-lr--global-precedence-attributes
+ '(%left %precedence %right))
+ (setq
+ parser-generator--global-declaration
+ '(
+ (%left "-" "+")
+ (%left "*" "/")
+ (%precedence NEG)
+ (%right "^")))
+ (setq
+ parser-generator--context-sensitive-attributes
+ '(%prec))
+ (parser-generator-set-grammar
+ '(
+ (start input line exp)
+ ("+" "-" "*" "/" "^" "(" ")" "\n" NUM)
+ (
+ (start input)
+ (input
+ %empty
+ (input line (lambda(args) (nth 1 args))))
+ (line
+ "\n"
+ (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 ")" (lambda(args) (nth 1 args)))))
+ start))
+ (parser-generator-process-grammar)
+ (parser-generator-lr-generate-parser-tables)
(message "Generated parser")
@@ -1739,7 +1724,7 @@
"Run test."
;; (setq debug-on-error nil)
- ;; (parser-generator-lr-test-infix-calculator)
+ (parser-generator-lr-test-infix-calculator)
(parser-generator-lr-test--items-for-prefix)
(parser-generator-lr-test--items-valid-p)
(parser-generator-lr-test--generate-goto-tables)
- [elpa] externals/parser-generator 6a4b353 344/434: More work on translations, (continued)
- [elpa] externals/parser-generator 6a4b353 344/434: More work on translations, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 85d1b49 345/434: Infix calculator translation passing some tests, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 08e9876 347/434: Fixed bug with associating a translation to multiple productions, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator c6d3ad2 352/434: Infix calculator working as expected without precedence rules, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 21948c8 358/434: Fixed lex-analyzer to infix calculator test to support white-space and floats, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 14711d4 363/434: Added more debug stuff, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator f0f2daa 364/434: Started refactor of context-sensitive attributes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 7e1d2fb 368/434: Added TODO notes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 5a1f09a 369/434: More work on adding support for production number related precedence, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator e4658d9 372/434: LR action-table generation is now using context-sensitive precedence resolution for reduce/reduce conflicts, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 6aff9d0 373/434: Made TODO notes,
ELPA Syncer <=
- [elpa] externals/parser-generator 831a6e6 379/434: Made a commentary audit of parse according to GOTO and ACTION tables, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator bff0e63 380/434: Added TODO note, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 97b5e59 381/434: Comparing precedence of last symbol of production with look-ahead, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 5ff13d2 382/434: Improvements in test for precedence, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 9c30f34 385/434: More work on refactoring conflict resolution, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 53fb785 395/434: Verified examples in documentation, added infix notation calculator example, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator e447145 402/434: Added notes about setting to allow default conflict resolution, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 201bcb1 405/434: Improved notes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator aad1a17 404/434: Removed unnecessary logic in LR(0) action-table generation, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 1b2a150 403/434: Added failing test for e-identifier in the middle of a rule, ELPA Syncer, 2021/11/29