[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator 6ffa2a0290 15/29: More work on FIRST f
From: |
Christian Johansson |
Subject: |
[elpa] externals/parser-generator 6ffa2a0290 15/29: More work on FIRST function |
Date: |
Sat, 12 Feb 2022 02:24:44 -0500 (EST) |
branch: externals/parser-generator
commit 6ffa2a029052daf03aae803c912d5a7f73d97761
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
More work on FIRST function
---
parser-generator.el | 59 +++++++++++++++++++++++++++++++----------------------
1 file changed, 35 insertions(+), 24 deletions(-)
diff --git a/parser-generator.el b/parser-generator.el
index 701d9e45ba..f0c30a7cc5 100644
--- a/parser-generator.el
+++ b/parser-generator.el
@@ -1685,23 +1685,32 @@
(length expanded-non-terminal-lists)))
(if (= expanded-list-count 0)
+ (dolist (expanded-non-terminal-list
expanded-non-terminal-lists)
+ (push
+ (reverse expanded-non-terminal-list)
+ expanded-lists))
+
+ (let ((new-expanded-lists))
+ (dolist (expanded-non-terminal-list
expanded-non-terminal-lists)
+ (setq expanded-list-index 0)
+ (let ((reversed-expanded-non-terminal-list
+ (reverse expanded-non-terminal-list)))
+ (while (< expanded-list-index expanded-list-count)
+ (push
+ (append
+ reversed-expanded-non-terminal-list
+ (nth expanded-list-index expanded-lists))
+ new-expanded-lists)
+ (setq
+ expanded-list-index
+ (1+ expanded-list-index)))))
(setq
expanded-lists
- expanded-non-terminal-lists)
-
- (dolist (expanded-non-terminal-list
expanded-non-terminal-lists)
- (setq expanded-list-index 0)
- (while (< expanded-list-index expanded-list-count)
- (setf
- (nth expanded-list-index expanded-lists)
- (reverse
- (append
- (reverse
- (nth expanded-list-index expanded-lists))
- expanded-non-terminal-list)))
- (setq
- expanded-list-index
- (1+ expanded-list-index))))))))
+ new-expanded-lists)))
+ (parser-generator--debug
+ (message
+ "expanded-lists after adding: %S"
+ expanded-lists)))))
;; if input symbol is a terminal or the e-identifier push it to
each expanded list
((or
@@ -1709,7 +1718,7 @@
(parser-generator--valid-terminal-p input-symbol))
(parser-generator--debug
(message
- "symbol is terminal or the e-identifier"))
+ "symbol is a terminal or the e-identifier"))
(let ((expanded-list-index 0)
(expanded-list-count
(length expanded-lists)))
@@ -1720,14 +1729,16 @@
(while (< expanded-list-index expanded-list-count)
(setf
(nth expanded-list-index expanded-lists)
- (reverse
- (append
- (reverse
- (nth expanded-list-index expanded-lists))
- (list input-symbol))))
+ (append
+ (nth expanded-list-index expanded-lists)
+ (list input-symbol)))
(setq
expanded-list-index
- (1+ expanded-list-index)))))))
+ (1+ expanded-list-index))))
+ (parser-generator--debug
+ (message
+ "expanded-lists after adding: %S"
+ expanded-lists)))))
(setq
input-tape-index
(1+ input-tape-index))))
@@ -1738,7 +1749,7 @@
(distinct-processed-lists (make-hash-table :test 'equal)))
(parser-generator--debug
(message
- "\nExpanded symbols: %S"
+ "\nExpanded symbols: %S (in reverse order)"
expanded-lists))
;; 2. Place each expanded list on a stack of unprocessed lists
@@ -1749,7 +1760,7 @@
(while (< expanded-list-index expanded-list-count)
(push
(list
- (nth expanded-list-index expanded-lists)
+ (reverse (nth expanded-list-index expanded-lists))
0
nil)
unprocessed-lists)
- [elpa] externals/parser-generator updated (4a3a51de0a -> 4c34af706f), Christian Johansson, 2022/02/12
- [elpa] externals/parser-generator f2c4ad9665 03/29: Added TODO item, Christian Johansson, 2022/02/12
- [elpa] externals/parser-generator abf7fcf615 02/29: Improved debug message, Christian Johansson, 2022/02/12
- [elpa] externals/parser-generator 4297a9b43e 04/29: Added another failing test for FIRST(x) were first symbol can be %empty, Christian Johansson, 2022/02/12
- [elpa] externals/parser-generator 26b8a21276 01/29: Added failing test for LR(k=1) parse with left-recursive grammar, Christian Johansson, 2022/02/12
- [elpa] externals/parser-generator add9d0072f 09/29: Added failing test for e-free-first, Christian Johansson, 2022/02/12
- [elpa] externals/parser-generator bb396d5ce9 12/29: Made psuedo-code for algorithm of FIRST and E-FREE-FIRST, Christian Johansson, 2022/02/12
- [elpa] externals/parser-generator 0fa8261ed2 11/29: Passing some tests for FIRST, Christian Johansson, 2022/02/12
- [elpa] externals/parser-generator 3bf81567ac 05/29: Added TODO notes and a failing test for e-free-first, Christian Johansson, 2022/02/12
- [elpa] externals/parser-generator 4e4907da84 10/29: More wrestling with FIRST and E-FREE-FIRST, Christian Johansson, 2022/02/12
- [elpa] externals/parser-generator 6ffa2a0290 15/29: More work on FIRST function,
Christian Johansson <=
- [elpa] externals/parser-generator efe98cb71a 14/29: More tweaks of FIRST and E-FREE-FIRST, Christian Johansson, 2022/02/12
- [elpa] externals/parser-generator a7a321ca93 28/29: Added link to TODO document, Christian Johansson, 2022/02/12
- [elpa] externals/parser-generator e1f3fb4042 18/29: More work on FIRST, Christian Johansson, 2022/02/12
- [elpa] externals/parser-generator 0e1fbf9cef 07/29: More debugging of edge case, Christian Johansson, 2022/02/12
- [elpa] externals/parser-generator 653b8edece 17/29: Added failing test for generate-f-sets, Christian Johansson, 2022/02/12
- [elpa] externals/parser-generator 4c34af706f 29/29: Improved documentation, Christian Johansson, 2022/02/12
- [elpa] externals/parser-generator a175c1317a 08/29: Started on refactor of e-free-first function to properly handle a edge case, Christian Johansson, 2022/02/12
- [elpa] externals/parser-generator 94fa7c3732 06/29: Cleaning up of e-free-first test, Christian Johansson, 2022/02/12
- [elpa] externals/parser-generator d2227ad65e 13/29: More wrestling with FIRST and E-FREE-FIRST calculation, Christian Johansson, 2022/02/12
- [elpa] externals/parser-generator d85a3ae246 16/29: Passing more tests, Christian Johansson, 2022/02/12