aboutsummaryrefslogtreecommitdiff
path: root/src/lang/lexer.clj
diff options
context:
space:
mode:
Diffstat (limited to 'src/lang/lexer.clj')
-rw-r--r--src/lang/lexer.clj12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/lang/lexer.clj b/src/lang/lexer.clj
index 5bd57f7de..54e83c078 100644
--- a/src/lang/lexer.clj
+++ b/src/lang/lexer.clj
@@ -49,7 +49,7 @@
_ (lex-str "}")]
(return [::record members])))
-(def +ident-re+ #"^([a-zA-Z\-\+\_\=!@$%^&*<>\.,/\\\|'][a-zA-Z0-9\-\+\_\=!@$%^&*<>\.,/\\\|']*)")
+(def +ident-re+ #"^([a-zA-Z\-\+\_\=!@$%^&*<>\.,/\\\|'][0-9a-zA-Z\-\+\_\=!@$%^&*<>\.,/\\\|']*)")
(do-template [<name> <tag> <regex>]
(def <name>
@@ -60,6 +60,15 @@
^:private lex-int ::int #"^(0|[1-9][0-9]*)"
^:private lex-ident ::ident +ident-re+)
+(def lex-string
+ (exec [_ (lex-str "\"")
+ token (lex-regex #"^(.+?(?=\"))")
+ _ (lex-str "\"")
+ ]
+ (return [::string token])))
+
+;; (lex "(_. (_.. java.lang.System out) (println \"YOLO\"))")
+
(def ^:private lex-single-line-comment
(exec [_ (lex-str "##")
comment (lex-regex #"^([^\n]*)")
@@ -105,6 +114,7 @@
(exec [_ (try-m lex-white-space)
form (try-all-m [lex-float
lex-int
+ lex-string
lex-ident
lex-tag
lex-list