[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/phps-mode bb4858b 61/96: Defined lex-analyzer reset fun
From: |
Christian Johansson |
Subject: |
[elpa] externals/phps-mode bb4858b 61/96: Defined lex-analyzer reset function for parser |
Date: |
Fri, 29 Oct 2021 11:14:47 -0400 (EDT) |
branch: externals/phps-mode
commit bb4858b938c74392629dbd803ae7ea700fd5c37e
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
Defined lex-analyzer reset function for parser
---
admin/phps-mode-automation.el | 5 ++
phps-mode-automation-grammar.el | 110 +++++++++++++++++++++++-----------------
2 files changed, 68 insertions(+), 47 deletions(-)
diff --git a/admin/phps-mode-automation.el b/admin/phps-mode-automation.el
index 03855c9..7fa5097 100644
--- a/admin/phps-mode-automation.el
+++ b/admin/phps-mode-automation.el
@@ -101,6 +101,11 @@
parser-generator-lex-analyzer--function
phps-mode-automation-grammar--lex-analyzer-function))
+ (when (boundp 'parser-generator-lex-analyzer--reset-function)
+ (setq
+ parser-generator-lex-analyzer--reset-function
+ phps-mode-automation-grammar--lex-analyzer-reset-function))
+
(when (boundp 'parser-generator-lex-analyzer--get-function)
(setq
parser-generator-lex-analyzer--get-function
diff --git a/phps-mode-automation-grammar.el b/phps-mode-automation-grammar.el
index 9b38c97..2053034 100644
--- a/phps-mode-automation-grammar.el
+++ b/phps-mode-automation-grammar.el
@@ -63,6 +63,69 @@
"The EOF-identifier of grammar.")
(defvar
+ phps-mode-automation-grammar--lex-analyzer-reset-function
+ (lambda()
+ ;; Create lexer buffer if none exists
+ (unless (get-buffer "*PHPs Lexer*")
+ (generate-new-buffer "*PHPs Lexer*")
+ (let ((old-buffer
+ (buffer-substring-no-properties
+ (point-min)
+ (point-max))))
+ (with-current-buffer "*PHPs Lexer*"
+ (insert old-buffer))))
+
+ (with-current-buffer "*PHPs Lexer*"
+ ;; Unless we have lexed the buffer
+ (unless phps-mode-parser-tokens
+ (unless phps-mode-lexer--generated-tokens
+ ;; Reset lexer
+ (setq-local
+ phps-mode-lexer--generated-tokens
+ nil)
+ (setq-local
+ phps-mode-lexer--state
+ 'ST_INITIAL)
+ (setq-local
+ phps-mode-lexer--states
+ nil)
+ (setq-local
+ phps-mode-lexer--state-stack
+ nil)
+ (setq-local
+ phps-mode-lexer--heredoc-label
+ nil)
+ (setq-local
+ phps-mode-lexer--heredoc-label-stack
+ nil)
+ (setq-local
+ phps-mode-lexer--nest-location-stack
+ nil)
+ (goto-char (point-min))
+
+ ;; Run lexer on entire buffer here
+ (let ((index (point))
+ (max-index (point-max)))
+ (while (< index max-index)
+ (phps-mode-lexer--re2c)
+ (setq
+ index
+ semantic-lex-end-point)
+ (goto-char index))))
+ (setq-local
+ phps-mode-parser-tokens
+ (reverse
+ phps-mode-lexer--generated-tokens))
+
+ ;; Reset buffer-index to token-list-index connections
+ (setq-local
+ phps-mode-parser-position
+ nil)))
+
+ )
+ "The reset function.")
+
+(defvar
phps-mode-automation-grammar--lex-analyzer-function
(lambda (buffer-index)
@@ -78,53 +141,6 @@
(with-current-buffer "*PHPs Lexer*"
(let ((token-list-index))
-
- ;; Unless we have lexed the buffer
- (unless phps-mode-parser-tokens
- (unless phps-mode-lexer--generated-tokens
- ;; Reset lexer
- (setq-local
- phps-mode-lexer--generated-tokens
- nil)
- (setq-local
- phps-mode-lexer--state
- 'ST_INITIAL)
- (setq-local
- phps-mode-lexer--states
- nil)
- (setq-local
- phps-mode-lexer--state-stack
- nil)
- (setq-local
- phps-mode-lexer--heredoc-label
- nil)
- (setq-local
- phps-mode-lexer--heredoc-label-stack
- nil)
- (setq-local
- phps-mode-lexer--nest-location-stack
- nil)
- (goto-char (point-min))
-
- ;; Run lexer on entire buffer here
- (let ((index (point))
- (max-index (point-max)))
- (while (< index max-index)
- (phps-mode-lexer--re2c)
- (setq
- index
- semantic-lex-end-point)
- (goto-char index))))
- (setq-local
- phps-mode-parser-tokens
- (reverse
- phps-mode-lexer--generated-tokens))
-
- ;; Reset buffer-index to token-list-index connections
- (setq-local
- phps-mode-parser-position
- nil))
-
(if (and
phps-mode-parser-position
(= (car (car phps-mode-parser-position)) buffer-index))
- [elpa] externals/phps-mode f46b98f 25/96: More work on integrating parser, (continued)
- [elpa] externals/phps-mode f46b98f 25/96: More work on integrating parser, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode 6b3a298 29/96: More work on parsers lex-analyzer refactor, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode 45508e1 32/96: Reverted integration of parser into other files due to immaturity, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode 37dda7a 34/96: Added another failing test for parser, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode 339e39b 37/96: Started on YACC grammar parser generator, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode 244a62b 39/96: Parser generator now can parse PHP YACC productions, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode a449b5b 42/96: Improved formatting of generated productions, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode e3d973d 43/96: Improved support for semi-colon in grammar delimiter, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode 962e7c8 52/96: Context-sensitive precedence attribute is automatically parsed from YACC, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode b94cbbf 58/96: Set GB collection in automation, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode bb4858b 61/96: Defined lex-analyzer reset function for parser,
Christian Johansson <=
- [elpa] externals/phps-mode 22f0a47 62/96: Parser generator passing byte-compilation, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode 751bece 50/96: Removed terminals, non-terminals and start from automation grammar, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode 4dbd9a2 54/96: Automatically parsing of global declaration from YACC, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode 024e8d4 55/96: Setting up context-sensitive attributes automatically, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode 605b76c 57/96: Removed note, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode 20ad000 68/96: Added another TODO item, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode a6c5db1 45/96: Updated grammar productions based on automatically parsed grammar from YACC, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode 2ac480a 47/96: Started on automatic generation of terminals, non-terminals and start as well, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode eb17d8c 51/96: Improved resuming of parser-generation, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode 6af98c4 56/96: Productions are now read automatically again, Christian Johansson, 2021/10/29