expressir 1.2.5-x64-mingw-ucrt
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.
- checksums.yaml +7 -0
- data/.cross_rubies +15 -0
- data/.github/workflows/rake.yml +300 -0
- data/.github/workflows/release.yml +120 -0
- data/.gitignore +23 -0
- data/.gitmodules +6 -0
- data/.hound.yml +3 -0
- data/.rspec +2 -0
- data/.rubocop.yml +17 -0
- data/.yardopts +11 -0
- data/Gemfile +4 -0
- data/README.adoc +147 -0
- data/Rakefile +17 -0
- data/bin/console +11 -0
- data/bin/rspec +29 -0
- data/bin/setup +8 -0
- data/docs/development.md +90 -0
- data/exe/expressir +22 -0
- data/exe/format +18 -0
- data/exe/format-test +81 -0
- data/exe/generate-parser +51 -0
- data/expressir.gemspec +48 -0
- data/lib/expressir/cli/ui.rb +36 -0
- data/lib/expressir/cli.rb +21 -0
- data/lib/expressir/config.rb +23 -0
- data/lib/expressir/express/3.1/express_parser.so +0 -0
- data/lib/expressir/express/cache.rb +51 -0
- data/lib/expressir/express/formatter.rb +1608 -0
- data/lib/expressir/express/hyperlink_formatter.rb +36 -0
- data/lib/expressir/express/model_visitor.rb +24 -0
- data/lib/expressir/express/parser.rb +84 -0
- data/lib/expressir/express/resolve_references_model_visitor.rb +31 -0
- data/lib/expressir/express/schema_head_formatter.rb +23 -0
- data/lib/expressir/express/visitor.rb +2578 -0
- data/lib/expressir/model/cache.rb +17 -0
- data/lib/expressir/model/data_type.rb +9 -0
- data/lib/expressir/model/data_types/aggregate.rb +31 -0
- data/lib/expressir/model/data_types/array.rb +31 -0
- data/lib/expressir/model/data_types/bag.rb +25 -0
- data/lib/expressir/model/data_types/binary.rb +22 -0
- data/lib/expressir/model/data_types/boolean.rb +10 -0
- data/lib/expressir/model/data_types/enumeration.rb +25 -0
- data/lib/expressir/model/data_types/enumeration_item.rb +26 -0
- data/lib/expressir/model/data_types/generic.rb +26 -0
- data/lib/expressir/model/data_types/generic_entity.rb +26 -0
- data/lib/expressir/model/data_types/integer.rb +10 -0
- data/lib/expressir/model/data_types/list.rb +28 -0
- data/lib/expressir/model/data_types/logical.rb +10 -0
- data/lib/expressir/model/data_types/number.rb +10 -0
- data/lib/expressir/model/data_types/real.rb +19 -0
- data/lib/expressir/model/data_types/select.rb +28 -0
- data/lib/expressir/model/data_types/set.rb +25 -0
- data/lib/expressir/model/data_types/string.rb +22 -0
- data/lib/expressir/model/declaration.rb +9 -0
- data/lib/expressir/model/declarations/attribute.rb +47 -0
- data/lib/expressir/model/declarations/constant.rb +34 -0
- data/lib/expressir/model/declarations/entity.rb +53 -0
- data/lib/expressir/model/declarations/function.rb +67 -0
- data/lib/expressir/model/declarations/interface.rb +28 -0
- data/lib/expressir/model/declarations/interface_item.rb +23 -0
- data/lib/expressir/model/declarations/interfaced_item.rb +37 -0
- data/lib/expressir/model/declarations/parameter.rb +34 -0
- data/lib/expressir/model/declarations/procedure.rb +64 -0
- data/lib/expressir/model/declarations/remark_item.rb +21 -0
- data/lib/expressir/model/declarations/rule.rb +71 -0
- data/lib/expressir/model/declarations/schema.rb +117 -0
- data/lib/expressir/model/declarations/schema_version.rb +22 -0
- data/lib/expressir/model/declarations/schema_version_item.rb +22 -0
- data/lib/expressir/model/declarations/subtype_constraint.rb +40 -0
- data/lib/expressir/model/declarations/type.rb +45 -0
- data/lib/expressir/model/declarations/unique_rule.rb +31 -0
- data/lib/expressir/model/declarations/variable.rb +34 -0
- data/lib/expressir/model/declarations/where_rule.rb +31 -0
- data/lib/expressir/model/expression.rb +9 -0
- data/lib/expressir/model/expressions/aggregate_initializer.rb +19 -0
- data/lib/expressir/model/expressions/aggregate_initializer_item.rb +22 -0
- data/lib/expressir/model/expressions/binary_expression.rb +53 -0
- data/lib/expressir/model/expressions/entity_constructor.rb +22 -0
- data/lib/expressir/model/expressions/function_call.rb +22 -0
- data/lib/expressir/model/expressions/interval.rb +34 -0
- data/lib/expressir/model/expressions/query_expression.rb +35 -0
- data/lib/expressir/model/expressions/unary_expression.rb +27 -0
- data/lib/expressir/model/identifier.rb +34 -0
- data/lib/expressir/model/literal.rb +9 -0
- data/lib/expressir/model/literals/binary.rb +19 -0
- data/lib/expressir/model/literals/integer.rb +19 -0
- data/lib/expressir/model/literals/logical.rb +23 -0
- data/lib/expressir/model/literals/real.rb +19 -0
- data/lib/expressir/model/literals/string.rb +22 -0
- data/lib/expressir/model/model_element.rb +208 -0
- data/lib/expressir/model/reference.rb +9 -0
- data/lib/expressir/model/references/attribute_reference.rb +22 -0
- data/lib/expressir/model/references/group_reference.rb +22 -0
- data/lib/expressir/model/references/index_reference.rb +27 -0
- data/lib/expressir/model/references/simple_reference.rb +24 -0
- data/lib/expressir/model/repository.rb +23 -0
- data/lib/expressir/model/statement.rb +9 -0
- data/lib/expressir/model/statements/alias.rb +35 -0
- data/lib/expressir/model/statements/assignment.rb +22 -0
- data/lib/expressir/model/statements/case.rb +25 -0
- data/lib/expressir/model/statements/case_action.rb +22 -0
- data/lib/expressir/model/statements/compound.rb +19 -0
- data/lib/expressir/model/statements/escape.rb +10 -0
- data/lib/expressir/model/statements/if.rb +25 -0
- data/lib/expressir/model/statements/null.rb +10 -0
- data/lib/expressir/model/statements/procedure_call.rb +22 -0
- data/lib/expressir/model/statements/repeat.rb +47 -0
- data/lib/expressir/model/statements/return.rb +19 -0
- data/lib/expressir/model/statements/skip.rb +10 -0
- data/lib/expressir/model/supertype_expression.rb +9 -0
- data/lib/expressir/model/supertype_expressions/binary_supertype_expression.rb +29 -0
- data/lib/expressir/model/supertype_expressions/oneof_supertype_expression.rb +19 -0
- data/lib/expressir/model.rb +79 -0
- data/lib/expressir/version.rb +3 -0
- data/lib/expressir.rb +20 -0
- data/rakelib/antlr4-native.rake +63 -0
- data/rakelib/cross-ruby.rake +367 -0
- data/spec/acceptance/version_spec.rb +17 -0
- data/spec/expressir/express/cache_spec.rb +67 -0
- data/spec/expressir/express/formatter_spec.rb +135 -0
- data/spec/expressir/express/parser_spec.rb +104 -0
- data/spec/expressir/model/model_element_spec.rb +274 -0
- data/spec/spec_helper.rb +17 -0
- data/spec/support/console_helper.rb +29 -0
- data/spec/syntax/multiple.exp +23 -0
- data/spec/syntax/multiple.yaml +198 -0
- data/spec/syntax/multiple_formatted.exp +71 -0
- data/spec/syntax/multiple_hyperlink_formatted.exp +71 -0
- data/spec/syntax/multiple_schema_head_hyperlink_formatted.exp +13 -0
- data/spec/syntax/remark.exp +191 -0
- data/spec/syntax/remark.yaml +466 -0
- data/spec/syntax/remark_formatted.exp +227 -0
- data/spec/syntax/single.exp +4 -0
- data/spec/syntax/single.yaml +18 -0
- data/spec/syntax/single_formatted.exp +10 -0
- data/spec/syntax/single_formatted.yaml +36 -0
- data/spec/syntax/syntax.exp +333 -0
- data/spec/syntax/syntax.yaml +3509 -0
- data/spec/syntax/syntax_formatted.exp +902 -0
- data/spec/syntax/syntax_hyperlink_formatted.exp +902 -0
- data/spec/syntax/syntax_schema_head_formatted.exp +18 -0
- metadata +387 -0
@@ -0,0 +1,17 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
# Cache content object with Expressir version
|
4
|
+
class Cache < ModelElement
|
5
|
+
model_attr_accessor :version, 'String'
|
6
|
+
model_attr_accessor :content, 'ModelElement'
|
7
|
+
|
8
|
+
# @param [Hash] options
|
9
|
+
# @option options [String] :version
|
10
|
+
# @option options [ModelElement] :content
|
11
|
+
def initialize(options = {})
|
12
|
+
@version = options[:version]
|
13
|
+
@content = options[:content]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module DataTypes
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 9.5.3.1 Aggregate data type
|
6
|
+
class Aggregate < DataType
|
7
|
+
include Identifier
|
8
|
+
|
9
|
+
model_attr_accessor :base_type, 'Type'
|
10
|
+
|
11
|
+
# @param [Hash] options
|
12
|
+
# @option (see Identifier#initialize_identifier)
|
13
|
+
# @option options [Type] :base_type
|
14
|
+
def initialize(options = {})
|
15
|
+
initialize_identifier(options)
|
16
|
+
|
17
|
+
@base_type = options[:base_type]
|
18
|
+
|
19
|
+
super
|
20
|
+
end
|
21
|
+
|
22
|
+
# @return [Array<Declaration>]
|
23
|
+
def children
|
24
|
+
[
|
25
|
+
*remark_items
|
26
|
+
]
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module DataTypes
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 8.2.1 Array data type
|
6
|
+
class Array < DataType
|
7
|
+
model_attr_accessor :bound1, 'Expression'
|
8
|
+
model_attr_accessor :bound2, 'Expression'
|
9
|
+
model_attr_accessor :optional, '::Boolean'
|
10
|
+
model_attr_accessor :unique, '::Boolean'
|
11
|
+
model_attr_accessor :base_type, 'DataType'
|
12
|
+
|
13
|
+
# @param [Hash] options
|
14
|
+
# @option options [Expression] :bound1
|
15
|
+
# @option options [Expression] :bound2
|
16
|
+
# @option options [::Boolean] :optional
|
17
|
+
# @option options [::Boolean] :unique
|
18
|
+
# @option options [DataType] :base_type
|
19
|
+
def initialize(options = {})
|
20
|
+
@bound1 = options[:bound1]
|
21
|
+
@bound2 = options[:bound2]
|
22
|
+
@optional = options[:optional]
|
23
|
+
@unique = options[:unique]
|
24
|
+
@base_type = options[:base_type]
|
25
|
+
|
26
|
+
super
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module DataTypes
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 8.2.3 Bag data type
|
6
|
+
class Bag < DataType
|
7
|
+
model_attr_accessor :bound1, 'Expression'
|
8
|
+
model_attr_accessor :bound2, 'Expression'
|
9
|
+
model_attr_accessor :base_type, 'DataType'
|
10
|
+
|
11
|
+
# @param [Hash] options
|
12
|
+
# @option options [Expression] :bound1
|
13
|
+
# @option options [Expression] :bound2
|
14
|
+
# @option options [DataType] :base_type
|
15
|
+
def initialize(options = {})
|
16
|
+
@bound1 = options[:bound1]
|
17
|
+
@bound2 = options[:bound2]
|
18
|
+
@base_type = options[:base_type]
|
19
|
+
|
20
|
+
super
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module DataTypes
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 8.1.7 Binary data type
|
6
|
+
class Binary < DataType
|
7
|
+
model_attr_accessor :width, 'Expression'
|
8
|
+
model_attr_accessor :fixed, '::Boolean'
|
9
|
+
|
10
|
+
# @param [Hash] options
|
11
|
+
# @option options [Expression] :width
|
12
|
+
# @option options [::Boolean] :fixed
|
13
|
+
def initialize(options = {})
|
14
|
+
@width = options[:width]
|
15
|
+
@fixed = options[:fixed]
|
16
|
+
|
17
|
+
super
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module DataTypes
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 8.4.1 Enumeration data type
|
6
|
+
class Enumeration < DataType
|
7
|
+
model_attr_accessor :extensible, '::Boolean'
|
8
|
+
model_attr_accessor :based_on, 'Reference'
|
9
|
+
model_attr_accessor :items, '::Array<EnumerationItem>'
|
10
|
+
|
11
|
+
# @param [Hash] options
|
12
|
+
# @option options [::Boolean] :extensible
|
13
|
+
# @option options [Reference] :based_on
|
14
|
+
# @option options [::Array<EnumerationItem>] :items
|
15
|
+
def initialize(options = {})
|
16
|
+
@extensible = options[:extensible]
|
17
|
+
@based_on = options[:based_on]
|
18
|
+
@items = options[:items] || []
|
19
|
+
|
20
|
+
super
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module DataTypes
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 8.4.1 Enumeration data type
|
6
|
+
class EnumerationItem < ModelElement
|
7
|
+
include Identifier
|
8
|
+
|
9
|
+
# @param [Hash] options
|
10
|
+
# @option (see Identifier#initialize_identifier)
|
11
|
+
def initialize(options = {})
|
12
|
+
initialize_identifier(options)
|
13
|
+
|
14
|
+
super
|
15
|
+
end
|
16
|
+
|
17
|
+
# @return [Array<Declaration>]
|
18
|
+
def children
|
19
|
+
[
|
20
|
+
*remark_items
|
21
|
+
]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module DataTypes
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 9.5.3.2 Generic data type
|
6
|
+
class Generic < DataType
|
7
|
+
include Identifier
|
8
|
+
|
9
|
+
# @param [Hash] options
|
10
|
+
# @option (see Identifier#initialize_identifier)
|
11
|
+
def initialize(options = {})
|
12
|
+
initialize_identifier(options)
|
13
|
+
|
14
|
+
super
|
15
|
+
end
|
16
|
+
|
17
|
+
# @return [Array<Declaration>]
|
18
|
+
def children
|
19
|
+
[
|
20
|
+
*remark_items
|
21
|
+
]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module DataTypes
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 9.5.3.3 Generic entity data type
|
6
|
+
class GenericEntity < DataType
|
7
|
+
include Identifier
|
8
|
+
|
9
|
+
# @param [Hash] options
|
10
|
+
# @option (see Identifier#initialize_identifier)
|
11
|
+
def initialize(options = {})
|
12
|
+
initialize_identifier(options)
|
13
|
+
|
14
|
+
super
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# @return [Array<Declaration>]
|
19
|
+
def children
|
20
|
+
[
|
21
|
+
*remark_items
|
22
|
+
]
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module DataTypes
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 8.2.2 List data type
|
6
|
+
class List < DataType
|
7
|
+
model_attr_accessor :bound1, 'Expression'
|
8
|
+
model_attr_accessor :bound2, 'Expression'
|
9
|
+
model_attr_accessor :unique, '::Boolean'
|
10
|
+
model_attr_accessor :base_type, 'DataType'
|
11
|
+
|
12
|
+
# @param [Hash] options
|
13
|
+
# @option options [Expression] :bound1
|
14
|
+
# @option options [Expression] :bound2
|
15
|
+
# @option options [::Boolean] :unique
|
16
|
+
# @option options [DataType] :base_type
|
17
|
+
def initialize(options = {})
|
18
|
+
@bound1 = options[:bound1]
|
19
|
+
@bound2 = options[:bound2]
|
20
|
+
@unique = options[:unique]
|
21
|
+
@base_type = options[:base_type]
|
22
|
+
|
23
|
+
super
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module DataTypes
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 8.1.2 Real data type
|
6
|
+
class Real < DataType
|
7
|
+
model_attr_accessor :precision, 'Expression'
|
8
|
+
|
9
|
+
# @param [Hash] options
|
10
|
+
# @option options [Expression] :precision
|
11
|
+
def initialize(options = {})
|
12
|
+
@precision = options[:precision]
|
13
|
+
|
14
|
+
super
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module DataTypes
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 8.4.2 Select data type
|
6
|
+
class Select < DataType
|
7
|
+
model_attr_accessor :extensible, '::Boolean'
|
8
|
+
model_attr_accessor :generic_entity, '::Boolean'
|
9
|
+
model_attr_accessor :based_on, 'Reference'
|
10
|
+
model_attr_accessor :items, '::Array<Reference>'
|
11
|
+
|
12
|
+
# @param [Hash] options
|
13
|
+
# @option options [::Boolean] :extensible
|
14
|
+
# @option options [::Boolean] :generic_entity
|
15
|
+
# @option options [Reference] :based_on
|
16
|
+
# @option options [::Array<Reference>] :items
|
17
|
+
def initialize(options = {})
|
18
|
+
@extensible = options[:extensible]
|
19
|
+
@generic_entity = options[:generic_entity]
|
20
|
+
@based_on = options[:based_on]
|
21
|
+
@items = options[:items] || []
|
22
|
+
|
23
|
+
super
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module DataTypes
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 8.2.4 Set data type
|
6
|
+
class Set < DataType
|
7
|
+
model_attr_accessor :bound1, 'Expression'
|
8
|
+
model_attr_accessor :bound2, 'Expression'
|
9
|
+
model_attr_accessor :base_type, 'DataType'
|
10
|
+
|
11
|
+
# @param [Hash] options
|
12
|
+
# @option options [Expression] :bound1
|
13
|
+
# @option options [Expression] :bound2
|
14
|
+
# @option options [DataType] :base_type
|
15
|
+
def initialize(options = {})
|
16
|
+
@bound1 = options[:bound1]
|
17
|
+
@bound2 = options[:bound2]
|
18
|
+
@base_type = options[:base_type]
|
19
|
+
|
20
|
+
super
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module DataTypes
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 8.1.6 String data type
|
6
|
+
class String < DataType
|
7
|
+
model_attr_accessor :width, 'Expression'
|
8
|
+
model_attr_accessor :fixed, '::Boolean'
|
9
|
+
|
10
|
+
# @param [Hash] options
|
11
|
+
# @option options [Expression] :width
|
12
|
+
# @option options [::Boolean] :fixed
|
13
|
+
def initialize(options = {})
|
14
|
+
@width = options[:width]
|
15
|
+
@fixed = options[:fixed]
|
16
|
+
|
17
|
+
super
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module Declarations
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 9.2.1 Attributes
|
6
|
+
class Attribute < Declaration
|
7
|
+
include Identifier
|
8
|
+
|
9
|
+
EXPLICIT = :EXPLICIT
|
10
|
+
DERIVED = :DERIVED
|
11
|
+
INVERSE = :INVERSE
|
12
|
+
|
13
|
+
model_attr_accessor :kind, ':EXPLICIT, :DERIVED, :INVERSE'
|
14
|
+
model_attr_accessor :supertype_attribute, 'Reference'
|
15
|
+
model_attr_accessor :optional, 'Boolean'
|
16
|
+
model_attr_accessor :type, 'DataType'
|
17
|
+
model_attr_accessor :expression, 'Expression'
|
18
|
+
|
19
|
+
# @param [Hash] options
|
20
|
+
# @option (see Identifier#initialize_identifier)
|
21
|
+
# @option options [:EXPLICIT, :DERIVED, :INVERSE] :kind
|
22
|
+
# @option options [Reference] :supertype_attribute
|
23
|
+
# @option options [Boolean] :optional
|
24
|
+
# @option options [DataType] :type
|
25
|
+
# @option options [Expression] :operand
|
26
|
+
def initialize(options = {})
|
27
|
+
initialize_identifier(options)
|
28
|
+
|
29
|
+
@kind = options[:kind]
|
30
|
+
@supertype_attribute = options[:supertype_attribute]
|
31
|
+
@optional = options[:optional]
|
32
|
+
@type = options[:type]
|
33
|
+
@expression = options[:expression]
|
34
|
+
|
35
|
+
super
|
36
|
+
end
|
37
|
+
|
38
|
+
# @return [Array<Declaration>]
|
39
|
+
def children
|
40
|
+
[
|
41
|
+
*remark_items
|
42
|
+
]
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module Declarations
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 9.4 Constant
|
6
|
+
class Constant < Declaration
|
7
|
+
include Identifier
|
8
|
+
|
9
|
+
model_attr_accessor :type, 'DataType'
|
10
|
+
model_attr_accessor :expression, 'Expression'
|
11
|
+
|
12
|
+
# @param [Hash] options
|
13
|
+
# @option (see Identifier#initialize_identifier)
|
14
|
+
# @option options [DataType] :type
|
15
|
+
# @option options [Expression] :expression
|
16
|
+
def initialize(options = {})
|
17
|
+
initialize_identifier(options)
|
18
|
+
|
19
|
+
@type = options[:type]
|
20
|
+
@expression = options[:expression]
|
21
|
+
|
22
|
+
super
|
23
|
+
end
|
24
|
+
|
25
|
+
# @return [Array<Declaration>]
|
26
|
+
def children
|
27
|
+
[
|
28
|
+
*remark_items
|
29
|
+
]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module Declarations
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 9.2 Entity declaration
|
6
|
+
class Entity < Declaration
|
7
|
+
include Identifier
|
8
|
+
|
9
|
+
model_attr_accessor :abstract, 'Boolean'
|
10
|
+
model_attr_accessor :supertype_expression, 'SupertypeExpression'
|
11
|
+
model_attr_accessor :subtype_of, 'Array<Reference>'
|
12
|
+
model_attr_accessor :attributes, 'Array<Attribute>'
|
13
|
+
model_attr_accessor :unique_rules, 'Array<UniqueRule>'
|
14
|
+
model_attr_accessor :where_rules, 'Array<WhereRule>'
|
15
|
+
model_attr_accessor :informal_propositions, 'Array<RemarkItem>'
|
16
|
+
|
17
|
+
# @param [Hash] options
|
18
|
+
# @option (see Identifier#initialize_identifier)
|
19
|
+
# @option options [Boolean] :abstract
|
20
|
+
# @option options [SupertypeExpression] :supertype_expression
|
21
|
+
# @option options [Array<Reference>] :subtype_of
|
22
|
+
# @option options [Array<Attribute>] :attributes
|
23
|
+
# @option options [Array<UniqueRule>] :unique_rules
|
24
|
+
# @option options [Array<WhereRule>] :where_rules
|
25
|
+
# @option options [Array<RemarkItem>] :informal_propositions
|
26
|
+
def initialize(options = {})
|
27
|
+
initialize_identifier(options)
|
28
|
+
|
29
|
+
@abstract = options[:abstract]
|
30
|
+
@supertype_expression = options[:supertype_expression]
|
31
|
+
@subtype_of = options[:subtype_of] || []
|
32
|
+
@attributes = options[:attributes] || []
|
33
|
+
@unique_rules = options[:unique_rules] || []
|
34
|
+
@where_rules = options[:where_rules] || []
|
35
|
+
@informal_propositions = options[:informal_propositions] || []
|
36
|
+
|
37
|
+
super
|
38
|
+
end
|
39
|
+
|
40
|
+
# @return [Array<Declaration>]
|
41
|
+
def children
|
42
|
+
[
|
43
|
+
*attributes,
|
44
|
+
*unique_rules,
|
45
|
+
*where_rules,
|
46
|
+
*informal_propositions,
|
47
|
+
*remark_items
|
48
|
+
]
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module Declarations
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 9.5.1 Function
|
6
|
+
class Function < Declaration
|
7
|
+
include Identifier
|
8
|
+
|
9
|
+
model_attr_accessor :parameters, 'Array<Parameter>'
|
10
|
+
model_attr_accessor :return_type, 'DataType'
|
11
|
+
model_attr_accessor :types, 'Array<Type>'
|
12
|
+
model_attr_accessor :entities, 'Array<Entity>'
|
13
|
+
model_attr_accessor :subtype_constraints, 'Array<SubtypeConstraint>'
|
14
|
+
model_attr_accessor :functions, 'Array<Function>'
|
15
|
+
model_attr_accessor :procedures, 'Array<Procedure>'
|
16
|
+
model_attr_accessor :constants, 'Array<Constant>'
|
17
|
+
model_attr_accessor :variables, 'Array<Variable>'
|
18
|
+
model_attr_accessor :statements, 'Array<Statement>'
|
19
|
+
|
20
|
+
# @param [Hash] options
|
21
|
+
# @option (see Identifier#initialize_identifier)
|
22
|
+
# @option options [Array<Parameter>] :parameters
|
23
|
+
# @option options [DataType] :return_type
|
24
|
+
# @option options [Array<Type>] :types
|
25
|
+
# @option options [Array<Entity>] :entities
|
26
|
+
# @option options [Array<SubtypeConstraint>] :subtype_constraints
|
27
|
+
# @option options [Array<Function>] :functions
|
28
|
+
# @option options [Array<Procedure>] :procedures
|
29
|
+
# @option options [Array<Constant>] :constants
|
30
|
+
# @option options [Array<Variable>] :variables
|
31
|
+
# @option options [Array<Statement>] :statements
|
32
|
+
def initialize(options = {})
|
33
|
+
initialize_identifier(options)
|
34
|
+
|
35
|
+
@parameters = options[:parameters] || []
|
36
|
+
@return_type = options[:return_type]
|
37
|
+
@types = options[:types] || []
|
38
|
+
@entities = options[:entities] || []
|
39
|
+
@subtype_constraints = options[:subtype_constraints] || []
|
40
|
+
@functions = options[:functions] || []
|
41
|
+
@procedures = options[:procedures] || []
|
42
|
+
@constants = options[:constants] || []
|
43
|
+
@variables = options[:variables] || []
|
44
|
+
@statements = options[:statements] || []
|
45
|
+
|
46
|
+
super
|
47
|
+
end
|
48
|
+
|
49
|
+
# @return [Array<Declaration>]
|
50
|
+
def children
|
51
|
+
[
|
52
|
+
*parameters,
|
53
|
+
*types,
|
54
|
+
*types.flat_map{|x| x.enumeration_items},
|
55
|
+
*entities,
|
56
|
+
*subtype_constraints,
|
57
|
+
*functions,
|
58
|
+
*procedures,
|
59
|
+
*constants,
|
60
|
+
*variables,
|
61
|
+
*remark_items
|
62
|
+
]
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module Declarations
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 11 Interface specification
|
6
|
+
class Interface < Declaration
|
7
|
+
USE = :USE
|
8
|
+
REFERENCE = :REFERENCE
|
9
|
+
|
10
|
+
model_attr_accessor :kind, ':USE, :REFERENCE'
|
11
|
+
model_attr_accessor :schema, 'Reference'
|
12
|
+
model_attr_accessor :items, 'Array<InterfaceItem>'
|
13
|
+
|
14
|
+
# @param [Hash] options
|
15
|
+
# @option options [:USE, :REFERENCE] :kind
|
16
|
+
# @option options [Reference] :schema
|
17
|
+
# @option options [Array<InterfaceItem>] :items
|
18
|
+
def initialize(options = {})
|
19
|
+
@kind = options[:kind]
|
20
|
+
@schema = options[:schema]
|
21
|
+
@items = options[:items] || []
|
22
|
+
|
23
|
+
super
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|