lisp 1.4.2 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 38d7b0804909b38cc12ccd8c10ee47e5386d7e2d
4
- data.tar.gz: f7aca5e50f7d1c9959e6e8994c63de59f86d3c11
3
+ metadata.gz: 42a5f2b1b6e96db9ab76de11598d650aa99a4f4c
4
+ data.tar.gz: 258c6c47e9dca2afd7ab5e7e9c265caadfe7fa8a
5
5
  SHA512:
6
- metadata.gz: 3746975bc6337ab8dac411fa08e04295031c3e29a869aee9b3dcc3928f76eb750964a049d991401ec16ebd97ecf6f8f099ded84f9845396bfdd25dcc84e609bd
7
- data.tar.gz: 7004c064a67d1713ea8780ff153ff5864ae18281439f5c0f796507b7dda3357023583038d54795987b8b39123f2779434818c5f8618c3aa17029e9feb2145a35
6
+ metadata.gz: a80b1fdda67cffb7e3a8ca1369a27b418b1d591efc460422a60dcc2196f24bd7919be6f40e068453d6c949c059f3d37a485cc04e74018f4d11e9b8b99d7e1a9f
7
+ data.tar.gz: cd35640693b386066596e6dfc26433f088650170e817715a174ddaf018cdec9f421a2373f8a72a332da7b74412e57af8c300d8a94c271711cf278a0d39d226b8
@@ -1,10 +1,19 @@
1
1
  sudo: false
2
+
2
3
  language: ruby
4
+
3
5
  rvm:
4
- - 2.0.0
5
- before_install: gem install bundler -v 1.12.5
6
- addons:
7
- code_climate:
8
- repo_token: 0a4c13b71635c00cee43aba776853ade9404cc745c42977e25a5877a3e148527
9
- after_success:
10
- - bundle exec codeclimate-test-reporter
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
@@ -2,7 +2,6 @@ source "https://rubygems.org"
2
2
 
3
3
  group :test do
4
4
  gem "simplecov"
5
- gem "codeclimate-test-reporter", "~> 1.0.0"
6
5
  end
7
6
 
8
7
  gemspec
data/README.md CHANGED
@@ -1,11 +1,11 @@
1
1
  lisp
2
2
  ====
3
3
 
4
- [![Code Climate](https://codeclimate.com/github/jamesmoriarty/lisp-rb/badges/gpa.svg)](https://codeclimate.com/github/jamesmoriarty/lisp-rb) [![Test Coverage](https://codeclimate.com/github/jamesmoriarty/lisp-rb/badges/coverage.svg)](https://codeclimate.com/github/jamesmoriarty/lisp-rb/coverage) [![Build Status](https://travis-ci.org/jamesmoriarty/lisp.svg?branch=master)](https://travis-ci.org/jamesmoriarty/lisp)
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
- [![Gem Version](https://badge.fury.io/rb/lisp.svg)](http://badge.fury.io/rb/lisp)
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
@@ -3,8 +3,6 @@
3
3
  require "coolline"
4
4
  require "coderay"
5
5
 
6
- require "lisp/ext/proc"
7
-
8
6
  module Lisp
9
7
  class REPL
10
8
  attr_reader :io, :input
@@ -1,3 +1,3 @@
1
1
  module Lisp
2
- VERSION = '1.4.2'.freeze
2
+ VERSION = '1.5.0'.freeze
3
3
  end
@@ -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", "~> 1.6"
23
+ spec.add_development_dependency "bundler"
24
24
  spec.add_development_dependency "rake"
25
25
  spec.add_development_dependency "minitest", "> 5"
26
26
  end
@@ -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 test_parse
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
- # representation
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 test_representation
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 test_execution
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 test_if
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.2
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: 2017-02-11 00:00:00.000000000 Z
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: '1.6'
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: '1.6'
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.0.14.1
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
@@ -1,8 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.0.0
5
- before_install: gem install bundler -v 1.12.5
6
- addons:
7
- code_climate:
8
- repo_token: 0a4c13b71635c00cee43aba776853ade9404cc745c42977e25a5877a3e148527
@@ -1,9 +0,0 @@
1
- class Proc
2
- def to_s
3
- "(lambda (...) (...))"
4
- end
5
-
6
- def inspect
7
- to_s
8
- end
9
- end