Changeset 328 for ruby/trunk/lib/adl_parser/lib/parser.y
- Timestamp:
- Oct 31, 2009, 8:58:02 AM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
ruby/trunk/lib/adl_parser/lib/parser.y
r326 r328 127 127 | SYM_LANGUAGE dadl_section 128 128 { 129 if val[1][0][:attr_id] == "original_language" 130 result = {:arch_language => val[1][0][:object_block][:untyped_primitive_object_block]} 129 dadl_section = val[1] 130 @@logger.debug("#{__FILE__}:#{__LINE__}: arch_language::dadl_section = \n#{dadl_section.to_yaml}") 131 case dadl_section[:attr_id] 132 when "translations" 133 result = {:arch_language => dadl_section[:object_block][:untyped_primitive_object_block]} 134 when "original_language" 135 result = {:arch_language => dadl_section[:object_block][:untyped_primitive_object_block]} 136 ### if val[1][:attr_id] == "original_language" 137 ### result = {:arch_language => val[0][:object_block][:untyped_primitive_object_block]} 131 138 else 132 raise OpenEhr::ADL::Exception::Parser::Error, "It should be 'original_language ' at #{@filename}:#{@lineno} "139 raise OpenEhr::ADL::Exception::Parser::Error, "It should be 'original_language, but was #{dadl_section[:attr_id]}' at #{@filename}:#{@lineno} " 133 140 end 134 141 } … … 144 151 args = Hash.new 145 152 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]153 @@logger.debug("#{__FILE__}:#{__LINE__}: arch_description: item = #{item.to_yaml} at #{@filename}:#{@lineno}") 154 case item 148 155 when "original_author" 149 156 unless item[:object_block][:type_identifier] 150 args.merge!(Hash[:original_author => item[: object_block][:untyped_multiple_attr_object_block]])157 args.merge!(Hash[:original_author => item[:untyped_multiple_attr_object_block]]) 151 158 else 152 159 raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} " 153 160 end 154 161 when "details" 155 unless item[:object_block][:type_identifier] 156 args.merge!(Hash[:details => item[:object_block][:untyped_multiple_attr_object_block]]) 162 unless item[:type_identifier] 163 args.merge!(Hash[:details => item[:untyped_multiple_attr_object_block]]) 164 #args.merge!(Hash[:details => item[:object_block]]) 157 165 else 158 166 raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} " 159 167 end 160 168 when "lifecycle_state" 161 unless item[: object_block][:type_identifier]162 args.merge!(Hash[:lifecycle_state => item[: object_block][:untyped_primitive_object_block]])169 unless item[:type_identifier] 170 args.merge!(Hash[:lifecycle_state => item[:untyped_primitive_object_block]]) 163 171 else 164 172 raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} " 165 173 end 166 174 when "other_contributors" 167 unless item[: object_block][:type_identifier]168 args.merge!(Hash[:other_contributors => item[: object_block][:untyped_multiple_attr_object_block]])175 unless item[:type_identifier] 176 args.merge!(Hash[:other_contributors => item[:untyped_multiple_attr_object_block]]) 169 177 else 170 178 raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} " 171 179 end 172 180 when "other_details" 173 unless item[: object_block][:type_identifier]174 args.merge!(Hash[:other_contributors => item[: object_block][:untyped_multiple_attr_object_block]])181 unless item[:type_identifier] 182 args.merge!(Hash[:other_contributors => item[:untyped_multiple_attr_object_block]]) 175 183 else 176 184 raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} " 177 185 end 178 186 else 179 raise OpenEhr::ADL::Exception::Parser::Error, "Unknown case #{item [:attr_id]} at #{@filename}:#{@lineno} "187 raise OpenEhr::ADL::Exception::Parser::Error, "Unknown case #{item} at #{@filename}:#{@lineno} " 180 188 end 181 189 end … … 534 542 { 535 543 dadl_section = val[1] 536 result = OpenEhr::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY.new 544 @@logger.debug("#{__FILE__}:#{__LINE__}: arch_ontology: dadl_section = #{val[1].to_yaml}") 545 args = Hash.new 546 dadl_section.each do |item| 547 @@logger.debug("#{__FILE__}:#{__LINE__}: arch_description: item[:object_block] = #{item[:object_block].to_yaml} at #{@filename}:#{@lineno}") 548 case item[:attr_id] 549 when "terminologies_available" 550 unless item[:object_block][:type_identifier] 551 args.merge!(Hash[:terminologies_available => item[:object_block][:untyped_primitive_object_block]]) 552 #args.merge!(Hash[:terminologies_available => item[:object_block]]) 553 else 554 raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} " 555 end 556 when "term_definitions" 557 unless item[:object_block][:type_identifier] 558 args.merge!(Hash[:term_definitions => item[:object_block][:untyped_multiple_attr_object_block]]) 559 #args.merge!(Hash[:term_definitions => item[:object_block]]) 560 else 561 raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} " 562 end 563 when "term_binding" 564 unless item[:object_block][:type_identifier] 565 args.merge!(Hash[:term_binding => item[:object_block][:untyped_multiple_attr_object_block]]) 566 #args.merge!(Hash[:term_binding => item[:object_block]]) 567 else 568 raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} " 569 end 570 else 571 raise OpenEhr::ADL::Exception::Parser::Error, "Unknown case #{item[:attr_id]} at #{@filename}:#{@lineno} " 572 end 573 end 574 575 result = OpenEhr::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY.new(args) 537 576 } 538 577 | SYM_ONTOLOGY error … … 543 582 | attr_vals 544 583 { 545 #@@logger.debug("#{__FILE__}:#{__LINE__}:dadl_sectionattr_vals = \n#{val[0].to_yaml}")584 @@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section::attr_vals = \n#{val[0].to_yaml}") 546 585 result = val[0] 547 586 } 548 587 | complex_object_block 549 588 { 550 #@@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section 589 #@@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section::complex_object_block = \n#{val[0].to_yaml}") 551 590 result = val[0] 552 591 } … … 555 594 attr_vals: attr_val 556 595 { 557 result = Array[val[0]] 596 attr_val = val[0] 597 result = Hash[attr_val[:attr_id] => attr_val[:object_block]] 558 598 } 559 599 | attr_vals attr_val 560 600 { 561 result = (val[0] <<val[1])601 result = val[0].merge!(val[1]) 562 602 } 563 603 | attr_vals Semicolon_code attr_val 564 604 { 565 result = (val[0] << val[2]) 566 } 605 result = val[0].merge!(val[2]) 606 } 607 ### attr_vals: attr_val 608 ### { 609 ### result = Array[val[0]] 610 ### } 611 ### | attr_vals attr_val 612 ### { 613 ### result = (val[0] << val[1]) 614 ### } 615 ### | attr_vals Semicolon_code attr_val 616 ### { 617 ### result = (val[0] << val[2]) 618 ### } 567 619 568 620 attr_val: attr_id SYM_EQ object_block 569 621 { 570 @@logger.debug("#{__FILE__}:#{__LINE__}:attr_val\n attr_id = #{val[0] }, object_block = #{val[1]}")622 @@logger.debug("#{__FILE__}:#{__LINE__}:attr_val\n attr_id = #{val[0].to_yaml},\n object_block = #{val[2].to_yaml}") 571 623 result = {:attr_id => val[0], :object_block => val[2]} 572 624 } … … 599 651 multiple_attr_object_block: untyped_multiple_attr_object_block 600 652 { 653 @@logger.debug("#{__FILE__}:#{__LINE__}:multiple_attr_object_block::attr_val\n untyped_multiple_attr_object_block = #{val[0].to_yaml}") 601 654 result = {:untyped_multiple_attr_object_block => val[0]} 602 655 } … … 608 661 untyped_multiple_attr_object_block: multiple_attr_object_block_head keyed_objects SYM_END_DBLOCK 609 662 { 663 @@logger.debug("#{__FILE__}:#{__LINE__}:untyped_multiple_attr_object_block::keyed_objects\n keyed_objects = #{val[1].to_yaml}") 610 664 result = val[1] 611 665 } … … 629 683 #@@logger.debug("#{__FILE__}:#{__LINE__}: keyed_object = #{val[0]} at #{@filename}:#{@lineno}") 630 684 #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]] 685 object_key,object_block = val[0],val[2] 686 unless object_block[:type_identifier] 687 result = Hash[val[0] => object_block[:untyped_primitive_object_block]] 633 688 else 634 689 raise OpenEhr::ADL::Exception::Parser::Error, "Missing type_identifier at #{@filename}:#{@lineno} " … … 654 709 { 655 710 @@logger.debug("#{__FILE__}:#{__LINE__}: single_attr_object_complex_head = #{val[0]} at #{@filename}:#{@lineno}") 656 #result = {:single_attr_object_complex_head => val[0]}657 711 result = [] 658 712 } 659 713 | single_attr_object_complex_head attr_vals SYM_END_DBLOCK 660 714 { 661 @@logger.debug("#{__FILE__}:#{__LINE__}: attr_vals = #{val[1]} at #{@filename}:#{@lineno}") 662 #result = {:single_attr_object_complex_head => val[0], :attr_vals => val[1]} 715 @@logger.debug("#{__FILE__}:#{__LINE__}: untyped_single_attr_object_block::attr_vals = \n#{val[1].to_yaml} at #{@filename}:#{@lineno}") 663 716 result = val[1] 664 717 } 665 718 single_attr_object_complex_head: SYM_START_DBLOCK 719 666 720 primitive_object_block: untyped_primitive_object_block 667 721 { … … 1356 1410 require 'rubygems' 1357 1411 require 'open_ehr' 1358 #require 'adl_parser.rb'1359 #require 'am.rb'1360 #require 'rm.rb'1361 #require 'rm/support/assumed_types.rb'1362 #require 'assumed_library_types.rb'1363 1412 $DEBUG = true 1364 1413 … … 1401 1450 1402 1451 1403 def parse(data, filename , lineno = 1, debug = false)1452 def parse(data, filename = "", lineno = 1, debug = false) 1404 1453 @yydebug = true 1405 1454 @parsestring = data
Note:
See TracChangeset
for help on using the changeset viewer.