expressir 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/demo.rb +3 -1
  3. data/expressir.gemspec +1 -1
  4. data/lib/expressir/express.rb +0 -1
  5. data/lib/expressir/express_exp/generated/ExpressLexer.rb +235 -232
  6. data/lib/expressir/express_exp/generated/ExpressParser.rb +1461 -1435
  7. data/lib/expressir/express_exp/parser.rb +8 -3
  8. data/lib/expressir/express_exp/visitor.rb +167 -136
  9. data/lib/expressir/model.rb +91 -0
  10. data/lib/expressir/model/constant.rb +2 -0
  11. data/lib/expressir/model/derived.rb +4 -0
  12. data/lib/expressir/model/entity.rb +12 -0
  13. data/lib/expressir/model/enumeration_item.rb +13 -0
  14. data/lib/expressir/model/explicit.rb +4 -0
  15. data/lib/expressir/model/expressions/aggregate_initializer.rb +13 -0
  16. data/lib/expressir/model/expressions/query.rb +8 -0
  17. data/lib/expressir/model/function.rb +31 -0
  18. data/lib/expressir/model/inverse.rb +4 -0
  19. data/lib/expressir/model/literals/binary.rb +13 -0
  20. data/lib/expressir/model/literals/integer.rb +13 -0
  21. data/lib/expressir/model/literals/logical.rb +13 -0
  22. data/lib/expressir/model/literals/real.rb +13 -0
  23. data/lib/expressir/model/literals/string.rb +15 -0
  24. data/lib/expressir/model/local.rb +2 -0
  25. data/lib/expressir/model/parameter.rb +2 -0
  26. data/lib/expressir/model/procedure.rb +31 -0
  27. data/lib/expressir/model/repository.rb +6 -0
  28. data/lib/expressir/model/rule.rb +31 -0
  29. data/lib/expressir/model/schema.rb +10 -0
  30. data/lib/expressir/model/statements/alias.rb +8 -0
  31. data/lib/expressir/model/statements/case_action.rb +2 -2
  32. data/lib/expressir/model/statements/if.rb +2 -2
  33. data/lib/expressir/model/statements/repeat.rb +10 -2
  34. data/lib/expressir/model/subtype_constraint.rb +2 -0
  35. data/lib/expressir/model/type.rb +8 -0
  36. data/lib/expressir/model/types/aggregate.rb +2 -0
  37. data/lib/expressir/model/types/enumeration.rb +4 -4
  38. data/lib/expressir/model/types/generic.rb +2 -0
  39. data/lib/expressir/model/types/generic_entity.rb +2 -0
  40. data/lib/expressir/model/types/select.rb +4 -4
  41. data/lib/expressir/model/unique.rb +2 -0
  42. data/lib/expressir/model/where.rb +2 -0
  43. data/lib/expressir/version.rb +1 -1
  44. data/original/examples/syntax/remark.exp +127 -0
  45. data/original/examples/syntax/syntax.exp +15 -10
  46. data/spec/expressir/express_exp/remark_spec.rb +301 -0
  47. data/spec/expressir/express_exp/syntax_spec.rb +659 -307
  48. metadata +15 -6
  49. data/lib/expressir/model/expressions/unknown.rb +0 -8
