bool 1.0.11 → 1.0.13
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 +7 -0
- data/ext/bool_ext/ast.h +1 -0
- data/ext/bool_ext/ext.c +1 -0
- data/ext/bool_ext/parser.c +19 -19
- data/ext/bool_ext/parser.h +4 -4
- data/ext/bool_ext/unused.h +2 -1
- data/lib/bool.rb +1 -0
- data/lib/bool/ast.rb +11 -11
- data/lib/bool/evaluator.rb +7 -7
- data/lib/bool/renderer.rb +35 -0
- metadata +17 -30
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b7a81fff001d44fe102aece1bc1f9a8b2d269139
|
4
|
+
data.tar.gz: 4a42c9872223c8ed8c606313cf72ece4a0134f88
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7504f35d2fa18b75a34f582ff7618515c58a133f6116cd2c8d4117ceb57d43f302502211222ce08112a0ca6383e0387f52c223de99fae54c87f2d4286842326a
|
7
|
+
data.tar.gz: 2530972a524ca095e8c06efe1e415114ecca3b5b4bb76e409686549cb4324adcae80eef0c20d649c1b59f1fd4ccdd9e0f408b293fd1bc3b2e0faf5dd299ad423
|
data/ext/bool_ext/ast.h
CHANGED
data/ext/bool_ext/ext.c
CHANGED
data/ext/bool_ext/parser.c
CHANGED
@@ -476,7 +476,7 @@ static const yytype_int8 yyrhs[] =
|
|
476
476
|
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
|
477
477
|
static const yytype_uint8 yyrline[] =
|
478
478
|
{
|
479
|
-
0,
|
479
|
+
0, 51, 51, 55, 56, 57, 58, 59
|
480
480
|
};
|
481
481
|
#endif
|
482
482
|
|
@@ -533,7 +533,7 @@ static const yytype_int8 yydefgoto[] =
|
|
533
533
|
static const yytype_int8 yypact[] =
|
534
534
|
{
|
535
535
|
-1, -3, -1, -1, 3, 7, -3, 5, -3, -1,
|
536
|
-
-1, -3, -3,
|
536
|
+
-1, -3, -3, 0
|
537
537
|
};
|
538
538
|
|
539
539
|
/* YYPGOTO[NTERM-NUM]. */
|
@@ -548,7 +548,7 @@ static const yytype_int8 yypgoto[] =
|
|
548
548
|
#define YYTABLE_NINF -1
|
549
549
|
static const yytype_uint8 yytable[] =
|
550
550
|
{
|
551
|
-
6, 7, 1, 8,
|
551
|
+
6, 7, 1, 8, 9, 2, 3, 12, 13, 9,
|
552
552
|
10, 9, 10, 11
|
553
553
|
};
|
554
554
|
|
@@ -558,9 +558,9 @@ static const yytype_uint8 yytable[] =
|
|
558
558
|
#define yytable_value_is_error(Yytable_value) \
|
559
559
|
YYID (0)
|
560
560
|
|
561
|
-
static const
|
561
|
+
static const yytype_uint8 yycheck[] =
|
562
562
|
{
|
563
|
-
2, 3, 3, 0,
|
563
|
+
2, 3, 3, 0, 4, 6, 7, 9, 10, 4,
|
564
564
|
5, 4, 5, 8
|
565
565
|
};
|
566
566
|
|
@@ -1504,43 +1504,43 @@ yyreduce:
|
|
1504
1504
|
switch (yyn)
|
1505
1505
|
{
|
1506
1506
|
case 2:
|
1507
|
-
/* Line
|
1508
|
-
#line
|
1507
|
+
/* Line 1792 of yacc.c */
|
1508
|
+
#line 51 "parser.y"
|
1509
1509
|
{ *node = (yyvsp[(1) - (1)].node); }
|
1510
1510
|
break;
|
1511
1511
|
|
1512
1512
|
case 3:
|
1513
|
-
/* Line
|
1514
|
-
#line
|
1513
|
+
/* Line 1792 of yacc.c */
|
1514
|
+
#line 55 "parser.y"
|
1515
1515
|
{ (yyval.node) = create_var((yyvsp[(1) - (1)].value)); }
|
1516
1516
|
break;
|
1517
1517
|
|
1518
1518
|
case 4:
|
1519
|
-
/* Line
|
1520
|
-
#line
|
1519
|
+
/* Line 1792 of yacc.c */
|
1520
|
+
#line 56 "parser.y"
|
1521
1521
|
{ (yyval.node) = create_and((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); }
|
1522
1522
|
break;
|
1523
1523
|
|
1524
1524
|
case 5:
|
1525
|
-
/* Line
|
1526
|
-
#line
|
1525
|
+
/* Line 1792 of yacc.c */
|
1526
|
+
#line 57 "parser.y"
|
1527
1527
|
{ (yyval.node) = create_or((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); }
|
1528
1528
|
break;
|
1529
1529
|
|
1530
1530
|
case 6:
|
1531
|
-
/* Line
|
1532
|
-
#line
|
1531
|
+
/* Line 1792 of yacc.c */
|
1532
|
+
#line 58 "parser.y"
|
1533
1533
|
{ (yyval.node) = create_not((yyvsp[(2) - (2)].node)); }
|
1534
1534
|
break;
|
1535
1535
|
|
1536
1536
|
case 7:
|
1537
|
-
/* Line
|
1538
|
-
#line
|
1537
|
+
/* Line 1792 of yacc.c */
|
1538
|
+
#line 59 "parser.y"
|
1539
1539
|
{ (yyval.node) = (yyvsp[(2) - (3)].node); }
|
1540
1540
|
break;
|
1541
1541
|
|
1542
1542
|
|
1543
|
-
/* Line
|
1543
|
+
/* Line 1792 of yacc.c */
|
1544
1544
|
#line 1545 "parser.c"
|
1545
1545
|
default: break;
|
1546
1546
|
}
|
@@ -1780,6 +1780,6 @@ yyreturn:
|
|
1780
1780
|
|
1781
1781
|
|
1782
1782
|
/* Line 2055 of yacc.c */
|
1783
|
-
#line
|
1783
|
+
#line 62 "parser.y"
|
1784
1784
|
|
1785
1785
|
|
data/ext/bool_ext/parser.h
CHANGED
@@ -40,7 +40,7 @@
|
|
40
40
|
extern int yydebug;
|
41
41
|
#endif
|
42
42
|
/* "%code requires" blocks. */
|
43
|
-
/* Line
|
43
|
+
/* Line 2058 of yacc.c */
|
44
44
|
#line 10 "parser.y"
|
45
45
|
|
46
46
|
|
@@ -51,7 +51,7 @@ typedef void* yyscan_t;
|
|
51
51
|
#endif
|
52
52
|
|
53
53
|
|
54
|
-
/* Line
|
54
|
+
/* Line 2058 of yacc.c */
|
55
55
|
#line 56 "parser.h"
|
56
56
|
|
57
57
|
/* Tokens. */
|
@@ -74,14 +74,14 @@ typedef void* yyscan_t;
|
|
74
74
|
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
|
75
75
|
typedef union YYSTYPE
|
76
76
|
{
|
77
|
-
/* Line
|
77
|
+
/* Line 2058 of yacc.c */
|
78
78
|
#line 30 "parser.y"
|
79
79
|
|
80
80
|
char* value;
|
81
81
|
Node* node;
|
82
82
|
|
83
83
|
|
84
|
-
/* Line
|
84
|
+
/* Line 2058 of yacc.c */
|
85
85
|
#line 86 "parser.h"
|
86
86
|
} YYSTYPE;
|
87
87
|
# define YYSTYPE_IS_TRIVIAL 1
|
data/ext/bool_ext/unused.h
CHANGED
data/lib/bool.rb
CHANGED
data/lib/bool/ast.rb
CHANGED
@@ -9,8 +9,8 @@ module Bool
|
|
9
9
|
@name = name
|
10
10
|
end
|
11
11
|
|
12
|
-
def
|
13
|
-
visitor.
|
12
|
+
def accept(visitor, arg)
|
13
|
+
visitor.visit_var(self, arg)
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
@@ -21,8 +21,8 @@ module Bool
|
|
21
21
|
@left, @right = left, right
|
22
22
|
end
|
23
23
|
|
24
|
-
def
|
25
|
-
visitor.
|
24
|
+
def accept(visitor, arg)
|
25
|
+
visitor.visit_and(self, arg)
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
@@ -33,20 +33,20 @@ module Bool
|
|
33
33
|
@left, @right = left, right
|
34
34
|
end
|
35
35
|
|
36
|
-
def
|
37
|
-
visitor.
|
36
|
+
def accept(visitor, arg)
|
37
|
+
visitor.visit_or(self, arg)
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
41
|
class Not
|
42
|
-
attr_reader :
|
42
|
+
attr_reader :operand
|
43
43
|
|
44
|
-
def initialize(
|
45
|
-
@
|
44
|
+
def initialize(operand)
|
45
|
+
@operand = operand
|
46
46
|
end
|
47
47
|
|
48
|
-
def
|
49
|
-
visitor.
|
48
|
+
def accept(visitor, arg)
|
49
|
+
visitor.visit_not(self, arg)
|
50
50
|
end
|
51
51
|
end
|
52
52
|
end
|
data/lib/bool/evaluator.rb
CHANGED
@@ -8,26 +8,26 @@ module Bool
|
|
8
8
|
end
|
9
9
|
|
10
10
|
else
|
11
|
-
def
|
11
|
+
def visit_var(node, vars)
|
12
12
|
!!vars.index(node.name)
|
13
13
|
end
|
14
14
|
|
15
|
-
def
|
15
|
+
def visit_and(node, vars)
|
16
16
|
evaluate(node.left, vars) && evaluate(node.right, vars)
|
17
17
|
end
|
18
18
|
|
19
|
-
def
|
19
|
+
def visit_or(node, vars)
|
20
20
|
evaluate(node.left, vars) || evaluate(node.right, vars)
|
21
21
|
end
|
22
22
|
|
23
|
-
def
|
24
|
-
!evaluate(node.
|
23
|
+
def visit_not(node, vars)
|
24
|
+
!evaluate(node.operand, vars)
|
25
25
|
end
|
26
26
|
|
27
|
-
|
27
|
+
private
|
28
28
|
|
29
29
|
def evaluate(node, vars)
|
30
|
-
node.
|
30
|
+
node.accept(self, vars)
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Bool
|
2
|
+
class Renderer
|
3
|
+
if RUBY_PLATFORM =~ /java/
|
4
|
+
require 'bool_ext'
|
5
|
+
|
6
|
+
def self.new
|
7
|
+
Java::Bool::Renderer.new
|
8
|
+
end
|
9
|
+
|
10
|
+
else
|
11
|
+
def visit_var(node, vars)
|
12
|
+
node.name
|
13
|
+
end
|
14
|
+
|
15
|
+
def visit_and(node, vars)
|
16
|
+
"(" + render(node.left) + " && " + render(node.right) + ")"
|
17
|
+
end
|
18
|
+
|
19
|
+
def visit_or(node, vars)
|
20
|
+
"(" + render(node.left) + " || " + render(node.right) + ")"
|
21
|
+
end
|
22
|
+
|
23
|
+
def visit_not(node, vars)
|
24
|
+
"!" + render(node.operand)
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def render(node)
|
30
|
+
node.accept(self, nil)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
metadata
CHANGED
@@ -1,64 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bool
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.13
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Aslak Hellesøy
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-03-16 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rake
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: bundler
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
37
|
-
version: 1.3.0
|
33
|
+
version: 1.3.0
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ~>
|
44
39
|
- !ruby/object:Gem::Version
|
45
|
-
version: 1.3.0
|
40
|
+
version: 1.3.0
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rake-compiler
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
|
-
version: 0.8.
|
47
|
+
version: 0.8.3
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.8.
|
54
|
+
version: 0.8.3
|
62
55
|
description:
|
63
56
|
email:
|
64
57
|
executables: []
|
@@ -68,44 +61,38 @@ extra_rdoc_files: []
|
|
68
61
|
files:
|
69
62
|
- lib/bool/ast.rb
|
70
63
|
- lib/bool/evaluator.rb
|
64
|
+
- lib/bool/renderer.rb
|
71
65
|
- lib/bool.rb
|
72
66
|
- ext/bool_ext/extconf.rb
|
73
67
|
- ext/bool_ext/ast.c
|
74
68
|
- ext/bool_ext/ext.c
|
75
69
|
- ext/bool_ext/lexer.c
|
76
70
|
- ext/bool_ext/parser.c
|
71
|
+
- ext/bool_ext/parser.h
|
77
72
|
- ext/bool_ext/ast.h
|
78
73
|
- ext/bool_ext/lexer.h
|
79
|
-
- ext/bool_ext/parser.h
|
80
74
|
- ext/bool_ext/unused.h
|
81
75
|
homepage:
|
82
76
|
licenses: []
|
77
|
+
metadata: {}
|
83
78
|
post_install_message:
|
84
79
|
rdoc_options: []
|
85
80
|
require_paths:
|
86
81
|
- lib
|
87
82
|
required_ruby_version: !ruby/object:Gem::Requirement
|
88
|
-
none: false
|
89
83
|
requirements:
|
90
|
-
- -
|
84
|
+
- - '>='
|
91
85
|
- !ruby/object:Gem::Version
|
92
86
|
version: '0'
|
93
|
-
segments:
|
94
|
-
- 0
|
95
|
-
hash: -4061533046418235951
|
96
87
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
88
|
requirements:
|
99
|
-
- -
|
89
|
+
- - '>='
|
100
90
|
- !ruby/object:Gem::Version
|
101
91
|
version: '0'
|
102
|
-
segments:
|
103
|
-
- 0
|
104
|
-
hash: -4061533046418235951
|
105
92
|
requirements: []
|
106
93
|
rubyforge_project:
|
107
|
-
rubygems_version:
|
94
|
+
rubygems_version: 2.0.0.rc.2
|
108
95
|
signing_key:
|
109
|
-
specification_version:
|
96
|
+
specification_version: 4
|
110
97
|
summary: Boolean expression evaluator
|
111
98
|
test_files: []
|