From 447a09bdfb9a1bfb1da1134b629f0cc2232ea1d7 Mon Sep 17 00:00:00 2001 From: Oleg Montak Date: Wed, 9 Oct 2019 23:14:30 +0300 Subject: [PATCH] swift5: step0_repl --- .gitignore | 1 + Makefile | 3 ++- swift5/Makefile | 29 ++++++++++++++++++++++++++++ swift5/Sources/step0_repl/main.swift | 23 ++++++++++++++++++++++ swift5/run | 3 +++ 5 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 swift5/Makefile create mode 100644 swift5/Sources/step0_repl/main.swift create mode 100755 swift5/run diff --git a/.gitignore b/.gitignore index d5c41ff4..c1371974 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.DS_Store .bash_history .cache .cargo diff --git a/Makefile b/Makefile index fcc35bb5..adbcab84 100644 --- a/Makefile +++ b/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)) diff --git a/swift5/Makefile b/swift5/Makefile new file mode 100644 index 00000000..a76309c5 --- /dev/null +++ b/swift5/Makefile @@ -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 + diff --git a/swift5/Sources/step0_repl/main.swift b/swift5/Sources/step0_repl/main.swift new file mode 100644 index 00000000..88ff9588 --- /dev/null +++ b/swift5/Sources/step0_repl/main.swift @@ -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)) +} diff --git a/swift5/run b/swift5/run new file mode 100755 index 00000000..0ecd249c --- /dev/null +++ b/swift5/run @@ -0,0 +1,3 @@ +#!/bin/bash +exec $(dirname $0)/${STEP:-stepA_mal} "${@}" +