@@ -0,0 +1,91 @@
1
+ require 'expressir/model/constant'
2
+ require 'expressir/model/derived'
3
+ require 'expressir/model/entity'
4
+ require 'expressir/model/enumeration_item'
5
+ require 'expressir/model/explicit'
6
+ require 'expressir/model/function'
7
+ require 'expressir/model/inverse'
8
+ require 'expressir/model/local'
9
+ require 'expressir/model/parameter'
10
+ require 'expressir/model/procedure'
11
+ require 'expressir/model/ref'
12
+ require 'expressir/model/reference'
13
+ require 'expressir/model/renamed_ref'
14
+ require 'expressir/model/repository'
15
+ require 'expressir/model/rule'
16
+ require 'expressir/model/schema'
17
+ require 'expressir/model/subtype_constraint'
18
+ require 'expressir/model/type'
19
+ require 'expressir/model/unique'
20
+ require 'expressir/model/use'
21
+ require 'expressir/model/where'
22
+ require 'expressir/model/expressions/aggregate_initializer'
23
+ require 'expressir/model/expressions/aggregate_element'
24
+ require 'expressir/model/expressions/attribute_qualifier'
25
+ require 'expressir/model/expressions/entity_constructor'
26
+ require 'expressir/model/expressions/expression'
27
+ require 'expressir/model/expressions/function_call'
28
+ require 'expressir/model/expressions/group_qualifier'
29
+ require 'expressir/model/expressions/index_qualifier'
30
+ require 'expressir/model/expressions/interval'
31
+ require 'expressir/model/expressions/qualified_ref'
32
+ require 'expressir/model/expressions/query'
33
+ require 'expressir/model/literals/binary'
34
+ require 'expressir/model/literals/integer'
35
+ require 'expressir/model/literals/logical'
36
+ require 'expressir/model/literals/real'
37
+ require 'expressir/model/literals/string'
38
+ require 'expressir/model/operators/addition'
39
+ require 'expressir/model/operators/and'
40
+ require 'expressir/model/operators/andor'
41
+ require 'expressir/model/operators/combine'
42
+ require 'expressir/model/operators/equal'
43
+ require 'expressir/model/operators/exponentiation'
44
+ require 'expressir/model/operators/greater_than'
45
+ require 'expressir/model/operators/greater_than_or_equal'
46
+ require 'expressir/model/operators/in'
47
+ require 'expressir/model/operators/instance_equal'
48
+ require 'expressir/model/operators/instance_not_equal'
49
+ require 'expressir/model/operators/integer_division'
50
+ require 'expressir/model/operators/less_than'
51
+ require 'expressir/model/operators/less_than_or_equal'
52
+ require 'expressir/model/operators/like'
53
+ require 'expressir/model/operators/modulo'
54
+ require 'expressir/model/operators/multiplication'
55
+ require 'expressir/model/operators/not'
56
+ require 'expressir/model/operators/not_equal'
57
+ require 'expressir/model/operators/oneof'
58
+ require 'expressir/model/operators/or'
59
+ require 'expressir/model/operators/real_division'
60
+ require 'expressir/model/operators/subtraction'
61
+ require 'expressir/model/operators/unary_plus'
62
+ require 'expressir/model/operators/unary_minus'
63
+ require 'expressir/model/operators/xor'
64
+ require 'expressir/model/statements/alias'
65
+ require 'expressir/model/statements/assignment'
66
+ require 'expressir/model/statements/case'
67
+ require 'expressir/model/statements/case_action'
68
+ require 'expressir/model/statements/compound'
69
+ require 'expressir/model/statements/escape'
70
+ require 'expressir/model/statements/if'
71
+ require 'expressir/model/statements/null'
72
+ require 'expressir/model/statements/procedure_call'
73
+ require 'expressir/model/statements/repeat'
74
+ require 'expressir/model/statements/return'
75
+ require 'expressir/model/statements/skip'
76
+ require 'expressir/model/types/aggregate'
77
+ require 'expressir/model/types/array'
78
+ require 'expressir/model/types/bag'
79
+ require 'expressir/model/types/binary'
80
+ require 'expressir/model/types/boolean'
81
+ require 'expressir/model/types/enumeration'
82
+ require 'expressir/model/types/generic_entity'
83
+ require 'expressir/model/types/generic'
84
+ require 'expressir/model/types/integer'
85
+ require 'expressir/model/types/list'
86
+ require 'expressir/model/types/logical'
87
+ require 'expressir/model/types/number'
88
+ require 'expressir/model/types/real'
89
+ require 'expressir/model/types/set'
90
+ require 'expressir/model/types/select'
91
+ require 'expressir/model/types/string'
@@ -4,11 +4,13 @@ module Expressir
4
4
  attr_accessor :id
5
5
  attr_accessor :type
6
6
  attr_accessor :expression
7
+ attr_accessor :remarks
7
8
 
8
9
  def initialize(options = {})
9
10
  @id = options[:id]
10
11
  @type = options[:type]
11
12
  @expression = options[:expression]
13
+ @remarks = options[:remarks]
12
14
  end
13
15
  end
14
16
  end
@@ -2,13 +2,17 @@ module Expressir
2
2
  module Model
3
3
  class Derived
4
4
  attr_accessor :id
5
+ attr_accessor :supertype_attribute
5
6
  attr_accessor :type
6
7
  attr_accessor :expression
8
+ attr_accessor :remarks
7
9
 
8
10
  def initialize(options = {})
9
11
  @id = options[:id]
12
+ @supertype_attribute = options[:supertype_attribute]
10
13
  @type = options[:type]
11
14
  @expression = options[:expression]
