swift5: step0_repl

This commit is contained in:
Oleg Montak 2019-10-09 23:14:30 +03:00
parent 609fc44f44
commit 447a09bdfb
5 changed files with 58 additions and 1 deletions

1
.gitignore vendored
View file

@ -1,3 +1,4 @@
.DS_Store
.bash_history
.cache
.cargo

View file

@ -94,7 +94,7 @@ IMPLS = ada ada.2 awk bash basic bbc-basic c chuck clojure coffee common-lisp cp
guile haskell haxe hy io java js julia kotlin livescript logo lua make mal \
matlab miniMAL nasm nim objc objpascal ocaml perl perl6 php picolisp pike plpgsql \
plsql powershell ps python python.2 r racket rexx rpython ruby rust scala scheme skew \
swift swift3 swift4 tcl ts vala vb vhdl vimscript wasm wren yorick
swift swift3 swift4 swift5 tcl ts vala vb vhdl vimscript wasm wren yorick
EXTENSION = .mal
@ -255,6 +255,7 @@ skew_STEP_TO_PROG = skew/$($(1)).js
swift_STEP_TO_PROG = swift/$($(1))
swift3_STEP_TO_PROG = swift3/$($(1))
swift4_STEP_TO_PROG = swift4/$($(1))
swift5_STEP_TO_PROG = swift5/$($(1))
tcl_STEP_TO_PROG = tcl/$($(1)).tcl
ts_STEP_TO_PROG = ts/$($(1)).js
vala_STEP_TO_PROG = vala/$($(1))

29
swift5/Makefile Normal file
View file

@ -0,0 +1,29 @@
ifneq ($(shell which xcrun),)
SWIFT = xcrun -sdk macosx swiftc
else
SWIFT = swiftc
endif
STEP3_DEPS = Sources/types.swift Sources/reader.swift Sources/printer.swift Sources/env.swift
STEP4_DEPS = $(STEP3_DEPS) Sources/core.swift
STEPS = step0_repl step1_read_print step2_eval step3_env \
step4_if_fn_do step5_tco step6_file step7_quote \
step8_macros step9_try stepA_mal
all: $(STEPS)
dist: mal
mal: stepA_mal
cp $< $@
step1_read_print step2_eval step3_env: $(STEP3_DEPS)
step4_if_fn_do step5_tco step6_file step7_quote step8_macros step9_try stepA_mal: $(STEP4_DEPS)
step%: Sources/step%/main.swift
$(SWIFT) $+ -o $@
clean:
rm -f $(STEPS) mal

View file

@ -0,0 +1,23 @@
import Foundation
func READ(_ s: String) -> String {
return s
}
func EVAL(_ s: String) -> String {
return s
}
func PRINT(_ s: String) -> String {
return s
}
func rep(_ s: String) -> String {
return PRINT(EVAL(READ(s)))
}
while true {
print("user> ", terminator: "")
guard let s = readLine() else { break }
print(rep(s))
}

3
swift5/run Executable file
View file

@ -0,0 +1,3 @@
#!/bin/bash
exec $(dirname $0)/${STEP:-stepA_mal} "${@}"