Changeset 328 for ruby/trunk


Ignore:
Timestamp:
Oct 31, 2009, 8:58:02 AM (14 years ago)
Author:
Tatsukawa, Akimichi
Message:

changed the parser around object_block

Location:
ruby/trunk/lib/adl_parser
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • ruby/trunk/lib/adl_parser/lib/parser.rb

    r326 r328  
    1414require 'rubygems'
    1515require 'open_ehr'
    16 #require 'adl_parser.rb'
    17 #require 'am.rb'
    18 #require 'rm.rb'
    19 #require 'rm/support/assumed_types.rb'
    20 #require 'assumed_library_types.rb'
    2116$DEBUG = true
    2217
     
    2722    class Parser < Racc::Parser
    2823
    29 module_eval(<<'...end parser.y/module_eval...', 'parser.y', 1368)
     24module_eval(<<'...end parser.y/module_eval...', 'parser.y', 1417)
    3025
    3126def assert_at(file,line, message = "")
     
    6358
    6459
    65 def parse(data, filename, lineno = 1, debug = false)
     60def parse(data, filename = "", lineno = 1, debug = false)
    6661  @yydebug = true
    6762  @parsestring = data
     
    14261421module_eval(<<'.,.,', 'parser.y', 128)
    14271422  def _reduce_19(val, _values, result)
    1428         if val[1][0][:attr_id] == "original_language"
    1429       result = {:arch_language => val[1][0][:object_block][:untyped_primitive_object_block]}
     1423        dadl_section = val[1]
     1424    @@logger.debug("#{__FILE__}:#{__LINE__}: arch_language::dadl_section = \n#{dadl_section.to_yaml}")
     1425    case dadl_section[:attr_id]
     1426    when "translations"
     1427      result = {:arch_language => dadl_section[:object_block][:untyped_primitive_object_block]}
     1428    when "original_language"
     1429      result = {:arch_language => dadl_section[:object_block][:untyped_primitive_object_block]}
     1430###     if val[1][:attr_id] == "original_language"
     1431###       result = {:arch_language => val[0][:object_block][:untyped_primitive_object_block]}
    14301432    else
    1431       raise OpenEhr::ADL::Exception::Parser::Error, "It should be 'original_language' at #{@filename}:#{@lineno} "
     1433      raise OpenEhr::ADL::Exception::Parser::Error, "It should be 'original_language, but was #{dadl_section[:attr_id]}' at #{@filename}:#{@lineno} "
    14321434    end
    14331435 
     
    14401442# reduce 21 omitted
    14411443
    1442 module_eval(<<'.,.,', 'parser.y', 143)
     1444module_eval(<<'.,.,', 'parser.y', 150)
    14431445  def _reduce_22(val, _values, result)
    14441446        args = Hash.new
    14451447    val[1].each do |item|
    1446       @@logger.debug("#{__FILE__}:#{__LINE__}: arch_description: item[:object_block] = #{item[:object_block].to_yaml} at #{@filename}:#{@lineno}")
    1447       case item[:attr_id]
     1448      @@logger.debug("#{__FILE__}:#{__LINE__}: arch_description: item = #{item.to_yaml} at #{@filename}:#{@lineno}")
     1449      case item
    14481450      when "original_author"
    14491451        unless item[:object_block][:type_identifier]
    1450           args.merge!(Hash[:original_author => item[:object_block][:untyped_multiple_attr_object_block]])
     1452          args.merge!(Hash[:original_author => item[:untyped_multiple_attr_object_block]])
    14511453        else
    14521454          raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} "
    14531455        end
    14541456      when "details"
    1455         unless item[:object_block][:type_identifier]
    1456           args.merge!(Hash[:details => item[:object_block][:untyped_multiple_attr_object_block]])
     1457        unless item[:type_identifier]
     1458          args.merge!(Hash[:details => item[:untyped_multiple_attr_object_block]])
     1459          #args.merge!(Hash[:details => item[:object_block]])
    14571460        else
    14581461          raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} "
    14591462        end
    14601463      when "lifecycle_state"
    1461         unless item[:object_block][:type_identifier]
    1462           args.merge!(Hash[:lifecycle_state => item[:object_block][:untyped_primitive_object_block]])
     1464        unless item[:type_identifier]
     1465          args.merge!(Hash[:lifecycle_state => item[:untyped_primitive_object_block]])
    14631466        else
    14641467          raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} "
    14651468        end
    14661469      when "other_contributors"
    1467         unless item[:object_block][:type_identifier]
    1468           args.merge!(Hash[:other_contributors => item[:object_block][:untyped_multiple_attr_object_block]])
     1470        unless item[:type_identifier]
     1471          args.merge!(Hash[:other_contributors => item[:untyped_multiple_attr_object_block]])
    14691472        else
    14701473          raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} "
    14711474        end
    14721475      when "other_details"
    1473         unless item[:object_block][:type_identifier]
    1474           args.merge!(Hash[:other_contributors => item[:object_block][:untyped_multiple_attr_object_block]])
     1476        unless item[:type_identifier]
     1477          args.merge!(Hash[:other_contributors => item[:untyped_multiple_attr_object_block]])
    14751478        else
    14761479          raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} "
    14771480        end
    14781481      else
    1479         raise OpenEhr::ADL::Exception::Parser::Error, "Unknown case #{item[:attr_id]} at #{@filename}:#{@lineno} "
     1482        raise OpenEhr::ADL::Exception::Parser::Error, "Unknown case #{item} at #{@filename}:#{@lineno} "
    14801483      end
    14811484    end
     
    14891492# reduce 23 omitted
    14901493
    1491 module_eval(<<'.,.,', 'parser.y', 190)
     1494module_eval(<<'.,.,', 'parser.y', 198)
    14921495  def _reduce_24(val, _values, result)
    14931496        result = val[1]
     
    14991502# reduce 25 omitted
    15001503
    1501 module_eval(<<'.,.,', 'parser.y', 198)
     1504module_eval(<<'.,.,', 'parser.y', 206)
    15021505  def _reduce_26(val, _values, result)
    15031506        assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEhr::AM::Archetype::ConstraintModel::C_COMPLEX_OBJECT)}
     
    15091512.,.,
    15101513
    1511 module_eval(<<'.,.,', 'parser.y', 204)
     1514module_eval(<<'.,.,', 'parser.y', 212)
    15121515  def _reduce_27(val, _values, result)
    15131516        result = val[0]
     
    15171520.,.,
    15181521
    1519 module_eval(<<'.,.,', 'parser.y', 212)
     1522module_eval(<<'.,.,', 'parser.y', 220)
    15201523  def _reduce_28(val, _values, result)
    15211524        @@logger.debug("#{__FILE__}:#{__LINE__}:c_complx_object = \n c_complx_object_head = #{val[0].to_yaml}")
     
    15301533.,.,
    15311534
    1532 module_eval(<<'.,.,', 'parser.y', 222)
     1535module_eval(<<'.,.,', 'parser.y', 230)
    15331536  def _reduce_29(val, _values, result)
    15341537        result = OpenEhr::AM::Archetype::ConstraintModel::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
     
    15421545.,.,
    15431546
    1544 module_eval(<<'.,.,', 'parser.y', 234)
     1547module_eval(<<'.,.,', 'parser.y', 242)
    15451548  def _reduce_30(val, _values, result)
    15461549        @@logger.debug("#{__FILE__}:#{__LINE__}: c_complex_object_head: c_complex_object_id => #{val[0]}, c_occurrences => #{val[1]}")
     
    15511554.,.,
    15521555
    1553 module_eval(<<'.,.,', 'parser.y', 240)
     1556module_eval(<<'.,.,', 'parser.y', 248)
    15541557  def _reduce_31(val, _values, result)
    15551558        result = {:type_identifier => val[0]}
     
    15591562.,.,
    15601563
    1561 module_eval(<<'.,.,', 'parser.y', 244)
     1564module_eval(<<'.,.,', 'parser.y', 252)
    15621565  def _reduce_32(val, _values, result)
    15631566        result = {:type_identifier => val[0], :local_term_code_ref => val[1]}
     
    15691572# reduce 33 omitted
    15701573
    1571 module_eval(<<'.,.,', 'parser.y', 250)
     1574module_eval(<<'.,.,', 'parser.y', 258)
    15721575  def _reduce_34(val, _values, result)
    15731576        result = OpenEhr::AM::Archetype::ConstraintModel::C_COMPLEX_OBJECT.new(:attributes => val[0])
     
    15771580.,.,
    15781581
    1579 module_eval(<<'.,.,', 'parser.y', 268)
     1582module_eval(<<'.,.,', 'parser.y', 276)
    15801583  def _reduce_35(val, _values, result)
    15811584        @@logger.debug("#{__FILE__}:#{__LINE__}: c_complex_object = #{val[0].inspect} at #{@filename}:#{@lineno}")
     
    15861589.,.,
    15871590
    1588 module_eval(<<'.,.,', 'parser.y', 273)
     1591module_eval(<<'.,.,', 'parser.y', 281)
    15891592  def _reduce_36(val, _values, result)
    15901593        result = OpenEhr::AM::Archetype::ConstraintModel::ARCHETYPE_INTERNAL_REF.create do |archetype_internal_ref|
     
    15981601.,.,
    15991602
    1600 module_eval(<<'.,.,', 'parser.y', 281)
     1603module_eval(<<'.,.,', 'parser.y', 289)
    16011604  def _reduce_37(val, _values, result)
    16021605        result = val[0]
     
    16061609.,.,
    16071610
    1608 module_eval(<<'.,.,', 'parser.y', 285)
     1611module_eval(<<'.,.,', 'parser.y', 293)
    16091612  def _reduce_38(val, _values, result)
    16101613        result = OpenEhr::AM::Archetype::ConstraintModel::CONSTRAINT_REF.create do |constraint_ref|
     
    16161619.,.,
    16171620
    1618 module_eval(<<'.,.,', 'parser.y', 291)
     1621module_eval(<<'.,.,', 'parser.y', 299)
    16191622  def _reduce_39(val, _values, result)
    16201623        result = val[0]
     
    16241627.,.,
    16251628
    1626 module_eval(<<'.,.,', 'parser.y', 295)
     1629module_eval(<<'.,.,', 'parser.y', 303)
    16271630  def _reduce_40(val, _values, result)
    16281631        result = val[0]
     
    16321635.,.,
    16331636
    1634 module_eval(<<'.,.,', 'parser.y', 299)
     1637module_eval(<<'.,.,', 'parser.y', 307)
    16351638  def _reduce_41(val, _values, result)
    16361639        result = val[0]
     
    16401643.,.,
    16411644
    1642 module_eval(<<'.,.,', 'parser.y', 303)
     1645module_eval(<<'.,.,', 'parser.y', 311)
    16431646  def _reduce_42(val, _values, result)
    16441647        result = val[0]
     
    16521655# reduce 44 omitted
    16531656
    1654 module_eval(<<'.,.,', 'parser.y', 336)
     1657module_eval(<<'.,.,', 'parser.y', 344)
    16551658  def _reduce_45(val, _values, result)
    16561659        result = val[1]
     
    16601663.,.,
    16611664
    1662 module_eval(<<'.,.,', 'parser.y', 342)
     1665module_eval(<<'.,.,', 'parser.y', 350)
    16631666  def _reduce_46(val, _values, result)
    16641667        result = {:type_identifier => val[1], :c_occurrences => val[2], :absolute_path => val[3] }
     
    16701673# reduce 47 omitted
    16711674
    1672 module_eval(<<'.,.,', 'parser.y', 349)
     1675module_eval(<<'.,.,', 'parser.y', 357)
    16731676  def _reduce_48(val, _values, result)
    16741677        result = OpenEhr::AM::Archetype::ConstraintModel::ARCHETYPE_SLOT.create do |archetype_slot|
     
    16831686.,.,
    16841687
    1685 module_eval(<<'.,.,', 'parser.y', 358)
     1688module_eval(<<'.,.,', 'parser.y', 366)
    16861689  def _reduce_49(val, _values, result)
    16871690        result = {:c_archetype_slot_id => val[0],:c_occurrences => val[1]}
     
    16911694.,.,
    16921695
    1693 module_eval(<<'.,.,', 'parser.y', 363)
     1696module_eval(<<'.,.,', 'parser.y', 371)
    16941697  def _reduce_50(val, _values, result)
    16951698        result = val[1]
     
    17031706# reduce 52 omitted
    17041707
    1705 module_eval(<<'.,.,', 'parser.y', 371)
     1708module_eval(<<'.,.,', 'parser.y', 379)
    17061709  def _reduce_53(val, _values, result)
    17071710        assert_at(__FILE__,__LINE__){val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_PRIMITIVE)}
     
    17141717.,.,
    17151718
    1716 module_eval(<<'.,.,', 'parser.y', 379)
     1719module_eval(<<'.,.,', 'parser.y', 387)
    17171720  def _reduce_54(val, _values, result)
    17181721        @@logger.debug("#{__FILE__}:#{__LINE__}: c_integer = #{val[0]} at #{@filename}:#{@lineno}")
     
    17271730.,.,
    17281731
    1729 module_eval(<<'.,.,', 'parser.y', 388)
     1732module_eval(<<'.,.,', 'parser.y', 396)
    17301733  def _reduce_55(val, _values, result)
    17311734        @@logger.debug("#{__FILE__}:#{__LINE__}: c_real = #{val[0]} at #{@filename}:#{@lineno}")
     
    17361739.,.,
    17371740
    1738 module_eval(<<'.,.,', 'parser.y', 393)
     1741module_eval(<<'.,.,', 'parser.y', 401)
    17391742  def _reduce_56(val, _values, result)
    17401743        @@logger.debug("#{__FILE__}:#{__LINE__}: c_date = #{val[0]} at #{@filename}:#{@lineno}")
     
    17451748.,.,
    17461749
    1747 module_eval(<<'.,.,', 'parser.y', 398)
     1750module_eval(<<'.,.,', 'parser.y', 406)
    17481751  def _reduce_57(val, _values, result)
    17491752        @@logger.debug("#{__FILE__}:#{__LINE__}: c_time = #{val[0]} at #{@filename}:#{@lineno}")
     
    17541757.,.,
    17551758
    1756 module_eval(<<'.,.,', 'parser.y', 403)
     1759module_eval(<<'.,.,', 'parser.y', 411)
    17571760  def _reduce_58(val, _values, result)
    17581761        @@logger.debug("#{__FILE__}:#{__LINE__}: c_date_time = #{val[0]} at #{@filename}:#{@lineno}")
     
    17631766.,.,
    17641767
    1765 module_eval(<<'.,.,', 'parser.y', 408)
     1768module_eval(<<'.,.,', 'parser.y', 416)
    17661769  def _reduce_59(val, _values, result)
    17671770        @@logger.debug("#{__FILE__}:#{__LINE__}: c_duration = #{val[0]} at #{@filename}:#{@lineno}")
     
    17721775.,.,
    17731776
    1774 module_eval(<<'.,.,', 'parser.y', 413)
     1777module_eval(<<'.,.,', 'parser.y', 421)
    17751778  def _reduce_60(val, _values, result)
    17761779        @@logger.debug("#{__FILE__}:#{__LINE__}: c_string = #{val[0]} at #{@filename}:#{@lineno}")
     
    17811784.,.,
    17821785
    1783 module_eval(<<'.,.,', 'parser.y', 418)
     1786module_eval(<<'.,.,', 'parser.y', 426)
    17841787  def _reduce_61(val, _values, result)
    17851788        assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN)}
     
    17931796# reduce 62 omitted
    17941797
    1795 module_eval(<<'.,.,', 'parser.y', 430)
     1798module_eval(<<'.,.,', 'parser.y', 438)
    17961799  def _reduce_63(val, _values, result)
    17971800        result = [val[0]]
     
    18011804.,.,
    18021805
    1803 module_eval(<<'.,.,', 'parser.y', 434)
     1806module_eval(<<'.,.,', 'parser.y', 442)
    18041807  def _reduce_64(val, _values, result)
    18051808        result = (val[0] << val[1])
     
    18091812.,.,
    18101813
    1811 module_eval(<<'.,.,', 'parser.y', 440)
     1814module_eval(<<'.,.,', 'parser.y', 448)
    18121815  def _reduce_65(val, _values, result)
    18131816        @@logger.debug("#{__FILE__}:#{__LINE__}:c_attribute: #{val[0]} matches #{val[3]}")
     
    18211824.,.,
    18221825
    1823 module_eval(<<'.,.,', 'parser.y', 448)
     1826module_eval(<<'.,.,', 'parser.y', 456)
    18241827  def _reduce_66(val, _values, result)
    18251828        @@logger.debug("c_attribute: #{val[0]} matches #{val[3]}}")
     
    18311834.,.,
    18321835
    1833 module_eval(<<'.,.,', 'parser.y', 455)
     1836module_eval(<<'.,.,', 'parser.y', 463)
    18341837  def _reduce_67(val, _values, result)
    18351838        @@logger.debug("c_attribute: #{val[0]} matches #{val[5]}}")
     
    18411844.,.,
    18421845
    1843 module_eval(<<'.,.,', 'parser.y', 461)
     1846module_eval(<<'.,.,', 'parser.y', 469)
    18441847  def _reduce_68(val, _values, result)
    18451848        assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::C_ATTRIBUTE)}
     
    18501853.,.,
    18511854
    1852 module_eval(<<'.,.,', 'parser.y', 468)
     1855module_eval(<<'.,.,', 'parser.y', 476)
    18531856  def _reduce_69(val, _values, result)
    18541857        @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}, c_existence = #{val[1]} at #{@filename}")
     
    18631866.,.,
    18641867
    1865 module_eval(<<'.,.,', 'parser.y', 477)
     1868module_eval(<<'.,.,', 'parser.y', 485)
    18661869  def _reduce_70(val, _values, result)
    18671870        assert_at(__FILE__,__LINE__){ val[2].instance_of?(OpenEhr::AM::Archetype::ConstraintModel::CARDINALITY) }
     
    18771880.,.,
    18781881
    1879 module_eval(<<'.,.,', 'parser.y', 488)
     1882module_eval(<<'.,.,', 'parser.y', 496)
    18801883  def _reduce_71(val, _values, result)
    18811884        result = Array[val[0]]
     
    18851888.,.,
    18861889
    1887 module_eval(<<'.,.,', 'parser.y', 492)
     1890module_eval(<<'.,.,', 'parser.y', 500)
    18881891  def _reduce_72(val, _values, result)
    18891892        result = (val[0] << val[1])
     
    18931896.,.,
    18941897
    1895 module_eval(<<'.,.,', 'parser.y', 496)
     1898module_eval(<<'.,.,', 'parser.y', 504)
    18961899  def _reduce_73(val, _values, result)
    18971900        result = Array[val[0]]
     
    19031906# reduce 74 omitted
    19041907
    1905 module_eval(<<'.,.,', 'parser.y', 502)
     1908module_eval(<<'.,.,', 'parser.y', 510)
    19061909  def _reduce_75(val, _values, result)
    19071910        @@logger.debug("#{__FILE__}:#{__LINE__}: c_includes: assertions = #{val[1]}")
     
    19141917# reduce 76 omitted
    19151918
    1916 module_eval(<<'.,.,', 'parser.y', 511)
     1919module_eval(<<'.,.,', 'parser.y', 519)
    19171920  def _reduce_77(val, _values, result)
    19181921        @@logger.debug("#{__FILE__}:#{__LINE__}: c_excludes: assertions = #{val[1]}")
     
    19391942# reduce 85 omitted
    19401943
    1941 module_eval(<<'.,.,', 'parser.y', 534)
     1944module_eval(<<'.,.,', 'parser.y', 542)
    19421945  def _reduce_86(val, _values, result)
    19431946        dadl_section = val[1]
    1944     result = OpenEhr::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY.new
     1947    @@logger.debug("#{__FILE__}:#{__LINE__}: arch_ontology: dadl_section = #{val[1].to_yaml}")
     1948    args = Hash.new
     1949    dadl_section.each do |item|
     1950      @@logger.debug("#{__FILE__}:#{__LINE__}: arch_description: item[:object_block] = #{item[:object_block].to_yaml} at #{@filename}:#{@lineno}")
     1951      case item[:attr_id]
     1952      when "terminologies_available"
     1953        unless item[:object_block][:type_identifier]
     1954          args.merge!(Hash[:terminologies_available => item[:object_block][:untyped_primitive_object_block]])
     1955          #args.merge!(Hash[:terminologies_available => item[:object_block]])
     1956        else
     1957          raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} "
     1958        end
     1959      when "term_definitions"
     1960        unless item[:object_block][:type_identifier]
     1961          args.merge!(Hash[:term_definitions => item[:object_block][:untyped_multiple_attr_object_block]])
     1962          #args.merge!(Hash[:term_definitions => item[:object_block]])
     1963        else
     1964          raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} "
     1965        end
     1966      when "term_binding"
     1967        unless item[:object_block][:type_identifier]
     1968          args.merge!(Hash[:term_binding => item[:object_block][:untyped_multiple_attr_object_block]])
     1969          #args.merge!(Hash[:term_binding => item[:object_block]])
     1970        else
     1971          raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} "
     1972        end
     1973      else
     1974        raise OpenEhr::ADL::Exception::Parser::Error, "Unknown case #{item[:attr_id]} at #{@filename}:#{@lineno} "
     1975      end
     1976    end
     1977
     1978    result = OpenEhr::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY.new(args)
    19451979 
    19461980    result
     
    19521986# reduce 88 omitted
    19531987
    1954 module_eval(<<'.,.,', 'parser.y', 544)
     1988module_eval(<<'.,.,', 'parser.y', 583)
    19551989  def _reduce_89(val, _values, result)
    1956         #@@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section attr_vals = \n#{val[0].to_yaml}")
     1990        @@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section::attr_vals = \n#{val[0].to_yaml}")
    19571991    result = val[0]
    19581992 
     
    19611995.,.,
    19621996
    1963 module_eval(<<'.,.,', 'parser.y', 549)
     1997module_eval(<<'.,.,', 'parser.y', 588)
    19641998  def _reduce_90(val, _values, result)
    1965         #@@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section complex_object_block = \n#{val[0].to_yaml}")
     1999        #@@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section::complex_object_block = \n#{val[0].to_yaml}")
    19662000    result = val[0]
    19672001 
     
    19702004.,.,
    19712005
    1972 module_eval(<<'.,.,', 'parser.y', 556)
     2006module_eval(<<'.,.,', 'parser.y', 595)
    19732007  def _reduce_91(val, _values, result)
    1974         result = Array[val[0]]
    1975  
    1976     result
    1977   end
    1978 .,.,
    1979 
    1980 module_eval(<<'.,.,', 'parser.y', 560)
     2008        attr_val = val[0]
     2009    result = Hash[attr_val[:attr_id] => attr_val[:object_block]]
     2010 
     2011    result
     2012  end
     2013.,.,
     2014
     2015module_eval(<<'.,.,', 'parser.y', 600)
    19812016  def _reduce_92(val, _values, result)
    1982         result = (val[0] << val[1])
    1983  
    1984     result
    1985   end
    1986 .,.,
    1987 
    1988 module_eval(<<'.,.,', 'parser.y', 564)
     2017        result = val[0].merge!(val[1])
     2018 
     2019    result
     2020  end
     2021.,.,
     2022
     2023module_eval(<<'.,.,', 'parser.y', 604)
    19892024  def _reduce_93(val, _values, result)
    1990         result = (val[0] << val[2])
    1991  
    1992     result
    1993   end
    1994 .,.,
    1995 
    1996 module_eval(<<'.,.,', 'parser.y', 569)
     2025        result = val[0].merge!(val[2])
     2026 
     2027    result
     2028  end
     2029.,.,
     2030
     2031module_eval(<<'.,.,', 'parser.y', 621)
    19972032  def _reduce_94(val, _values, result)
    1998         @@logger.debug("#{__FILE__}:#{__LINE__}:attr_val\n attr_id = #{val[0]}, object_block = #{val[1]}")
     2033        @@logger.debug("#{__FILE__}:#{__LINE__}:attr_val\n attr_id = #{val[0].to_yaml},\n object_block = #{val[2].to_yaml}")
    19992034    result = {:attr_id => val[0], :object_block => val[2]}
    20002035 
     
    20032038.,.,
    20042039
    2005 module_eval(<<'.,.,', 'parser.y', 575)
     2040module_eval(<<'.,.,', 'parser.y', 627)
    20062041  def _reduce_95(val, _values, result)
    20072042        @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}")
     
    20142049# reduce 96 omitted
    20152050
    2016 module_eval(<<'.,.,', 'parser.y', 582)
     2051module_eval(<<'.,.,', 'parser.y', 634)
    20172052  def _reduce_97(val, _values, result)
    20182053        result = val[0]
     
    20222057.,.,
    20232058
    2024 module_eval(<<'.,.,', 'parser.y', 586)
     2059module_eval(<<'.,.,', 'parser.y', 638)
    20252060  def _reduce_98(val, _values, result)
    20262061        result = val[0]
     
    20302065.,.,
    20312066
    2032 module_eval(<<'.,.,', 'parser.y', 591)
     2067module_eval(<<'.,.,', 'parser.y', 643)
    20332068  def _reduce_99(val, _values, result)
    20342069        result = val[0]
     
    20382073.,.,
    20392074
    2040 module_eval(<<'.,.,', 'parser.y', 595)
     2075module_eval(<<'.,.,', 'parser.y', 647)
    20412076  def _reduce_100(val, _values, result)
    20422077        result = val[0]
     
    20462081.,.,
    20472082
    2048 module_eval(<<'.,.,', 'parser.y', 600)
     2083module_eval(<<'.,.,', 'parser.y', 652)
    20492084  def _reduce_101(val, _values, result)
    2050         result = {:untyped_multiple_attr_object_block => val[0]}
    2051  
    2052     result
    2053   end
    2054 .,.,
    2055 
    2056 module_eval(<<'.,.,', 'parser.y', 604)
     2085        @@logger.debug("#{__FILE__}:#{__LINE__}:multiple_attr_object_block::attr_val\n untyped_multiple_attr_object_block = #{val[0].to_yaml}")
     2086    result = {:untyped_multiple_attr_object_block => val[0]}
     2087 
     2088    result
     2089  end
     2090.,.,
     2091
     2092module_eval(<<'.,.,', 'parser.y', 657)
    20572093  def _reduce_102(val, _values, result)
    20582094        result = {:type_identifier => val[0], :untyped_multiple_attr_object_block => val[1]}
     
    20622098.,.,
    20632099
    2064 module_eval(<<'.,.,', 'parser.y', 609)
     2100module_eval(<<'.,.,', 'parser.y', 662)
    20652101  def _reduce_103(val, _values, result)
    2066         result = val[1]
    2067  
    2068     result
    2069   end
    2070 .,.,
    2071 
    2072 module_eval(<<'.,.,', 'parser.y', 614)
     2102        @@logger.debug("#{__FILE__}:#{__LINE__}:untyped_multiple_attr_object_block::keyed_objects\n keyed_objects = #{val[1].to_yaml}")
     2103    result = val[1]
     2104 
     2105    result
     2106  end
     2107.,.,
     2108
     2109module_eval(<<'.,.,', 'parser.y', 668)
    20732110  def _reduce_104(val, _values, result)
    20742111        result = val[0]
     
    20782115.,.,
    20792116
    2080 module_eval(<<'.,.,', 'parser.y', 619)
     2117module_eval(<<'.,.,', 'parser.y', 673)
    20812118  def _reduce_105(val, _values, result)
    20822119        result = Array[val[0]]
     
    20862123.,.,
    20872124
    2088 module_eval(<<'.,.,', 'parser.y', 623)
     2125module_eval(<<'.,.,', 'parser.y', 677)
    20892126  def _reduce_106(val, _values, result)
    20902127        result = (val[0] << val[1])
     
    20942131.,.,
    20952132
    2096 module_eval(<<'.,.,', 'parser.y', 628)
     2133module_eval(<<'.,.,', 'parser.y', 682)
    20972134  def _reduce_107(val, _values, result)
    20982135        #@@logger.debug("#{__FILE__}:#{__LINE__}: keyed_object = #{val[0]} at #{@filename}:#{@lineno}")
    20992136    #result = {:object_key => val[0], :object_block => val[2]}
    2100     unless val[2][:type_identifier]
    2101       result = Hash[val[0] => val[2][:untyped_primitive_object_block]]
     2137    object_key,object_block = val[0],val[2]
     2138    unless object_block[:type_identifier]
     2139      result = Hash[val[0] => object_block[:untyped_primitive_object_block]]
    21022140    else
    21032141      raise OpenEhr::ADL::Exception::Parser::Error, "Missing type_identifier at #{@filename}:#{@lineno} "
     
    21082146.,.,
    21092147
    2110 module_eval(<<'.,.,', 'parser.y', 639)
     2148module_eval(<<'.,.,', 'parser.y', 694)
    21112149  def _reduce_108(val, _values, result)
    21122150        @@logger.debug("object_key: [#{val[1]}] at #{@filename}:#{@lineno}")
     
    21172155.,.,
    21182156
    2119 module_eval(<<'.,.,', 'parser.y', 645)
     2157module_eval(<<'.,.,', 'parser.y', 700)
    21202158  def _reduce_109(val, _values, result)
    21212159        result = {:untyped_single_attr_object_block => val[0]}
     
    21252163.,.,
    21262164
    2127 module_eval(<<'.,.,', 'parser.y', 649)
     2165module_eval(<<'.,.,', 'parser.y', 704)
    21282166  def _reduce_110(val, _values, result)
    21292167        result = {:type_identifier => val[0], :untyped_single_attr_object_block => val[1]}
     
    21332171.,.,
    21342172
    2135 module_eval(<<'.,.,', 'parser.y', 654)
     2173module_eval(<<'.,.,', 'parser.y', 709)
    21362174  def _reduce_111(val, _values, result)
    21372175        @@logger.debug("#{__FILE__}:#{__LINE__}: single_attr_object_complex_head = #{val[0]} at #{@filename}:#{@lineno}")
    2138     #result = {:single_attr_object_complex_head => val[0]}
    21392176    result = []
    21402177 
     
    21432180.,.,
    21442181
    2145 module_eval(<<'.,.,', 'parser.y', 660)
     2182module_eval(<<'.,.,', 'parser.y', 714)
    21462183  def _reduce_112(val, _values, result)
    2147         @@logger.debug("#{__FILE__}:#{__LINE__}: attr_vals = #{val[1]} at #{@filename}:#{@lineno}")
    2148     #result = {:single_attr_object_complex_head => val[0], :attr_vals => val[1]}
     2184        @@logger.debug("#{__FILE__}:#{__LINE__}: untyped_single_attr_object_block::attr_vals = \n#{val[1].to_yaml} at #{@filename}:#{@lineno}")
    21492185    result = val[1]
    21502186 
     
    21552191# reduce 113 omitted
    21562192
    2157 module_eval(<<'.,.,', 'parser.y', 667)
     2193module_eval(<<'.,.,', 'parser.y', 721)
    21582194  def _reduce_114(val, _values, result)
    21592195        @@logger.debug("#{__FILE__}:#{__LINE__}: untyped_primitive_object_block = #{val[0]} at #{@filename}:#{@lineno}")
     
    21642200.,.,
    21652201
    2166 module_eval(<<'.,.,', 'parser.y', 672)
     2202module_eval(<<'.,.,', 'parser.y', 726)
    21672203  def _reduce_115(val, _values, result)
    21682204        @@logger.debug("#{__FILE__}:#{__LINE__}: type_identifier = #{val[0]}, untyped_primitive_object_block = #{val[1]} at #{@filename}:#{@lineno}")
     
    21732209.,.,
    21742210
    2175 module_eval(<<'.,.,', 'parser.y', 677)
     2211module_eval(<<'.,.,', 'parser.y', 731)
    21762212  def _reduce_116(val, _values, result)
    21772213        #@@logger.debug("#{__FILE__}:#{__LINE__}: primitive_object_block = <#{val[1]}> at #{@filename}:#{@lineno}")
     
    21822218.,.,
    21832219
    2184 module_eval(<<'.,.,', 'parser.y', 682)
     2220module_eval(<<'.,.,', 'parser.y', 736)
    21852221  def _reduce_117(val, _values, result)
    21862222        result = val[0]
     
    21902226.,.,
    21912227
    2192 module_eval(<<'.,.,', 'parser.y', 686)
     2228module_eval(<<'.,.,', 'parser.y', 740)
    21932229  def _reduce_118(val, _values, result)
    21942230        result = val[0]
     
    21982234.,.,
    21992235
    2200 module_eval(<<'.,.,', 'parser.y', 690)
     2236module_eval(<<'.,.,', 'parser.y', 744)
    22012237  def _reduce_119(val, _values, result)
    22022238        result = val[0]
     
    22062242.,.,
    22072243
    2208 module_eval(<<'.,.,', 'parser.y', 694)
     2244module_eval(<<'.,.,', 'parser.y', 748)
    22092245  def _reduce_120(val, _values, result)
    22102246        result = val[0]
     
    22142250.,.,
    22152251
    2216 module_eval(<<'.,.,', 'parser.y', 698)
     2252module_eval(<<'.,.,', 'parser.y', 752)
    22172253  def _reduce_121(val, _values, result)
    22182254        result = val[0]
     
    22222258.,.,
    22232259
    2224 module_eval(<<'.,.,', 'parser.y', 702)
     2260module_eval(<<'.,.,', 'parser.y', 756)
    22252261  def _reduce_122(val, _values, result)
    22262262        @@logger.debug("string_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    22312267.,.,
    22322268
    2233 module_eval(<<'.,.,', 'parser.y', 707)
     2269module_eval(<<'.,.,', 'parser.y', 761)
    22342270  def _reduce_123(val, _values, result)
    22352271        @@logger.debug("integer_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    22402276.,.,
    22412277
    2242 module_eval(<<'.,.,', 'parser.y', 712)
     2278module_eval(<<'.,.,', 'parser.y', 766)
    22432279  def _reduce_124(val, _values, result)
    22442280        @@logger.debug("real_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    22492285.,.,
    22502286
    2251 module_eval(<<'.,.,', 'parser.y', 717)
     2287module_eval(<<'.,.,', 'parser.y', 771)
    22522288  def _reduce_125(val, _values, result)
    22532289        @@logger.debug("boolean_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    22582294.,.,
    22592295
    2260 module_eval(<<'.,.,', 'parser.y', 722)
     2296module_eval(<<'.,.,', 'parser.y', 776)
    22612297  def _reduce_126(val, _values, result)
    22622298        @@logger.debug("character_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    22672303.,.,
    22682304
    2269 module_eval(<<'.,.,', 'parser.y', 727)
     2305module_eval(<<'.,.,', 'parser.y', 781)
    22702306  def _reduce_127(val, _values, result)
    22712307        @@logger.debug("date_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    22762312.,.,
    22772313
    2278 module_eval(<<'.,.,', 'parser.y', 732)
     2314module_eval(<<'.,.,', 'parser.y', 786)
    22792315  def _reduce_128(val, _values, result)
    22802316        @@logger.debug("time_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    22852321.,.,
    22862322
    2287 module_eval(<<'.,.,', 'parser.y', 737)
     2323module_eval(<<'.,.,', 'parser.y', 791)
    22882324  def _reduce_129(val, _values, result)
    22892325        @@logger.debug("date_time_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    22942330.,.,
    22952331
    2296 module_eval(<<'.,.,', 'parser.y', 742)
     2332module_eval(<<'.,.,', 'parser.y', 796)
    22972333  def _reduce_130(val, _values, result)
    22982334        @@logger.debug("duration_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    23032339.,.,
    23042340
    2305 module_eval(<<'.,.,', 'parser.y', 747)
     2341module_eval(<<'.,.,', 'parser.y', 801)
    23062342  def _reduce_131(val, _values, result)
    23072343        @@logger.debug("uri_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    23122348.,.,
    23132349
    2314 module_eval(<<'.,.,', 'parser.y', 753)
     2350module_eval(<<'.,.,', 'parser.y', 807)
    23152351  def _reduce_132(val, _values, result)
    23162352        @@logger.debug("string_list_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    23212357.,.,
    23222358
    2323 module_eval(<<'.,.,', 'parser.y', 758)
     2359module_eval(<<'.,.,', 'parser.y', 812)
    23242360  def _reduce_133(val, _values, result)
    23252361        result = val[0]
     
    23292365.,.,
    23302366
    2331 module_eval(<<'.,.,', 'parser.y', 762)
     2367module_eval(<<'.,.,', 'parser.y', 816)
    23322368  def _reduce_134(val, _values, result)
    23332369        result = val[0]
     
    23372373.,.,
    23382374
    2339 module_eval(<<'.,.,', 'parser.y', 766)
     2375module_eval(<<'.,.,', 'parser.y', 820)
    23402376  def _reduce_135(val, _values, result)
    23412377        result = val[0]
     
    23452381.,.,
    23462382
    2347 module_eval(<<'.,.,', 'parser.y', 770)
     2383module_eval(<<'.,.,', 'parser.y', 824)
    23482384  def _reduce_136(val, _values, result)
    23492385        result = val[0]
     
    23532389.,.,
    23542390
    2355 module_eval(<<'.,.,', 'parser.y', 774)
     2391module_eval(<<'.,.,', 'parser.y', 828)
    23562392  def _reduce_137(val, _values, result)
    23572393        result = val[0]
     
    23612397.,.,
    23622398
    2363 module_eval(<<'.,.,', 'parser.y', 778)
     2399module_eval(<<'.,.,', 'parser.y', 832)
    23642400  def _reduce_138(val, _values, result)
    23652401        result = val[0]
     
    23692405.,.,
    23702406
    2371 module_eval(<<'.,.,', 'parser.y', 782)
     2407module_eval(<<'.,.,', 'parser.y', 836)
    23722408  def _reduce_139(val, _values, result)
    23732409        result = val[0]
     
    23772413.,.,
    23782414
    2379 module_eval(<<'.,.,', 'parser.y', 786)
     2415module_eval(<<'.,.,', 'parser.y', 840)
    23802416  def _reduce_140(val, _values, result)
    23812417        result = val[0]
     
    23972433# reduce 146 omitted
    23982434
    2399 module_eval(<<'.,.,', 'parser.y', 798)
     2435module_eval(<<'.,.,', 'parser.y', 852)
    24002436  def _reduce_147(val, _values, result)
    24012437        @@logger.debug("V_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
     
    24062442.,.,
    24072443
    2408 module_eval(<<'.,.,', 'parser.y', 803)
     2444module_eval(<<'.,.,', 'parser.y', 857)
    24092445  def _reduce_148(val, _values, result)
    24102446        @@logger.debug("V_GENERIC_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
     
    24152451.,.,
    24162452
    2417 module_eval(<<'.,.,', 'parser.y', 809)
     2453module_eval(<<'.,.,', 'parser.y', 863)
    24182454  def _reduce_149(val, _values, result)
    24192455        @@logger.debug("V_STRING: #{val[0]} at #{@filename}:#{@lineno}")
     
    24242460.,.,
    24252461
    2426 module_eval(<<'.,.,', 'parser.y', 815)
     2462module_eval(<<'.,.,', 'parser.y', 869)
    24272463  def _reduce_150(val, _values, result)
    24282464        result = [val[0],val[2]]
     
    24322468.,.,
    24332469
    2434 module_eval(<<'.,.,', 'parser.y', 819)
     2470module_eval(<<'.,.,', 'parser.y', 873)
    24352471  def _reduce_151(val, _values, result)
    24362472        result = val[0] << val[2]
     
    24402476.,.,
    24412477
    2442 module_eval(<<'.,.,', 'parser.y', 823)
     2478module_eval(<<'.,.,', 'parser.y', 877)
    24432479  def _reduce_152(val, _values, result)
    24442480        result = val[0]
     
    24482484.,.,
    24492485
    2450 module_eval(<<'.,.,', 'parser.y', 828)
     2486module_eval(<<'.,.,', 'parser.y', 882)
    24512487  def _reduce_153(val, _values, result)
    24522488        begin
     
    24612497.,.,
    24622498
    2463 module_eval(<<'.,.,', 'parser.y', 837)
     2499module_eval(<<'.,.,', 'parser.y', 891)
    24642500  def _reduce_154(val, _values, result)
    24652501        begin
     
    24742510.,.,
    24752511
    2476 module_eval(<<'.,.,', 'parser.y', 846)
     2512module_eval(<<'.,.,', 'parser.y', 900)
    24772513  def _reduce_155(val, _values, result)
    24782514        begin
     
    25112547# reduce 167 omitted
    25122548
    2513 module_eval(<<'.,.,', 'parser.y', 870)
     2549module_eval(<<'.,.,', 'parser.y', 924)
    25142550  def _reduce_168(val, _values, result)
    25152551        begin
     
    25242560.,.,
    25252561
    2526 module_eval(<<'.,.,', 'parser.y', 879)
     2562module_eval(<<'.,.,', 'parser.y', 933)
    25272563  def _reduce_169(val, _values, result)
    25282564        begin
     
    25372573.,.,
    25382574
    2539 module_eval(<<'.,.,', 'parser.y', 888)
     2575module_eval(<<'.,.,', 'parser.y', 942)
    25402576  def _reduce_170(val, _values, result)
    25412577        begin
     
    25742610# reduce 182 omitted
    25752611
    2576 module_eval(<<'.,.,', 'parser.y', 913)
     2612module_eval(<<'.,.,', 'parser.y', 967)
    25772613  def _reduce_183(val, _values, result)
    25782614        result = true
     
    25822618.,.,
    25832619
    2584 module_eval(<<'.,.,', 'parser.y', 917)
     2620module_eval(<<'.,.,', 'parser.y', 971)
    25852621  def _reduce_184(val, _values, result)
    25862622        result = false
     
    26042640# reduce 191 omitted
    26052641
    2606 module_eval(<<'.,.,', 'parser.y', 932)
     2642module_eval(<<'.,.,', 'parser.y', 986)
    26072643  def _reduce_192(val, _values, result)
    26082644        result = val[0]
     
    26622698# reduce 217 omitted
    26632699
    2664 module_eval(<<'.,.,', 'parser.y', 967)
     2700module_eval(<<'.,.,', 'parser.y', 1021)
    26652701  def _reduce_218(val, _values, result)
    26662702        @@logger.debug("V_ISO8601_EXTENDED_DATE_TIME: #{val[0]} at #{@filename}:#{@lineno}")
     
    26952731# reduce 230 omitted
    26962732
    2697 module_eval(<<'.,.,', 'parser.y', 987)
     2733module_eval(<<'.,.,', 'parser.y', 1041)
    26982734  def _reduce_231(val, _values, result)
    26992735        @@logger.debug("V_ISO8601_DURATION: #{val[0]} at #{@filename}:#{@lineno}")
     
    27282764# reduce 243 omitted
    27292765
    2730 module_eval(<<'.,.,', 'parser.y', 1007)
     2766module_eval(<<'.,.,', 'parser.y', 1061)
    27312767  def _reduce_244(val, _values, result)
    27322768        @@logger.debug("#{__FILE__}:#{__LINE__}: V_QUALIFIED_TERM_CODE_REF = #{val[0]} at #{@filename}:#{@lineno}")
     
    27432779# reduce 247 omitted
    27442780
    2745 module_eval(<<'.,.,', 'parser.y', 1017)
     2781module_eval(<<'.,.,', 'parser.y', 1071)
    27462782  def _reduce_248(val, _values, result)
    27472783        @@logger.debug("#{__FILE__}:#{__LINE__}: V_URI = #{val[0]} at #{@filename}:#{@lineno}")
     
    27682804# reduce 256 omitted
    27692805
    2770 module_eval(<<'.,.,', 'parser.y', 1040)
     2806module_eval(<<'.,.,', 'parser.y', 1094)
    27712807  def _reduce_257(val, _values, result)
    27722808        @@logger.debug("#{__FILE__}:#{__LINE__}, boolean_node:  relative_path = #{val[0]}, regexp_body => #{val[3]} at #{@filename}")
     
    28332869# reduce 285 omitted
    28342870
    2835 module_eval(<<'.,.,', 'parser.y', 1087)
     2871module_eval(<<'.,.,', 'parser.y', 1141)
    28362872  def _reduce_286(val, _values, result)
    28372873        @@logger.debug("#{__FILE__}:#{__LINE__}, relative_path = #{val[0]}")
     
    28422878.,.,
    28432879
    2844 module_eval(<<'.,.,', 'parser.y', 1092)
     2880module_eval(<<'.,.,', 'parser.y', 1146)
    28452881  def _reduce_287(val, _values, result)
    28462882        @@logger.debug("#{__FILE__}:#{__LINE__}, relative_path = #{val[0]}/#{val[2]}")
     
    28512887.,.,
    28522888
    2853 module_eval(<<'.,.,', 'parser.y', 1098)
     2889module_eval(<<'.,.,', 'parser.y', 1152)
    28542890  def _reduce_288(val, _values, result)
    28552891        @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}")
     
    28602896.,.,
    28612897
    2862 module_eval(<<'.,.,', 'parser.y', 1103)
     2898module_eval(<<'.,.,', 'parser.y', 1157)
    28632899  def _reduce_289(val, _values, result)
    28642900        @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}")
     
    28692905.,.,
    28702906
    2871 module_eval(<<'.,.,', 'parser.y', 1115)
     2907module_eval(<<'.,.,', 'parser.y', 1169)
    28722908  def _reduce_290(val, _values, result)
    28732909        result = Range.new(1,1)
     
    28772913.,.,
    28782914
    2879 module_eval(<<'.,.,', 'parser.y', 1119)
     2915module_eval(<<'.,.,', 'parser.y', 1173)
    28802916  def _reduce_291(val, _values, result)
    28812917        result = val[3]
     
    28852921.,.,
    28862922
    2887 module_eval(<<'.,.,', 'parser.y', 1124)
     2923module_eval(<<'.,.,', 'parser.y', 1178)
    28882924  def _reduce_292(val, _values, result)
    28892925        begin
     
    28982934.,.,
    28992935
    2900 module_eval(<<'.,.,', 'parser.y', 1133)
     2936module_eval(<<'.,.,', 'parser.y', 1187)
    29012937  def _reduce_293(val, _values, result)
    29022938        begin
     
    29122948.,.,
    29132949
    2914 module_eval(<<'.,.,', 'parser.y', 1144)
     2950module_eval(<<'.,.,', 'parser.y', 1198)
    29152951  def _reduce_294(val, _values, result)
    29162952        result = OpenEhr::AM::Archetype::ConstraintModel::CARDINALITY.new
     
    29202956.,.,
    29212957
    2922 module_eval(<<'.,.,', 'parser.y', 1149)
     2958module_eval(<<'.,.,', 'parser.y', 1203)
    29232959  def _reduce_295(val, _values, result)
    29242960        result = val[0]
     
    29422978# reduce 302 omitted
    29432979
    2944 module_eval(<<'.,.,', 'parser.y', 1161)
     2980module_eval(<<'.,.,', 'parser.y', 1215)
    29452981  def _reduce_303(val, _values, result)
    29462982        result = val[0]
     
    29502986.,.,
    29512987
    2952 module_eval(<<'.,.,', 'parser.y', 1165)
     2988module_eval(<<'.,.,', 'parser.y', 1219)
    29532989  def _reduce_304(val, _values, result)
    29542990        result = val[0]
     
    29602996# reduce 305 omitted
    29612997
    2962 module_eval(<<'.,.,', 'parser.y', 1172)
     2998module_eval(<<'.,.,', 'parser.y', 1226)
    29632999  def _reduce_306(val, _values, result)
    29643000        case val[3]
     
    29753011# reduce 307 omitted
    29763012
    2977 module_eval(<<'.,.,', 'parser.y', 1183)
     3013module_eval(<<'.,.,', 'parser.y', 1237)
    29783014  def _reduce_308(val, _values, result)
    29793015        result = val[0]
     
    29833019.,.,
    29843020
    2985 module_eval(<<'.,.,', 'parser.y', 1187)
     3021module_eval(<<'.,.,', 'parser.y', 1241)
    29863022  def _reduce_309(val, _values, result)
    29873023        result = OpenEhr::RM::Support::AssumedTypes::Interval.new(val[0], val[2])
     
    30773113# reduce 352 omitted
    30783114
    3079 module_eval(<<'.,.,', 'parser.y', 1253)
     3115module_eval(<<'.,.,', 'parser.y', 1307)
    30803116  def _reduce_353(val, _values, result)
    30813117        result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN.new(:true_valid => true)
     
    30853121.,.,
    30863122
    3087 module_eval(<<'.,.,', 'parser.y', 1257)
     3123module_eval(<<'.,.,', 'parser.y', 1311)
    30883124  def _reduce_354(val, _values, result)
    30893125        result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN.new(:true_valid => false)
     
    30933129.,.,
    30943130
    3095 module_eval(<<'.,.,', 'parser.y', 1261)
     3131module_eval(<<'.,.,', 'parser.y', 1315)
    30963132  def _reduce_355(val, _values, result)
    30973133        result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN.new(:true_valid => true,:false_valid => false)
     
    31013137.,.,
    31023138
    3103 module_eval(<<'.,.,', 'parser.y', 1265)
     3139module_eval(<<'.,.,', 'parser.y', 1319)
    31043140  def _reduce_356(val, _values, result)
    31053141        result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN.new(:true_valid => false,:false_valid => true)
     
    31093145.,.,
    31103146
    3111 module_eval(<<'.,.,', 'parser.y', 1270)
     3147module_eval(<<'.,.,', 'parser.y', 1324)
    31123148  def _reduce_357(val, _values, result)
    31133149        result = val[0]
     
    31173153.,.,
    31183154
    3119 module_eval(<<'.,.,', 'parser.y', 1274)
     3155module_eval(<<'.,.,', 'parser.y', 1328)
    31203156  def _reduce_358(val, _values, result)
    31213157        result = val[0]
     
    31263162.,.,
    31273163
    3128 module_eval(<<'.,.,', 'parser.y', 1279)
     3164module_eval(<<'.,.,', 'parser.y', 1333)
    31293165  def _reduce_359(val, _values, result)
    31303166        raise 'Not implemented yet'
     
    31443180# reduce 364 omitted
    31453181
    3146 module_eval(<<'.,.,', 'parser.y', 1291)
     3182module_eval(<<'.,.,', 'parser.y', 1345)
    31473183  def _reduce_365(val, _values, result)
    31483184        @in_interval = false
     
    31533189.,.,
    31543190
    3155 module_eval(<<'.,.,', 'parser.y', 1298)
     3191module_eval(<<'.,.,', 'parser.y', 1352)
    31563192  def _reduce_366(val, _values, result)
    31573193          result = val[0]
     
    31613197.,.,
    31623198
    3163 module_eval(<<'.,.,', 'parser.y', 1302)
     3199module_eval(<<'.,.,', 'parser.y', 1356)
    31643200  def _reduce_367(val, _values, result)
    31653201          result = val[0]
     
    31693205.,.,
    31703206
    3171 module_eval(<<'.,.,', 'parser.y', 1308)
     3207module_eval(<<'.,.,', 'parser.y', 1362)
    31723208  def _reduce_368(val, _values, result)
    31733209        @@logger.debug("#{__FILE__}:#{__LINE__}, START_TERM_CODE_CONSTRAINT = #{val[0]} at #{@filename}")
     
    31863222# reduce 371 omitted
    31873223
    3188 module_eval(<<'.,.,', 'parser.y', 1324)
     3224module_eval(<<'.,.,', 'parser.y', 1378)
    31893225  def _reduce_372(val, _values, result)
    31903226          result = val[0]
     
    31943230.,.,
    31953231
    3196 module_eval(<<'.,.,', 'parser.y', 1329)
     3232module_eval(<<'.,.,', 'parser.y', 1383)
    31973233  def _reduce_373(val, _values, result)
    31983234          result = val[0]
     
    32023238.,.,
    32033239
    3204 module_eval(<<'.,.,', 'parser.y', 1333)
     3240module_eval(<<'.,.,', 'parser.y', 1387)
    32053241  def _reduce_374(val, _values, result)
    32063242        @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{word} at #{@filename}")
     
    32113247.,.,
    32123248
    3213 module_eval(<<'.,.,', 'parser.y', 1344)
     3249module_eval(<<'.,.,', 'parser.y', 1398)
    32143250  def _reduce_375(val, _values, result)
    32153251        result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_DURATION.new #val[0]
  • ruby/trunk/lib/adl_parser/lib/parser.y

    r326 r328  
    127127    | SYM_LANGUAGE dadl_section
    128128  {
    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]}
    131138    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} "
    133140    end
    134141  }
     
    144151    args = Hash.new
    145152    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
    148155      when "original_author"
    149156        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]])
    151158        else
    152159          raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} "
    153160        end
    154161      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]])
    157165        else
    158166          raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} "
    159167        end
    160168      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]])
    163171        else
    164172          raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} "
    165173        end
    166174      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]])
    169177        else
    170178          raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} "
    171179        end
    172180      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]])
    175183        else
    176184          raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} "
    177185        end
    178186      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} "
    180188      end
    181189    end
     
    534542  {
    535543    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)
    537576  }
    538577  | SYM_ONTOLOGY error
     
    543582    |  attr_vals
    544583  {
    545     #@@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section attr_vals = \n#{val[0].to_yaml}")
     584    @@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section::attr_vals = \n#{val[0].to_yaml}")
    546585    result = val[0]
    547586  }
    548587  | complex_object_block
    549588  {
    550     #@@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section complex_object_block = \n#{val[0].to_yaml}")
     589    #@@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section::complex_object_block = \n#{val[0].to_yaml}")
    551590    result = val[0]
    552591  }
     
    555594attr_vals: attr_val
    556595  {
    557     result = Array[val[0]]
     596    attr_val = val[0]
     597    result = Hash[attr_val[:attr_id] => attr_val[:object_block]]
    558598  }
    559599  | attr_vals attr_val
    560600  {
    561     result = (val[0] << val[1])
     601    result = val[0].merge!(val[1])
    562602  }
    563603  | attr_vals Semicolon_code attr_val
    564604  {
    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###   }
    567619
    568620attr_val: attr_id SYM_EQ object_block
    569621  {
    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}")
    571623    result = {:attr_id => val[0], :object_block => val[2]}
    572624  }
     
    599651multiple_attr_object_block: untyped_multiple_attr_object_block
    600652  {
     653    @@logger.debug("#{__FILE__}:#{__LINE__}:multiple_attr_object_block::attr_val\n untyped_multiple_attr_object_block = #{val[0].to_yaml}")
    601654    result = {:untyped_multiple_attr_object_block => val[0]}
    602655  }
     
    608661untyped_multiple_attr_object_block: multiple_attr_object_block_head keyed_objects SYM_END_DBLOCK
    609662  {
     663    @@logger.debug("#{__FILE__}:#{__LINE__}:untyped_multiple_attr_object_block::keyed_objects\n keyed_objects = #{val[1].to_yaml}")
    610664    result = val[1]
    611665  }
     
    629683    #@@logger.debug("#{__FILE__}:#{__LINE__}: keyed_object = #{val[0]} at #{@filename}:#{@lineno}")
    630684    #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]]
    633688    else
    634689      raise OpenEhr::ADL::Exception::Parser::Error, "Missing type_identifier at #{@filename}:#{@lineno} "
     
    654709  {
    655710    @@logger.debug("#{__FILE__}:#{__LINE__}: single_attr_object_complex_head = #{val[0]} at #{@filename}:#{@lineno}")
    656     #result = {:single_attr_object_complex_head => val[0]}
    657711    result = []
    658712  }
    659713  | single_attr_object_complex_head attr_vals SYM_END_DBLOCK
    660714  {
    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}")
    663716    result = val[1]
    664717  }
    665718single_attr_object_complex_head: SYM_START_DBLOCK
     719
    666720primitive_object_block: untyped_primitive_object_block
    667721  {
     
    13561410require 'rubygems'
    13571411require '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'
    13631412$DEBUG = true
    13641413
     
    14011450
    14021451
    1403 def parse(data, filename, lineno = 1, debug = false)
     1452def parse(data, filename = "", lineno = 1, debug = false)
    14041453  @yydebug = true
    14051454  @parsestring = data
Note: See TracChangeset for help on using the changeset viewer.