[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/phps-mode eced7be 77/96: Parser now not dependent on le
From: |
Christian Johansson |
Subject: |
[elpa] externals/phps-mode eced7be 77/96: Parser now not dependent on lex-analyzer variables |
Date: |
Fri, 29 Oct 2021 11:14:55 -0400 (EDT) |
branch: externals/phps-mode
commit eced7beff0d51a5e4d3d6d9e7978c519985ab356
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
Parser now not dependent on lex-analyzer variables
---
phps-mode-automation-grammar.el | 105 ++++++++--------------------------------
phps-mode-parser.el | 78 ++++-------------------------
test/phps-mode-test-parser.el | 43 ++++++++++++++--
3 files changed, 70 insertions(+), 156 deletions(-)
diff --git a/phps-mode-automation-grammar.el b/phps-mode-automation-grammar.el
index 2d160e6..790760b 100644
--- a/phps-mode-automation-grammar.el
+++ b/phps-mode-automation-grammar.el
@@ -24,8 +24,6 @@
;;; Code:
-(require 'phps-mode-lexer)
-
;; Just to stop linter from complaining
(defvar
phps-mode-parser-position
@@ -33,9 +31,9 @@
"Position of parser.")
(defvar
- phps-mode-parser-tokens
- nil
- "Reversed list of tokens.")
+ phps-mode-parser-tokens
+ nil
+ "Tokens for parser.")
(defvar
phps-mode-automation-grammar--lr--allow-default-conflict-resolution
@@ -54,7 +52,7 @@
(defvar
phps-mode-automation-grammar--header
- "(require 'phps-mode-lexer)\n(require 'semantic)\n(require
'semantic/lex)\n\n(defvar-local\n phps-mode-parser-position\n nil\n \"Position
of parser.\")\n(defvar-local\n phps-mode-parser-tokens\n nil\n \"Reversed list
of lexer tokens.\")\n"
+ "\n\n(defvar-local\n phps-mode-parser-position\n nil\n \"Position of
parser.\")\n\n(defvar-local\n phps-mode-parser-tokens\n nil\n \"Tokens for
parser.\")\n\n"
"Header contents for parser.")
(defvar
@@ -68,78 +66,6 @@
"The EOF-identifier of grammar.")
(defvar
- phps-mode-automation-grammar--lex-analyzer-reset-function
- (lambda()
- (let ((generated-tokens-p)
- (generated-tokens-list))
-
- ;; 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
- generated-tokens-p
- t)
- (setq
- generated-tokens-list
- (reverse
- phps-mode-lexer--generated-tokens))))
-
- (when generated-tokens-p
- (setq-local
- phps-mode-parser-tokens
- generated-tokens-list))
-
- ;; 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)
(let ((token-list-index))
@@ -240,6 +166,16 @@
"The custom lex-analyzer.")
(defvar
+ phps-mode-automation-grammar--lex-analyzer-reset-function
+ (lambda()
+ (progn
+ ;; Reset buffer-index to token-list-index connections
+ (setq-local
+ phps-mode-parser-position
+ nil)))
+ "The reset function.")
+
+(defvar
phps-mode-automation-grammar--precedence-comparison-function
(lambda(a-type a-value _b-type b-value)
(cond
@@ -284,13 +220,12 @@
(defvar
phps-mode-automation-grammar--lex-analyzer-get-function
(lambda (token)
- (with-current-buffer "*PHPs Lexer*"
- (let ((start (car (cdr token)))
- (end (cdr (cdr token))))
- (when (<= end (point-max))
- (buffer-substring-no-properties
- start
- end)))))
+ (let ((start (car (cdr token)))
+ (end (cdr (cdr token))))
+ (when (<= end (point-max))
+ (buffer-substring-no-properties
+ start
+ end))))
"Fetch token meta data.")
diff --git a/phps-mode-parser.el b/phps-mode-parser.el
index b9db0b6..2c9739a 100644
--- a/phps-mode-parser.el
+++ b/phps-mode-parser.el
@@ -6,18 +6,17 @@
;;; Code:
-(require 'phps-mode-lexer)
-(require 'semantic)
-(require 'semantic/lex)
(defvar-local
phps-mode-parser-position
nil
"Position of parser.")
+
(defvar-local
phps-mode-parser-tokens
nil
- "Reversed list of lexer tokens.")
+ "Tokens for parser.")
+
;;; Constants:
@@ -97,7 +96,12 @@
(defvar
phps-mode-parser-lex-analyzer--get-function
- (lambda (token) (save-current-buffer (set-buffer "*PHPs Lexer*") (let
((start (car (cdr token))) (end (cdr (cdr token)))) (if (<= end (point-max))
(progn (buffer-substring-no-properties start end))))))
+ (lambda (token) (let ((start (car (cdr token)))
+ (end (cdr (cdr token))))
+ (when (<= end (point-max))
+ (buffer-substring-no-properties
+ start
+ end))))
"The lex-analyzer get function.")
(defvar
@@ -203,69 +207,7 @@
(defvar
phps-mode-parser-lex-analyzer--reset-function
(lambda()
- (let ((generated-tokens-p)
- (generated-tokens-list))
-
- ;; 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
- generated-tokens-p
- t)
- (setq
- generated-tokens-list
- (reverse
- phps-mode-lexer--generated-tokens))))
-
- (when generated-tokens-p
- (setq-local
- phps-mode-parser-tokens
- generated-tokens-list))
-
+ (progn
;; Reset buffer-index to token-list-index connections
(setq-local
phps-mode-parser-position
diff --git a/test/phps-mode-test-parser.el b/test/phps-mode-test-parser.el
index 22f1de5..90451dc 100644
--- a/test/phps-mode-test-parser.el
+++ b/test/phps-mode-test-parser.el
@@ -27,18 +27,55 @@
(require 'ert)
(require 'phps-mode)
-(require 'phps-mode-lexer)
+(require 'phps-mode-lex-analyzer)
(require 'phps-mode-parser)
(defun phps-mode-test-parser--buffer-contents (buffer-contents name logic)
(with-temp-buffer
- (when (get-buffer "*PHPs Lexer*")
- (kill-buffer "*PHPs Lexer*"))
+ ;; Setup buffer
(insert buffer-contents)
(message
"Testing buffer %S with buffer-contents:\n%S\n"
name
(buffer-substring-no-properties (point-min) (point-max)))
+
+ ;; Setup lexer
+ (setq
+ phps-mode-lexer--generated-tokens
+ nil)
+ (setq
+ phps-mode-lexer--state
+ 'ST_INITIAL)
+ (setq
+ phps-mode-lexer--states
+ nil)
+ (setq
+ phps-mode-lexer--state-stack
+ nil)
+ (setq
+ phps-mode-lexer--heredoc-label
+ nil)
+ (setq
+ phps-mode-lexer--heredoc-label-stack
+ nil)
+ (setq
+ phps-mode-lexer--nest-location-stack
+ nil)
+
+ ;; Run lexer
+ (setq
+ semantic-lex-analyzer
+ #'phps-mode-lex-analyzer--re2c-lex)
+ (setq
+ semantic-lex-syntax-table
+ phps-mode-syntax-table)
+ (semantic-lex-buffer)
+ (setq
+ phps-mode-parser-tokens
+ (reverse phps-mode-lexer--generated-tokens))
+ (message "Lexer tokens:\n%S\n" phps-mode-parser-tokens)
+
+ ;; Run test
(funcall logic)
(message "Passed %s" name)))
- [elpa] externals/phps-mode 212fd7f 63/96: Fixed warning in byte-compilation, (continued)
- [elpa] externals/phps-mode 212fd7f 63/96: Fixed warning in byte-compilation, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode fb57c3b 53/96: Started on parser for global declaration, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode e418621 59/96: Projects passes tests and byte-compilation again, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode 945571c 65/96: Fixed byte-compilation issues with parser, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode 07a983d 66/96: Passing parser tests, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode b551e69 67/96: Added TODO items, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode 37fdd2e 78/96: Passing all tests with parser integrated somewhat, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode e3b9403 69/96: Removed garbage collection modification, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode 1789d15 60/96: Fixed bug in gramamr automation, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode 08e1325 74/96: Test of parser not dependent on buffer name, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode eced7be 77/96: Parser now not dependent on lex-analyzer variables,
Christian Johansson <=
- [elpa] externals/phps-mode 4f7126b 70/96: Fixed automation grammar setting of lex-analyzer functions, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode ce5e28e 72/96: Added generated grammar in output of automation, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode e698a2e 64/96: Re-generated parser with automated grammar, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode 128868c 75/96: Added another parse test, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode f44577a 79/96: More testing integrating parser and lex-analyzer, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode 7cfa35c 81/96: Improved error-reporting for parser errors, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode 91b425f 73/96: Update of parsers lex-analyzer function to not depend on lexer buffer, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode 0f11914 83/96: Fixed lexer issue with wrong token for expressions inside double quoted strings, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode 50c9b31 84/96: Added 2 TODO items, Christian Johansson, 2021/10/29
- [elpa] externals/phps-mode c9f6fdb 82/96: Mode-line status now signals parser errors, Christian Johansson, 2021/10/29