emacs-elpa-diffs
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]