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.
@@ -40,19 +40,14 @@
40
40
  extern int yydebug;
41
41
  #endif
42
42
  /* "%code requires" blocks. */
43
- /* Line 2058 of yacc.c */
44
- #line 10 "parser.y"
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 2058 of yacc.c */
55
- #line 56 "parser.h"
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 2058 of yacc.c */
78
- #line 30 "parser.y"
72
+ /* Line 2065 of yacc.c */
73
+ #line 21 "parser.y"
79
74
 
80
- char* value;
75
+ Token* token;
81
76
  Node* node;
82
77
 
83
78
 
84
- /* Line 2058 of yacc.c */
85
- #line 86 "parser.h"
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, yyscan_t scanner);
110
+ int yyparse (Node** node);
115
111
  #else
116
112
  int yyparse ();
117
113
  #endif
@@ -7,11 +7,11 @@ require 'bool/renderer'
7
7
 
8
8
  module Bool
9
9
  class SyntaxError < StandardError
10
- attr_reader :first_line, :last_line, :first_column, :last_column
10
+ attr_reader :token
11
11
 
12
- def initialize(message, first_line, last_line, first_column, last_column)
12
+ def initialize(message, token)
13
13
  super(message)
14
- @first_line, @last_line, @first_column, @last_column = first_line, last_line, first_column, last_column
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.parseExpr()
22
+ parser.buildAst()
23
23
  rescue => e
24
- raise SyntaxError.new(e.message, e.line, e.line, e.column, e.column)
24
+ raise SyntaxError.new(e.message, e.token)
25
25
  end
26
26
  module_function(:parse)
27
27
  else
@@ -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 Var
6
- attr_reader :name
5
+ class Token
6
+ attr_reader :value, :first_line, :last_line, :first_column, :last_column
7
7
 
8
- def initialize(name)
9
- @name = name
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
 
@@ -9,7 +9,7 @@ module Bool
9
9
 
10
10
  else
11
11
  def visit_var(node, vars)
12
- !!vars.index(node.name)
12
+ !!vars.index(node.token.value)
13
13
  end
14
14
 
15
15
  def visit_and(node, vars)
@@ -9,19 +9,19 @@ module Bool
9
9
 
10
10
  else
11
11
  def visit_var(node, vars)
12
- node.name
12
+ node.token.value
13
13
  end
14
14
 
15
15
  def visit_and(node, vars)
16
- "(" + render(node.left) + " && " + render(node.right) + ")"
16
+ "(#{render(node.left)} #{node.token.value} #{render(node.right)})"
17
17
  end
18
18
 
19
19
  def visit_or(node, vars)
20
- "(" + render(node.left) + " || " + render(node.right) + ")"
20
+ "(#{render(node.left)} #{node.token.value} #{render(node.right)})"
21
21
  end
22
22
 
23
23
  def visit_not(node, vars)
24
- "!" + render(node.operand)
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.14
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-03-16 00:00:00.000000000 Z
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.rc.2
94
+ rubygems_version: 2.0.0
95
95
  signing_key:
96
96
  specification_version: 4
97
97
  summary: Boolean expression evaluator