[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator e1315c3 246/434: Updated so E-FREE-FIR
From: |
ELPA Syncer |
Subject: |
[elpa] externals/parser-generator e1315c3 246/434: Updated so E-FREE-FIRST(x) only uses E-FREE-FIRST on first symbol |
Date: |
Mon, 29 Nov 2021 15:59:50 -0500 (EST) |
branch: externals/parser-generator
commit e1315c373b5da1348bd5cfb5e3e47953bcd2ba3d
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
Updated so E-FREE-FIRST(x) only uses E-FREE-FIRST on first symbol
---
parser-generator-lr.el | 3 ---
parser-generator.el | 4 +++-
test/parser-generator-test.el | 4 ++--
3 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/parser-generator-lr.el b/parser-generator-lr.el
index a8c06e9..e2fffd3 100644
--- a/parser-generator-lr.el
+++ b/parser-generator-lr.el
@@ -25,7 +25,6 @@
;; Main Algorithms
-;; TODO Test this function with above 1 as look-ahead number
(defun parser-generator-lr-generate-parser-tables ()
"Generate parsing tables for grammar."
(let ((table-lr-items
@@ -178,7 +177,6 @@
(setq table-index (1+ table-index))))))
;; Algorithm 5.9, p. 389
-;; TODO Test this function with above 1 as look-ahead number
(defun parser-generator-lr--generate-goto-tables ()
"Calculate set of valid LR(k) items for grammar and a GOTO-table."
(let ((lr-item-set-new-index 0)
@@ -598,7 +596,6 @@
(message "γ: %s" γ))
prefix-previous)))))
-;; TODO Make this function work with k > 1
(defun parser-generator-lr--items-for-goto (previous-lr-item x)
"Calculate LR-items for GOTO(PREVIOUS-LR-ITEM, X)."
(let ((lr-new-item)
diff --git a/parser-generator.el b/parser-generator.el
index a834882..1babaad 100644
--- a/parser-generator.el
+++ b/parser-generator.el
@@ -1202,7 +1202,9 @@
(parser-generator--debug
(message "non-terminal symbol: %s" symbol))
(let ((symbol-f-set))
- (if disallow-e-first
+ (if (and
+ disallow-e-first
+ (= first-length 0))
(setq symbol-f-set (nth 1 (gethash symbol
parser-generator--f-free-sets)))
(setq symbol-f-set (nth 1 (gethash symbol
parser-generator--f-sets))))
(parser-generator--debug
diff --git a/test/parser-generator-test.el b/test/parser-generator-test.el
index 7ee76af..4a880b4 100644
--- a/test/parser-generator-test.el
+++ b/test/parser-generator-test.el
@@ -439,12 +439,12 @@
(parser-generator--e-free-first '(e a))))
(should
(equal
- '((a e))
+ '((a a) (a e))
(parser-generator--e-free-first '(a S))))
(message "Passed empty-free-first 2 with trailing e-identifier 2")
(should
(equal
- '((a b))
+ '((a a) (a e))
(parser-generator--e-free-first '(a S b))))
(message "Passed empty-free-first 2 with trailing e-identifier 1")
- [elpa] externals/parser-generator 54857e4 220/434: Added failing unit test for translation via LRk, (continued)
- [elpa] externals/parser-generator 54857e4 220/434: Added failing unit test for translation via LRk, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator a96ab3a 222/434: More debugging LR k > 1, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 783ea61 227/434: Added translation-symbol-table to incremental parser and translater, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 439d894 228/434: Passed all LR k=1 tests with more work on generalized solution, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 47fb35e 229/434: More work on a more generalized LR Parser, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 9b6e076 231/434: Using lowercase epsilon for e-identifier comment, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 01173e2 230/434: Added EOF identifier, passing all unit tests, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator a76bb98 240/434: Added comments, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 3807a72 237/434: Added failing unit test for LR-items k=2, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 40473d3 252/434: Fixed bug with data in full look-ahead in parse function, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator e1315c3 246/434: Updated so E-FREE-FIRST(x) only uses E-FREE-FIRST on first symbol,
ELPA Syncer <=
- [elpa] externals/parser-generator 53ae129 245/434: Commented out useless code, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 24e96cb 261/434: Improved description of LRk, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 40907b7 257/434: white-space fixes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 37d9fcb 260/434: Improved documentation, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 08b696f 267/434: Fixed typo in doc about token, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator b80fc6e 264/434: Updated README, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 1b9d8db 268/434: Improved wording about lexical analysis, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 3615fad 276/434: Fixed issue with lex-analyzer in LR(0) Parser, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 732cd78 282/434: Constants and variables are exported correctly, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator cbf9e07 278/434: Added documentation about LR(0) Parser, ELPA Syncer, 2021/11/29