[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/parseclj 1060c59e35 1/2: Add support for big ints
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/parseclj 1060c59e35 1/2: Add support for big ints |
Date: |
Sun, 6 Feb 2022 13:58:26 -0500 (EST) |
branch: elpa/parseclj
commit 1060c59e35ee835d226f3d4d5daf588ead792b15
Author: r0man <roman@burningswell.com>
Commit: r0man <roman@burningswell.com>
Add support for big ints
This PR adds support for parsing Clojure's big integers.
Clojure:
```
user=> (clojure.edn/read-string "1N")
1N
```
Elisp:
```
(parseclj-parse-clojure "1N")
((:node-type . :root)
(:position . 1)
(:children
((:node-type . :number)
(:position . 1)
(:form . "1N")
(:value . 1))))
```
---
parseclj-lex.el | 4 ++++
test/parseclj-lex-test.el | 7 +++++++
2 files changed, 11 insertions(+)
diff --git a/parseclj-lex.el b/parseclj-lex.el
index 8f2d6722e5..15794c2be5 100644
--- a/parseclj-lex.el
+++ b/parseclj-lex.el
@@ -250,6 +250,10 @@ S goes through three transformations:
(when (eq (char-after (point)) ?M)
(right-char))
+ ;; trailing N clojure.lang.BigInt
+ (when (eq (char-after (point)) ?N)
+ (right-char))
+
(let ((char (char-after (point))))
(if (and char (or (and (<= ?a char) (<= char ?z))
(and (<= ?A char) (<= char ?Z))
diff --git a/test/parseclj-lex-test.el b/test/parseclj-lex-test.el
index e528580ea8..a541b4b98b 100644
--- a/test/parseclj-lex-test.el
+++ b/test/parseclj-lex-test.el
@@ -45,6 +45,13 @@
(:form . "123")
(:pos . 1)))))
+ (with-temp-buffer
+ (insert "123N")
+ (goto-char 1)
+ (should (equal (parseclj-lex-next) '((:token-type . :number)
+ (:form . "123N")
+ (:pos . 1)))))
+
(with-temp-buffer
(insert "123e34M")
(goto-char 1)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [nongnu] elpa/parseclj 1060c59e35 1/2: Add support for big ints,
ELPA Syncer <=