summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Gilardi <scgilardi@gmail.com>2009-05-04 00:00:00 -0400
committerChouser <chouser@n01se.net>2009-06-19 22:26:26 -0400
commitf1d13b8f1fbda376352caf85857cc0585717bcd9 (patch)
treea55c2abcbc698c1232a2ed94714550edc91e89bd
parentf79e724224f86d938cd6ed287355808233c899e9 (diff)
parse "1." and "1.e3" as legal floats. Refs #117
Signed-off-by: Chouser <chouser@n01se.net>
-rw-r--r--src/jvm/clojure/lang/LispReader.java8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/jvm/clojure/lang/LispReader.java b/src/jvm/clojure/lang/LispReader.java
index 14c39399..41a5eb58 100644
--- a/src/jvm/clojure/lang/LispReader.java
+++ b/src/jvm/clojure/lang/LispReader.java
@@ -47,9 +47,9 @@ static Pattern symbolPat = Pattern.compile("[:]?([\\D&&[^/]].*/)?([\\D&&[^/]][^/
//static Pattern intPat = Pattern.compile("[-+]?[0-9]+\\.?");
static Pattern intPat =
Pattern.compile(
- "([-+]?)(?:(0)|([1-9][0-9]*)|0[xX]([0-9A-Fa-f]+)|0([0-7]+)|([1-9][0-9]?)[rR]([0-9A-Za-z]+)|0[0-9]+)\\.?");
+ "([-+]?)(?:(0)|([1-9][0-9]*)|0[xX]([0-9A-Fa-f]+)|0([0-7]+)|([1-9][0-9]?)[rR]([0-9A-Za-z]+)|0[0-9]+)");
static Pattern ratioPat = Pattern.compile("([-+]?[0-9]+)/([0-9]+)");
-static Pattern floatPat = Pattern.compile("[-+]?[0-9]+(\\.[0-9]+)?([eE][-+]?[0-9]+)?[M]?");
+static Pattern floatPat = Pattern.compile("([-+]?[0-9]+(\\.[0-9]*)?([eE][-+]?[0-9]+)?)(M)?");
static final Symbol SLASH = Symbol.create("/");
static final Symbol CLOJURE_SLASH = Symbol.create("clojure.core","/");
//static Pattern accessorPat = Pattern.compile("\\.[a-zA-Z_]\\w*");
@@ -344,8 +344,8 @@ private static Object matchNumber(String s){
m = floatPat.matcher(s);
if(m.matches())
{
- if(s.charAt(s.length() - 1) == 'M')
- return new BigDecimal(s.substring(0, s.length() - 1));
+ if(m.group(4) != null)
+ return new BigDecimal(m.group(1));
return Double.parseDouble(s);
}
m = ratioPat.matcher(s);