bool 1.0.0-java

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,29 @@
1
+ # This loads either bool_ext.so, bool_ext.bundle or
2
+ # bool_ext.jar, depending on your Ruby platform and OS
3
+ require 'bool_ext'
4
+ require 'bool/ast'
5
+ require 'bool/evaluator'
6
+
7
+ module Bool
8
+ class SyntaxError < StandardError
9
+ attr_reader :first_line, :last_line, :first_column, :last_column
10
+
11
+ def initialize(message, first_line, last_line, first_column, last_column)
12
+ super(message)
13
+ @first_line, @last_line, @first_column, @last_column = first_line, last_line, first_column, last_column
14
+ end
15
+ end
16
+
17
+ if RUBY_PLATFORM =~ /java/
18
+ def parse(source)
19
+ lexer = Java::Bool::Lexer.new(source)
20
+ parser = Java::Bool::Parser.new(lexer)
21
+ parser.parseExpr()
22
+ rescue => e
23
+ raise SyntaxError.new(e.message, e.line, e.line, e.column, e.column)
24
+ end
25
+ module_function(:parse)
26
+ else
27
+ # parse is defined in ruby_bool.c
28
+ end
29
+ end
@@ -0,0 +1,53 @@
1
+ module Bool
2
+ if RUBY_PLATFORM =~ /java/
3
+ # AST classes defined in bool_ext.jar (bool-jvm)
4
+ else
5
+ class Var
6
+ attr_reader :name
7
+
8
+ def initialize(name)
9
+ @name = name
10
+ end
11
+
12
+ def describe_to(visitor, arg)
13
+ visitor.var(self, arg)
14
+ end
15
+ end
16
+
17
+ class And
18
+ attr_reader :left, :right
19
+
20
+ def initialize(left, right)
21
+ @left, @right = left, right
22
+ end
23
+
24
+ def describe_to(visitor, arg)
25
+ visitor.and(self, arg)
26
+ end
27
+ end
28
+
29
+ class Or
30
+ attr_reader :left, :right
31
+
32
+ def initialize(left, right)
33
+ @left, @right = left, right
34
+ end
35
+
36
+ def describe_to(visitor, arg)
37
+ visitor.or(self, arg)
38
+ end
39
+ end
40
+
41
+ class Not
42
+ attr_reader :other
43
+
44
+ def initialize(other)
45
+ @other = other
46
+ end
47
+
48
+ def describe_to(visitor, arg)
49
+ visitor.not(self, arg)
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,35 @@
1
+ module Bool
2
+ class Evaluator
3
+ if RUBY_PLATFORM =~ /java/
4
+ require 'libbool'
5
+
6
+ def self.new
7
+ Java::Bool::Evaluator.new
8
+ end
9
+
10
+ else
11
+ def var(node, vars)
12
+ !!vars.index(node.name)
13
+ end
14
+
15
+ def and(node, vars)
16
+ evaluate(node.left, vars) && evaluate(node.right, vars)
17
+ end
18
+
19
+ def or(node, vars)
20
+ evaluate(node.left, vars) || evaluate(node.right, vars)
21
+ end
22
+
23
+ def not(node, vars)
24
+ !evaluate(node.other, vars)
25
+ end
26
+
27
+ private
28
+
29
+ def evaluate(node, vars)
30
+ node.describe_to(self, vars)
31
+ end
32
+ end
33
+ end
34
+ end
35
+
Binary file
metadata ADDED
@@ -0,0 +1,90 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bool
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 1.0.0
6
+ platform: java
7
+ authors:
8
+ - Aslak Hellesøy
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-02-10 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ version_requirements: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: !binary |-
21
+ MA==
22
+ none: false
23
+ requirement: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: !binary |-
28
+ MA==
29
+ none: false
30
+ prerelease: false
31
+ type: :development
32
+ - !ruby/object:Gem::Dependency
33
+ name: bundler
34
+ version_requirements: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - "~>"
37
+ - !ruby/object:Gem::Version
38
+ version: 1.3.0.pre
39
+ none: false
40
+ requirement: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - "~>"
43
+ - !ruby/object:Gem::Version
44
+ version: 1.3.0.pre
45
+ none: false
46
+ prerelease: false
47
+ type: :development
48
+ description:
49
+ email:
50
+ executables: []
51
+ extensions: []
52
+ extra_rdoc_files: []
53
+ files:
54
+ - lib/bool.rb
55
+ - lib/bool/ast.rb
56
+ - lib/bool/evaluator.rb
57
+ - lib/bool_ext.jar
58
+ homepage:
59
+ licenses: []
60
+ post_install_message:
61
+ rdoc_options: []
62
+ require_paths:
63
+ - lib
64
+ required_ruby_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: !binary |-
69
+ MA==
70
+ segments:
71
+ - 0
72
+ hash: 2
73
+ none: false
74
+ required_rubygems_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: !binary |-
79
+ MA==
80
+ segments:
81
+ - 0
82
+ hash: 2
83
+ none: false
84
+ requirements: []
85
+ rubyforge_project:
86
+ rubygems_version: 1.8.24
87
+ signing_key:
88
+ specification_version: 3
89
+ summary: Boolean expression evaluator
90
+ test_files: []