delorean_lang 0.3.21 → 0.3.22
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/lib/delorean/debug.rb +22 -0
- data/lib/delorean/delorean.rb +90 -87
- data/lib/delorean/nodes.rb +7 -1
- data/lib/delorean/version.rb +1 -1
- data/lib/delorean_lang.rb +1 -1
- data/spec/eval_spec.rb +10 -0
- data/spec/parse_spec.rb +1 -1
- data/spec/spec_helper.rb +6 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3b207fc973fc90335626ca0a40230e8e4de8f01b
|
4
|
+
data.tar.gz: 15d6ac7d5e9c9505ca9eb3410ab7911433380dbb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a10a56f2c88a05e3c6a5aac6885781f5d9fa77b065488ad967d3127a13bc806d770e357f2cbaf46efe9ca610324302898cf0ed75f34271e92bf235aa21df261
|
7
|
+
data.tar.gz: 70a91b3fc828e7667b0e0800c7010697987c79ae4ec16f588946ca8c815a9a22ac491b0250091109813669db395614a3c1ab85c57ffd98041dd21420750a1e16
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Delorean
|
2
|
+
class Debug
|
3
|
+
@debug_set = Set[]
|
4
|
+
@log_file = '/tmp/delorean.log'
|
5
|
+
|
6
|
+
def self.set_log_file(f)
|
7
|
+
@log_file = f
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.log(obj)
|
11
|
+
File.open(@log_file, 'a+') {
|
12
|
+
|f|
|
13
|
+
f.write obj.inspect
|
14
|
+
f.write "\n"
|
15
|
+
}
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.debug_set
|
19
|
+
@debug_set
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/delorean/delorean.rb
CHANGED
@@ -46,7 +46,7 @@ module Delorean
|
|
46
46
|
r6 = true
|
47
47
|
@index += match_len
|
48
48
|
else
|
49
|
-
terminal_parse_failure('
|
49
|
+
terminal_parse_failure('\'#\'')
|
50
50
|
r6 = nil
|
51
51
|
end
|
52
52
|
s5 << r6
|
@@ -205,7 +205,7 @@ module Delorean
|
|
205
205
|
r6 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
206
206
|
@index += match_len
|
207
207
|
else
|
208
|
-
terminal_parse_failure('
|
208
|
+
terminal_parse_failure('\'=?\'')
|
209
209
|
r6 = nil
|
210
210
|
end
|
211
211
|
s1 << r6
|
@@ -255,7 +255,7 @@ module Delorean
|
|
255
255
|
r15 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
256
256
|
@index += match_len
|
257
257
|
else
|
258
|
-
terminal_parse_failure('
|
258
|
+
terminal_parse_failure('\'=?\'')
|
259
259
|
r15 = nil
|
260
260
|
end
|
261
261
|
s10 << r15
|
@@ -292,7 +292,7 @@ module Delorean
|
|
292
292
|
r21 = true
|
293
293
|
@index += match_len
|
294
294
|
else
|
295
|
-
terminal_parse_failure('
|
295
|
+
terminal_parse_failure('\'=\'')
|
296
296
|
r21 = nil
|
297
297
|
end
|
298
298
|
s16 << r21
|
@@ -331,7 +331,7 @@ module Delorean
|
|
331
331
|
r27 = true
|
332
332
|
@index += match_len
|
333
333
|
else
|
334
|
-
terminal_parse_failure('
|
334
|
+
terminal_parse_failure('\':\'')
|
335
335
|
r27 = nil
|
336
336
|
end
|
337
337
|
s25 << r27
|
@@ -352,7 +352,7 @@ module Delorean
|
|
352
352
|
r33 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
353
353
|
@index += match_len
|
354
354
|
else
|
355
|
-
terminal_parse_failure('
|
355
|
+
terminal_parse_failure('\'::\'')
|
356
356
|
r33 = nil
|
357
357
|
end
|
358
358
|
s31 << r33
|
@@ -396,7 +396,7 @@ module Delorean
|
|
396
396
|
r37 = true
|
397
397
|
@index += match_len
|
398
398
|
else
|
399
|
-
terminal_parse_failure('
|
399
|
+
terminal_parse_failure('\':\'')
|
400
400
|
r37 = nil
|
401
401
|
end
|
402
402
|
s35 << r37
|
@@ -417,7 +417,7 @@ module Delorean
|
|
417
417
|
r39 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
418
418
|
@index += match_len
|
419
419
|
else
|
420
|
-
terminal_parse_failure('import')
|
420
|
+
terminal_parse_failure('\'import\'')
|
421
421
|
r39 = nil
|
422
422
|
end
|
423
423
|
s38 << r39
|
@@ -571,7 +571,7 @@ module Delorean
|
|
571
571
|
r2 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
572
572
|
@index += match_len
|
573
573
|
else
|
574
|
-
terminal_parse_failure('ERR(')
|
574
|
+
terminal_parse_failure('\'ERR(\'')
|
575
575
|
r2 = nil
|
576
576
|
end
|
577
577
|
s1 << r2
|
@@ -599,7 +599,7 @@ module Delorean
|
|
599
599
|
r8 = true
|
600
600
|
@index += match_len
|
601
601
|
else
|
602
|
-
terminal_parse_failure(')')
|
602
|
+
terminal_parse_failure('\')\'')
|
603
603
|
r8 = nil
|
604
604
|
end
|
605
605
|
s1 << r8
|
@@ -650,7 +650,7 @@ module Delorean
|
|
650
650
|
r15 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
651
651
|
@index += match_len
|
652
652
|
else
|
653
|
-
terminal_parse_failure('if')
|
653
|
+
terminal_parse_failure('\'if\'')
|
654
654
|
r15 = nil
|
655
655
|
end
|
656
656
|
s14 << r15
|
@@ -678,7 +678,7 @@ module Delorean
|
|
678
678
|
r21 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
679
679
|
@index += match_len
|
680
680
|
else
|
681
|
-
terminal_parse_failure('then')
|
681
|
+
terminal_parse_failure('\'then\'')
|
682
682
|
r21 = nil
|
683
683
|
end
|
684
684
|
s14 << r21
|
@@ -706,7 +706,7 @@ module Delorean
|
|
706
706
|
r27 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
707
707
|
@index += match_len
|
708
708
|
else
|
709
|
-
terminal_parse_failure('else')
|
709
|
+
terminal_parse_failure('\'else\'')
|
710
710
|
r27 = nil
|
711
711
|
end
|
712
712
|
s14 << r27
|
@@ -949,7 +949,7 @@ module Delorean
|
|
949
949
|
r2 = true
|
950
950
|
@index += match_len
|
951
951
|
else
|
952
|
-
terminal_parse_failure('[')
|
952
|
+
terminal_parse_failure('\'[\'')
|
953
953
|
r2 = nil
|
954
954
|
end
|
955
955
|
s1 << r2
|
@@ -977,7 +977,7 @@ module Delorean
|
|
977
977
|
r8 = true
|
978
978
|
@index += match_len
|
979
979
|
else
|
980
|
-
terminal_parse_failure(']')
|
980
|
+
terminal_parse_failure('\']\'')
|
981
981
|
r8 = nil
|
982
982
|
end
|
983
983
|
s1 << r8
|
@@ -1001,7 +1001,7 @@ module Delorean
|
|
1001
1001
|
r10 = true
|
1002
1002
|
@index += match_len
|
1003
1003
|
else
|
1004
|
-
terminal_parse_failure('(')
|
1004
|
+
terminal_parse_failure('\'(\'')
|
1005
1005
|
r10 = nil
|
1006
1006
|
end
|
1007
1007
|
s9 << r10
|
@@ -1034,7 +1034,7 @@ module Delorean
|
|
1034
1034
|
r17 = true
|
1035
1035
|
@index += match_len
|
1036
1036
|
else
|
1037
|
-
terminal_parse_failure(')')
|
1037
|
+
terminal_parse_failure('\')\'')
|
1038
1038
|
r17 = nil
|
1039
1039
|
end
|
1040
1040
|
s9 << r17
|
@@ -1058,7 +1058,7 @@ module Delorean
|
|
1058
1058
|
r19 = true
|
1059
1059
|
@index += match_len
|
1060
1060
|
else
|
1061
|
-
terminal_parse_failure('
|
1061
|
+
terminal_parse_failure('\'.\'')
|
1062
1062
|
r19 = nil
|
1063
1063
|
end
|
1064
1064
|
s18 << r19
|
@@ -1078,7 +1078,7 @@ module Delorean
|
|
1078
1078
|
r23 = true
|
1079
1079
|
@index += match_len
|
1080
1080
|
else
|
1081
|
-
terminal_parse_failure('(')
|
1081
|
+
terminal_parse_failure('\'(\'')
|
1082
1082
|
r23 = nil
|
1083
1083
|
end
|
1084
1084
|
s18 << r23
|
@@ -1111,7 +1111,7 @@ module Delorean
|
|
1111
1111
|
r30 = true
|
1112
1112
|
@index += match_len
|
1113
1113
|
else
|
1114
|
-
terminal_parse_failure(')')
|
1114
|
+
terminal_parse_failure('\')\'')
|
1115
1115
|
r30 = nil
|
1116
1116
|
end
|
1117
1117
|
s18 << r30
|
@@ -1138,7 +1138,7 @@ module Delorean
|
|
1138
1138
|
r32 = true
|
1139
1139
|
@index += match_len
|
1140
1140
|
else
|
1141
|
-
terminal_parse_failure('
|
1141
|
+
terminal_parse_failure('\'.\'')
|
1142
1142
|
r32 = nil
|
1143
1143
|
end
|
1144
1144
|
s31 << r32
|
@@ -1236,7 +1236,7 @@ module Delorean
|
|
1236
1236
|
r6 = true
|
1237
1237
|
@index += match_len
|
1238
1238
|
else
|
1239
|
-
terminal_parse_failure('
|
1239
|
+
terminal_parse_failure('\',\'')
|
1240
1240
|
r6 = nil
|
1241
1241
|
end
|
1242
1242
|
s3 << r6
|
@@ -1355,7 +1355,7 @@ module Delorean
|
|
1355
1355
|
r1 = instantiate_node(ListExpr,input, index...(index + match_len))
|
1356
1356
|
@index += match_len
|
1357
1357
|
else
|
1358
|
-
terminal_parse_failure('[]')
|
1358
|
+
terminal_parse_failure('\'[]\'')
|
1359
1359
|
r1 = nil
|
1360
1360
|
end
|
1361
1361
|
if r1
|
@@ -1367,7 +1367,7 @@ module Delorean
|
|
1367
1367
|
r3 = true
|
1368
1368
|
@index += match_len
|
1369
1369
|
else
|
1370
|
-
terminal_parse_failure('[')
|
1370
|
+
terminal_parse_failure('\'[\'')
|
1371
1371
|
r3 = nil
|
1372
1372
|
end
|
1373
1373
|
s2 << r3
|
@@ -1390,7 +1390,7 @@ module Delorean
|
|
1390
1390
|
r8 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1391
1391
|
@index += match_len
|
1392
1392
|
else
|
1393
|
-
terminal_parse_failure('for')
|
1393
|
+
terminal_parse_failure('\'for\'')
|
1394
1394
|
r8 = nil
|
1395
1395
|
end
|
1396
1396
|
s2 << r8
|
@@ -1408,7 +1408,7 @@ module Delorean
|
|
1408
1408
|
r12 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1409
1409
|
@index += match_len
|
1410
1410
|
else
|
1411
|
-
terminal_parse_failure('in')
|
1411
|
+
terminal_parse_failure('\'in\'')
|
1412
1412
|
r12 = nil
|
1413
1413
|
end
|
1414
1414
|
s2 << r12
|
@@ -1432,7 +1432,7 @@ module Delorean
|
|
1432
1432
|
r19 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1433
1433
|
@index += match_len
|
1434
1434
|
else
|
1435
|
-
terminal_parse_failure('if')
|
1435
|
+
terminal_parse_failure('\'if\'')
|
1436
1436
|
r19 = nil
|
1437
1437
|
end
|
1438
1438
|
s18 << r19
|
@@ -1471,7 +1471,7 @@ module Delorean
|
|
1471
1471
|
r24 = true
|
1472
1472
|
@index += match_len
|
1473
1473
|
else
|
1474
|
-
terminal_parse_failure(']')
|
1474
|
+
terminal_parse_failure('\']\'')
|
1475
1475
|
r24 = nil
|
1476
1476
|
end
|
1477
1477
|
s2 << r24
|
@@ -1504,7 +1504,7 @@ module Delorean
|
|
1504
1504
|
r26 = true
|
1505
1505
|
@index += match_len
|
1506
1506
|
else
|
1507
|
-
terminal_parse_failure('[')
|
1507
|
+
terminal_parse_failure('\'[\'')
|
1508
1508
|
r26 = nil
|
1509
1509
|
end
|
1510
1510
|
s25 << r26
|
@@ -1532,7 +1532,7 @@ module Delorean
|
|
1532
1532
|
r32 = true
|
1533
1533
|
@index += match_len
|
1534
1534
|
else
|
1535
|
-
terminal_parse_failure(']')
|
1535
|
+
terminal_parse_failure('\']\'')
|
1536
1536
|
r32 = nil
|
1537
1537
|
end
|
1538
1538
|
s25 << r32
|
@@ -1631,7 +1631,7 @@ module Delorean
|
|
1631
1631
|
r1 = instantiate_node(SetExpr,input, index...(index + match_len))
|
1632
1632
|
@index += match_len
|
1633
1633
|
else
|
1634
|
-
terminal_parse_failure('{-}')
|
1634
|
+
terminal_parse_failure('\'{-}\'')
|
1635
1635
|
r1 = nil
|
1636
1636
|
end
|
1637
1637
|
if r1
|
@@ -1643,7 +1643,7 @@ module Delorean
|
|
1643
1643
|
r3 = true
|
1644
1644
|
@index += match_len
|
1645
1645
|
else
|
1646
|
-
terminal_parse_failure('{')
|
1646
|
+
terminal_parse_failure('\'{\'')
|
1647
1647
|
r3 = nil
|
1648
1648
|
end
|
1649
1649
|
s2 << r3
|
@@ -1666,7 +1666,7 @@ module Delorean
|
|
1666
1666
|
r8 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1667
1667
|
@index += match_len
|
1668
1668
|
else
|
1669
|
-
terminal_parse_failure('for')
|
1669
|
+
terminal_parse_failure('\'for\'')
|
1670
1670
|
r8 = nil
|
1671
1671
|
end
|
1672
1672
|
s2 << r8
|
@@ -1684,7 +1684,7 @@ module Delorean
|
|
1684
1684
|
r12 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1685
1685
|
@index += match_len
|
1686
1686
|
else
|
1687
|
-
terminal_parse_failure('in')
|
1687
|
+
terminal_parse_failure('\'in\'')
|
1688
1688
|
r12 = nil
|
1689
1689
|
end
|
1690
1690
|
s2 << r12
|
@@ -1708,7 +1708,7 @@ module Delorean
|
|
1708
1708
|
r19 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1709
1709
|
@index += match_len
|
1710
1710
|
else
|
1711
|
-
terminal_parse_failure('if')
|
1711
|
+
terminal_parse_failure('\'if\'')
|
1712
1712
|
r19 = nil
|
1713
1713
|
end
|
1714
1714
|
s18 << r19
|
@@ -1747,7 +1747,7 @@ module Delorean
|
|
1747
1747
|
r24 = true
|
1748
1748
|
@index += match_len
|
1749
1749
|
else
|
1750
|
-
terminal_parse_failure('}')
|
1750
|
+
terminal_parse_failure('\'}\'')
|
1751
1751
|
r24 = nil
|
1752
1752
|
end
|
1753
1753
|
s2 << r24
|
@@ -1780,7 +1780,7 @@ module Delorean
|
|
1780
1780
|
r26 = true
|
1781
1781
|
@index += match_len
|
1782
1782
|
else
|
1783
|
-
terminal_parse_failure('{')
|
1783
|
+
terminal_parse_failure('\'{\'')
|
1784
1784
|
r26 = nil
|
1785
1785
|
end
|
1786
1786
|
s25 << r26
|
@@ -1808,7 +1808,7 @@ module Delorean
|
|
1808
1808
|
r32 = true
|
1809
1809
|
@index += match_len
|
1810
1810
|
else
|
1811
|
-
terminal_parse_failure('}')
|
1811
|
+
terminal_parse_failure('\'}\'')
|
1812
1812
|
r32 = nil
|
1813
1813
|
end
|
1814
1814
|
s25 << r32
|
@@ -1911,7 +1911,7 @@ module Delorean
|
|
1911
1911
|
r1 = instantiate_node(HashExpr,input, index...(index + match_len))
|
1912
1912
|
@index += match_len
|
1913
1913
|
else
|
1914
|
-
terminal_parse_failure('{}')
|
1914
|
+
terminal_parse_failure('\'{}\'')
|
1915
1915
|
r1 = nil
|
1916
1916
|
end
|
1917
1917
|
if r1
|
@@ -1923,7 +1923,7 @@ module Delorean
|
|
1923
1923
|
r3 = true
|
1924
1924
|
@index += match_len
|
1925
1925
|
else
|
1926
|
-
terminal_parse_failure('{')
|
1926
|
+
terminal_parse_failure('\'{\'')
|
1927
1927
|
r3 = nil
|
1928
1928
|
end
|
1929
1929
|
s2 << r3
|
@@ -1951,7 +1951,7 @@ module Delorean
|
|
1951
1951
|
r9 = true
|
1952
1952
|
@index += match_len
|
1953
1953
|
else
|
1954
|
-
terminal_parse_failure('
|
1954
|
+
terminal_parse_failure('\':\'')
|
1955
1955
|
r9 = nil
|
1956
1956
|
end
|
1957
1957
|
s2 << r9
|
@@ -1974,7 +1974,7 @@ module Delorean
|
|
1974
1974
|
r14 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1975
1975
|
@index += match_len
|
1976
1976
|
else
|
1977
|
-
terminal_parse_failure('for')
|
1977
|
+
terminal_parse_failure('\'for\'')
|
1978
1978
|
r14 = nil
|
1979
1979
|
end
|
1980
1980
|
s2 << r14
|
@@ -1992,7 +1992,7 @@ module Delorean
|
|
1992
1992
|
r18 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1993
1993
|
@index += match_len
|
1994
1994
|
else
|
1995
|
-
terminal_parse_failure('in')
|
1995
|
+
terminal_parse_failure('\'in\'')
|
1996
1996
|
r18 = nil
|
1997
1997
|
end
|
1998
1998
|
s2 << r18
|
@@ -2016,7 +2016,7 @@ module Delorean
|
|
2016
2016
|
r25 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
2017
2017
|
@index += match_len
|
2018
2018
|
else
|
2019
|
-
terminal_parse_failure('if')
|
2019
|
+
terminal_parse_failure('\'if\'')
|
2020
2020
|
r25 = nil
|
2021
2021
|
end
|
2022
2022
|
s24 << r25
|
@@ -2055,7 +2055,7 @@ module Delorean
|
|
2055
2055
|
r30 = true
|
2056
2056
|
@index += match_len
|
2057
2057
|
else
|
2058
|
-
terminal_parse_failure('}')
|
2058
|
+
terminal_parse_failure('\'}\'')
|
2059
2059
|
r30 = nil
|
2060
2060
|
end
|
2061
2061
|
s2 << r30
|
@@ -2092,7 +2092,7 @@ module Delorean
|
|
2092
2092
|
r32 = true
|
2093
2093
|
@index += match_len
|
2094
2094
|
else
|
2095
|
-
terminal_parse_failure('{')
|
2095
|
+
terminal_parse_failure('\'{\'')
|
2096
2096
|
r32 = nil
|
2097
2097
|
end
|
2098
2098
|
s31 << r32
|
@@ -2120,7 +2120,7 @@ module Delorean
|
|
2120
2120
|
r38 = true
|
2121
2121
|
@index += match_len
|
2122
2122
|
else
|
2123
|
-
terminal_parse_failure('}')
|
2123
|
+
terminal_parse_failure('\'}\'')
|
2124
2124
|
r38 = nil
|
2125
2125
|
end
|
2126
2126
|
s31 << r38
|
@@ -2172,7 +2172,7 @@ module Delorean
|
|
2172
2172
|
r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
2173
2173
|
@index += match_len
|
2174
2174
|
else
|
2175
|
-
terminal_parse_failure('
|
2175
|
+
terminal_parse_failure('\'==\'')
|
2176
2176
|
r1 = nil
|
2177
2177
|
end
|
2178
2178
|
if r1
|
@@ -2183,7 +2183,7 @@ module Delorean
|
|
2183
2183
|
r2 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
2184
2184
|
@index += match_len
|
2185
2185
|
else
|
2186
|
-
terminal_parse_failure('
|
2186
|
+
terminal_parse_failure('\'!=\'')
|
2187
2187
|
r2 = nil
|
2188
2188
|
end
|
2189
2189
|
if r2
|
@@ -2194,7 +2194,7 @@ module Delorean
|
|
2194
2194
|
r3 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
2195
2195
|
@index += match_len
|
2196
2196
|
else
|
2197
|
-
terminal_parse_failure('
|
2197
|
+
terminal_parse_failure('\'>=\'')
|
2198
2198
|
r3 = nil
|
2199
2199
|
end
|
2200
2200
|
if r3
|
@@ -2205,7 +2205,7 @@ module Delorean
|
|
2205
2205
|
r4 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
2206
2206
|
@index += match_len
|
2207
2207
|
else
|
2208
|
-
terminal_parse_failure('
|
2208
|
+
terminal_parse_failure('\'<=\'')
|
2209
2209
|
r4 = nil
|
2210
2210
|
end
|
2211
2211
|
if r4
|
@@ -2216,7 +2216,7 @@ module Delorean
|
|
2216
2216
|
r5 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
2217
2217
|
@index += match_len
|
2218
2218
|
else
|
2219
|
-
terminal_parse_failure('
|
2219
|
+
terminal_parse_failure('\'&&\'')
|
2220
2220
|
r5 = nil
|
2221
2221
|
end
|
2222
2222
|
if r5
|
@@ -2227,7 +2227,7 @@ module Delorean
|
|
2227
2227
|
r6 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
2228
2228
|
@index += match_len
|
2229
2229
|
else
|
2230
|
-
terminal_parse_failure('
|
2230
|
+
terminal_parse_failure('\'||\'')
|
2231
2231
|
r6 = nil
|
2232
2232
|
end
|
2233
2233
|
if r6
|
@@ -2238,7 +2238,7 @@ module Delorean
|
|
2238
2238
|
r7 = true
|
2239
2239
|
@index += match_len
|
2240
2240
|
else
|
2241
|
-
terminal_parse_failure('
|
2241
|
+
terminal_parse_failure('\'>\'')
|
2242
2242
|
r7 = nil
|
2243
2243
|
end
|
2244
2244
|
if r7
|
@@ -2249,7 +2249,7 @@ module Delorean
|
|
2249
2249
|
r8 = true
|
2250
2250
|
@index += match_len
|
2251
2251
|
else
|
2252
|
-
terminal_parse_failure('
|
2252
|
+
terminal_parse_failure('\'<\'')
|
2253
2253
|
r8 = nil
|
2254
2254
|
end
|
2255
2255
|
if r8
|
@@ -2260,7 +2260,7 @@ module Delorean
|
|
2260
2260
|
r9 = true
|
2261
2261
|
@index += match_len
|
2262
2262
|
else
|
2263
|
-
terminal_parse_failure('
|
2263
|
+
terminal_parse_failure('\'+\'')
|
2264
2264
|
r9 = nil
|
2265
2265
|
end
|
2266
2266
|
if r9
|
@@ -2271,7 +2271,7 @@ module Delorean
|
|
2271
2271
|
r10 = true
|
2272
2272
|
@index += match_len
|
2273
2273
|
else
|
2274
|
-
terminal_parse_failure('
|
2274
|
+
terminal_parse_failure('\'-\'')
|
2275
2275
|
r10 = nil
|
2276
2276
|
end
|
2277
2277
|
if r10
|
@@ -2282,7 +2282,7 @@ module Delorean
|
|
2282
2282
|
r11 = true
|
2283
2283
|
@index += match_len
|
2284
2284
|
else
|
2285
|
-
terminal_parse_failure('
|
2285
|
+
terminal_parse_failure('\'*\'')
|
2286
2286
|
r11 = nil
|
2287
2287
|
end
|
2288
2288
|
if r11
|
@@ -2293,7 +2293,7 @@ module Delorean
|
|
2293
2293
|
r12 = true
|
2294
2294
|
@index += match_len
|
2295
2295
|
else
|
2296
|
-
terminal_parse_failure('
|
2296
|
+
terminal_parse_failure('\'/\'')
|
2297
2297
|
r12 = nil
|
2298
2298
|
end
|
2299
2299
|
if r12
|
@@ -2304,7 +2304,7 @@ module Delorean
|
|
2304
2304
|
r13 = true
|
2305
2305
|
@index += match_len
|
2306
2306
|
else
|
2307
|
-
terminal_parse_failure('
|
2307
|
+
terminal_parse_failure('\'%\'')
|
2308
2308
|
r13 = nil
|
2309
2309
|
end
|
2310
2310
|
if r13
|
@@ -2315,7 +2315,7 @@ module Delorean
|
|
2315
2315
|
r14 = true
|
2316
2316
|
@index += match_len
|
2317
2317
|
else
|
2318
|
-
terminal_parse_failure('
|
2318
|
+
terminal_parse_failure('\'&\'')
|
2319
2319
|
r14 = nil
|
2320
2320
|
end
|
2321
2321
|
if r14
|
@@ -2326,7 +2326,7 @@ module Delorean
|
|
2326
2326
|
r15 = true
|
2327
2327
|
@index += match_len
|
2328
2328
|
else
|
2329
|
-
terminal_parse_failure('
|
2329
|
+
terminal_parse_failure('\'^\'')
|
2330
2330
|
r15 = nil
|
2331
2331
|
end
|
2332
2332
|
if r15
|
@@ -2337,7 +2337,7 @@ module Delorean
|
|
2337
2337
|
r16 = true
|
2338
2338
|
@index += match_len
|
2339
2339
|
else
|
2340
|
-
terminal_parse_failure('
|
2340
|
+
terminal_parse_failure('\'|\'')
|
2341
2341
|
r16 = nil
|
2342
2342
|
end
|
2343
2343
|
if r16
|
@@ -2349,7 +2349,7 @@ module Delorean
|
|
2349
2349
|
r18 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
2350
2350
|
@index += match_len
|
2351
2351
|
else
|
2352
|
-
terminal_parse_failure('in')
|
2352
|
+
terminal_parse_failure('\'in\'')
|
2353
2353
|
r18 = nil
|
2354
2354
|
end
|
2355
2355
|
s17 << r18
|
@@ -2409,7 +2409,7 @@ module Delorean
|
|
2409
2409
|
r1 = true
|
2410
2410
|
@index += match_len
|
2411
2411
|
else
|
2412
|
-
terminal_parse_failure('
|
2412
|
+
terminal_parse_failure('\'!\'')
|
2413
2413
|
r1 = nil
|
2414
2414
|
end
|
2415
2415
|
if r1
|
@@ -2420,7 +2420,7 @@ module Delorean
|
|
2420
2420
|
r2 = true
|
2421
2421
|
@index += match_len
|
2422
2422
|
else
|
2423
|
-
terminal_parse_failure('
|
2423
|
+
terminal_parse_failure('\'-\'')
|
2424
2424
|
r2 = nil
|
2425
2425
|
end
|
2426
2426
|
if r2
|
@@ -2532,7 +2532,7 @@ module Delorean
|
|
2532
2532
|
r15 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
2533
2533
|
@index += match_len
|
2534
2534
|
else
|
2535
|
-
terminal_parse_failure('
|
2535
|
+
terminal_parse_failure('\'::\'')
|
2536
2536
|
r15 = nil
|
2537
2537
|
end
|
2538
2538
|
s13 << r15
|
@@ -2570,7 +2570,7 @@ module Delorean
|
|
2570
2570
|
r18 = true
|
2571
2571
|
@index += match_len
|
2572
2572
|
else
|
2573
|
-
terminal_parse_failure('(')
|
2573
|
+
terminal_parse_failure('\'(\'')
|
2574
2574
|
r18 = nil
|
2575
2575
|
end
|
2576
2576
|
s17 << r18
|
@@ -2598,7 +2598,7 @@ module Delorean
|
|
2598
2598
|
r24 = true
|
2599
2599
|
@index += match_len
|
2600
2600
|
else
|
2601
|
-
terminal_parse_failure(')')
|
2601
|
+
terminal_parse_failure('\')\'')
|
2602
2602
|
r24 = nil
|
2603
2603
|
end
|
2604
2604
|
s17 << r24
|
@@ -2681,7 +2681,7 @@ module Delorean
|
|
2681
2681
|
r6 = true
|
2682
2682
|
@index += match_len
|
2683
2683
|
else
|
2684
|
-
terminal_parse_failure('
|
2684
|
+
terminal_parse_failure('\',\'')
|
2685
2685
|
r6 = nil
|
2686
2686
|
end
|
2687
2687
|
s3 << r6
|
@@ -2778,7 +2778,7 @@ module Delorean
|
|
2778
2778
|
r4 = true
|
2779
2779
|
@index += match_len
|
2780
2780
|
else
|
2781
|
-
terminal_parse_failure('
|
2781
|
+
terminal_parse_failure('\':\'')
|
2782
2782
|
r4 = nil
|
2783
2783
|
end
|
2784
2784
|
s0 << r4
|
@@ -2807,7 +2807,7 @@ module Delorean
|
|
2807
2807
|
r12 = true
|
2808
2808
|
@index += match_len
|
2809
2809
|
else
|
2810
|
-
terminal_parse_failure('
|
2810
|
+
terminal_parse_failure('\',\'')
|
2811
2811
|
r12 = nil
|
2812
2812
|
end
|
2813
2813
|
s9 << r12
|
@@ -2916,7 +2916,7 @@ module Delorean
|
|
2916
2916
|
r6 = true
|
2917
2917
|
@index += match_len
|
2918
2918
|
else
|
2919
|
-
terminal_parse_failure('
|
2919
|
+
terminal_parse_failure('\'=\'')
|
2920
2920
|
r6 = nil
|
2921
2921
|
end
|
2922
2922
|
s2 << r6
|
@@ -2961,7 +2961,7 @@ module Delorean
|
|
2961
2961
|
r14 = true
|
2962
2962
|
@index += match_len
|
2963
2963
|
else
|
2964
|
-
terminal_parse_failure('
|
2964
|
+
terminal_parse_failure('\',\'')
|
2965
2965
|
r14 = nil
|
2966
2966
|
end
|
2967
2967
|
s11 << r14
|
@@ -3038,7 +3038,7 @@ module Delorean
|
|
3038
3038
|
r2 = true
|
3039
3039
|
@index += match_len
|
3040
3040
|
else
|
3041
|
-
terminal_parse_failure('
|
3041
|
+
terminal_parse_failure('\'.\'')
|
3042
3042
|
r2 = nil
|
3043
3043
|
end
|
3044
3044
|
s0 << r2
|
@@ -3099,7 +3099,7 @@ module Delorean
|
|
3099
3099
|
r1 = instantiate_node(Literal,input, index...(index + match_len))
|
3100
3100
|
@index += match_len
|
3101
3101
|
else
|
3102
|
-
terminal_parse_failure('0')
|
3102
|
+
terminal_parse_failure('\'0\'')
|
3103
3103
|
r1 = nil
|
3104
3104
|
end
|
3105
3105
|
if r1
|
@@ -3226,7 +3226,7 @@ module Delorean
|
|
3226
3226
|
r1 = instantiate_node(Literal,input, index...(index + match_len))
|
3227
3227
|
@index += match_len
|
3228
3228
|
else
|
3229
|
-
terminal_parse_failure('true')
|
3229
|
+
terminal_parse_failure('\'true\'')
|
3230
3230
|
r1 = nil
|
3231
3231
|
end
|
3232
3232
|
if r1
|
@@ -3237,7 +3237,7 @@ module Delorean
|
|
3237
3237
|
r2 = instantiate_node(Literal,input, index...(index + match_len))
|
3238
3238
|
@index += match_len
|
3239
3239
|
else
|
3240
|
-
terminal_parse_failure('false')
|
3240
|
+
terminal_parse_failure('\'false\'')
|
3241
3241
|
r2 = nil
|
3242
3242
|
end
|
3243
3243
|
if r2
|
@@ -3269,7 +3269,7 @@ module Delorean
|
|
3269
3269
|
r0 = instantiate_node(Self,input, index...(index + match_len))
|
3270
3270
|
@index += match_len
|
3271
3271
|
else
|
3272
|
-
terminal_parse_failure('_')
|
3272
|
+
terminal_parse_failure('\'_\'')
|
3273
3273
|
r0 = nil
|
3274
3274
|
end
|
3275
3275
|
|
@@ -3293,7 +3293,7 @@ module Delorean
|
|
3293
3293
|
r0 = instantiate_node(Literal,input, index...(index + match_len))
|
3294
3294
|
@index += match_len
|
3295
3295
|
else
|
3296
|
-
terminal_parse_failure('nil')
|
3296
|
+
terminal_parse_failure('\'nil\'')
|
3297
3297
|
r0 = nil
|
3298
3298
|
end
|
3299
3299
|
|
@@ -3317,7 +3317,7 @@ module Delorean
|
|
3317
3317
|
r0 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
3318
3318
|
@index += match_len
|
3319
3319
|
else
|
3320
|
-
terminal_parse_failure(' ')
|
3320
|
+
terminal_parse_failure('\' \'')
|
3321
3321
|
r0 = nil
|
3322
3322
|
end
|
3323
3323
|
|
@@ -3390,7 +3390,7 @@ module Delorean
|
|
3390
3390
|
r2 = true
|
3391
3391
|
@index += match_len
|
3392
3392
|
else
|
3393
|
-
terminal_parse_failure('"')
|
3393
|
+
terminal_parse_failure('\'"\'')
|
3394
3394
|
r2 = nil
|
3395
3395
|
end
|
3396
3396
|
s1 << r2
|
@@ -3402,7 +3402,7 @@ module Delorean
|
|
3402
3402
|
r5 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
3403
3403
|
@index += match_len
|
3404
3404
|
else
|
3405
|
-
terminal_parse_failure('\"')
|
3405
|
+
terminal_parse_failure('\'\\"\'')
|
3406
3406
|
r5 = nil
|
3407
3407
|
end
|
3408
3408
|
if r5
|
@@ -3415,12 +3415,15 @@ module Delorean
|
|
3415
3415
|
r8 = true
|
3416
3416
|
@index += match_len
|
3417
3417
|
else
|
3418
|
-
terminal_parse_failure('"')
|
3418
|
+
terminal_parse_failure('\'"\'')
|
3419
3419
|
r8 = nil
|
3420
3420
|
end
|
3421
3421
|
if r8
|
3422
|
+
@index = i7
|
3422
3423
|
r7 = nil
|
3424
|
+
terminal_parse_failure('\'"\'', true)
|
3423
3425
|
else
|
3426
|
+
terminal_failures.pop
|
3424
3427
|
@index = i7
|
3425
3428
|
r7 = instantiate_node(SyntaxNode,input, index...index)
|
3426
3429
|
end
|
@@ -3463,7 +3466,7 @@ module Delorean
|
|
3463
3466
|
r10 = true
|
3464
3467
|
@index += match_len
|
3465
3468
|
else
|
3466
|
-
terminal_parse_failure('"')
|
3469
|
+
terminal_parse_failure('\'"\'')
|
3467
3470
|
r10 = nil
|
3468
3471
|
end
|
3469
3472
|
s1 << r10
|
@@ -3485,7 +3488,7 @@ module Delorean
|
|
3485
3488
|
r12 = true
|
3486
3489
|
@index += match_len
|
3487
3490
|
else
|
3488
|
-
terminal_parse_failure("'")
|
3491
|
+
terminal_parse_failure('"\'"')
|
3489
3492
|
r12 = nil
|
3490
3493
|
end
|
3491
3494
|
s11 << r12
|
@@ -3512,7 +3515,7 @@ module Delorean
|
|
3512
3515
|
r15 = true
|
3513
3516
|
@index += match_len
|
3514
3517
|
else
|
3515
|
-
terminal_parse_failure("'")
|
3518
|
+
terminal_parse_failure('"\'"')
|
3516
3519
|
r15 = nil
|
3517
3520
|
end
|
3518
3521
|
s11 << r15
|
data/lib/delorean/nodes.rb
CHANGED
@@ -102,10 +102,16 @@ eos
|
|
102
102
|
end
|
103
103
|
|
104
104
|
def rewrite(context)
|
105
|
+
dname = [context.module_name, context.last_node, i.text_value].join('.')
|
106
|
+
debug = Debug.debug_set.member?(dname)
|
107
|
+
|
105
108
|
# an attr is defined as a class function on the node class.
|
106
109
|
"class #{context.last_node}; " +
|
107
110
|
"def self.#{i.text_value}#{POST}(_e); " +
|
108
|
-
"
|
111
|
+
(debug ? "_debug =" : '') +
|
112
|
+
"_e[self.name+'.#{i.text_value}'] ||= #{e.rewrite(context)};" +
|
113
|
+
(debug ? 'Delorean::Debug.log(_debug); _debug;' : '') +
|
114
|
+
"end; end;"
|
109
115
|
end
|
110
116
|
end
|
111
117
|
|
data/lib/delorean/version.rb
CHANGED
data/lib/delorean_lang.rb
CHANGED
data/spec/eval_spec.rb
CHANGED
@@ -985,4 +985,14 @@ eof
|
|
985
985
|
r = engine.evaluate("A", "b")
|
986
986
|
expect(r).to eq ["hello"]
|
987
987
|
end
|
988
|
+
|
989
|
+
it "node calls are not memoized/cached" do
|
990
|
+
engine.parse defn("A:",
|
991
|
+
" x = Dummy.side_effect",
|
992
|
+
"B: A",
|
993
|
+
" x = (A() + _).x + (A() + _).x"
|
994
|
+
)
|
995
|
+
r = engine.evaluate("B", "x")
|
996
|
+
expect(r).to eq 3
|
997
|
+
end
|
988
998
|
end
|
data/spec/parse_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -26,7 +26,7 @@ ActiveRecord::Migration.create_table :dummies do |t|
|
|
26
26
|
t.string :name
|
27
27
|
t.decimal :number
|
28
28
|
t.references :dummy
|
29
|
-
t.timestamps
|
29
|
+
t.timestamps null: true
|
30
30
|
end
|
31
31
|
|
32
32
|
class Dummy < ActiveRecord::Base
|
@@ -83,6 +83,11 @@ class Dummy < ActiveRecord::Base
|
|
83
83
|
end
|
84
84
|
|
85
85
|
delorean_instance_method :name3, String
|
86
|
+
|
87
|
+
@@foo = 0
|
88
|
+
delorean_fn :side_effect, sig: 0 do
|
89
|
+
@@foo += 1
|
90
|
+
end
|
86
91
|
end
|
87
92
|
|
88
93
|
module M
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
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.22
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arman Bostani
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-09-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: treetop
|
@@ -84,6 +84,7 @@ files:
|
|
84
84
|
- lib/delorean/base.rb
|
85
85
|
- lib/delorean/const.rb
|
86
86
|
- lib/delorean/container.rb
|
87
|
+
- lib/delorean/debug.rb
|
87
88
|
- lib/delorean/delorean.rb
|
88
89
|
- lib/delorean/delorean.treetop
|
89
90
|
- lib/delorean/engine.rb
|
@@ -117,7 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
118
|
version: '0'
|
118
119
|
requirements: []
|
119
120
|
rubyforge_project:
|
120
|
-
rubygems_version: 2.
|
121
|
+
rubygems_version: 2.5.2
|
121
122
|
signing_key:
|
122
123
|
specification_version: 4
|
123
124
|
summary: Delorean compiler
|