delorean_lang 0.3.6 → 0.3.7
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/delorean.gemspec +2 -2
- data/lib/delorean/delorean.rb +552 -294
- data/lib/delorean/delorean.treetop +6 -0
- data/lib/delorean/nodes.rb +6 -0
- data/lib/delorean/version.rb +1 -1
- data/spec/eval_spec.rb +8 -3
- metadata +5 -5
@@ -74,6 +74,12 @@ grammar Delorean
|
|
74
74
|
rule set_expr
|
75
75
|
'{-}' <SetExpr>
|
76
76
|
/
|
77
|
+
'{' sp? e2:expression sp
|
78
|
+
'for' sp args:unpack_args sp
|
79
|
+
'in' sp e1:expression sp?
|
80
|
+
ifexp:('if' sp e3:expression sp?)?
|
81
|
+
'}' <SetComprehension>
|
82
|
+
/
|
77
83
|
'{' sp? args:fn_args sp? '}' <SetExpr>
|
78
84
|
end
|
79
85
|
|
data/lib/delorean/nodes.rb
CHANGED
data/lib/delorean/version.rb
CHANGED
data/spec/eval_spec.rb
CHANGED
@@ -534,20 +534,23 @@ eof
|
|
534
534
|
]
|
535
535
|
end
|
536
536
|
|
537
|
-
it "should eval sets" do
|
537
|
+
it "should eval sets and set comprehension" do
|
538
538
|
engine.parse defn("A:",
|
539
539
|
" a = {-}",
|
540
|
+
" b = {i*5 for i in {1,2,3}}",
|
540
541
|
" c = {1,2,3} | {4,5}",
|
541
542
|
)
|
542
|
-
engine.evaluate_attrs("A", ["a", "c"]).should ==
|
543
|
-
[Set[], Set[1,2,3,4,5]]
|
543
|
+
engine.evaluate_attrs("A", ["a", "b", "c"]).should ==
|
544
|
+
[Set[], Set[5,10,15], Set[1,2,3,4,5]]
|
544
545
|
end
|
545
546
|
|
546
547
|
it "should eval list comprehension" do
|
547
548
|
engine.parse defn("A:",
|
548
549
|
" b = [i*5 for i in [1,2,3]]",
|
550
|
+
" c = [a-b for a, b in [[1,2],[4,3]]]"
|
549
551
|
)
|
550
552
|
engine.evaluate("A", "b").should == [5, 10, 15]
|
553
|
+
engine.evaluate("A", "c").should == [-1, 1]
|
551
554
|
end
|
552
555
|
|
553
556
|
it "should eval nested list comprehension" do
|
@@ -647,8 +650,10 @@ eof
|
|
647
650
|
it "should eval multi-var hash comprehension" do
|
648
651
|
engine.parse defn("A:",
|
649
652
|
" b = {k*5 : v+1 for k, v in {1:2, 7:-30}}",
|
653
|
+
" c = [k-v for k, v in {1:2, 7:-30}]",
|
650
654
|
)
|
651
655
|
engine.evaluate("A", "b").should == {5=>3, 35=>-29}
|
656
|
+
engine.evaluate("A", "c").should == [-1, 37]
|
652
657
|
end
|
653
658
|
|
654
659
|
it "should be able to amend node calls" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: delorean_lang
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arman Bostani
|
@@ -44,28 +44,28 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '2.10'
|
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: '2.10'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: sqlite3
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '1.3'
|
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
|
-
version: '
|
68
|
+
version: '1.3'
|
69
69
|
description: A "compiler" for the Delorean programming language
|
70
70
|
email:
|
71
71
|
- arman.bostani@pnmac.com
|