From c5d04ddd6694721e277672384d7d4fd730a404d3 Mon Sep 17 00:00:00 2001 From: Scott Richmond Date: Wed, 8 May 2024 17:42:10 -0400 Subject: [PATCH] some unfinished work on string interpolation --- janet/recursive.janet | 4 ++-- janet/scanner.janet | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/janet/recursive.janet b/janet/recursive.janet index 68b1a1d..a99dbef 100644 --- a/janet/recursive.janet +++ b/janet/recursive.janet @@ -551,12 +551,12 @@ (import ./scanner :as s) (do #(comment -(def source `"{foo}"`) +(def source `"foo {bar} \{baz"`) (def scanned (s/scan source)) # (def a-parser (new-parser scanned)) # (def parsed (whenn a-parser)) # (-> parsed) -(map (fn [t] (t :type)) (scanned :tokens)) +(first (scanned :tokens)) ) diff --git a/janet/scanner.janet b/janet/scanner.janet index 02f26c0..ea1ad76 100644 --- a/janet/scanner.janet +++ b/janet/scanner.janet @@ -187,7 +187,6 @@ :else (add-error scanner (string "Unexpected " curr " after number " num "."))))) (recur scanner (buffer char) false)) -## TODO: activate string interpolation (defn- add-string [scanner] (print "Adding string") @@ -197,9 +196,10 @@ "{" (recur (advance scanner) (buffer/push buff char) true) # allow multiline strings "\n" (recur (update (advance scanner) :line inc) (buffer/push buff char) interpolate?) - ### TODO: add interpolated strings - ### :string -> (if (interpolate? :interpolated :string)) - "\"" (add-token (advance scanner) :string (string buff)) + "\"" (add-token (advance scanner) (if interpolate? :interpolated :string)(string buff)) + ### FIXME: Actually add the escaped character to the string; + ### The only weird escapy-thing is actually the lbrace + ### So only do anything fancy if the next char is "{" "\\" (let [next (next-char scanner) scanner (if (= next "\n") (update scanner :line inc)