emacs-elpa-diffs
[Top][All Lists]
Advanced

[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)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]