bool 1.0.14 → 1.0.15

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