swift5: step0_repl
This commit is contained in:
parent
609fc44f44
commit
447a09bdfb
5 changed files with 58 additions and 1 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,3 +1,4 @@
|
|||
.DS_Store
|
||||
.bash_history
|
||||
.cache
|
||||
.cargo
|
||||
|
|
3
Makefile
3
Makefile
|
@ -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
29
swift5/Makefile
Normal 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
|
||||
|
23
swift5/Sources/step0_repl/main.swift
Normal file
23
swift5/Sources/step0_repl/main.swift
Normal 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
3
swift5/run
Executable file
|
@ -0,0 +1,3 @@
|
|||
#!/bin/bash
|
||||
exec $(dirname $0)/${STEP:-stepA_mal} "${@}"
|
||||
|
Loading…
Reference in a new issue