nydp 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/lisp/boot.nydp +91 -56
- data/lib/lisp/tests/boot-tests.nydp +54 -0
- data/lib/nydp/builtin/load_tests.rb +9 -0
- data/lib/nydp/builtin/to_sym.rb +0 -6
- data/lib/nydp/core.rb +1 -0
- data/lib/nydp/literal.rb +3 -2
- data/lib/nydp/pair.rb +22 -4
- data/lib/nydp/parser.rb +13 -8
- data/lib/nydp/symbol.rb +3 -2
- data/lib/nydp/version.rb +1 -1
- data/lib/nydp/vm.rb +1 -1
- data/spec/parser_spec.rb +52 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e96bb2970aa18753721c5faa2c5aeec53a73245f
|
4
|
+
data.tar.gz: 151802fddd1bcdb72ecddc6fb2e882b11c3d2ea4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 437799e27e763566d9c6febf8ea154aea63bf66a7a9db57f6e8e8c033086646d9966c687d276578840dc0a974e5fdf7fb722ce9366bfb70d840f8e1b3906936f
|
7
|
+
data.tar.gz: da65be98312e0b821e9c7fe3b39ae6a8944b87fc6a7d20e56aaffe6a8673f632bda2c7daa6bbefe488243d156e933e81c8f33ee29909b55aa264f2afaa570a83
|
data/lib/lisp/boot.nydp
CHANGED
@@ -1,25 +1,27 @@
|
|
1
1
|
; -*- lisp -*-
|
2
2
|
|
3
3
|
(assign last-cons (fn (xs)
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
(cond (pair? (cdr xs))
|
5
|
+
(last-cons (cdr xs))
|
6
|
+
xs)))
|
7
7
|
|
8
|
-
(assign append-list! (fn (list-1 list-2)
|
9
|
-
(cdr-set (last-cons list-1) list-2)
|
10
|
-
list-1))
|
11
|
-
|
12
|
-
(assign list (fn args args))
|
13
8
|
|
14
|
-
(assign
|
15
|
-
(
|
16
|
-
|
17
|
-
|
18
|
-
(assign
|
9
|
+
(assign append-list! (fn (list-1 list-2)
|
10
|
+
(cdr-set (last-cons list-1) list-2)
|
11
|
+
list-1))
|
12
|
+
|
13
|
+
(assign list (fn args args))
|
14
|
+
(assign last (fn (arg) (car (last-cons arg))))
|
15
|
+
(assign caar (fn (arg) (car (car arg))))
|
16
|
+
(assign cadr (fn (arg) (car (cdr arg))))
|
17
|
+
(assign cddr (fn (arg) (cdr (cdr arg))))
|
18
|
+
(assign no (fn (arg) (eq? arg nil)))
|
19
|
+
(assign just (fn (arg) arg))
|
20
|
+
(assign pargs (fn args (apply p args) (last args)))
|
19
21
|
|
20
22
|
(assign mac-expand (fn (macfn name body)
|
21
23
|
(cond macfn
|
22
|
-
(pre-compile
|
24
|
+
(pre-compile (apply macfn body))
|
23
25
|
(cons name body))))
|
24
26
|
|
25
27
|
(assign macs (hash))
|
@@ -36,26 +38,23 @@
|
|
36
38
|
(fn (args)
|
37
39
|
(cond args
|
38
40
|
(cond (pair? args)
|
39
|
-
(cons (pre-compile
|
41
|
+
(cons (pre-compile (car args))
|
40
42
|
(pre-compile-each (cdr args)))
|
41
43
|
args))))
|
42
44
|
|
43
45
|
(assign pre-compile-msg
|
44
46
|
(fn args
|
45
|
-
(cond *debug-pre-compile* (apply p args)
|
46
|
-
|
47
|
-
(assign pre-compile-do
|
48
|
-
(fn (arg)
|
49
|
-
(cond (pair? arg)
|
50
|
-
(cond (eq? (car arg) 'quote)
|
51
|
-
arg
|
52
|
-
(pre-compile-each (pre-compile-expr (car arg) (cdr arg))))
|
53
|
-
arg)))
|
47
|
+
(cond *debug-pre-compile* (apply p args))
|
48
|
+
(last args)))
|
54
49
|
|
55
50
|
(assign pre-compile
|
56
51
|
(fn (arg)
|
57
|
-
(pre-compile-msg "pre-compile" arg
|
58
|
-
|
52
|
+
(pre-compile-msg "pre-compile" arg "\n -> "
|
53
|
+
(cond (pair? arg)
|
54
|
+
(cond (eq? (car arg) 'quote)
|
55
|
+
arg
|
56
|
+
(pre-compile-each (pre-compile-expr (car arg) (cdr arg))))
|
57
|
+
arg))))
|
59
58
|
|
60
59
|
(hash-set macs 'def
|
61
60
|
(fn (name args . body)
|
@@ -64,37 +63,74 @@
|
|
64
63
|
(+ (list 'fn args)
|
65
64
|
body))))
|
66
65
|
|
67
|
-
(def qq-unquote-
|
66
|
+
(def qq-handle-unquote-splicing (arg rest level)
|
67
|
+
(cond (eq? level 0)
|
68
|
+
(qq-do-unquote-splicing arg rest level)
|
69
|
+
(qq-skip-unquote-splicing arg rest level)))
|
70
|
+
|
71
|
+
(def qq-do-unquote-splicing (arg rest level)
|
72
|
+
(cond (no rest)
|
73
|
+
arg
|
74
|
+
(list '+
|
75
|
+
(pre-compile arg)
|
76
|
+
(qq-quasiquote rest level))))
|
77
|
+
|
78
|
+
(def qq-skip-unquote-splicing (arg rest level)
|
79
|
+
(list 'cons
|
80
|
+
(list 'list ''unquote-splicing (qq-quasiquote arg (- level 1)))
|
81
|
+
(qq-quasiquote rest level)))
|
82
|
+
|
83
|
+
(def qq-handle-quasiquote (arg rest level)
|
84
|
+
(list 'cons
|
85
|
+
(list 'list ''quasiquote (qq-quasiquote arg (+ level 1)))
|
86
|
+
(qq-quasiquote rest level)))
|
87
|
+
|
88
|
+
(def qq-handle-unquote (arg rest level)
|
89
|
+
(list 'cons
|
90
|
+
(qq-maybe-unquote arg level)
|
91
|
+
(qq-quasiquote rest level)))
|
92
|
+
|
93
|
+
(def qq-unquote-recurse (arg rest level)
|
68
94
|
(list 'cons
|
69
|
-
(qq-quasiquote arg)
|
70
|
-
(qq-quasiquote rest)))
|
95
|
+
(qq-quasiquote arg level)
|
96
|
+
(qq-quasiquote rest level)))
|
97
|
+
|
98
|
+
(def qq-handle-plain (arg rest level)
|
99
|
+
(list 'cons
|
100
|
+
(list 'quote arg)
|
101
|
+
(qq-quasiquote rest level)))
|
71
102
|
|
72
|
-
(def qq-unquote? (arg rest)
|
103
|
+
(def qq-unquote? (arg rest level)
|
73
104
|
(cond (pair? arg)
|
74
105
|
(cond (eq? (car arg) 'unquote)
|
75
|
-
(
|
106
|
+
(qq-handle-unquote (cadr arg) rest level)
|
76
107
|
(cond (eq? (car arg) 'unquote-splicing)
|
77
|
-
(
|
78
|
-
|
79
|
-
(
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
(
|
97
|
-
|
108
|
+
(qq-handle-unquote-splicing (cadr arg) rest level)
|
109
|
+
(cond (eq? (car arg) 'quasiquote)
|
110
|
+
(qq-handle-quasiquote (cadr arg) rest level)
|
111
|
+
(qq-unquote-recurse arg rest level))))
|
112
|
+
(qq-handle-plain arg rest level)))
|
113
|
+
|
114
|
+
(def qq-maybe-unquote (xs level)
|
115
|
+
(cond (eq? level 0)
|
116
|
+
(pre-compile xs)
|
117
|
+
(list 'list ''unquote (qq-quasiquote xs (- level 1)))))
|
118
|
+
|
119
|
+
(def qq-quasiquote (xs level)
|
120
|
+
(cond (no xs)
|
121
|
+
nil
|
122
|
+
(cond (pair? xs)
|
123
|
+
(cond (eq? (car xs) 'unquote)
|
124
|
+
(qq-maybe-unquote (cadr xs) level)
|
125
|
+
(cond (eq? (car xs) 'unquote-splicing)
|
126
|
+
(qq-handle-unquote-splicing (cadr xs) nil level)
|
127
|
+
(cond (eq? (car xs) 'quasiquote)
|
128
|
+
(list 'list ''quasiquote (qq-quasiquote (cdr xs) (+ level 1)))
|
129
|
+
(qq-unquote? (car xs) (cdr xs) level))))
|
130
|
+
(list 'quote xs))))
|
131
|
+
|
132
|
+
(hash-set macs 'quasiquote
|
133
|
+
(fn (arg) (qq-quasiquote arg 0)))
|
98
134
|
|
99
135
|
(hash-set macs 'mac (fn (name args . body)
|
100
136
|
`(hash-set macs ',name (fn ,args ,@body))))
|
@@ -141,10 +177,6 @@
|
|
141
177
|
(mac let (var val . body)
|
142
178
|
`(with (,var ,val) ,@body))
|
143
179
|
|
144
|
-
;; (debug-pre-compile t)
|
145
|
-
;; (let a b c d e)
|
146
|
-
;; (debug-pre-compile nil)
|
147
|
-
|
148
180
|
(def each (f acc things)
|
149
181
|
(if things
|
150
182
|
(each f (f acc (car things)) (cdr things))
|
@@ -228,3 +260,6 @@
|
|
228
260
|
(if (pair? xs)
|
229
261
|
(+ 1 (len (cdr xs)))
|
230
262
|
0))
|
263
|
+
|
264
|
+
(def build-keyword-args (pairs)
|
265
|
+
(map (fn (ab) `(list (quote ,(car ab)) ,@(cdr ab))) pairs))
|
@@ -0,0 +1,54 @@
|
|
1
|
+
;
|
2
|
+
; absurd contrived exaggerated example to test that macros that generate
|
3
|
+
; macros that generate macros that generate expressions are likely to work
|
4
|
+
;
|
5
|
+
; may you never need to do this in real life
|
6
|
+
;
|
7
|
+
(mac make-make-op (opname op)
|
8
|
+
`(mac ,opname (name n . body)
|
9
|
+
`(mac ,name (x)
|
10
|
+
`(,',',op ,,n ,x))))
|
11
|
+
|
12
|
+
(make-make-op make-mult *)
|
13
|
+
(make-make-op make-plus +)
|
14
|
+
|
15
|
+
(make-mult *five 5)
|
16
|
+
(make-mult *seven 7)
|
17
|
+
(make-mult *eleven 11)
|
18
|
+
|
19
|
+
(make-plus +five 5)
|
20
|
+
(make-plus +seven 7)
|
21
|
+
(make-plus +eleven 11)
|
22
|
+
|
23
|
+
(register-test
|
24
|
+
'(suite "Boot Tests"
|
25
|
+
|
26
|
+
(suite "quasiquote"
|
27
|
+
("peeks inside nested quotes"
|
28
|
+
`(a b '(c ,(+ 1 2)))
|
29
|
+
(a b '(c 3)))
|
30
|
+
("handles nested unquote-splicing"
|
31
|
+
``(a ,,@(list '+ 1 2) b)
|
32
|
+
`((a ,(+ 1 2) b)))
|
33
|
+
("returns nested quasiquotes"
|
34
|
+
`(a b `(c d ,(+ 1 2) ,,(+ 3 4)))
|
35
|
+
(a b `(c d ,(+ 1 2) ,7))))
|
36
|
+
|
37
|
+
(suite "build-keyword-args"
|
38
|
+
("takes a list of lists and returns the list with the first item of each sublist quoted"
|
39
|
+
(build-keyword-args '( (a 1) (b c) (d e "f" 22) ))
|
40
|
+
((list 'a 1) (list 'b c) (list 'd e "f" 22))))
|
41
|
+
|
42
|
+
(suite "make-macros can create macros"
|
43
|
+
("make-plus example generates a plus-seven expression"
|
44
|
+
(+seven 6)
|
45
|
+
13)
|
46
|
+
("make-mult example generates a multiply-by-seven expression"
|
47
|
+
(*seven 6)
|
48
|
+
42)
|
49
|
+
("make-mult example generates a multiply-by-eleven expression"
|
50
|
+
(*eleven 20)
|
51
|
+
220)
|
52
|
+
("make-make example expressions can be nested"
|
53
|
+
(*eleven (*five (+seven 2)))
|
54
|
+
495))))
|
data/lib/nydp/builtin/to_sym.rb
CHANGED
data/lib/nydp/core.rb
CHANGED
@@ -45,6 +45,7 @@ module Nydp
|
|
45
45
|
Symbol.mk(:inspect, ns).assign(Nydp::Builtin::Inspect.new)
|
46
46
|
Symbol.mk(:comment, ns).assign(Nydp::Builtin::Comment.new)
|
47
47
|
Symbol.mk(:millisecs, ns).assign(Nydp::Builtin::Millisecs.new)
|
48
|
+
Symbol.mk("load-tests", ns).assign(Nydp::Builtin::LoadTests.new(ns))
|
48
49
|
Symbol.mk("random-string",ns).assign(Nydp::Builtin::RandomString.new)
|
49
50
|
Symbol.mk("to-string", ns).assign(Nydp::Builtin::ToString.new)
|
50
51
|
Symbol.mk("string-pieces",ns).assign(Nydp::Builtin::StringPieces.new)
|
data/lib/nydp/literal.rb
CHANGED
@@ -18,8 +18,9 @@ module Nydp
|
|
18
18
|
vm.push_arg expression
|
19
19
|
end
|
20
20
|
|
21
|
-
def
|
22
|
-
def
|
21
|
+
def nydp_type ; :literal ; end
|
22
|
+
def inspect ; @expression.inspect ; end
|
23
|
+
def to_s ; @expression.to_s ; end
|
23
24
|
|
24
25
|
def coerce _
|
25
26
|
[_, expression]
|
data/lib/nydp/pair.rb
CHANGED
@@ -66,6 +66,24 @@ class Nydp::Pair
|
|
66
66
|
else
|
67
67
|
"'#{cdr.to_s}"
|
68
68
|
end
|
69
|
+
elsif car.is_a?(Nydp::Symbol) && car.is?(:quasiquote)
|
70
|
+
if Nydp.NIL.is? cdr.cdr
|
71
|
+
"`#{cdr.car.to_s}"
|
72
|
+
else
|
73
|
+
"`#{cdr.to_s}"
|
74
|
+
end
|
75
|
+
elsif car.is_a?(Nydp::Symbol) && car.is?(:unquote)
|
76
|
+
if Nydp.NIL.is? cdr.cdr
|
77
|
+
",#{cdr.car.to_s}"
|
78
|
+
else
|
79
|
+
",#{cdr.to_s}"
|
80
|
+
end
|
81
|
+
elsif car.is_a?(Nydp::Symbol) && car.is?(:"unquote-splicing")
|
82
|
+
if Nydp.NIL.is? cdr.cdr
|
83
|
+
",@#{cdr.car.to_s}"
|
84
|
+
else
|
85
|
+
",@#{cdr.to_s}"
|
86
|
+
end
|
69
87
|
else
|
70
88
|
"(#{to_s_rest})"
|
71
89
|
end
|
@@ -95,13 +113,13 @@ class Nydp::Pair
|
|
95
113
|
[car.inspect, cdr_s].compact.join " "
|
96
114
|
end
|
97
115
|
|
98
|
-
def append
|
116
|
+
def append thing
|
99
117
|
if Nydp.NIL.is? self.cdr
|
100
|
-
self.cdr =
|
118
|
+
self.cdr = thing
|
101
119
|
elsif pair? self.cdr
|
102
|
-
self.cdr.append
|
120
|
+
self.cdr.append thing
|
103
121
|
else
|
104
|
-
raise "can't append #{
|
122
|
+
raise "can't append #{thing} to list #{self} : cdr is #{self.cdr.inspect}"
|
105
123
|
end
|
106
124
|
self
|
107
125
|
end
|
data/lib/nydp/parser.rb
CHANGED
@@ -20,15 +20,16 @@ module Nydp
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def prefix_list prefix, list
|
23
|
+
return list if prefix == ''
|
23
24
|
case prefix
|
24
|
-
when
|
25
|
-
Pair.from_list
|
26
|
-
when
|
27
|
-
Pair.from_list
|
28
|
-
when
|
29
|
-
Pair.from_list
|
30
|
-
when
|
31
|
-
Pair.from_list
|
25
|
+
when /^(.*)'$/
|
26
|
+
prefix_list $1, Pair.from_list([sym(:quote), list])
|
27
|
+
when /^(.*)`$/
|
28
|
+
prefix_list $1, Pair.from_list([sym(:quasiquote), list])
|
29
|
+
when /^(.*),$/
|
30
|
+
prefix_list $1, Pair.from_list([sym(:unquote), list])
|
31
|
+
when /^(.*),@$/
|
32
|
+
prefix_list $1, Pair.from_list([sym(:"unquote-splicing"), list])
|
32
33
|
else
|
33
34
|
list
|
34
35
|
end
|
@@ -40,6 +41,10 @@ module Nydp
|
|
40
41
|
|
41
42
|
def parse_symbol txt
|
42
43
|
case txt
|
44
|
+
when /^[-+]?[0-9]*\.[0-9]+([eE][-+]?[0-9]+)?$/
|
45
|
+
txt.to_f
|
46
|
+
when /^[-+]?[0-9]+$/
|
47
|
+
txt.to_i
|
43
48
|
when /^'(.+)$/
|
44
49
|
Pair.from_list [sym(:quote), parse_symbol($1)]
|
45
50
|
when /^`(.+)$/
|
data/lib/nydp/symbol.rb
CHANGED
@@ -29,8 +29,9 @@ class Nydp::Symbol
|
|
29
29
|
ns[name.to_sym]
|
30
30
|
end
|
31
31
|
|
32
|
-
def
|
33
|
-
def
|
32
|
+
def nydp_type ; :symbol ; end
|
33
|
+
def inspect ; to_s ; end
|
34
|
+
def to_s ; name.to_s ; end
|
34
35
|
|
35
36
|
def == other
|
36
37
|
other.is_a?(Nydp::Symbol) && (self.name == other.name)
|
data/lib/nydp/version.rb
CHANGED
data/lib/nydp/vm.rb
CHANGED
data/spec/parser_spec.rb
CHANGED
@@ -124,6 +124,18 @@ describe Nydp::Parser do
|
|
124
124
|
expect(parse "foo.bar").to eq pair_list([dotsyn, foo, bar])
|
125
125
|
end
|
126
126
|
|
127
|
+
it "should spot numbers hiding in special syntax" do
|
128
|
+
parsed = parse("foo.2:3:4")
|
129
|
+
expect(parsed.inspect).to eq "(dot-syntax foo (colon-syntax 2 3 4))"
|
130
|
+
|
131
|
+
numbers = parsed.cdr.cdr.car.cdr
|
132
|
+
two = numbers.car
|
133
|
+
three = numbers.cdr.car
|
134
|
+
four = numbers.cdr.cdr.car
|
135
|
+
|
136
|
+
expect([two, three, four].map &:class).to eq [Fixnum, Fixnum, Fixnum]
|
137
|
+
end
|
138
|
+
|
127
139
|
it "should parse a dotted symbol" do
|
128
140
|
expect(parse "(list a b foo.bar c)").to eq pair_list([sym(:list), a, b, pair_list([dotsyn, foo, bar]), c])
|
129
141
|
end
|
@@ -140,10 +152,32 @@ describe Nydp::Parser do
|
|
140
152
|
expect(parse "'foo").to eq pair_list([quote, foo])
|
141
153
|
end
|
142
154
|
|
155
|
+
it "should not let quote decorations trick it into thinking numbers are symbols" do
|
156
|
+
two = parse("'2").cdr.car
|
157
|
+
expect(two.class).to eq 2.class
|
158
|
+
expect(two).to eq 2
|
159
|
+
end
|
160
|
+
|
161
|
+
it "should not let unquote decorations trick it into thinking numbers are symbols" do
|
162
|
+
two = parse(",2").cdr.car
|
163
|
+
expect(two.class).to eq 2.class
|
164
|
+
expect(two).to eq 2
|
165
|
+
end
|
166
|
+
|
167
|
+
it "should not let unquote-splicing decorations trick it into thinking numbers are symbols" do
|
168
|
+
two = parse(",@2").cdr.car
|
169
|
+
expect(two.class).to eq 2.class
|
170
|
+
expect(two).to eq 2
|
171
|
+
end
|
172
|
+
|
143
173
|
it "should quote-unquote symbols" do
|
144
174
|
expect(parse "',foo").to eq pair_list([quote, pair_list([unquote, foo])])
|
145
175
|
end
|
146
176
|
|
177
|
+
it "should unquote-unquote_splicing symbols" do
|
178
|
+
expect(parse(",,@foo").inspect).to eq "(unquote (unquote-splicing foo))"
|
179
|
+
end
|
180
|
+
|
147
181
|
it "should quote lists" do
|
148
182
|
expect(parse "'(foo)").to eq pair_list([quote, pair_list([foo])])
|
149
183
|
end
|
@@ -156,6 +190,24 @@ describe Nydp::Parser do
|
|
156
190
|
expect(parse ",(bar)").to eq pair_list([unquote, pair_list([bar])])
|
157
191
|
end
|
158
192
|
|
193
|
+
it "should do some complicated unquote stuff with lists" do
|
194
|
+
expect(parse("`(a b `(c d ,(+ 1 2) ,,(+ 3 4)))").inspect).to eq "(quasiquote (a b (quasiquote (c d (unquote (+ 1 2)) (unquote (unquote (+ 3 4)))))))"
|
195
|
+
end
|
196
|
+
|
197
|
+
it "should do some complicated unquote stuff with mixed lists and symbols" do
|
198
|
+
expect(parse("`(a b `(c d ,,@foo e f))").inspect).to eq "(quasiquote (a b (quasiquote (c d (unquote (unquote-splicing foo)) e f))))"
|
199
|
+
expect(parse("`(a b `(c d ,@,foo e f))").inspect).to eq "(quasiquote (a b (quasiquote (c d (unquote-splicing (unquote foo)) e f))))"
|
200
|
+
expect(parse("`(a b `(c d ,',foo e f))").inspect).to eq "(quasiquote (a b (quasiquote (c d (unquote (quote (unquote foo))) e f))))"
|
201
|
+
end
|
202
|
+
|
203
|
+
it "should do some complicated unquote stuff with lists" do
|
204
|
+
expect(parse("`(a b `(c d ,(+ 1 2) ,,@(list 3 4)))").inspect).to eq "(quasiquote (a b (quasiquote (c d (unquote (+ 1 2)) (unquote (unquote-splicing (list 3 4)))))))"
|
205
|
+
end
|
206
|
+
|
207
|
+
it "should do some complicated unquote stuff with symbols" do
|
208
|
+
expect(parse("`(a b `(c d ,(+ 1 2) ,,x))").inspect).to eq "(quasiquote (a b (quasiquote (c d (unquote (+ 1 2)) (unquote (unquote x))))))"
|
209
|
+
end
|
210
|
+
|
159
211
|
it "should unquote-splicing atoms" do
|
160
212
|
expect(parse ",@foo").to eq pair_list([unquote_splicing, foo])
|
161
213
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nydp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Conan Dalton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-03-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -85,6 +85,7 @@ files:
|
|
85
85
|
- bin/nydp-tests
|
86
86
|
- lib/lisp/boot.nydp
|
87
87
|
- lib/lisp/test-runner.nydp
|
88
|
+
- lib/lisp/tests/boot-tests.nydp
|
88
89
|
- lib/lisp/tests/foundation-test.nydp
|
89
90
|
- lib/nydp.rb
|
90
91
|
- lib/nydp/assignment.rb
|
@@ -103,6 +104,7 @@ files:
|
|
103
104
|
- lib/nydp/builtin/inspect.rb
|
104
105
|
- lib/nydp/builtin/is_equal.rb
|
105
106
|
- lib/nydp/builtin/less_than.rb
|
107
|
+
- lib/nydp/builtin/load_tests.rb
|
106
108
|
- lib/nydp/builtin/millisecs.rb
|
107
109
|
- lib/nydp/builtin/minus.rb
|
108
110
|
- lib/nydp/builtin/plus.rb
|