From 18e4826960194d1e637bf341bfd302df72f4341b Mon Sep 17 00:00:00 2001 From: Scott Richmond Date: Tue, 26 Jul 2022 18:25:11 -0400 Subject: [PATCH] Add datatype tokens --- src/ludus/scanner.clj | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/ludus/scanner.clj b/src/ludus/scanner.clj index 44abf0e..46b7d40 100644 --- a/src/ludus/scanner.clj +++ b/src/ludus/scanner.clj @@ -195,13 +195,13 @@ (word-char? curr) (recur (advance scanner) (str word curr)) :else (add-error scanner (str "Unexpected " curr " after word " word ".")))))) -(defn- add-datatype +(defn- add-data [char scanner] (loop [scanner scanner word (str char)] (let [curr (current-char scanner)] (cond - (terminates? curr) (add-token scanner (get reserved-words word ::token/word)) + (terminates? curr) (add-token scanner ::token/data) (word-char? curr) (recur (advance scanner) (str word curr)) :else (add-error scanner (str "Unexpected " curr " after datatype " word ".")))))) @@ -312,7 +312,8 @@ (cond (whitespace? char) scanner ;; for now just skip whitespace characters (digit? char) (add-number char scanner) - (alpha? char) (add-word char scanner) + (upper? char) (add-data char scanner) + (lower? char) (add-word char scanner) :else (add-error scanner (str "Unexpected character: " char)))))) (defn- next-token [scanner] @@ -325,3 +326,4 @@ {:tokens (::tokens scanner) :errors (::errors scanner)}) (recur (-> scanner (scan-token) (next-token)))))) +