lib/openehr/parser/adl_grammar.tt in openehr-1.2.4 vs lib/openehr/parser/adl_grammar.tt in openehr-1.2.5
- old
+ new
@@ -258,11 +258,11 @@
rule c_complex_object
head:c_complex_object_head SYM_MATCHES SYM_START_CBLOCK body:c_complex_object_body SYM_END_CBLOCK space {
def value(node = ArchetypeNode.new)
args = head.value
args[:occurrences] ||= OpenEHR::AssumedLibraryTypes::Interval.new(
- :lower => 1, :upper => 1)
+ :lower => 1, :upper => 1, :lower_included => true, :upper_included => true)
node.id = args[:node_id]
if node.root? or node.id.nil?
args[:path] = node.path
else
args[:path] = node.path + '[' + node.id + ']'
@@ -273,11 +273,11 @@
}
/ c_complex_object_head '' {
def value(node = ArchetypeNode.new)
args = c_complex_object_head.value
args[:occurrences] ||= OpenEHR::AssumedLibraryTypes::Interval.new(
- :lower => 1, :upper => 1)
+ :lower => 1, :upper => 1, :lower_included => true, :upper_included => true)
node.id = args[:node_id]
args[:path] = node.path
OpenEHR::AM::Archetype::ConstraintModel::CComplexObject.new(args)
end
}
@@ -335,18 +335,18 @@
def value(node)
args = c_ordinal.value
args[:path] = node.path
args[:rm_type_name] = 'DV_ORDINAL'
args[:occurrences] ||= OpenEHR::AssumedLibraryTypes::Interval.new(
- :upper => 1, :lower => 1)
+ :upper => 1, :lower => 1, :lower_included => true, :upper_included => true)
OpenEHR::AM::OpenEHRProfile::DataTypes::Quantity::CDvOrdinal.new(
args)
end
}
/ c_primitive_object '' {
def value(node)
- c_primitive_object.value
+ c_primitive_object.value(node)
end
}
/ c_complex_object '' {
def value(node)
c_complex_object.value(node)
@@ -393,11 +393,11 @@
/ SYM_USE_NODE type_identifier object_path space {
def value(node = nil)
OpenEHR::AM::Archetype::ConstraintModel::ArchetypeInternalRef.new(
:rm_type_name => type_identifier.value,
:occurrences => OpenEHR::AssumedLibraryTypes::Interval.new(
- :lower => 1, :upper => 1),
+ :lower => 1, :upper => 1, :lower_included => true, :upper_included => true),
:path => node.path,
:target_path => object_path.value)
end
}
end
@@ -437,11 +437,11 @@
}
/ c_archetype_slot_id white_space {
def value(node)
args = c_archetype_slot_id.value(node)
args[:occurrences] = OpenEHR::AssumedLibraryTypes::Interval.new(
- :upper => 1, :lower => 1)
+ :upper => 1, :lower => 1, :lower_included => true, :upper_included => true)
args
end
}
end
@@ -461,12 +461,20 @@
}
end
rule c_primitive_object
c_primitive '' {
- def value
- c_primitive.value
+ def value(node)
+ OpenEHR::AM::Archetype::ConstraintModel::CPrimitiveObject.new(
+ {:item => c_primitive.value,
+ :rm_type_name => c_primitive.value.type,
+ :occurrences => OpenEHR::AssumedLibraryTypes::Interval.new(
+ :upper => 1,
+ :lower => 1,
+ :lower_included => true,
+ :upper_included => true),
+ :path => node.path})
end
}
end
rule c_primitive
@@ -515,12 +523,12 @@
rule c_any
'*' space {
def value(node)
OpenEHR::AM::Archetype::ConstraintModel::CAttribute.new(
:path => node.path, :rm_attribute_name => 'ANY',
- :exsitence => OpenEHR::AssumedLibraryTypes::Interval.new(
- :lower => 1, :upper => 1))
+ :existence => OpenEHR::AssumedLibraryTypes::Interval.new(
+ :lower => 1, :upper => 1, :lower_included => true, :upper_included => true))
end
}
end
rule c_attributes
@@ -659,16 +667,24 @@
end
rule existence_spec
lo:V_INTEGER SYM_ELLIPSIS up:V_INTEGER {
def value
- OpenEHR::AssumedLibraryTypes::Interval.new(:lower => lo.value, :upper => up.value)
+ OpenEHR::AssumedLibraryTypes::Interval.new(
+ :lower => lo.value,
+ :upper => up.value,
+ :lower_included => true,
+ :upper_included => true)
end
}
/ V_INTEGER '' {
def value
- OpenEHR::AssumedLibraryTypes::Interval.new(:lower => V_INTEGER.value, :upper => V_INTEGER.value)
+ OpenEHR::AssumedLibraryTypes::Interval.new(
+ :lower => V_INTEGER.value,
+ :upper => V_INTEGER.value,
+ :lower_included => true,
+ :upper_included => true)
end
}
end
rule c_cardinality
@@ -752,23 +768,28 @@
rule occurrence_spec
st:integer_value SYM_ELLIPSIS ed:cardinality_limit_value {
def value
if ed.value == '*'
OpenEHR::AssumedLibraryTypes::Interval.new(
- :lower => st.value)
+ :lower => st.value,
+ :lower_included => true)
else
OpenEHR::AssumedLibraryTypes::Interval.new(
:lower => st.value,
- :upper => ed.value)
+ :upper => ed.value,
+ :lower_included => true,
+ :upper_included => true)
end
end
}
/ cardinality_limit_value '' {
def value
OpenEHR::AssumedLibraryTypes::Interval.new(
:lower => cardinality_limit_value.value,
- :upper => cardinality_limit_value.value)
+ :upper => cardinality_limit_value.value,
+ :lower_included => true,
+ :upper_included => true)
end
}
end
rule cardinality_limit_value
@@ -1105,11 +1126,15 @@
vltcr:V_LOCAL_TERM_CODE_REF '' {
def value(node)
OpenEHR::AM::Archetype::ConstraintModel::ConstraintRef.new(
:path => node.path,
:rm_type_name => 'ConstraintRef',
- :occurrences => OpenEHR::AssumedLibraryTypes::Interval.new(:upper => 1, :lower => 1),
+ :occurrences => OpenEHR::AssumedLibraryTypes::Interval.new(
+ :upper => 1,
+ :lower => 1,
+ :lower_included => true,
+ :upper_included => true),
:reference => vltcr.value)
end
}
end
@@ -1158,32 +1183,41 @@
ti:V_TERM_CODE code_string_spec ';' space code_string ']' space {
def value(node)
::OpenEHR::AM::OpenEHRProfile::DataTypes::Text::CCodePhrase.new(
:rm_type_name => 'CodePhrase',
:occurrences => OpenEHR::AssumedLibraryTypes::Interval.new(
- :upper => 1, :lower => 1),
+ :upper => 1,
+ :lower => 1,
+ :lower_included => true,
+ :upper_included => true),
:terminology_id => ti.value, :code_list => code_string_spec.value,
:assumed_value => code_string.value,
:path => node.path)
end
}
/ ti:V_TERM_CODE code_string_spec ']' space {
def value(node)
::OpenEHR::AM::OpenEHRProfile::DataTypes::Text::CCodePhrase.new(
:rm_type_name => 'CodePhrase',
:occurrences => OpenEHR::AssumedLibraryTypes::Interval.new(
- :upper => 1, :lower => 1),
+ :upper => 1,
+ :lower => 1,
+ :lower_included => true,
+ :upper_included => true),
:terminology_id => ti.value, :code_list => code_string_spec.value,
:path => node.path)
end
}
/ ti:V_TERM_CODE ']' space {
def value(node)
::OpenEHR::AM::OpenEHRProfile::DataTypes::Text::CCodePhrase.new(
:rm_type_name => 'CodePhrase',
:occurrences => OpenEHR::AssumedLibraryTypes::Interval.new(
- :upper => 1, :lower => 1),
+ :upper => 1,
+ :lower => 1,
+ :lower_included => true,
+ :upper_included => true),
:terminology_id => ti.value, :code_list => [], :path => node.path)
end
}
end
@@ -1355,11 +1389,14 @@
magnitude = mag.int.value unless mag.empty?
precision = prec.int.value unless prec.empty?
OpenEHR::AM::OpenEHRProfile::DataTypes::Quantity::CQuantityItem.new(
:path => node.path, :rm_type_name => 'DvQuantity',
:occurrences => OpenEHR::AssumedLibraryTypes::Interval.new(
- :upper => 1, :lower => 1),
+ :upper => 1,
+ :lower => 1,
+ :lower_included => true,
+ :upper_included => true),
:units => units.value,
:magnitude => magnitude, :precision => precision)
end
}
end
@@ -2201,10 +2238,10 @@
rule integer_interval_value
SYM_INTERVAL_DELIM SYM_GT lo:integer_value SYM_ELLIPSIS SYM_LT up:integer_value SYM_INTERVAL_DELIM {
def value
OpenEHR::AssumedLibraryTypes::Interval.new(:lower => lo.value,
- :upper => up.value,
+ :upper => up.value,
:lower_included => false,
:upper_included => false)
end
}
/ SYM_INTERVAL_DELIM SYM_GT lo:integer_value SYM_ELLIPSIS up:integer_value SYM_INTERVAL_DELIM {