bool 1.0.14 → 1.0.15
Sign up to get free protection for your applications and to get access to all the features.
- 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
|