Add struct to scanner; new reserved words.

This commit is contained in:
Scott Richmond 2022-04-03 14:22:01 -04:00
parent 98530b0f0f
commit 811a57be1c

View File

@ -10,6 +10,7 @@
;; see ludus-spec repo for more info
{"as" ::token/as
"cond" ::token/cond
"data" ::token/data
"do" ::token/do
"else" ::token/else
"false" ::token/false
@ -21,6 +22,7 @@
"mut" ::token/mut
"nil" ::token/nil
"panic!" ::token/panic
"ref" ::token/ref
"then" ::token/then
"true" ::token/true
"var" ::token/var
@ -260,6 +262,11 @@
(add-token (advance scanner) ::token/startset)
(add-error scanner (str "Expected beginning of set: ${. Got " char next)))
;; struct @{
\@ (if (= next \{)
(add-token (advance scanner) ::token/startstruct)
(add-error scanner (str "Expected beginning of struct: @{. Got " char next)))
;; placeholders
;; there's a flat _, and then ignored words
\_ (cond
@ -270,14 +277,11 @@
;; comments
;; & starts an inline comment
;; TODO: include comments in scanned file
;; TODO: add doc comments: &&&
;; TODO, maybe: add doc comments: &&& (or perhaps a docstring in an fn?)
\& (add-comment char scanner)
;; keywords
;; TODO: instead of a separate token, scan a whole type keyword
;; e.g. ::string, ::number
\: (cond
;;(= \: next) (add-token (advance scanner) ::token/doublecolon))
(alpha? next) (add-keyword scanner)
:else (add-error scanner (str "Expected keyword. Got " char next)))