Clean up some stuff in scanner, try and fail to get quil working
This commit is contained in:
parent
1c2ab5182e
commit
0c2c646012
2
justfile
Normal file
2
justfile
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
repl: # start a repl
|
||||||
|
clj -X clojure.core.server/start-server :name repl :port 5555 :accept clojure.core.server/repl :server-daemon false
|
|
@ -4,7 +4,8 @@
|
||||||
:license {:name "EPL-2.0 OR GPL-2.0-or-later WITH Classpath-exception-2.0"
|
:license {:name "EPL-2.0 OR GPL-2.0-or-later WITH Classpath-exception-2.0"
|
||||||
:url "https://www.eclipse.org/legal/epl-2.0/"}
|
:url "https://www.eclipse.org/legal/epl-2.0/"}
|
||||||
:dependencies [[org.clojure/clojure "1.11.1"]
|
:dependencies [[org.clojure/clojure "1.11.1"]
|
||||||
[babashka/fs "0.1.6"]]
|
[babashka/fs "0.1.6"]
|
||||||
|
[quil "4.0.0-SNAPSHOT"]]
|
||||||
:plugins [[lein-cljfmt "0.8.0"]]
|
:plugins [[lein-cljfmt "0.8.0"]]
|
||||||
:repl-options {:init-ns ludus.core}
|
:repl-options {:init-ns ludus.core}
|
||||||
:main ludus.core
|
:main ludus.core
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
(ns ludus.prelude
|
(ns ludus.prelude
|
||||||
(:require
|
(:require
|
||||||
[ludus.data :as data]
|
[ludus.data :as data]
|
||||||
[ludus.show :as show]))
|
[ludus.show :as show]
|
||||||
|
[ludus.draw :as d]
|
||||||
|
))
|
||||||
|
|
||||||
;; TODO: make eq, and, or special forms that short-circuit
|
;; TODO: make eq, and, or special forms that short-circuit
|
||||||
;; Right now, they evaluate all their args
|
;; Right now, they evaluate all their args
|
||||||
|
@ -81,7 +83,6 @@
|
||||||
(def sleep- {:name "sleep"
|
(def sleep- {:name "sleep"
|
||||||
::data/type ::data/clj
|
::data/type ::data/clj
|
||||||
:body (fn [ms] (Thread/sleep ms))})
|
:body (fn [ms] (Thread/sleep ms))})
|
||||||
|
|
||||||
(def conj- {:name "conj"
|
(def conj- {:name "conj"
|
||||||
::data/type ::data/clj
|
::data/type ::data/clj
|
||||||
:body conj})
|
:body conj})
|
||||||
|
@ -94,6 +95,10 @@
|
||||||
::data/type ::data/clj
|
::data/type ::data/clj
|
||||||
:body get})
|
:body get})
|
||||||
|
|
||||||
|
(def draw {:name "draw"
|
||||||
|
::data/type ::data/clj
|
||||||
|
:body d/draw})
|
||||||
|
|
||||||
(def prelude {"eq" eq
|
(def prelude {"eq" eq
|
||||||
"add" add
|
"add" add
|
||||||
"print" print-
|
"print" print-
|
||||||
|
@ -112,4 +117,5 @@
|
||||||
"assoc" assoc-
|
"assoc" assoc-
|
||||||
"conj" conj-
|
"conj" conj-
|
||||||
"get" get-
|
"get" get-
|
||||||
|
"draw" draw
|
||||||
})
|
})
|
|
@ -20,7 +20,7 @@
|
||||||
"match" ::token/match ;; impl
|
"match" ::token/match ;; impl
|
||||||
"nil" ::token/nil ;; impl
|
"nil" ::token/nil ;; impl
|
||||||
"ns" ::token/ns ;; impl
|
"ns" ::token/ns ;; impl
|
||||||
"panic!" ::token/panic ;; impl
|
;; "panic!" ::token/panic ;; impl (should be a function)
|
||||||
"recur" ::token/recur ;; impl
|
"recur" ::token/recur ;; impl
|
||||||
"ref" ::token/ref ;; impl
|
"ref" ::token/ref ;; impl
|
||||||
"then" ::token/then ;; impl
|
"then" ::token/then ;; impl
|
||||||
|
@ -29,17 +29,17 @@
|
||||||
|
|
||||||
;; actor model/concurrency
|
;; actor model/concurrency
|
||||||
"receive" ::token/receive
|
"receive" ::token/receive
|
||||||
"self" ::token/self ;; maybe not necessary?
|
;;"self" ::token/self ;; maybe not necessary?: self() is a function
|
||||||
"send" ::token/send
|
;;"send" ::token/send ;; not necessary: send(pid, message) is a function
|
||||||
"spawn" ::token/spawn
|
"spawn" ::token/spawn
|
||||||
"to" ::token/to
|
;;"to" ::token/to ;; not necessary if send is a function
|
||||||
;; type system
|
;; type system
|
||||||
"data" ::token/data
|
;; "data" ::token/data ;; we are going to tear out datatypes for now: see if dynamism works for us
|
||||||
;; others
|
;; others
|
||||||
"repeat" ::token/repeat ;; syntax sugar over "loop"
|
"repeat" ::token/repeat ;; syntax sugar over "loop": still unclear what this syntax could be
|
||||||
"test" ::token/test
|
"test" ::token/test
|
||||||
"when" ::token/when
|
"when" ::token/when
|
||||||
"module" ::token/module
|
;; "module" ::token/module ;; not necessary if we don't have datatypes
|
||||||
})
|
})
|
||||||
|
|
||||||
(defn- new-scanner
|
(defn- new-scanner
|
||||||
|
@ -107,7 +107,7 @@
|
||||||
(defn- whitespace? [c]
|
(defn- whitespace? [c]
|
||||||
(or (= c \space) (= c \tab)))
|
(or (= c \space) (= c \tab)))
|
||||||
|
|
||||||
;; TODO: update terminators:
|
;; TODO: update token terminators:
|
||||||
;; remove: \|
|
;; remove: \|
|
||||||
;; add: \>
|
;; add: \>
|
||||||
;; research others
|
;; research others
|
||||||
|
@ -251,7 +251,7 @@
|
||||||
\- (cond
|
\- (cond
|
||||||
(= next \>) (add-token (advance scanner) ::token/rarrow)
|
(= next \>) (add-token (advance scanner) ::token/rarrow)
|
||||||
(digit? next) (add-number char scanner)
|
(digit? next) (add-number char scanner)
|
||||||
:else (add-error scanner (str "Expected -> or negative number. Got " char next)))
|
:else (add-error scanner (str "Expected -> or negative number after `-`. Got `" char next "`")))
|
||||||
|
|
||||||
;; at current we're not using this
|
;; at current we're not using this
|
||||||
;; <-
|
;; <-
|
||||||
|
@ -331,3 +331,5 @@
|
||||||
:errors (::errors scanner)})
|
:errors (::errors scanner)})
|
||||||
(recur (-> scanner (scan-token) (next-token))))))
|
(recur (-> scanner (scan-token) (next-token))))))
|
||||||
|
|
||||||
|
(scan "2 :three true nil")
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user