[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator d14d427 140/434: Moved more about lex-
From: |
ELPA Syncer |
Subject: |
[elpa] externals/parser-generator d14d427 140/434: Moved more about lex-analysis to separate document |
Date: |
Mon, 29 Nov 2021 15:59:27 -0500 (EST) |
branch: externals/parser-generator
commit d14d4277c5e35da6ab34683ee30c6a265a4eccdd
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
Moved more about lex-analysis to separate document
---
README.md | 68 ------------------------------------------------
docs/Lexical-Analysis.md | 68 ++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 68 insertions(+), 68 deletions(-)
diff --git a/README.md b/README.md
index fa23e93..438ecd7 100644
--- a/README.md
+++ b/README.md
@@ -11,74 +11,6 @@ This is just started, so most stuff are *WIP*.
We use a regular-language based lexical analyzer that can be implemented by a
finite-state-machine (FSM). Read more [here](docs/Lexical-Analysis.md).
-### Peek next look-ahead
-
-Returns the look-ahead number of next terminals in stream.
-
-``` emacs-lisp
-(require 'ert)
-(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))))
-(parser-generator-lex-analyzer--reset)
-(setq parser-generator--look-ahead-number 1)
- (should
- (equal
- '(a)
- (parser-generator-lex-analyzer--peek-next-look-ahead)))
-
- (setq parser-generator--look-ahead-number 2)
- (should
- (equal
- '(a b)
- (parser-generator-lex-analyzer--peek-next-look-ahead)))
-
-```
-
-### Pop token
-
-Returns the next token in stream and moves index one forward.
-
-``` emacs-lisp
-(require 'ert)
-(setq
- parser-generator-lex-analyzer--function
- (lambda (index length)
- (let* ((string '(a 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))))
-(parser-generator-lex-analyzer--reset)
-(should
- (equal
- '(a)
- (parser-generator-lex-analyzer--pop-token)))
- (should
- (equal
- '(b)
- (parser-generator-lex-analyzer--pop-token)))
- (should
- (equal
- nil
- (parser-generator-lex-analyzer--pop-token)))
-```
-
## Syntax Analysis / Parsing
We use push down transducer (PDT) based algorithms.
diff --git a/docs/Lexical-Analysis.md b/docs/Lexical-Analysis.md
index d648f87..ae71ff9 100644
--- a/docs/Lexical-Analysis.md
+++ b/docs/Lexical-Analysis.md
@@ -2,6 +2,74 @@
Set lexical analysis function by setting variable
`parser-generator-lex-analyzer--function`. Optionally set reset function by
setting variable `parser-generator-lex-analyzer--reset-function`. The lexical
analysis is indexed on variable `parser-generator-lex-analyzer--index`. All
parsers expect a list of tokens as response from lexical-analysis.
+### Peek next look-ahead
+
+Returns the look-ahead number of next terminals in stream.
+
+``` emacs-lisp
+(require 'ert)
+(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))))
+(parser-generator-lex-analyzer--reset)
+(setq parser-generator--look-ahead-number 1)
+ (should
+ (equal
+ '(a)
+ (parser-generator-lex-analyzer--peek-next-look-ahead)))
+
+ (setq parser-generator--look-ahead-number 2)
+ (should
+ (equal
+ '(a b)
+ (parser-generator-lex-analyzer--peek-next-look-ahead)))
+
+```
+
+### Pop token
+
+Returns the next token in stream and moves index one forward.
+
+``` emacs-lisp
+(require 'ert)
+(setq
+ parser-generator-lex-analyzer--function
+ (lambda (index length)
+ (let* ((string '(a 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))))
+(parser-generator-lex-analyzer--reset)
+(should
+ (equal
+ '(a)
+ (parser-generator-lex-analyzer--pop-token)))
+ (should
+ (equal
+ '(b)
+ (parser-generator-lex-analyzer--pop-token)))
+ (should
+ (equal
+ nil
+ (parser-generator-lex-analyzer--pop-token)))
+```
+
## Example
``` emacs-lisp
- [elpa] externals/parser-generator fe10d4a 196/434: Passed tests for first 3 and first 4 of complex grammar, (continued)
- [elpa] externals/parser-generator fe10d4a 196/434: Passed tests for first 3 and first 4 of complex grammar, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 4cba5aa 203/434: Made new TODO items, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator ef60d96 204/434: Added failing test for new function the generates grammar prefixes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 76e30f1 210/434: Sorted lines in test file, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator e88abf0 117/434: More work on parser, added error-handling, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 8328ab3 130/434: Added unit test for failing LRk Grammar Parse, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator e89a740 138/434: Fixed bug with goto-table generation were tokens were strings, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator c667e18 121/434: Work on shift action in parsing algorithm, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator fab7e46 128/434: Fixed link to LRk grammar, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator bd06863 132/434: LR-parser now uses lex-analyzer for parsing, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator d14d427 140/434: Moved more about lex-analysis to separate document,
ELPA Syncer <=
- [elpa] externals/parser-generator 1613e89 146/434: Added lex-analyzer get function, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 5c8a7a5 147/434: Preparations for SDT support, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 0e54a88 148/434: Optimized away one global variable, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 60e9c8a 153/434: Preparations for translation-support in LR-parser, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 7ba32ff 154/434: Only save translation if it produces anything, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator f621e77 161/434: Preparations for testing incremental parse, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 944819d 163/434: More debugging incremental parsing, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 668e738 164/434: More work on tests for incremental parse, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator ac7a9ab 168/434: Added TODO items, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator a18a23d 172/434: Updated info about SDT and SA, ELPA Syncer, 2021/11/29