bool 1.0.14 → 1.0.15
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/ext/bool_ext/ast.c +37 -40
- data/ext/bool_ext/ast.h +18 -9
- data/ext/bool_ext/ext.c +33 -18
- data/ext/bool_ext/lexer.c +224 -1940
- data/ext/bool_ext/lexer.h +4 -347
- data/ext/bool_ext/parser.c +83 -109
- data/ext/bool_ext/parser.h +12 -16
- data/lib/bool.rb +5 -5
- data/lib/bool/ast.rb +23 -10
- data/lib/bool/evaluator.rb +1 -1
- data/lib/bool/renderer.rb +4 -4
- metadata +4 -4
data/ext/bool_ext/parser.h
CHANGED
|
@@ -40,19 +40,14 @@
|
|
|
40
40
|
extern int yydebug;
|
|
41
41
|
#endif
|
|
42
42
|
/* "%code requires" blocks. */
|
|
43
|
-
/* Line
|
|
44
|
-
#line
|
|
45
|
-
|
|
43
|
+
/* Line 2065 of yacc.c */
|
|
44
|
+
#line 9 "parser.y"
|
|
46
45
|
|
|
47
46
|
#include "ast.h"
|
|
48
|
-
#ifndef YY_TYPEDEF_YY_SCANNER_T
|
|
49
|
-
#define YY_TYPEDEF_YY_SCANNER_T
|
|
50
|
-
typedef void* yyscan_t;
|
|
51
|
-
#endif
|
|
52
47
|
|
|
53
48
|
|
|
54
|
-
/* Line
|
|
55
|
-
#line
|
|
49
|
+
/* Line 2065 of yacc.c */
|
|
50
|
+
#line 51 "parser.h"
|
|
56
51
|
|
|
57
52
|
/* Tokens. */
|
|
58
53
|
#ifndef YYTOKENTYPE
|
|
@@ -74,15 +69,15 @@ typedef void* yyscan_t;
|
|
|
74
69
|
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
|
|
75
70
|
typedef union YYSTYPE
|
|
76
71
|
{
|
|
77
|
-
/* Line
|
|
78
|
-
#line
|
|
72
|
+
/* Line 2065 of yacc.c */
|
|
73
|
+
#line 21 "parser.y"
|
|
79
74
|
|
|
80
|
-
|
|
75
|
+
Token* token;
|
|
81
76
|
Node* node;
|
|
82
77
|
|
|
83
78
|
|
|
84
|
-
/* Line
|
|
85
|
-
#line
|
|
79
|
+
/* Line 2065 of yacc.c */
|
|
80
|
+
#line 81 "parser.h"
|
|
86
81
|
} YYSTYPE;
|
|
87
82
|
# define YYSTYPE_IS_TRIVIAL 1
|
|
88
83
|
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
|
|
@@ -102,7 +97,8 @@ typedef struct YYLTYPE
|
|
|
102
97
|
# define YYLTYPE_IS_TRIVIAL 1
|
|
103
98
|
#endif
|
|
104
99
|
|
|
105
|
-
|
|
100
|
+
extern YYSTYPE yylval;
|
|
101
|
+
extern YYLTYPE yylloc;
|
|
106
102
|
#ifdef YYPARSE_PARAM
|
|
107
103
|
#if defined __STDC__ || defined __cplusplus
|
|
108
104
|
int yyparse (void *YYPARSE_PARAM);
|
|
@@ -111,7 +107,7 @@ int yyparse ();
|
|
|
111
107
|
#endif
|
|
112
108
|
#else /* ! YYPARSE_PARAM */
|
|
113
109
|
#if defined __STDC__ || defined __cplusplus
|
|
114
|
-
int yyparse (Node** node
|
|
110
|
+
int yyparse (Node** node);
|
|
115
111
|
#else
|
|
116
112
|
int yyparse ();
|
|
117
113
|
#endif
|
data/lib/bool.rb
CHANGED
|
@@ -7,11 +7,11 @@ require 'bool/renderer'
|
|
|
7
7
|
|
|
8
8
|
module Bool
|
|
9
9
|
class SyntaxError < StandardError
|
|
10
|
-
attr_reader :
|
|
10
|
+
attr_reader :token
|
|
11
11
|
|
|
12
|
-
def initialize(message,
|
|
12
|
+
def initialize(message, token)
|
|
13
13
|
super(message)
|
|
14
|
-
@
|
|
14
|
+
@token = token
|
|
15
15
|
end
|
|
16
16
|
end
|
|
17
17
|
|
|
@@ -19,9 +19,9 @@ module Bool
|
|
|
19
19
|
def parse(source)
|
|
20
20
|
lexer = Java::Bool::Lexer.new(source)
|
|
21
21
|
parser = Java::Bool::Parser.new(lexer)
|
|
22
|
-
parser.
|
|
22
|
+
parser.buildAst()
|
|
23
23
|
rescue => e
|
|
24
|
-
raise SyntaxError.new(e.message, e.
|
|
24
|
+
raise SyntaxError.new(e.message, e.token)
|
|
25
25
|
end
|
|
26
26
|
module_function(:parse)
|
|
27
27
|
else
|
data/lib/bool/ast.rb
CHANGED
|
@@ -2,22 +2,33 @@ module Bool
|
|
|
2
2
|
if RUBY_PLATFORM =~ /java/
|
|
3
3
|
# AST classes defined in bool_ext.jar
|
|
4
4
|
else
|
|
5
|
-
class
|
|
6
|
-
attr_reader :
|
|
5
|
+
class Token
|
|
6
|
+
attr_reader :value, :first_line, :last_line, :first_column, :last_column
|
|
7
7
|
|
|
8
|
-
def initialize(
|
|
9
|
-
@
|
|
8
|
+
def initialize(value, first_line, last_line, first_column, last_column)
|
|
9
|
+
@value, @first_line, @last_line, @first_column, @last_column = value, first_line, last_line, first_column, last_column
|
|
10
10
|
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
class Node
|
|
14
|
+
attr_reader :token
|
|
15
|
+
|
|
16
|
+
def initialize(token)
|
|
17
|
+
@token = token
|
|
18
|
+
end
|
|
19
|
+
end
|
|
11
20
|
|
|
21
|
+
class Var < Node
|
|
12
22
|
def accept(visitor, arg)
|
|
13
23
|
visitor.visit_var(self, arg)
|
|
14
24
|
end
|
|
15
25
|
end
|
|
16
26
|
|
|
17
|
-
class And
|
|
27
|
+
class And < Node
|
|
18
28
|
attr_reader :left, :right
|
|
19
29
|
|
|
20
|
-
def initialize(left, right)
|
|
30
|
+
def initialize(token, left, right)
|
|
31
|
+
super(token)
|
|
21
32
|
@left, @right = left, right
|
|
22
33
|
end
|
|
23
34
|
|
|
@@ -26,10 +37,11 @@ module Bool
|
|
|
26
37
|
end
|
|
27
38
|
end
|
|
28
39
|
|
|
29
|
-
class Or
|
|
40
|
+
class Or < Node
|
|
30
41
|
attr_reader :left, :right
|
|
31
42
|
|
|
32
|
-
def initialize(left, right)
|
|
43
|
+
def initialize(token, left, right)
|
|
44
|
+
super(token)
|
|
33
45
|
@left, @right = left, right
|
|
34
46
|
end
|
|
35
47
|
|
|
@@ -38,10 +50,11 @@ module Bool
|
|
|
38
50
|
end
|
|
39
51
|
end
|
|
40
52
|
|
|
41
|
-
class Not
|
|
53
|
+
class Not < Node
|
|
42
54
|
attr_reader :operand
|
|
43
55
|
|
|
44
|
-
def initialize(operand)
|
|
56
|
+
def initialize(token, operand)
|
|
57
|
+
super(token)
|
|
45
58
|
@operand = operand
|
|
46
59
|
end
|
|
47
60
|
|
data/lib/bool/evaluator.rb
CHANGED
data/lib/bool/renderer.rb
CHANGED
|
@@ -9,19 +9,19 @@ module Bool
|
|
|
9
9
|
|
|
10
10
|
else
|
|
11
11
|
def visit_var(node, vars)
|
|
12
|
-
node.
|
|
12
|
+
node.token.value
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
def visit_and(node, vars)
|
|
16
|
-
"(
|
|
16
|
+
"(#{render(node.left)} #{node.token.value} #{render(node.right)})"
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
def visit_or(node, vars)
|
|
20
|
-
"(
|
|
20
|
+
"(#{render(node.left)} #{node.token.value} #{render(node.right)})"
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
def visit_not(node, vars)
|
|
24
|
-
"
|
|
24
|
+
"#{node.token.value}#{render(node.operand)}"
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
private
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bool
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.15
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Aslak Hellesøy
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2013-
|
|
11
|
+
date: 2013-04-13 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rake
|
|
@@ -68,9 +68,9 @@ files:
|
|
|
68
68
|
- ext/bool_ext/ext.c
|
|
69
69
|
- ext/bool_ext/lexer.c
|
|
70
70
|
- ext/bool_ext/parser.c
|
|
71
|
-
- ext/bool_ext/parser.h
|
|
72
71
|
- ext/bool_ext/ast.h
|
|
73
72
|
- ext/bool_ext/lexer.h
|
|
73
|
+
- ext/bool_ext/parser.h
|
|
74
74
|
- ext/bool_ext/unused.h
|
|
75
75
|
homepage:
|
|
76
76
|
licenses: []
|
|
@@ -91,7 +91,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
91
91
|
version: '0'
|
|
92
92
|
requirements: []
|
|
93
93
|
rubyforge_project:
|
|
94
|
-
rubygems_version: 2.0.0
|
|
94
|
+
rubygems_version: 2.0.0
|
|
95
95
|
signing_key:
|
|
96
96
|
specification_version: 4
|
|
97
97
|
summary: Boolean expression evaluator
|