lisp 1.4.2 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +16 -7
- data/Gemfile +0 -1
- data/README.md +7 -3
- data/lib/lisp/repl.rb +0 -2
- data/lib/lisp/version.rb +1 -1
- data/lisp.gemspec +1 -1
- data/test/test_lisp.rb +18 -21
- metadata +19 -21
- data/.travis +0 -8
- data/lib/lisp/ext/proc.rb +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 42a5f2b1b6e96db9ab76de11598d650aa99a4f4c
|
4
|
+
data.tar.gz: 258c6c47e9dca2afd7ab5e7e9c265caadfe7fa8a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a80b1fdda67cffb7e3a8ca1369a27b418b1d591efc460422a60dcc2196f24bd7919be6f40e068453d6c949c059f3d37a485cc04e74018f4d11e9b8b99d7e1a9f
|
7
|
+
data.tar.gz: cd35640693b386066596e6dfc26433f088650170e817715a174ddaf018cdec9f421a2373f8a72a332da7b74412e57af8c300d8a94c271711cf278a0d39d226b8
|
data/.travis.yml
CHANGED
@@ -1,10 +1,19 @@
|
|
1
1
|
sudo: false
|
2
|
+
|
2
3
|
language: ruby
|
4
|
+
|
3
5
|
rvm:
|
4
|
-
- 2.
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
6
|
+
- 2.3.8
|
7
|
+
|
8
|
+
env:
|
9
|
+
global:
|
10
|
+
- CC_TEST_REPORTER_ID=0a4c13b71635c00cee43aba776853ade9404cc745c42977e25a5877a3e148527
|
11
|
+
|
12
|
+
before_script:
|
13
|
+
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
14
|
+
- chmod +x ./cc-test-reporter
|
15
|
+
- ./cc-test-reporter before-build
|
16
|
+
- gem install bundler -v 2.0.2
|
17
|
+
|
18
|
+
after_script:
|
19
|
+
- ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
lisp
|
2
2
|
====
|
3
3
|
|
4
|
-
|
4
|
+
![Gem][1] ![Build Status][2]
|
5
5
|
|
6
6
|
Lisp Interpreter in the Ruby Programming Language - 70 LOC. Inspired by [Lis.py](http://norvig.com/lispy.html).
|
7
7
|
|
8
|
-
```
|
8
|
+
```clojure
|
9
9
|
$ lisp-repl
|
10
10
|
ctrl-c to exit
|
11
11
|
> (begin
|
@@ -20,7 +20,7 @@ ctrl-c to exit
|
|
20
20
|
|
21
21
|
Install
|
22
22
|
-------
|
23
|
-
|
23
|
+
![Gem Version][3]
|
24
24
|
|
25
25
|
```
|
26
26
|
gem install lisp
|
@@ -46,3 +46,7 @@ Features
|
|
46
46
|
- [x] __assignment__ - (set! var exp) Evaluate exp and assign that value to var, which must have been previously defined (with a define or as a parameter to an enclosing procedure). _Example: (set! x2 (* x x))_
|
47
47
|
|
48
48
|
- [x] __sequencing__ - (begin exp...) Evaluate each of the expressions in left-to-right order, and return the final value. _Example: (begin (set! x 1) (set! x (+ x 1)) (* x 2)) ⇒ 4_
|
49
|
+
|
50
|
+
[1]: https://img.shields.io/gem/dt/lisp
|
51
|
+
[2]: https://travis-ci.org/jamesmoriarty/lisp.svg?branch=master
|
52
|
+
[3]: https://img.shields.io/gem/v/lisp
|
data/lib/lisp/repl.rb
CHANGED
data/lib/lisp/version.rb
CHANGED
data/lisp.gemspec
CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_dependency "coolline"
|
22
22
|
spec.add_dependency "coderay"
|
23
|
-
spec.add_development_dependency "bundler"
|
23
|
+
spec.add_development_dependency "bundler"
|
24
24
|
spec.add_development_dependency "rake"
|
25
25
|
spec.add_development_dependency "minitest", "> 5"
|
26
26
|
end
|
data/test/test_lisp.rb
CHANGED
@@ -14,22 +14,31 @@ class TestLisp < MiniTest::Unit::TestCase
|
|
14
14
|
assert_equal ["(", "+", "1", "1", ")"], Lisp.tokenize("(+ 1 1)")
|
15
15
|
end
|
16
16
|
|
17
|
-
def
|
17
|
+
def test_parse_open
|
18
18
|
assert_raises(RuntimeError) { Lisp.parse(Lisp.tokenize("(")) }
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_parse_close
|
19
22
|
assert_raises(RuntimeError) { Lisp.parse(Lisp.tokenize(")")) }
|
20
23
|
end
|
21
24
|
|
22
|
-
#
|
25
|
+
# ast
|
26
|
+
|
27
|
+
def test_ast_nested
|
28
|
+
assert_equal [:*, 2, [:+, 1, 0]], Lisp.parse(Lisp.tokenize("(* 2 (+ 1 0) )"))
|
29
|
+
end
|
23
30
|
|
24
|
-
def
|
25
|
-
assert_equal [:*, 2, [:+, 1, 0]], Lisp.parse(Lisp.tokenize("(* 2 (+ 1 0) )"))
|
31
|
+
def test_ast_call
|
26
32
|
assert_equal [:lambda, [:r], [:*, 3.141592653, [:*, :r, :r]]], Lisp.parse(Lisp.tokenize("(lambda (r) (* 3.141592653 (* r r)))"))
|
27
33
|
end
|
28
34
|
|
29
35
|
# execution
|
30
36
|
|
31
|
-
def
|
37
|
+
def test_execution_return
|
32
38
|
assert_equal 1, Lisp.execute(1)
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_execution_reduce
|
33
42
|
assert_equal 2, Lisp.execute([:*, 2, [:+, 1, 0]])
|
34
43
|
end
|
35
44
|
|
@@ -45,8 +54,11 @@ class TestLisp < MiniTest::Unit::TestCase
|
|
45
54
|
eos
|
46
55
|
end
|
47
56
|
|
48
|
-
def
|
57
|
+
def test_if_cont
|
49
58
|
assert_equal 2, Lisp.eval("(if(== 1 2) 1 2)")
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_if_alt
|
50
62
|
assert_equal 1, Lisp.eval("(if(!= 1 2) 1 2)")
|
51
63
|
end
|
52
64
|
|
@@ -102,21 +114,6 @@ class TestLisp < MiniTest::Unit::TestCase
|
|
102
114
|
eos
|
103
115
|
end
|
104
116
|
|
105
|
-
def test_nested_begin
|
106
|
-
assert_raises(RuntimeError, "one is undefined") do
|
107
|
-
Lisp.eval(<<-eos)
|
108
|
-
(begin
|
109
|
-
(define test
|
110
|
-
(lambda ()
|
111
|
-
(begin
|
112
|
-
(define one 1)
|
113
|
-
(+ one 1))))
|
114
|
-
(test)
|
115
|
-
(+ 2 one))
|
116
|
-
eos
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
117
|
def test_program
|
121
118
|
assert_equal 2, Lisp.eval(<<-eos)
|
122
119
|
(begin
|
metadata
CHANGED
@@ -1,83 +1,83 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lisp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Moriarty
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-06-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: coolline
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: coderay
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: minitest
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">"
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '5'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ">"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '5'
|
83
83
|
description: ''
|
@@ -88,16 +88,14 @@ executables:
|
|
88
88
|
extensions: []
|
89
89
|
extra_rdoc_files: []
|
90
90
|
files:
|
91
|
-
- .gitignore
|
92
|
-
- .travis
|
93
|
-
- .travis.yml
|
91
|
+
- ".gitignore"
|
92
|
+
- ".travis.yml"
|
94
93
|
- Gemfile
|
95
94
|
- LICENSE.txt
|
96
95
|
- README.md
|
97
96
|
- Rakefile
|
98
97
|
- bin/lisp-repl
|
99
98
|
- lib/lisp.rb
|
100
|
-
- lib/lisp/ext/proc.rb
|
101
99
|
- lib/lisp/repl.rb
|
102
100
|
- lib/lisp/version.rb
|
103
101
|
- lisp.gemspec
|
@@ -113,17 +111,17 @@ require_paths:
|
|
113
111
|
- lib
|
114
112
|
required_ruby_version: !ruby/object:Gem::Requirement
|
115
113
|
requirements:
|
116
|
-
- -
|
114
|
+
- - ">="
|
117
115
|
- !ruby/object:Gem::Version
|
118
116
|
version: '0'
|
119
117
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
118
|
requirements:
|
121
|
-
- -
|
119
|
+
- - ">="
|
122
120
|
- !ruby/object:Gem::Version
|
123
121
|
version: '0'
|
124
122
|
requirements: []
|
125
123
|
rubyforge_project:
|
126
|
-
rubygems_version: 2.
|
124
|
+
rubygems_version: 2.5.2.3
|
127
125
|
signing_key:
|
128
126
|
specification_version: 4
|
129
127
|
summary: Lisp Interpreter in Ruby.
|
data/.travis
DELETED