Changeset 326 for ruby/trunk/lib/adl_parser/lib/parser.y
- Timestamp:
- Oct 29, 2009, 1:58:34 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
ruby/trunk/lib/adl_parser/lib/parser.y
r323 r326 123 123 arch_language: #-- empty is ok for ADL 1.4 tools 124 124 { 125 result = {:arch_language => nil}125 result = {:arch_language => ""} 126 126 } 127 127 | SYM_LANGUAGE dadl_section 128 128 { 129 result = {:arch_language => val[1]} 129 if val[1][0][:attr_id] == "original_language" 130 result = {:arch_language => val[1][0][:object_block][:untyped_primitive_object_block]} 131 else 132 raise OpenEhr::ADL::Exception::Parser::Error, "It should be 'original_language' at #{@filename}:#{@lineno} " 133 end 130 134 } 131 135 | SYM_LANGUAGE error … … 138 142 | SYM_DESCRIPTION dadl_section 139 143 { 140 result = OpenEhr::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION.new(:details => val[1]) 144 args = Hash.new 145 val[1].each do |item| 146 @@logger.debug("#{__FILE__}:#{__LINE__}: arch_description: item[:object_block] = #{item[:object_block].to_yaml} at #{@filename}:#{@lineno}") 147 case item[:attr_id] 148 when "original_author" 149 unless item[:object_block][:type_identifier] 150 args.merge!(Hash[:original_author => item[:object_block][:untyped_multiple_attr_object_block]]) 151 else 152 raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} " 153 end 154 when "details" 155 unless item[:object_block][:type_identifier] 156 args.merge!(Hash[:details => item[:object_block][:untyped_multiple_attr_object_block]]) 157 else 158 raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} " 159 end 160 when "lifecycle_state" 161 unless item[:object_block][:type_identifier] 162 args.merge!(Hash[:lifecycle_state => item[:object_block][:untyped_primitive_object_block]]) 163 else 164 raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} " 165 end 166 when "other_contributors" 167 unless item[:object_block][:type_identifier] 168 args.merge!(Hash[:other_contributors => item[:object_block][:untyped_multiple_attr_object_block]]) 169 else 170 raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} " 171 end 172 when "other_details" 173 unless item[:object_block][:type_identifier] 174 args.merge!(Hash[:other_contributors => item[:object_block][:untyped_multiple_attr_object_block]]) 175 else 176 raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} " 177 end 178 else 179 raise OpenEhr::ADL::Exception::Parser::Error, "Unknown case #{item[:attr_id]} at #{@filename}:#{@lineno} " 180 end 181 end 182 @@logger.debug("#{__FILE__}:#{__LINE__}: arch_description: args = \n#{args.to_yaml} at #{@filename}:#{@lineno}") 183 result = OpenEhr::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION.new(args) 141 184 } 142 185 | SYM_DESCRIPTION error … … 500 543 | attr_vals 501 544 { 502 @@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section attr_vals = \n#{val[0].to_yaml}")545 #@@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section attr_vals = \n#{val[0].to_yaml}") 503 546 result = val[0] 504 547 } 505 548 | complex_object_block 506 549 { 507 @@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section complex_object_block = \n#{val[0].to_yaml}")550 #@@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section complex_object_block = \n#{val[0].to_yaml}") 508 551 result = val[0] 509 552 } … … 565 608 untyped_multiple_attr_object_block: multiple_attr_object_block_head keyed_objects SYM_END_DBLOCK 566 609 { 567 result = {:multiple_attr_object_block_head => val[0], :keyed_objects => val[1]}610 result = val[1] 568 611 } 569 612 … … 584 627 keyed_object: object_key SYM_EQ object_block 585 628 { 586 @@logger.debug("#{__FILE__}:#{__LINE__}: keyed_object = #{val[0]} at #{@filename}:#{@lineno}") 587 result = {:object_key => val[0], :object_block => val[2]} 629 #@@logger.debug("#{__FILE__}:#{__LINE__}: keyed_object = #{val[0]} at #{@filename}:#{@lineno}") 630 #result = {:object_key => val[0], :object_block => val[2]} 631 unless val[2][:type_identifier] 632 result = Hash[val[0] => val[2][:untyped_primitive_object_block]] 633 else 634 raise OpenEhr::ADL::Exception::Parser::Error, "Missing type_identifier at #{@filename}:#{@lineno} " 635 end 588 636 } 589 637 … … 606 654 { 607 655 @@logger.debug("#{__FILE__}:#{__LINE__}: single_attr_object_complex_head = #{val[0]} at #{@filename}:#{@lineno}") 608 result = {:single_attr_object_complex_head => val[0]} 656 #result = {:single_attr_object_complex_head => val[0]} 657 result = [] 609 658 } 610 659 | single_attr_object_complex_head attr_vals SYM_END_DBLOCK 611 660 { 612 661 @@logger.debug("#{__FILE__}:#{__LINE__}: attr_vals = #{val[1]} at #{@filename}:#{@lineno}") 613 result = {:single_attr_object_complex_head => val[0], :attr_vals => val[1]} 662 #result = {:single_attr_object_complex_head => val[0], :attr_vals => val[1]} 663 result = val[1] 614 664 } 615 665 single_attr_object_complex_head: SYM_START_DBLOCK … … 626 676 untyped_primitive_object_block: SYM_START_DBLOCK primitive_object_value SYM_END_DBLOCK 627 677 { 628 @@logger.debug("#{__FILE__}:#{__LINE__}: primitive_object_block = <#{val[1]}> at #{@filename}:#{@lineno}")678 #@@logger.debug("#{__FILE__}:#{__LINE__}: primitive_object_block = <#{val[1]}> at #{@filename}:#{@lineno}") 629 679 result = val[1] 630 680 }
Note:
See TracChangeset
for help on using the changeset viewer.