branch: externals/phps-mode
commit f82c9a377d508fa9274133c113ac6fc5de6c656a
Author: Christian Johansson <[email protected]>
Commit: Christian Johansson <[email protected]>
Re-generated parser to verify automation functionality, improved automation
documentation
---
admin/phps-mode-automation.el | 2 +-
phps-mode-parser.el | 66 ++++++++++++++++---------------------------
2 files changed, 26 insertions(+), 42 deletions(-)
diff --git a/admin/phps-mode-automation.el b/admin/phps-mode-automation.el
index 2f23f1754d..6d8530d794 100644
--- a/admin/phps-mode-automation.el
+++ b/admin/phps-mode-automation.el
@@ -28,7 +28,7 @@
;; To resume use command: `make parser &> output.txt'
;; and to extract Emacs-Lisp data to separate file run `cat output.txt | grep
-F "-resume" - > resume.el'
;; and then to resume parser-generation run
-;; `emacs -Q -batch -L . -L ~/.emacs.d/emacs-parser-generator -l
phps-mode-lexer.el -l admin/phps-mode-automation.el -eval "(progn (require
'parser-generator-lr)(require 'parser-generator-lr-export))" -l resume.el -eval
"(phps-mode-automation)"'
+;; `rm phps-mode-automation-grammar.elc; emacs -Q -batch -L . -L
~/.emacs.d/emacs-parser-generator -l phps-mode-lexer.el -l
admin/phps-mode-automation.el -eval "(progn (require
'parser-generator-lr)(require 'parser-generator-lr-export))" -l resume.el -eval
"(phps-mode-automation)"'
;;; Code:
diff --git a/phps-mode-parser.el b/phps-mode-parser.el
index 12d43535f5..17f0b372b7 100644
--- a/phps-mode-parser.el
+++ b/phps-mode-parser.el
@@ -34,7 +34,7 @@
"PHPs Parser Error")
-;;; Constants:
+;;; Variables:
(defvar
@@ -98,7 +98,7 @@
"The look-ahead number.")
-;;; Variables:
+;;; Local Variables:
(defvar-local
phps-mode-parser-lex-analyzer--index
@@ -110,46 +110,29 @@
nil
"Non-nil means move index to value.")
+
+;;; Variable Functions:
+
(defvar
phps-mode-parser-lex-analyzer--get-function
- (lambda (token) (let ((start (car (cdr token)))
- (end (cdr (cdr token))))
- (when (<= end (point-max))
- (buffer-substring-no-properties
- start
- end))))
+ (lambda (token) (let ((start (car (cdr token))) (end (cdr (cdr token)))) (if
(<= end (point-max)) (progn (buffer-substring-no-properties start end)))))
"The lex-analyzer get function.")
(defvar
phps-mode-parser-lex-analyzer--function
- (lambda (buffer-index)
- (let ((result (gethash buffer-index phps-mode-parser-tokens))
- (token))
- (when result
- (cond
- ((numberp result)
- (setq
- phps-mode-parser-lex-analyzer--move-to-index-flag
- result))
- ((listp result)
- (setq
- token
- result))))
- token))
+ (lambda (buffer-index) (let ((result (gethash buffer-index
phps-mode-parser-tokens)) (token)) (if result (progn (cond ((numberp result)
(setq phps-mode-parser-lex-analyzer--move-to-index-flag result)) ((listp
result) (setq token result))))) token))
"The lex-analyzer function.")
(defvar
phps-mode-parser-lex-analyzer--reset-function
- (lambda()
- (progn
- ))
+ (lambda nil (progn))
"The lex-analyzer reset function.")
;;; Functions:
-;;; Lex-Analyzer:
+;;; Functions for Lex-Analyzer:
(defun
phps-mode-parser-lex-analyzer--get-function (token)
@@ -270,7 +253,7 @@
(nreverse tokens)))
-;;; Syntax-Analyzer / Parser:
+;;; Functions for Syntax-Analyzer / Parser:
(defun
@@ -476,16 +459,17 @@
;; (c) If f(u) = error, we halt parsing (and, in practice
;; transfer to an error recovery routine).
(signal
- 'error
- (list
- (format
- "Invalid syntax! Expected one of %s found %s at %s"
- possible-look-aheads
- look-ahead
- phps-mode-parser-lex-analyzer--index)
- possible-look-aheads
- look-ahead
- phps-mode-parser-lex-analyzer--index)))
+ 'error
+ (list
+ (format
+ "Invalid syntax! Expected one of %s found %s at %s"
+
+ possible-look-aheads
+ look-ahead
+ phps-mode-parser-lex-analyzer--index)
+ possible-look-aheads
+ look-ahead
+ phps-mode-parser-lex-analyzer--index)))
(cond
@@ -659,10 +643,10 @@
temp-hash-key
translation-symbol-table)))
(push
- (list
- partial-translation
- popped-items-terminals)
- symbol-translations)
+ (list
+ partial-translation
+ popped-items-terminals)
+ symbol-translations)
(puthash
temp-hash-key
symbol-translations