15
+ @remarks = options[:remarks]
12
16
  end
13
17
  end
14
18
  end
@@ -11,6 +11,7 @@ module Expressir
11
11
  attr_accessor :inverse
12
12
  attr_accessor :unique
13
13
  attr_accessor :where
14
+ attr_accessor :remarks
14
15
 
15
16
  def initialize(options = {})
16
17
  @id = options[:id]
@@ -23,6 +24,17 @@ module Expressir
23
24
  @inverse = options[:inverse]
24
25
  @unique = options[:unique]
25
26
  @where = options[:where]
27
+ @remarks = options[:remarks]
28
+ end
29
+
30
+ def scope_items
31
+ items = []
32
+ items.push(*@explicit) if @explicit
33
+ items.push(*@derived) if @derived
34
+ items.push(*@inverse) if @inverse
35
+ items.push(*@unique) if @unique
36
+ items.push(*@where) if @where
37
+ items
26
38
  end
27
39
  end
28
40
  end
@@ -0,0 +1,13 @@
1
+ module Expressir
2
+ module Model
3
+ class EnumerationItem
4
+ attr_accessor :id
5
+ attr_accessor :remarks
6
+
7
+ def initialize(options = {})
8
+ @id = options[:id]
9
+ @remarks = options[:remarks]
10
+ end
11
+ end
12
+ end
13
+ end
@@ -2,13 +2,17 @@ module Expressir
2
2
  module Model
3
3
  class Explicit
4
4
  attr_accessor :id
5
+ attr_accessor :supertype_attribute
5
6
  attr_accessor :optional
6
7
  attr_accessor :type
8
+ attr_accessor :remarks
7
9
 
8
10
  def initialize(options = {})
9
11
  @id = options[:id]
12
+ @supertype_attribute = options[:supertype_attribute]
10
13
  @optional = options[:optional]
11
14
  @type = options[:type]
15
+ @remarks = options[:remarks]
12
16
  end
13
17
  end
14
18
  end
@@ -0,0 +1,13 @@
1
+ module Expressir
2
+ module Model
3
+ module Expressions
4
+ class AggregateInitializer
5
+ attr_accessor :items
6
+
7
+ def initialize(options = {})
8
+ @items = options[:items]
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -5,11 +5,19 @@ module Expressir
5
5
  attr_accessor :id
6
6
  attr_accessor :source
7
7
  attr_accessor :expression
8
+ attr_accessor :remarks
8
9
 
9
10
  def initialize(options = {})
10
11
  @id = options[:id]
11
12
  @source = options[:source]
12
13
  @expression = options[:expression]
14
+ @remarks = options[:remarks]
15
+ end
16
+
17
+ def scope_items
18
+ items = []
19
+ items.push(self)
20
+ items
13
21
  end
14
22
  end
15
23
  end
@@ -8,6 +8,7 @@ module Expressir
8
8
  attr_accessor :constants
9
9
  attr_accessor :locals
10
10
  attr_accessor :statements
11
+ attr_accessor :remarks
11
12
 
12
13
  def initialize(options = {})
13
14
  @id = options[:id]
@@ -17,6 +18,36 @@ module Expressir
17
18
  @constants = options[:constants]
18
19
  @locals = options[:locals]
19
20
  @statements = options[:statements]
21
+ @remarks = options[:remarks]
22
+ end
23
+
24
+ def types
25
+ @declarations.select{|x| x.instance_of? Expressir::Model::Type}
26
+ end
27
+
28
+ def entities
29
+ @declarations.select{|x| x.instance_of? Expressir::Model::Entity}
30
+ end
31
+
32
+ def subtype_constraints
33
+ @declarations.select{|x| x.instance_of? Expressir::Model::SubtypeConstraint}
34
+ end
35
+
36
+ def functions
37
+ @declarations.select{|x| x.instance_of? Expressir::Model::Function}
38
+ end
39
+
40
+ def procedures
41
+ @declarations.select{|x| x.instance_of? Expressir::Model::Procedure}
42
+ end
43
+
44
+ def scope_items
45
+ items = []
46
+ items.push(*@parameters) if @parameters
47
+ items.push(*@declarations) if @declarations
48
+ items.push(*@constants) if @constants
49
+ items.push(*@locals) if @locals
50
+ items
20
51
  end
21
52
  end
22
53
  end
@@ -2,13 +2,17 @@ module Expressir
2
2
  module Model
3
3
  class Inverse
