From b8ee29b22fbaa7a01f2754b4d6dd9af52e02017c Mon Sep 17 00:00:00 2001 From: Joel Martin Date: Thu, 18 Dec 2014 20:33:49 -0600 Subject: All: add keywords. Also, fix nth and count to match cloure. --- make/reader.mk | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'make/reader.mk') diff --git a/make/reader.mk b/make/reader.mk index 8d04596..8571785 100755 --- a/make/reader.mk +++ b/make/reader.mk @@ -52,6 +52,17 @@ $(foreach ch,$(word 1,$($(1))),\ )) endef +define READ_KEYWORD +$(foreach ch,$(word 1,$($(1))),\ + $(if $(ch),\ + $(if $(filter $(_TOKEN_DELIMS),$(ch)),\ + ,\ + $(eval $(1) := $(wordlist 2,$(words $($(1))),$($(1))))\ + $(and $(READER_DEBUG),$(info READ_KEYWORD ch: $(ch) | $($(1))))\ + $(ch)$(strip $(call READ_KEYWORD,$(1)))),\ + )) +endef + define READ_ATOM $(foreach ch,$(word 1,$($(1))),\ $(if $(filter $(NUMBERS),$(ch)),\ @@ -62,6 +73,9 @@ $(foreach ch,$(word 1,$($(1))),\ $(eval $(if $(filter $(DQUOTE),$(word 1,$($(1)))),\ $(eval $(1) := $(wordlist 2,$(words $($(1))),$($(1)))),\ $(call _error,Expected '$(DQUOTE)' in; $($(1))))),\ + $(if $(filter $(COLON),$(ch)),\ + $(eval $(1) := $(wordlist 2,$(words $($(1))),$($(1))))\ + $(call _keyword,$(call READ_KEYWORD,$(1))),\ $(foreach sym,$(call READ_SYMBOL,$(1)),\ $(if $(call _EQ,nil,$(sym)),\ $(__nil),\ @@ -69,7 +83,7 @@ $(foreach ch,$(word 1,$($(1))),\ $(__true),\ $(if $(call _EQ,false,$(sym)),\ $(__false),\ - $(call _symbol,$(sym))))))))) + $(call _symbol,$(sym)))))))))) endef # read and return tokens until $(2) found -- cgit v1.2.3