lucio 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +4 -9
- data/Gemfile.lock +3 -11
- data/README.md +9 -9
- data/Rakefile +0 -3
- data/VERSION +1 -1
- data/bin/lucio +1 -1
- data/bin/repl.rb +19 -21
- data/lib/lucio.rb +2 -0
- data/lib/lucio/lexicon.rb +12 -20
- data/lib/lucio/lucio.rb +48 -18
- data/lucio.gemspec +17 -42
- data/spec/add_spec.rb +34 -0
- data/spec/behead_spec.rb +12 -0
- data/spec/divide_spec.rb +26 -0
- data/spec/empty_list_spec.rb +23 -0
- data/spec/internal_spec.rb +13 -0
- data/spec/let_spec.rb +29 -0
- data/spec/minus_spec.rb +27 -0
- data/spec/readme_examples_spec.rb +32 -0
- data/spec/spec_helper.rb +3 -1
- data/spec/times_spec.rb +34 -0
- metadata +31 -80
- data/.autotest +0 -3
- data/TODO.md +0 -32
- data/lib/lucio/grammar.rb +0 -37
- data/lib/lucio/list.rb +0 -22
- data/lib/lucio/operators.rb +0 -9
- data/lib/lucio/operators/attribution.rb +0 -10
- data/lib/lucio/operators/conditional.rb +0 -20
- data/lib/lucio/operators/division.rb +0 -16
- data/lib/lucio/operators/equality.rb +0 -11
- data/lib/lucio/operators/macro.rb +0 -15
- data/lib/lucio/operators/multiplication.rb +0 -16
- data/lib/lucio/operators/operator.rb +0 -29
- data/lib/lucio/operators/subtraction.rb +0 -18
- data/lib/lucio/operators/sum.rb +0 -13
- data/lib/lucio/runner.rb +0 -60
- data/lib/lucio_syntax.treetop +0 -92
- data/spec/all_the_fun_spec.rb +0 -21
- data/spec/division_spec.rb +0 -19
- data/spec/eval_spec.rb +0 -116
- data/spec/lucio_spec.rb +0 -25
- data/spec/multiplication_spec.rb +0 -19
- data/spec/parser_spec.rb +0 -105
- data/spec/subtraction_spec.rb +0 -19
- data/spec/sum_spec.rb +0 -19
- data/spec/variable_spec.rb +0 -13
data/spec/lucio_spec.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'lucio'
|
3
|
-
|
4
|
-
describe Lucio do
|
5
|
-
it "should return head and tail" do
|
6
|
-
h, t = Lucio.behead [1, 2, 3, 4, 5]
|
7
|
-
h.should == 1
|
8
|
-
t.should == [2, 3, 4, 5]
|
9
|
-
end
|
10
|
-
|
11
|
-
it "should return empty tail" do
|
12
|
-
h, t = Lucio.behead [1]
|
13
|
-
h.should == 1
|
14
|
-
t.should == []
|
15
|
-
end
|
16
|
-
|
17
|
-
it "should handle empty collections" do
|
18
|
-
h, t = Lucio.behead []
|
19
|
-
h.should == nil
|
20
|
-
t.should == []
|
21
|
-
end
|
22
|
-
|
23
|
-
|
24
|
-
end
|
25
|
-
|
data/spec/multiplication_spec.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'lucio'
|
3
|
-
|
4
|
-
describe Lucio::Operator::Multiplication do
|
5
|
-
it "an empty list should return zero" do
|
6
|
-
Lucio.eval('(*)').should == 0
|
7
|
-
end
|
8
|
-
|
9
|
-
it "a list with one item should return that item" do
|
10
|
-
Lucio.eval('(* 1)').should == 1
|
11
|
-
Lucio.eval('(* 2)').should == 2
|
12
|
-
end
|
13
|
-
|
14
|
-
it "a list with more than one item should eval all items" do
|
15
|
-
Lucio.eval('(* 2 3)').should == 6
|
16
|
-
Lucio.eval('(* 2 3 4)').should == 24
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
data/spec/parser_spec.rb
DELETED
@@ -1,105 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'lucio'
|
3
|
-
|
4
|
-
describe Lucio do
|
5
|
-
|
6
|
-
context "list" do
|
7
|
-
it "integer" do
|
8
|
-
Lucio.parse('(2)').should be
|
9
|
-
end
|
10
|
-
|
11
|
-
it "integers" do
|
12
|
-
Lucio.parse('(2)(3)').should be
|
13
|
-
end
|
14
|
-
|
15
|
-
it "decimal" do
|
16
|
-
Lucio.parse('(3.14)').should be
|
17
|
-
end
|
18
|
-
|
19
|
-
it "valid string" do
|
20
|
-
Lucio.parse('("this is a text")').should be
|
21
|
-
end
|
22
|
-
|
23
|
-
it "valid expression" do
|
24
|
-
Lucio.parse('(this is an expression)').should be
|
25
|
-
end
|
26
|
-
|
27
|
-
it "boolean" do
|
28
|
-
Lucio.parse('(true)').should be
|
29
|
-
Lucio.parse('(true)').should be
|
30
|
-
Lucio.parse('(true)(false)').should be
|
31
|
-
|
32
|
-
Lucio.parse('true').should_not be
|
33
|
-
Lucio.parse('false').should_not be
|
34
|
-
end
|
35
|
-
|
36
|
-
it 'space' do
|
37
|
-
Lucio.parse('()').should be
|
38
|
-
Lucio.parse('( )').should be
|
39
|
-
Lucio.parse('( )').should be
|
40
|
-
end
|
41
|
-
|
42
|
-
it 'simple expression' do
|
43
|
-
Lucio.parse('(+ 1 2)').should be
|
44
|
-
end
|
45
|
-
|
46
|
-
it 'long expression' do
|
47
|
-
Lucio.parse('(+ 1 2 3 4)').should be
|
48
|
-
end
|
49
|
-
|
50
|
-
it 'long expression with commas' do
|
51
|
-
Lucio.parse('(+ 1, 2, 3, 4)').should be
|
52
|
-
end
|
53
|
-
|
54
|
-
it 'vector' do
|
55
|
-
Lucio.parse('([1 2 3 4 5 6])').should be
|
56
|
-
end
|
57
|
-
|
58
|
-
it 'vector with commas' do
|
59
|
-
Lucio.parse('([1, 2, 3, 4, 5, 6])').should be
|
60
|
-
end
|
61
|
-
|
62
|
-
it 'composed expression' do
|
63
|
-
Lucio.parse('(+ 1 (* 2 3))').should be
|
64
|
-
end
|
65
|
-
|
66
|
-
it 'composed long expression' do
|
67
|
-
Lucio.parse('(+ 1 2 3 (* 4 5 6))').should be
|
68
|
-
end
|
69
|
-
|
70
|
-
it 'and now we return to begin' do
|
71
|
-
Lucio.parse('(* (+ 1 2) 3)').should be
|
72
|
-
|
73
|
-
Lucio.parse('(/ (* (+ 1 2)(+ 3 4)) 2)').should be
|
74
|
-
end
|
75
|
-
|
76
|
-
it 'special caracters should work to improve the expressiveness' do
|
77
|
-
Lucio.parse('(eql? (* (+ 1 2) 3) 9)').should be
|
78
|
-
|
79
|
-
Lucio.parse('(eql?? (* (+ 1 2) 3) 9)').should_not be
|
80
|
-
|
81
|
-
Lucio.parse('(foo-bar (1 1 2 3 4 4))').should be
|
82
|
-
Lucio.parse('(foo-bar-meh (1 1 2 3 4 4))').should be
|
83
|
-
|
84
|
-
Lucio.parse('(foo--bar (1 1 2 3 4 4))').should be_nil
|
85
|
-
Lucio.parse('(foo--bar (1 1 2 3 4 4))').should_not be
|
86
|
-
Lucio.parse('(foo----- (1 1 2 3 4 4))').should_not be
|
87
|
-
Lucio.parse('(foo--bar-meh (1 1 2 3 4 4))').should_not be
|
88
|
-
end
|
89
|
-
|
90
|
-
it 'multiline' do
|
91
|
-
code = <<lisp
|
92
|
-
(/
|
93
|
-
(*
|
94
|
-
(+ 1 2)
|
95
|
-
(+ 3 4))
|
96
|
-
2)
|
97
|
-
lisp
|
98
|
-
|
99
|
-
Lucio.parse(code).should be
|
100
|
-
end
|
101
|
-
|
102
|
-
end
|
103
|
-
|
104
|
-
end
|
105
|
-
|
data/spec/subtraction_spec.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'lucio'
|
3
|
-
|
4
|
-
describe Lucio::Operator::Subtraction do
|
5
|
-
it "an empty list should return zero" do
|
6
|
-
Lucio.eval('(-)').should == 0
|
7
|
-
end
|
8
|
-
|
9
|
-
it "a list with one item should return that item" do
|
10
|
-
Lucio.eval('(- 1)').should == -1
|
11
|
-
Lucio.eval('(- 2)').should == -2
|
12
|
-
end
|
13
|
-
|
14
|
-
it "a list with more than one item should eval all items" do
|
15
|
-
Lucio.eval('(- 2 1)').should == 1
|
16
|
-
Lucio.eval('(- 3 2 1)').should == 0
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
data/spec/sum_spec.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'lucio'
|
3
|
-
|
4
|
-
describe Lucio::Operator::Sum do
|
5
|
-
it "an empty list should return zero" do
|
6
|
-
Lucio.eval('(+)').should == 0
|
7
|
-
end
|
8
|
-
|
9
|
-
it "a list with one item should return that item" do
|
10
|
-
Lucio.eval('(+ 1)').should == 1
|
11
|
-
Lucio.eval('(+ 2)').should == 2
|
12
|
-
end
|
13
|
-
|
14
|
-
it "a list with more than one item should eval all items" do
|
15
|
-
Lucio.eval('(+ 1 2)').should == 3
|
16
|
-
Lucio.eval('(+ 1 2 3)').should == 6
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|