Dotted pairs reading/printing correctly
This commit is contained in:
parent
0321401c2a
commit
d01bb68c0f
|
@ -54,7 +54,7 @@
|
|||
;; Lisp 1.5 supported octal as well as decimal and scientific notation
|
||||
"number := integer | decimal | scientific | octal;
|
||||
integer := #'-?[1-9][0-9]*';
|
||||
decimal := #'-?[1-9][0-9]*\\.?[0-9]*' | #'0\\.[0-9]*';
|
||||
decimal := #'-?[1-9][0-9]*\\.?[0-9]*' | #'0.[0-9]*';
|
||||
scientific := coefficient e exponent;
|
||||
coefficient := decimal;
|
||||
exponent := integer;
|
||||
|
@ -248,7 +248,7 @@
|
|||
(generate (nth p 2)))
|
||||
:exponent (generate (second p))
|
||||
:fncall (gen-fn-call p)
|
||||
:mvar (upper-case (second p))
|
||||
:mvar (symbol (upper-case (second p)))
|
||||
:octal (let [n (read-string (strip-leading-zeros (second p) "0"))
|
||||
scale (generate (nth p 2))]
|
||||
(* n (expt 8 scale)))
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
(ns beowulf.sexpr-test
|
||||
(:require [clojure.math.numeric-tower :refer [abs]]
|
||||
[clojure.test :refer :all]
|
||||
[beowulf.cons-cell :refer :all]
|
||||
[beowulf.read :refer [parse simplify generate]]
|
||||
[beowulf.print :refer :all]))
|
||||
|
||||
|
@ -74,3 +75,15 @@
|
|||
actual (generate (simplify (parse "0.6E2")))]
|
||||
(is (< (abs (- actual expected)) 0.0001))))
|
||||
|
||||
(deftest dotted-pair-tests
|
||||
(testing "Reading dotted pairs"
|
||||
(let [expected "(A . B)"
|
||||
actual (prin (generate (simplify (parse expected))))]
|
||||
(is (= actual expected)))
|
||||
(let [expected "(A B C . D)"
|
||||
actual (prin (generate (simplify (parse expected))))]
|
||||
(is (= actual expected)))
|
||||
(let [expected "(A B (C . D) E)"
|
||||
actual (prin (generate (simplify (parse expected))))]
|
||||
(is (= actual expected)))
|
||||
))
|
||||
|
|
Loading…
Reference in a new issue