[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator 71f03cc 171/434: Updated example
From: |
ELPA Syncer |
Subject: |
[elpa] externals/parser-generator 71f03cc 171/434: Updated example |
Date: |
Mon, 29 Nov 2021 15:59:34 -0500 (EST) |
branch: externals/parser-generator
commit 71f03cc5a02ac9173bf176ec543abd92965a8cab
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
Updated example
---
.../Deterministic-Right-Parser-for-LRk-Grammars.md | 54 +++++++++-------------
1 file changed, 22 insertions(+), 32 deletions(-)
diff --git a/docs/Deterministic-Right-Parser-for-LRk-Grammars.md
b/docs/Deterministic-Right-Parser-for-LRk-Grammars.md
index 4837347..65f7fb5 100644
--- a/docs/Deterministic-Right-Parser-for-LRk-Grammars.md
+++ b/docs/Deterministic-Right-Parser-for-LRk-Grammars.md
@@ -1,5 +1,9 @@
# Deterministic Right Parser for LR(k) Grammars
+This library contains functions to parse and translate grammar as well as
validate grammars.
+
+## LR Item
+
A valid LR-item for a viable prefix has this structure:
``` emacs-lisp
@@ -57,46 +61,32 @@ Calculate the set of LR items valid for any viable prefix S.
Perform a right-parse of input-stream.
```emacs-lisp
+(require 'parser-generator-lr)
(require 'ert)
(parser-generator-set-grammar '((Sp S) (a b) ((Sp S) (S (S a S b)) (S e)) Sp))
(parser-generator-set-look-ahead-number 1)
(parser-generator-process-grammar)
+(parser-generator-lr-generate-parser-tables)
(setq
- parser-generator-lex-analyzer--function
- (lambda (index length)
- (let* ((string '((a 1 . 2) (a 2 . 3) (b 3 . 4) (b 4 . 5) (b 5 . 6)))
- (string-length (length string))
- (max-index (+ index length))
- (tokens))
- (while (and
- (< index string-length)
- (< index max-index))
- (push (nth index string) tokens)
- (setq index (1+ index)))
- (nreverse tokens))))
-(should
- (equal
- '(2 2 2 1 1)
- (parser-generator-lr--parse)))
-
+ parser-generator-lex-analyzer--function
+ (lambda (index)
+ (let* ((string '((a 1 . 2) (a 2 . 3) (b 3 . 4) (b 4 . 5)))
+ (string-length (length string))
+ (max-index index)
+ (tokens))
+ (while (and
+ (< (1- index) string-length)
+ (< (1- index) max-index))
+ (push (nth (1- index) string) tokens)
+ (setq index (1+ index)))
+ (nreverse tokens))))
-(setq
- parser-generator-lex-analyzer--function
- (lambda (index length)
- (let* ((string '(a a b b b))
- (string-length (length string))
- (max-index (+ index length))
- (tokens))
- (while (and
- (< index string-length)
- (< index max-index))
- (push (nth index string) tokens)
- (setq index (1+ index)))
- (nreverse tokens))))
-(should-error
- (parser-generator-lr--parse))
+(should
+ (equal
+ '(2 2 2 1 1)
+ (parser-generator-lr-parse)))
```
[Back to start](../../../)
- [elpa] externals/parser-generator 2a3a02d 083/434: Removed cache for LR-items for prefixes, (continued)
- [elpa] externals/parser-generator 2a3a02d 083/434: Removed cache for LR-items for prefixes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 3ba5250 090/434: Removed debugging stuff, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 83298fe 099/434: Passing test for function that generates possible look-ahead permutations, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator e9697ea 100/434: Added function that tests if a look-ahead is valid or not, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 53c09f7 119/434: Added hash-table for productions indexed by production-number, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 58e5806 129/434: Renamed plugin from parser to parser-generator, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 0695275 143/434: More updates to docs, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 1b17ef8 159/434: Added another unit tests for translations, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 04fdc96 167/434: Added unit-test for incremental translations, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator fa6237a 170/434: Added TODO items, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 71f03cc 171/434: Updated example,
ELPA Syncer <=
- [elpa] externals/parser-generator 0b72792 177/434: Added failing unit tests for FIRST, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 181b499 178/434: Fixed bug in FIRST generation where multiple equal LHS:s, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator c4455db 179/434: Added TODO-item, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 84ffb4e 181/434: f-set max index is now set depending on if all non-terminals have been expanded or not, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 4aeed22 191/434: Passed tests for e-free first function, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 18d7c63 195/434: Added new function to merge lists of terminals, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 60d9968 202/434: Fixed valid look-ahead with k above 1, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 38223d3 206/434: Passed tests for generating grammar prefixes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 8a6b752 208/434: Starting on adding support for LR k > 1 parser, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator d604092 223/434: Added failing unit test for e-free-first function, ELPA Syncer, 2021/11/29