summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2008-02-12 19:23:56 +0000
committerRich Hickey <richhickey@gmail.com>2008-02-12 19:23:56 +0000
commit76c5f7d547b6c424ccd9523a340883e1597551ce (patch)
tree4b39798dc6878cee8341a494f9f11d04f41eb108
parent3129be6d80d315e3be2f77dadcf7e904fc6015f5 (diff)
added compiled regex literals via #"pattern"
-rw-r--r--src/jvm/clojure/lang/LispReader.java10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/jvm/clojure/lang/LispReader.java b/src/jvm/clojure/lang/LispReader.java
index e2c12ae1..ef80121a 100644
--- a/src/jvm/clojure/lang/LispReader.java
+++ b/src/jvm/clojure/lang/LispReader.java
@@ -71,6 +71,8 @@ static
dispatchMacros['^'] = new MetaReader();
dispatchMacros['\''] = new WrappingReader(Compiler.THE_VAR);
+ dispatchMacros['"'] = new RegexReader();
+
}
static boolean isWhitespace(int ch){
@@ -254,6 +256,14 @@ static private boolean isTerminatingMacro(int ch){
return (ch != '#' && ch < macros.length && macros[ch] != null);
}
+static class RegexReader extends AFn{
+ static StringReader stringrdr = new StringReader();
+ public Object invoke(Object reader, Object doublequote) throws Exception{
+ String str = (String) stringrdr.invoke(reader, doublequote);
+ return Pattern.compile(str);
+ }
+}
+
static class StringReader extends AFn{
public Object invoke(Object reader, Object doublequote) throws Exception{
StringBuilder sb = new StringBuilder();