4
4
  attr_accessor :id
5
+ attr_accessor :supertype_attribute
5
6
  attr_accessor :type
6
7
  attr_accessor :attribute
8
+ attr_accessor :remarks
7
9
 
8
10
  def initialize(options = {})
9
11
  @id = options[:id]
12
+ @supertype_attribute = options[:supertype_attribute]
10
13
  @type = options[:type]
11
14
  @attribute = options[:attribute]
15
+ @remarks = options[:remarks]
12
16
  end
13
17
  end
14
18
  end
@@ -0,0 +1,13 @@
1
+ module Expressir
2
+ module Model
3
+ module Literals
4
+ class Binary
5
+ attr_accessor :value
6
+
7
+ def initialize(options = {})
8
+ @value = options[:value]
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module Expressir
2
+ module Model
3
+ module Literals
4
+ class Integer
5
+ attr_accessor :value
6
+
7
+ def initialize(options = {})
8
+ @value = options[:value]
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module Expressir
2
+ module Model
3
+ module Literals
4
+ class Logical
5
+ attr_accessor :value
6
+
7
+ def initialize(options = {})
8
+ @value = options[:value]
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module Expressir
2
+ module Model
3
+ module Literals
4
+ class Real
5
+ attr_accessor :value
6
+
7
+ def initialize(options = {})
8
+ @value = options[:value]
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,15 @@
1
+ module Expressir
2
+ module Model
3
+ module Literals
4
+ class String
5
+ attr_accessor :value
6
+ attr_accessor :encoded
7
+
8
+ def initialize(options = {})
9
+ @value = options[:value]
10
+ @encoded = options[:encoded]
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -4,11 +4,13 @@ module Expressir
4
4
  attr_accessor :id
5
5
  attr_accessor :type
6
6
  attr_accessor :expression
7
+ attr_accessor :remarks
7
8
 
8
9
  def initialize(options = {})
9
10
  @id = options[:id]
10
11
  @type = options[:type]
11
12
  @expression = options[:expression]
13
+ @remarks = options[:remarks]
12
14
  end
13
15
  end
14
16
  end
@@ -4,11 +4,13 @@ module Expressir
4
4
  attr_accessor :id
5
5
  attr_accessor :type
6
6
  attr_accessor :var
7
+ attr_accessor :remarks
7
8
 
8
9
  def initialize(options = {})
9
10
  @id = options[:id]
10
11
  @type = options[:type]
11
12
  @var = options[:var]
13
+ @remarks = options[:remarks]
12
14
  end
13
15
  end
14
16
  end
@@ -7,6 +7,7 @@ module Expressir
7
7
  attr_accessor :constants
8
8
  attr_accessor :locals
9
9
  attr_accessor :statements
10
+ attr_accessor :remarks
10
11
 
11
12
  def initialize(options = {})
12
13
  @id = options[:id]
@@ -15,6 +16,36 @@ module Expressir
15
16
  @constants = options[:constants]
16
17
  @locals = options[:locals]
17
18
  @statements = options[:statements]
19
+ @remarks = options[:remarks]
20
+ end
21
+
22
+ def types
23
+ @declarations.select{|x| x.instance_of? Expressir::Model::Type}
24
+ end
25
+
26
+ def entities
27
+ @declarations.select{|x| x.instance_of? Expressir::Model::Entity}
28
+ end
29
+
30
+ def subtype_constraints
31
+ @declarations.select{|x| x.instance_of? Expressir::Model::SubtypeConstraint}
32
+ end
33
+
34
+ def functions
35
+ @declarations.select{|x| x.instance_of? Expressir::Model::Function}
36
+ end
37
+
38
+ def procedures
39
+ @declarations.select{|x| x.instance_of? Expressir::Model::Procedure}
40
+ end
41
+
42
+ def scope_items
43
+ items = []
44
+ items.push(*@parameters) if @parameters
45
+ items.push(*@declarations) if @declarations
46
+ items.push(*@constants) if @constants
47
+ items.push(*@locals) if @locals
48
+ items
18
49
  end
19
50
  end
20
51
  end
@@ -6,6 +6,12 @@ module Expressir
6
6
  def initialize(options = {})
7
7
  @schemas = options[:schemas]
8
8
  end
9
+
10
+ def scope_items
11
+ items = []
12
+ items.push(*@schemas) if @schemas
13
+ items
14
+ end
9
15
  end
10
16
  end
11
17
  end