[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator 231bf85 422/434: Using (signal) instea
From: |
ELPA Syncer |
Subject: |
[elpa] externals/parser-generator 231bf85 422/434: Using (signal) instead of (error) in LR-parser and exported LR-parser when encountering syntax error |
Date: |
Mon, 29 Nov 2021 16:00:29 -0500 (EST) |
branch: externals/parser-generator
commit 231bf858cc1d4e063a4749686f393764919e1986
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
Using (signal) instead of (error) in LR-parser and exported LR-parser when
encountering syntax error
---
parser-generator-lex-analyzer.el | 26 +++++++++---
parser-generator-lr-export.el | 13 ++++--
parser-generator-lr.el | 85 +++++++++++++++++++++++++---------------
3 files changed, 83 insertions(+), 41 deletions(-)
diff --git a/parser-generator-lex-analyzer.el b/parser-generator-lex-analyzer.el
index 5610d6c..3198bd2 100644
--- a/parser-generator-lex-analyzer.el
+++ b/parser-generator-lex-analyzer.el
@@ -45,7 +45,11 @@
(defun parser-generator-lex-analyzer--get-function (token)
"Get information about TOKEN."
(unless parser-generator-lex-analyzer--get-function
- (error "Missing lex-analyzer get function! Token: %s" token))
+ (signal
+ 'error
+ (list
+ (format "Missing lex-analyzer get function! Token: %s" token)
+ token)))
(let ((meta-information))
(condition-case error
(progn
@@ -53,12 +57,22 @@
(funcall
parser-generator-lex-analyzer--get-function
token)))
- (error (error
- "Lex-analyze failed to get token meta-data of %s, error: %s"
- token
- (car (cdr error)))))
+ (error
+ (signal
+ 'error
+ (list
+ (format
+ "Lex-analyze failed to get token meta-data of %s, error: %s"
+ token
+ (car (cdr error)))
+ token
+ (car (cdr error))))))
(unless meta-information
- (error "Could not find any token meta-information for: %s" token))
+ (signal
+ 'error
+ (list
+ (format "Could not find any token meta-information for: %s" token)
+ token)))
meta-information))
(defun parser-generator-lex-analyzer--peek-next-look-ahead ()
diff --git a/parser-generator-lr-export.el b/parser-generator-lr-export.el
index b5d9501..584f63e 100644
--- a/parser-generator-lr-export.el
+++ b/parser-generator-lr-export.el
@@ -609,14 +609,20 @@
namespace))
(insert "
- (error
- \"Invalid syntax! Expected one of %s found %s at %s\"
+ (signal
+ 'error
+ (list
+ (format
+ \"Invalid syntax! Expected one of %s found %s at %s\"
")
(insert (format "
possible-look-aheads
look-ahead
- %s-lex-analyzer--index))
+ %s-lex-analyzer--index)
+ possible-look-aheads
+ look-ahead
+ %s-lex-analyzer--index)))
(cond
@@ -662,6 +668,7 @@
(setq goto-index (1+ goto-index)))"
namespace
namespace
+ namespace
namespace))
(insert "
diff --git a/parser-generator-lr.el b/parser-generator-lr.el
index cad6f5b..8f54db9 100644
--- a/parser-generator-lr.el
+++ b/parser-generator-lr.el
@@ -1839,11 +1839,17 @@
;; (c) If f(u) = error, we halt parsing (and, in practice
;; transfer to an error recovery routine).
- (error
- "Invalid syntax! Expected one of %S found %S at position
%S"
- possible-look-aheads
- look-ahead
- parser-generator-lex-analyzer--index))
+ (signal
+ 'error
+ (list
+ (format
+ "Invalid syntax! Expected one of %S found %S at
position %S"
+ possible-look-aheads
+ look-ahead
+ parser-generator-lex-analyzer--index)
+ possible-look-aheads
+ look-ahead
+ parser-generator-lex-analyzer--index)))
(parser-generator--debug
(message "action-table: %s" action-table)
@@ -1904,11 +1910,17 @@
(message "shift next-index: %s" next-index))
(unless next-index
- (error
- "In shift, found no GOTO-item for %s at %s,
expected one of %s"
- a
- parser-generator-lex-analyzer--index
- possible-look-aheads))
+ (signal
+ 'error
+ (list
+ (format
+ "In shift, found no GOTO-item for %s at %s,
expected one of %s"
+ a
+ parser-generator-lex-analyzer--index
+ possible-look-aheads)
+ a
+ parser-generator-lex-analyzer--index
+ possible-look-aheads)))
(push (car a-full) pushdown-list)
(push next-index pushdown-list)
@@ -2123,30 +2135,39 @@
(setq accept t))
- (t (error
+ (t
+ (signal
+ 'error
+ (list
+ (format
"Invalid action-match: %s!"
- action-match)))))))))
+ action-match)
+ action-match))))))))))
(unless accept
- (error
- "Parsed entire string without getting accepting! Output: %s"
- (reverse output)))
- (when history
- (setq history (reverse history)))
- (when output
- (setq output (reverse output)))
- (let ((translation-symbol-table-list))
- (when translation-symbol-table
- (maphash
- (lambda (key value)
- (push
- `(,key ,value)
- translation-symbol-table-list))
- translation-symbol-table))
- (list
- output
- translation
- translation-symbol-table-list
- history)))))
+ (signal
+ 'error
+ (list
+ (format
+ "Parsed entire string without getting accepting! Output: %s"
+ (reverse output))
+ (reverse output)))))
+ (when history
+ (setq history (reverse history)))
+ (when output
+ (setq output (reverse output)))
+ (let ((translation-symbol-table-list))
+ (when translation-symbol-table
+ (maphash
+ (lambda (key value)
+ (push
+ `(,key ,value)
+ translation-symbol-table-list))
+ translation-symbol-table))
+ (list
+ output
+ translation
+ translation-symbol-table-list
+ history))))
(provide 'parser-generator-lr)
- [elpa] externals/parser-generator ca21bcd 412/434: Shortened doc-string, (continued)
- [elpa] externals/parser-generator ca21bcd 412/434: Shortened doc-string, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 0a3f5f5 426/434: Added test for LR(1) PHP 8.0 match grammar, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator c9906f7 420/434: Move order of export of LR lex-analyzer, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator a4c5d9f 429/434: Syntax-directed translations now have access to terminal data if any is available, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 428207c 432/434: Fixed bug with exported lr-parser with partial translation, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator fa43f05 301/434: More cpu optimizations, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator a65b652 307/434: Added TODO-items, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator ac7207a 292/434: Passed translate test on exported parser, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 63bd6c0 423/434: LR-parser now has SDT as optional feature to speed up plain parses, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 9c41807 424/434: Code-styling fix, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 231bf85 422/434: Using (signal) instead of (error) in LR-parser and exported LR-parser when encountering syntax error,
ELPA Syncer <=
- [elpa] externals/parser-generator 48f109c 417/434: Fixed typo in exported LR parser, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator da14fbd 431/434: Passing more metadata about terminals to SDT, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator af9ad94 418/434: Move lexer flag now affecting global state, ELPA Syncer, 2021/11/29