[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/phps-mode f7c261cee1 032/212: Generate parser command n
From: |
Christian Johansson |
Subject: |
[elpa] externals/phps-mode f7c261cee1 032/212: Generate parser command now compatible with latest emacs-parser-generator |
Date: |
Wed, 26 Jan 2022 01:50:19 -0500 (EST) |
branch: externals/phps-mode
commit f7c261cee1cb920502919fae10b750b33208fecb
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
Generate parser command now compatible with latest emacs-parser-generator
---
admin/phps-mode-automation.el | 17 ++++++----
phps-mode-automation-parser-generator.el | 54 ++++++++++++++++----------------
2 files changed, 38 insertions(+), 33 deletions(-)
diff --git a/admin/phps-mode-automation.el b/admin/phps-mode-automation.el
index 35e8fdc7e1..2f23f1754d 100644
--- a/admin/phps-mode-automation.el
+++ b/admin/phps-mode-automation.el
@@ -20,9 +20,15 @@
;;; Commentary:
-;;; Uses a parser to convert LALR Yacc grammar to Wisent grammar
+;;; Uses a parser-generator library to convert LALR(1) YACC grammar into a
Canonical LR(1) Parser
-;;; AST should be like this: (root (block (rule (logic))))
+;; This does not work if some variables are byte-compiled
+;; therefore we delete byte-compiled files in `make parser' command
+
+;; 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)"'
;;; Code:
@@ -199,18 +205,17 @@
"(setq
parser-generator-lr--distinct-action-tables-resume %S)"
parser-generator-lr--distinct-action-tables))))))))
- ;; NOTE This does not work if functions above are byte-compiled
-
;; Export
(let ((export
(parser-generator-lr-export-to-elisp
"phps-mode-parser"
phps-mode-automation-grammar--header
- phps-mode-automation-grammar--copyright)))
+ phps-mode-automation-grammar--copyright))
+ (parser-file-name (expand-file-name "./phps-mode-parser.el")))
(generate-new-buffer "*PHP Parser*")
(switch-to-buffer "*PHP Parser*")
(insert export)
- (write-file (expand-file-name "./phps-mode-parser.el"))
+ (write-file parser-file-name)
(kill-buffer)
(message "export: %s" export))
diff --git a/phps-mode-automation-parser-generator.el
b/phps-mode-automation-parser-generator.el
index 5a18d8717f..c6cfaafc5d 100644
--- a/phps-mode-automation-parser-generator.el
+++ b/phps-mode-automation-parser-generator.el
@@ -141,23 +141,23 @@
Productions-Block)
(Productions-Block
(Productions-Delimiter Productions Productions-Delimiter
- (lambda(args) (format "'(\n\n%s\n\n)" (nth 1
args))))
+ (lambda(args _terminals) (format "'(\n\n%s\n\n)"
(nth 1 args))))
)
(Productions-Delimiter
(productions-delimiter
- (lambda(args) ""))
+ (lambda(args _terminals) ""))
)
(Productions
(Production
- (lambda(args) (format "%s" args)))
+ (lambda(args _terminals) (format "%s" args)))
(Productions Production
- (lambda(args) (format "%s\n\n%s" (nth 0 args) (nth 1
args))))
+ (lambda(args _terminals) (format "%s\n\n%s" (nth 0 args)
(nth 1 args))))
)
(Production
(Comment Production
- (lambda(args) (format "%s" (nth 1 args))))
+ (lambda(args _terminals) (format "%s" (nth 1 args))))
(LHS ":" RHSS Production-End
- (lambda(args)
+ (lambda(args _terminals)
;; Store distinct LHS
(unless (gethash
(intern (nth 0 args))
@@ -180,19 +180,19 @@
(";" ";"))
(LHS
(Symbol
- (lambda(args) (format "%s" args)))
+ (lambda(args _terminals) (format "%s" args)))
)
(RHSS
(RHS
- (lambda(args) (format "%s" args)))
+ (lambda(args _terminals) (format "%s" args)))
(RHSS "|" RHS
- (lambda(args) (format "%s\n %s" (nth 0 args) (nth 2 args))))
+ (lambda(args _terminals) (format "%s\n %s" (nth 0 args) (nth 2
args))))
)
(RHS
(RHS-Symbol
- (lambda(args) (format "%s" args)))
+ (lambda(args _terminals) (format "%s" args)))
(RHS-Symbols
- (lambda(args)
+ (lambda(args _terminals)
(if (string-match-p " " args)
(format "(%s)" args)
(format "%s" args))))
@@ -200,13 +200,13 @@
(RHS-Symbols
(RHS-Symbol
RHS-Symbols
- (lambda (args)
+ (lambda (args _terminals)
(if (string= (nth 1 args) "")
(format "%s" (nth 0 args))
(format "%s %s" (nth 0 args) (nth 1 args)))))
(RHS-Symbol
RHS-Symbol
- (lambda (args)
+ (lambda (args _terminals)
(if (string= (nth 1 args) "")
(format "%s" (nth 0 args))
(format "%s %s" (nth 0 args) (nth 1 args)))))
@@ -217,14 +217,14 @@
Symbol)
(Comment
(comment
- (lambda(args) "")))
+ (lambda(args _terminals) "")))
(Logic
(logic
- (lambda(args) ""))
+ (lambda(args _terminals) ""))
)
(Symbol
(symbol
- (lambda(args)
+ (lambda(args _terminals)
;; Store distinct symbols
(unless (gethash
(intern args)
@@ -236,7 +236,7 @@
(format "%s" args)))
(literal
- (lambda(args)
+ (lambda(args _terminals)
;; Store distinct symbols
(unless (gethash
(format "%s" (substring args 1 2))
@@ -492,23 +492,23 @@
)
(Declarations-Block
(Declarations
- (lambda(args)
+ (lambda(args _terminals)
(format "'(\n%s)" args))))
(Declarations
(Declaration
- (lambda(args) (format "%s" args)))
+ (lambda(args _terminals) (format "%s" args)))
(Declaration Declarations
- (lambda(args) (format "%s%s" (nth 0 args) (nth 1 args))))
+ (lambda(args _terminals) (format "%s%s" (nth 0 args) (nth
1 args))))
)
(Declaration
(comment
- (lambda(args) ""))
+ (lambda(args _terminals) ""))
(Type Symbols
- (lambda(args) (format " (%s %s)\n" (nth 0 args) (nth 1 args))))
+ (lambda(args _terminals) (format " (%s %s)\n" (nth 0 args) (nth
1 args))))
)
(Type
(type
- (lambda(args)
+ (lambda(args _terminals)
(unless
(gethash
args
@@ -521,15 +521,15 @@
)
(Symbols
(Symbol
- (lambda(args) (format "%s" args)))
+ (lambda(args _terminals) (format "%s" args)))
(Symbol Symbols
- (lambda(args) (format "%s %s" (nth 0 args) (nth 1 args))))
+ (lambda(args _terminals) (format "%s %s" (nth 0 args) (nth 1
args))))
)
(Symbol
(symbol
- (lambda(args) (format "%s" args)))
+ (lambda(args _terminals) (format "%s" args)))
(literal
- (lambda(args)
+ (lambda(args _terminals)
(format "\"%s\"" (substring args 1 2))))
)
)
- [elpa] externals/phps-mode 8f9870fb9b 013/212: Parser SDT does not use global variables, (continued)
- [elpa] externals/phps-mode 8f9870fb9b 013/212: Parser SDT does not use global variables, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 4753734b0a 006/212: Moved syntax coloring to separate file, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode d037aa09bc 023/212: Added bookkeeping via parser SDT foreach ($x as $y) {}, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 3d54b6ff01 022/212: Passed another test for bookkeeping generated via parser SDT, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 442ad93cb2 018/212: Fix for function parameter formatting in AST, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 2a4d5dea37 019/212: Passed bookkeeping of function arguments, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode c29e35fea2 021/212: More work on bookkeeping, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 0daaa97f8d 025/212: SDT for for() loop started, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode fa3681141b 027/212: Passed test for bookkeeping of conditional assignment via parser SDT, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode fc4c763d68 030/212: Added SDT for class properties, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode f7c261cee1 032/212: Generate parser command now compatible with latest emacs-parser-generator,
Christian Johansson <=
- [elpa] externals/phps-mode f82c9a377d 033/212: Re-generated parser to verify automation functionality, improved automation documentation, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode f858060096 034/212: More work on bookkeeping generated from parser SDT, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode c83b1c264e 060/212: Fixed SDT for isset_variables, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 8fa61fa1f2 063/212: Passing bookkeeping of interface method arguments, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 7a636ccd28 078/212: Removed obsolete file parser-grammar-macro.el, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode ee211dac6a 084/212: Started on indentation tests, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode f65ca852cd 092/212: Passed another indent test, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 9a2573939a 094/212: More wrestling, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 7c0cb57312 098/212: Added more multi-line assignment indent tests, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 3a594466d5 100/212: Passed indent test for multi-line assignments, Christian Johansson, 2022/01/26