Changeset 326


Ignore:
Timestamp:
Oct 29, 2009, 1:58:34 AM (10 years ago)
Author:
Tatsukawa, Akimichi
Message:

start implementing semantic function in ADL parser

Location:
ruby/trunk/lib/adl_parser
Files:
4 edited

Legend:

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

    r323 r326  
    1212      module Parser
    1313        class Base < RuntimeError
     14        end
     15
     16        class Error < Base
    1417        end
    1518      end
  • ruby/trunk/lib/adl_parser/lib/parser.rb

    r323 r326  
    2727    class Parser < Racc::Parser
    2828
    29 module_eval(<<'...end parser.y/module_eval...', 'parser.y', 1318)
     29module_eval(<<'...end parser.y/module_eval...', 'parser.y', 1368)
    3030
    3131def assert_at(file,line, message = "")
     
    14181418module_eval(<<'.,.,', 'parser.y', 124)
    14191419  def _reduce_18(val, _values, result)
    1420         result = {:arch_language => nil}
     1420        result = {:arch_language => ""}
    14211421 
    14221422    result
     
    14261426module_eval(<<'.,.,', 'parser.y', 128)
    14271427  def _reduce_19(val, _values, result)
    1428         result = {:arch_language => val[1]}
     1428        if val[1][0][:attr_id] == "original_language"
     1429      result = {:arch_language => val[1][0][:object_block][:untyped_primitive_object_block]}
     1430    else
     1431      raise OpenEhr::ADL::Exception::Parser::Error, "It should be 'original_language' at #{@filename}:#{@lineno} "
     1432    end
    14291433 
    14301434    result
     
    14361440# reduce 21 omitted
    14371441
    1438 module_eval(<<'.,.,', 'parser.y', 139)
     1442module_eval(<<'.,.,', 'parser.y', 143)
    14391443  def _reduce_22(val, _values, result)
    1440         result = OpenEhr::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION.new(:details => val[1])
     1444        args = Hash.new
     1445    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      when "original_author"
     1449        unless item[:object_block][:type_identifier]
     1450          args.merge!(Hash[:original_author => item[:object_block][:untyped_multiple_attr_object_block]])
     1451        else
     1452          raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} "
     1453        end
     1454      when "details"
     1455        unless item[:object_block][:type_identifier]
     1456          args.merge!(Hash[:details => item[:object_block][:untyped_multiple_attr_object_block]])
     1457        else
     1458          raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} "
     1459        end
     1460      when "lifecycle_state"
     1461        unless item[:object_block][:type_identifier]
     1462          args.merge!(Hash[:lifecycle_state => item[:object_block][:untyped_primitive_object_block]])
     1463        else
     1464          raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} "
     1465        end
     1466      when "other_contributors"
     1467        unless item[:object_block][:type_identifier]
     1468          args.merge!(Hash[:other_contributors => item[:object_block][:untyped_multiple_attr_object_block]])
     1469        else
     1470          raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} "
     1471        end
     1472      when "other_details"
     1473        unless item[:object_block][:type_identifier]
     1474          args.merge!(Hash[:other_contributors => item[:object_block][:untyped_multiple_attr_object_block]])
     1475        else
     1476          raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} "
     1477        end
     1478      else
     1479        raise OpenEhr::ADL::Exception::Parser::Error, "Unknown case #{item[:attr_id]} at #{@filename}:#{@lineno} "
     1480      end
     1481    end
     1482    @@logger.debug("#{__FILE__}:#{__LINE__}: arch_description: args  = \n#{args.to_yaml} at #{@filename}:#{@lineno}")
     1483    result = OpenEhr::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION.new(args)
    14411484 
    14421485    result
     
    14461489# reduce 23 omitted
    14471490
    1448 module_eval(<<'.,.,', 'parser.y', 147)
     1491module_eval(<<'.,.,', 'parser.y', 190)
    14491492  def _reduce_24(val, _values, result)
    14501493        result = val[1]
     
    14561499# reduce 25 omitted
    14571500
    1458 module_eval(<<'.,.,', 'parser.y', 155)
     1501module_eval(<<'.,.,', 'parser.y', 198)
    14591502  def _reduce_26(val, _values, result)
    14601503        assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEhr::AM::Archetype::ConstraintModel::C_COMPLEX_OBJECT)}
     
    14661509.,.,
    14671510
    1468 module_eval(<<'.,.,', 'parser.y', 161)
     1511module_eval(<<'.,.,', 'parser.y', 204)
    14691512  def _reduce_27(val, _values, result)
    14701513        result = val[0]
     
    14741517.,.,
    14751518
    1476 module_eval(<<'.,.,', 'parser.y', 169)
     1519module_eval(<<'.,.,', 'parser.y', 212)
    14771520  def _reduce_28(val, _values, result)
    14781521        @@logger.debug("#{__FILE__}:#{__LINE__}:c_complx_object = \n c_complx_object_head = #{val[0].to_yaml}")
     
    14871530.,.,
    14881531
    1489 module_eval(<<'.,.,', 'parser.y', 179)
     1532module_eval(<<'.,.,', 'parser.y', 222)
    14901533  def _reduce_29(val, _values, result)
    14911534        result = OpenEhr::AM::Archetype::ConstraintModel::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
     
    14991542.,.,
    15001543
    1501 module_eval(<<'.,.,', 'parser.y', 191)
     1544module_eval(<<'.,.,', 'parser.y', 234)
    15021545  def _reduce_30(val, _values, result)
    15031546        @@logger.debug("#{__FILE__}:#{__LINE__}: c_complex_object_head: c_complex_object_id => #{val[0]}, c_occurrences => #{val[1]}")
     
    15081551.,.,
    15091552
    1510 module_eval(<<'.,.,', 'parser.y', 197)
     1553module_eval(<<'.,.,', 'parser.y', 240)
    15111554  def _reduce_31(val, _values, result)
    15121555        result = {:type_identifier => val[0]}
     
    15161559.,.,
    15171560
    1518 module_eval(<<'.,.,', 'parser.y', 201)
     1561module_eval(<<'.,.,', 'parser.y', 244)
    15191562  def _reduce_32(val, _values, result)
    15201563        result = {:type_identifier => val[0], :local_term_code_ref => val[1]}
     
    15261569# reduce 33 omitted
    15271570
    1528 module_eval(<<'.,.,', 'parser.y', 207)
     1571module_eval(<<'.,.,', 'parser.y', 250)
    15291572  def _reduce_34(val, _values, result)
    15301573        result = OpenEhr::AM::Archetype::ConstraintModel::C_COMPLEX_OBJECT.new(:attributes => val[0])
     
    15341577.,.,
    15351578
    1536 module_eval(<<'.,.,', 'parser.y', 225)
     1579module_eval(<<'.,.,', 'parser.y', 268)
    15371580  def _reduce_35(val, _values, result)
    15381581        @@logger.debug("#{__FILE__}:#{__LINE__}: c_complex_object = #{val[0].inspect} at #{@filename}:#{@lineno}")
     
    15431586.,.,
    15441587
    1545 module_eval(<<'.,.,', 'parser.y', 230)
     1588module_eval(<<'.,.,', 'parser.y', 273)
    15461589  def _reduce_36(val, _values, result)
    15471590        result = OpenEhr::AM::Archetype::ConstraintModel::ARCHETYPE_INTERNAL_REF.create do |archetype_internal_ref|
     
    15551598.,.,
    15561599
    1557 module_eval(<<'.,.,', 'parser.y', 238)
     1600module_eval(<<'.,.,', 'parser.y', 281)
    15581601  def _reduce_37(val, _values, result)
    15591602        result = val[0]
     
    15631606.,.,
    15641607
    1565 module_eval(<<'.,.,', 'parser.y', 242)
     1608module_eval(<<'.,.,', 'parser.y', 285)
    15661609  def _reduce_38(val, _values, result)
    15671610        result = OpenEhr::AM::Archetype::ConstraintModel::CONSTRAINT_REF.create do |constraint_ref|
     
    15731616.,.,
    15741617
    1575 module_eval(<<'.,.,', 'parser.y', 248)
     1618module_eval(<<'.,.,', 'parser.y', 291)
    15761619  def _reduce_39(val, _values, result)
    15771620        result = val[0]
     
    15811624.,.,
    15821625
    1583 module_eval(<<'.,.,', 'parser.y', 252)
     1626module_eval(<<'.,.,', 'parser.y', 295)
    15841627  def _reduce_40(val, _values, result)
    15851628        result = val[0]
     
    15891632.,.,
    15901633
    1591 module_eval(<<'.,.,', 'parser.y', 256)
     1634module_eval(<<'.,.,', 'parser.y', 299)
    15921635  def _reduce_41(val, _values, result)
    15931636        result = val[0]
     
    15971640.,.,
    15981641
    1599 module_eval(<<'.,.,', 'parser.y', 260)
     1642module_eval(<<'.,.,', 'parser.y', 303)
    16001643  def _reduce_42(val, _values, result)
    16011644        result = val[0]
     
    16091652# reduce 44 omitted
    16101653
    1611 module_eval(<<'.,.,', 'parser.y', 293)
     1654module_eval(<<'.,.,', 'parser.y', 336)
    16121655  def _reduce_45(val, _values, result)
    16131656        result = val[1]
     
    16171660.,.,
    16181661
    1619 module_eval(<<'.,.,', 'parser.y', 299)
     1662module_eval(<<'.,.,', 'parser.y', 342)
    16201663  def _reduce_46(val, _values, result)
    16211664        result = {:type_identifier => val[1], :c_occurrences => val[2], :absolute_path => val[3] }
     
    16271670# reduce 47 omitted
    16281671
    1629 module_eval(<<'.,.,', 'parser.y', 306)
     1672module_eval(<<'.,.,', 'parser.y', 349)
    16301673  def _reduce_48(val, _values, result)
    16311674        result = OpenEhr::AM::Archetype::ConstraintModel::ARCHETYPE_SLOT.create do |archetype_slot|
     
    16401683.,.,
    16411684
    1642 module_eval(<<'.,.,', 'parser.y', 315)
     1685module_eval(<<'.,.,', 'parser.y', 358)
    16431686  def _reduce_49(val, _values, result)
    16441687        result = {:c_archetype_slot_id => val[0],:c_occurrences => val[1]}
     
    16481691.,.,
    16491692
    1650 module_eval(<<'.,.,', 'parser.y', 320)
     1693module_eval(<<'.,.,', 'parser.y', 363)
    16511694  def _reduce_50(val, _values, result)
    16521695        result = val[1]
     
    16601703# reduce 52 omitted
    16611704
    1662 module_eval(<<'.,.,', 'parser.y', 328)
     1705module_eval(<<'.,.,', 'parser.y', 371)
    16631706  def _reduce_53(val, _values, result)
    16641707        assert_at(__FILE__,__LINE__){val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_PRIMITIVE)}
     
    16711714.,.,
    16721715
    1673 module_eval(<<'.,.,', 'parser.y', 336)
     1716module_eval(<<'.,.,', 'parser.y', 379)
    16741717  def _reduce_54(val, _values, result)
    16751718        @@logger.debug("#{__FILE__}:#{__LINE__}: c_integer = #{val[0]} at #{@filename}:#{@lineno}")
     
    16841727.,.,
    16851728
    1686 module_eval(<<'.,.,', 'parser.y', 345)
     1729module_eval(<<'.,.,', 'parser.y', 388)
    16871730  def _reduce_55(val, _values, result)
    16881731        @@logger.debug("#{__FILE__}:#{__LINE__}: c_real = #{val[0]} at #{@filename}:#{@lineno}")
     
    16931736.,.,
    16941737
    1695 module_eval(<<'.,.,', 'parser.y', 350)
     1738module_eval(<<'.,.,', 'parser.y', 393)
    16961739  def _reduce_56(val, _values, result)
    16971740        @@logger.debug("#{__FILE__}:#{__LINE__}: c_date = #{val[0]} at #{@filename}:#{@lineno}")
     
    17021745.,.,
    17031746
    1704 module_eval(<<'.,.,', 'parser.y', 355)
     1747module_eval(<<'.,.,', 'parser.y', 398)
    17051748  def _reduce_57(val, _values, result)
    17061749        @@logger.debug("#{__FILE__}:#{__LINE__}: c_time = #{val[0]} at #{@filename}:#{@lineno}")
     
    17111754.,.,
    17121755
    1713 module_eval(<<'.,.,', 'parser.y', 360)
     1756module_eval(<<'.,.,', 'parser.y', 403)
    17141757  def _reduce_58(val, _values, result)
    17151758        @@logger.debug("#{__FILE__}:#{__LINE__}: c_date_time = #{val[0]} at #{@filename}:#{@lineno}")
     
    17201763.,.,
    17211764
    1722 module_eval(<<'.,.,', 'parser.y', 365)
     1765module_eval(<<'.,.,', 'parser.y', 408)
    17231766  def _reduce_59(val, _values, result)
    17241767        @@logger.debug("#{__FILE__}:#{__LINE__}: c_duration = #{val[0]} at #{@filename}:#{@lineno}")
     
    17291772.,.,
    17301773
    1731 module_eval(<<'.,.,', 'parser.y', 370)
     1774module_eval(<<'.,.,', 'parser.y', 413)
    17321775  def _reduce_60(val, _values, result)
    17331776        @@logger.debug("#{__FILE__}:#{__LINE__}: c_string = #{val[0]} at #{@filename}:#{@lineno}")
     
    17381781.,.,
    17391782
    1740 module_eval(<<'.,.,', 'parser.y', 375)
     1783module_eval(<<'.,.,', 'parser.y', 418)
    17411784  def _reduce_61(val, _values, result)
    17421785        assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN)}
     
    17501793# reduce 62 omitted
    17511794
    1752 module_eval(<<'.,.,', 'parser.y', 387)
     1795module_eval(<<'.,.,', 'parser.y', 430)
    17531796  def _reduce_63(val, _values, result)
    17541797        result = [val[0]]
     
    17581801.,.,
    17591802
    1760 module_eval(<<'.,.,', 'parser.y', 391)
     1803module_eval(<<'.,.,', 'parser.y', 434)
    17611804  def _reduce_64(val, _values, result)
    17621805        result = (val[0] << val[1])
     
    17661809.,.,
    17671810
    1768 module_eval(<<'.,.,', 'parser.y', 397)
     1811module_eval(<<'.,.,', 'parser.y', 440)
    17691812  def _reduce_65(val, _values, result)
    17701813        @@logger.debug("#{__FILE__}:#{__LINE__}:c_attribute: #{val[0]} matches #{val[3]}")
     
    17781821.,.,
    17791822
    1780 module_eval(<<'.,.,', 'parser.y', 405)
     1823module_eval(<<'.,.,', 'parser.y', 448)
    17811824  def _reduce_66(val, _values, result)
    17821825        @@logger.debug("c_attribute: #{val[0]} matches #{val[3]}}")
     
    17881831.,.,
    17891832
    1790 module_eval(<<'.,.,', 'parser.y', 412)
     1833module_eval(<<'.,.,', 'parser.y', 455)
    17911834  def _reduce_67(val, _values, result)
    17921835        @@logger.debug("c_attribute: #{val[0]} matches #{val[5]}}")
     
    17981841.,.,
    17991842
    1800 module_eval(<<'.,.,', 'parser.y', 418)
     1843module_eval(<<'.,.,', 'parser.y', 461)
    18011844  def _reduce_68(val, _values, result)
    18021845        assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::C_ATTRIBUTE)}
     
    18071850.,.,
    18081851
    1809 module_eval(<<'.,.,', 'parser.y', 425)
     1852module_eval(<<'.,.,', 'parser.y', 468)
    18101853  def _reduce_69(val, _values, result)
    18111854        @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}, c_existence = #{val[1]} at #{@filename}")
     
    18201863.,.,
    18211864
    1822 module_eval(<<'.,.,', 'parser.y', 434)
     1865module_eval(<<'.,.,', 'parser.y', 477)
    18231866  def _reduce_70(val, _values, result)
    18241867        assert_at(__FILE__,__LINE__){ val[2].instance_of?(OpenEhr::AM::Archetype::ConstraintModel::CARDINALITY) }
     
    18341877.,.,
    18351878
    1836 module_eval(<<'.,.,', 'parser.y', 445)
     1879module_eval(<<'.,.,', 'parser.y', 488)
    18371880  def _reduce_71(val, _values, result)
    18381881        result = Array[val[0]]
     
    18421885.,.,
    18431886
    1844 module_eval(<<'.,.,', 'parser.y', 449)
     1887module_eval(<<'.,.,', 'parser.y', 492)
    18451888  def _reduce_72(val, _values, result)
    18461889        result = (val[0] << val[1])
     
    18501893.,.,
    18511894
    1852 module_eval(<<'.,.,', 'parser.y', 453)
     1895module_eval(<<'.,.,', 'parser.y', 496)
    18531896  def _reduce_73(val, _values, result)
    18541897        result = Array[val[0]]
     
    18601903# reduce 74 omitted
    18611904
    1862 module_eval(<<'.,.,', 'parser.y', 459)
     1905module_eval(<<'.,.,', 'parser.y', 502)
    18631906  def _reduce_75(val, _values, result)
    18641907        @@logger.debug("#{__FILE__}:#{__LINE__}: c_includes: assertions = #{val[1]}")
     
    18711914# reduce 76 omitted
    18721915
    1873 module_eval(<<'.,.,', 'parser.y', 468)
     1916module_eval(<<'.,.,', 'parser.y', 511)
    18741917  def _reduce_77(val, _values, result)
    18751918        @@logger.debug("#{__FILE__}:#{__LINE__}: c_excludes: assertions = #{val[1]}")
     
    18961939# reduce 85 omitted
    18971940
    1898 module_eval(<<'.,.,', 'parser.y', 491)
     1941module_eval(<<'.,.,', 'parser.y', 534)
    18991942  def _reduce_86(val, _values, result)
    19001943        dadl_section = val[1]
     
    19091952# reduce 88 omitted
    19101953
    1911 module_eval(<<'.,.,', 'parser.y', 501)
     1954module_eval(<<'.,.,', 'parser.y', 544)
    19121955  def _reduce_89(val, _values, result)
    1913         @@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section attr_vals = \n#{val[0].to_yaml}")
     1956        #@@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section attr_vals = \n#{val[0].to_yaml}")
    19141957    result = val[0]
    19151958 
     
    19181961.,.,
    19191962
    1920 module_eval(<<'.,.,', 'parser.y', 506)
     1963module_eval(<<'.,.,', 'parser.y', 549)
    19211964  def _reduce_90(val, _values, result)
    1922         @@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section complex_object_block = \n#{val[0].to_yaml}")
     1965        #@@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section complex_object_block = \n#{val[0].to_yaml}")
    19231966    result = val[0]
    19241967 
     
    19271970.,.,
    19281971
    1929 module_eval(<<'.,.,', 'parser.y', 513)
     1972module_eval(<<'.,.,', 'parser.y', 556)
    19301973  def _reduce_91(val, _values, result)
    19311974        result = Array[val[0]]
     
    19351978.,.,
    19361979
    1937 module_eval(<<'.,.,', 'parser.y', 517)
     1980module_eval(<<'.,.,', 'parser.y', 560)
    19381981  def _reduce_92(val, _values, result)
    19391982        result = (val[0] << val[1])
     
    19431986.,.,
    19441987
    1945 module_eval(<<'.,.,', 'parser.y', 521)
     1988module_eval(<<'.,.,', 'parser.y', 564)
    19461989  def _reduce_93(val, _values, result)
    19471990        result = (val[0] << val[2])
     
    19511994.,.,
    19521995
    1953 module_eval(<<'.,.,', 'parser.y', 526)
     1996module_eval(<<'.,.,', 'parser.y', 569)
    19541997  def _reduce_94(val, _values, result)
    19551998        @@logger.debug("#{__FILE__}:#{__LINE__}:attr_val\n attr_id = #{val[0]}, object_block = #{val[1]}")
     
    19602003.,.,
    19612004
    1962 module_eval(<<'.,.,', 'parser.y', 532)
     2005module_eval(<<'.,.,', 'parser.y', 575)
    19632006  def _reduce_95(val, _values, result)
    19642007        @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}")
     
    19712014# reduce 96 omitted
    19722015
    1973 module_eval(<<'.,.,', 'parser.y', 539)
     2016module_eval(<<'.,.,', 'parser.y', 582)
    19742017  def _reduce_97(val, _values, result)
    19752018        result = val[0]
     
    19792022.,.,
    19802023
    1981 module_eval(<<'.,.,', 'parser.y', 543)
     2024module_eval(<<'.,.,', 'parser.y', 586)
    19822025  def _reduce_98(val, _values, result)
    19832026        result = val[0]
     
    19872030.,.,
    19882031
    1989 module_eval(<<'.,.,', 'parser.y', 548)
     2032module_eval(<<'.,.,', 'parser.y', 591)
    19902033  def _reduce_99(val, _values, result)
    19912034        result = val[0]
     
    19952038.,.,
    19962039
    1997 module_eval(<<'.,.,', 'parser.y', 552)
     2040module_eval(<<'.,.,', 'parser.y', 595)
    19982041  def _reduce_100(val, _values, result)
    19992042        result = val[0]
     
    20032046.,.,
    20042047
    2005 module_eval(<<'.,.,', 'parser.y', 557)
     2048module_eval(<<'.,.,', 'parser.y', 600)
    20062049  def _reduce_101(val, _values, result)
    20072050        result = {:untyped_multiple_attr_object_block => val[0]}
     
    20112054.,.,
    20122055
    2013 module_eval(<<'.,.,', 'parser.y', 561)
     2056module_eval(<<'.,.,', 'parser.y', 604)
    20142057  def _reduce_102(val, _values, result)
    20152058        result = {:type_identifier => val[0], :untyped_multiple_attr_object_block => val[1]}
     
    20192062.,.,
    20202063
    2021 module_eval(<<'.,.,', 'parser.y', 566)
     2064module_eval(<<'.,.,', 'parser.y', 609)
    20222065  def _reduce_103(val, _values, result)
    2023         result = {:multiple_attr_object_block_head => val[0], :keyed_objects => val[1]}
    2024  
    2025     result
    2026   end
    2027 .,.,
    2028 
    2029 module_eval(<<'.,.,', 'parser.y', 571)
     2066        result = val[1]
     2067 
     2068    result
     2069  end
     2070.,.,
     2071
     2072module_eval(<<'.,.,', 'parser.y', 614)
    20302073  def _reduce_104(val, _values, result)
    20312074        result = val[0]
     
    20352078.,.,
    20362079
    2037 module_eval(<<'.,.,', 'parser.y', 576)
     2080module_eval(<<'.,.,', 'parser.y', 619)
    20382081  def _reduce_105(val, _values, result)
    20392082        result = Array[val[0]]
     
    20432086.,.,
    20442087
    2045 module_eval(<<'.,.,', 'parser.y', 580)
     2088module_eval(<<'.,.,', 'parser.y', 623)
    20462089  def _reduce_106(val, _values, result)
    20472090        result = (val[0] << val[1])
     
    20512094.,.,
    20522095
    2053 module_eval(<<'.,.,', 'parser.y', 585)
     2096module_eval(<<'.,.,', 'parser.y', 628)
    20542097  def _reduce_107(val, _values, result)
    2055         @@logger.debug("#{__FILE__}:#{__LINE__}: keyed_object = #{val[0]} at #{@filename}:#{@lineno}")
    2056     result = {:object_key => val[0], :object_block => val[2]}
    2057  
    2058     result
    2059   end
    2060 .,.,
    2061 
    2062 module_eval(<<'.,.,', 'parser.y', 591)
     2098        #@@logger.debug("#{__FILE__}:#{__LINE__}: keyed_object = #{val[0]} at #{@filename}:#{@lineno}")
     2099    #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]]
     2102    else
     2103      raise OpenEhr::ADL::Exception::Parser::Error, "Missing type_identifier at #{@filename}:#{@lineno} "
     2104    end
     2105 
     2106    result
     2107  end
     2108.,.,
     2109
     2110module_eval(<<'.,.,', 'parser.y', 639)
    20632111  def _reduce_108(val, _values, result)
    20642112        @@logger.debug("object_key: [#{val[1]}] at #{@filename}:#{@lineno}")
     
    20692117.,.,
    20702118
    2071 module_eval(<<'.,.,', 'parser.y', 597)
     2119module_eval(<<'.,.,', 'parser.y', 645)
    20722120  def _reduce_109(val, _values, result)
    20732121        result = {:untyped_single_attr_object_block => val[0]}
     
    20772125.,.,
    20782126
    2079 module_eval(<<'.,.,', 'parser.y', 601)
     2127module_eval(<<'.,.,', 'parser.y', 649)
    20802128  def _reduce_110(val, _values, result)
    20812129        result = {:type_identifier => val[0], :untyped_single_attr_object_block => val[1]}
     
    20852133.,.,
    20862134
    2087 module_eval(<<'.,.,', 'parser.y', 606)
     2135module_eval(<<'.,.,', 'parser.y', 654)
    20882136  def _reduce_111(val, _values, result)
    20892137        @@logger.debug("#{__FILE__}:#{__LINE__}: single_attr_object_complex_head = #{val[0]} at #{@filename}:#{@lineno}")
    2090     result = {:single_attr_object_complex_head => val[0]}
    2091  
    2092     result
    2093   end
    2094 .,.,
    2095 
    2096 module_eval(<<'.,.,', 'parser.y', 611)
     2138    #result = {:single_attr_object_complex_head => val[0]}
     2139    result = []
     2140 
     2141    result
     2142  end
     2143.,.,
     2144
     2145module_eval(<<'.,.,', 'parser.y', 660)
    20972146  def _reduce_112(val, _values, result)
    20982147        @@logger.debug("#{__FILE__}:#{__LINE__}: attr_vals = #{val[1]} at #{@filename}:#{@lineno}")
    2099     result = {:single_attr_object_complex_head => val[0], :attr_vals => val[1]}
     2148    #result = {:single_attr_object_complex_head => val[0], :attr_vals => val[1]}
     2149    result = val[1]
    21002150 
    21012151    result
     
    21052155# reduce 113 omitted
    21062156
    2107 module_eval(<<'.,.,', 'parser.y', 617)
     2157module_eval(<<'.,.,', 'parser.y', 667)
    21082158  def _reduce_114(val, _values, result)
    21092159        @@logger.debug("#{__FILE__}:#{__LINE__}: untyped_primitive_object_block = #{val[0]} at #{@filename}:#{@lineno}")
     
    21142164.,.,
    21152165
    2116 module_eval(<<'.,.,', 'parser.y', 622)
     2166module_eval(<<'.,.,', 'parser.y', 672)
    21172167  def _reduce_115(val, _values, result)
    21182168        @@logger.debug("#{__FILE__}:#{__LINE__}: type_identifier = #{val[0]}, untyped_primitive_object_block = #{val[1]} at #{@filename}:#{@lineno}")
     
    21232173.,.,
    21242174
    2125 module_eval(<<'.,.,', 'parser.y', 627)
     2175module_eval(<<'.,.,', 'parser.y', 677)
    21262176  def _reduce_116(val, _values, result)
    2127         @@logger.debug("#{__FILE__}:#{__LINE__}: primitive_object_block = <#{val[1]}> at #{@filename}:#{@lineno}")
     2177        #@@logger.debug("#{__FILE__}:#{__LINE__}: primitive_object_block = <#{val[1]}> at #{@filename}:#{@lineno}")
    21282178    result = val[1]
    21292179 
     
    21322182.,.,
    21332183
    2134 module_eval(<<'.,.,', 'parser.y', 632)
     2184module_eval(<<'.,.,', 'parser.y', 682)
    21352185  def _reduce_117(val, _values, result)
    21362186        result = val[0]
     
    21402190.,.,
    21412191
    2142 module_eval(<<'.,.,', 'parser.y', 636)
     2192module_eval(<<'.,.,', 'parser.y', 686)
    21432193  def _reduce_118(val, _values, result)
    21442194        result = val[0]
     
    21482198.,.,
    21492199
    2150 module_eval(<<'.,.,', 'parser.y', 640)
     2200module_eval(<<'.,.,', 'parser.y', 690)
    21512201  def _reduce_119(val, _values, result)
    21522202        result = val[0]
     
    21562206.,.,
    21572207
    2158 module_eval(<<'.,.,', 'parser.y', 644)
     2208module_eval(<<'.,.,', 'parser.y', 694)
    21592209  def _reduce_120(val, _values, result)
    21602210        result = val[0]
     
    21642214.,.,
    21652215
    2166 module_eval(<<'.,.,', 'parser.y', 648)
     2216module_eval(<<'.,.,', 'parser.y', 698)
    21672217  def _reduce_121(val, _values, result)
    21682218        result = val[0]
     
    21722222.,.,
    21732223
    2174 module_eval(<<'.,.,', 'parser.y', 652)
     2224module_eval(<<'.,.,', 'parser.y', 702)
    21752225  def _reduce_122(val, _values, result)
    21762226        @@logger.debug("string_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    21812231.,.,
    21822232
    2183 module_eval(<<'.,.,', 'parser.y', 657)
     2233module_eval(<<'.,.,', 'parser.y', 707)
    21842234  def _reduce_123(val, _values, result)
    21852235        @@logger.debug("integer_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    21902240.,.,
    21912241
    2192 module_eval(<<'.,.,', 'parser.y', 662)
     2242module_eval(<<'.,.,', 'parser.y', 712)
    21932243  def _reduce_124(val, _values, result)
    21942244        @@logger.debug("real_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    21992249.,.,
    22002250
    2201 module_eval(<<'.,.,', 'parser.y', 667)
     2251module_eval(<<'.,.,', 'parser.y', 717)
    22022252  def _reduce_125(val, _values, result)
    22032253        @@logger.debug("boolean_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    22082258.,.,
    22092259
    2210 module_eval(<<'.,.,', 'parser.y', 672)
     2260module_eval(<<'.,.,', 'parser.y', 722)
    22112261  def _reduce_126(val, _values, result)
    22122262        @@logger.debug("character_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    22172267.,.,
    22182268
    2219 module_eval(<<'.,.,', 'parser.y', 677)
     2269module_eval(<<'.,.,', 'parser.y', 727)
    22202270  def _reduce_127(val, _values, result)
    22212271        @@logger.debug("date_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    22262276.,.,
    22272277
    2228 module_eval(<<'.,.,', 'parser.y', 682)
     2278module_eval(<<'.,.,', 'parser.y', 732)
    22292279  def _reduce_128(val, _values, result)
    22302280        @@logger.debug("time_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    22352285.,.,
    22362286
    2237 module_eval(<<'.,.,', 'parser.y', 687)
     2287module_eval(<<'.,.,', 'parser.y', 737)
    22382288  def _reduce_129(val, _values, result)
    22392289        @@logger.debug("date_time_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    22442294.,.,
    22452295
    2246 module_eval(<<'.,.,', 'parser.y', 692)
     2296module_eval(<<'.,.,', 'parser.y', 742)
    22472297  def _reduce_130(val, _values, result)
    22482298        @@logger.debug("duration_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    22532303.,.,
    22542304
    2255 module_eval(<<'.,.,', 'parser.y', 697)
     2305module_eval(<<'.,.,', 'parser.y', 747)
    22562306  def _reduce_131(val, _values, result)
    22572307        @@logger.debug("uri_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    22622312.,.,
    22632313
    2264 module_eval(<<'.,.,', 'parser.y', 703)
     2314module_eval(<<'.,.,', 'parser.y', 753)
    22652315  def _reduce_132(val, _values, result)
    22662316        @@logger.debug("string_list_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    22712321.,.,
    22722322
    2273 module_eval(<<'.,.,', 'parser.y', 708)
     2323module_eval(<<'.,.,', 'parser.y', 758)
    22742324  def _reduce_133(val, _values, result)
    22752325        result = val[0]
     
    22792329.,.,
    22802330
    2281 module_eval(<<'.,.,', 'parser.y', 712)
     2331module_eval(<<'.,.,', 'parser.y', 762)
    22822332  def _reduce_134(val, _values, result)
    22832333        result = val[0]
     
    22872337.,.,
    22882338
    2289 module_eval(<<'.,.,', 'parser.y', 716)
     2339module_eval(<<'.,.,', 'parser.y', 766)
    22902340  def _reduce_135(val, _values, result)
    22912341        result = val[0]
     
    22952345.,.,
    22962346
    2297 module_eval(<<'.,.,', 'parser.y', 720)
     2347module_eval(<<'.,.,', 'parser.y', 770)
    22982348  def _reduce_136(val, _values, result)
    22992349        result = val[0]
     
    23032353.,.,
    23042354
    2305 module_eval(<<'.,.,', 'parser.y', 724)
     2355module_eval(<<'.,.,', 'parser.y', 774)
    23062356  def _reduce_137(val, _values, result)
    23072357        result = val[0]
     
    23112361.,.,
    23122362
    2313 module_eval(<<'.,.,', 'parser.y', 728)
     2363module_eval(<<'.,.,', 'parser.y', 778)
    23142364  def _reduce_138(val, _values, result)
    23152365        result = val[0]
     
    23192369.,.,
    23202370
    2321 module_eval(<<'.,.,', 'parser.y', 732)
     2371module_eval(<<'.,.,', 'parser.y', 782)
    23222372  def _reduce_139(val, _values, result)
    23232373        result = val[0]
     
    23272377.,.,
    23282378
    2329 module_eval(<<'.,.,', 'parser.y', 736)
     2379module_eval(<<'.,.,', 'parser.y', 786)
    23302380  def _reduce_140(val, _values, result)
    23312381        result = val[0]
     
    23472397# reduce 146 omitted
    23482398
    2349 module_eval(<<'.,.,', 'parser.y', 748)
     2399module_eval(<<'.,.,', 'parser.y', 798)
    23502400  def _reduce_147(val, _values, result)
    23512401        @@logger.debug("V_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
     
    23562406.,.,
    23572407
    2358 module_eval(<<'.,.,', 'parser.y', 753)
     2408module_eval(<<'.,.,', 'parser.y', 803)
    23592409  def _reduce_148(val, _values, result)
    23602410        @@logger.debug("V_GENERIC_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
     
    23652415.,.,
    23662416
    2367 module_eval(<<'.,.,', 'parser.y', 759)
     2417module_eval(<<'.,.,', 'parser.y', 809)
    23682418  def _reduce_149(val, _values, result)
    23692419        @@logger.debug("V_STRING: #{val[0]} at #{@filename}:#{@lineno}")
     
    23742424.,.,
    23752425
    2376 module_eval(<<'.,.,', 'parser.y', 765)
     2426module_eval(<<'.,.,', 'parser.y', 815)
    23772427  def _reduce_150(val, _values, result)
    23782428        result = [val[0],val[2]]
     
    23822432.,.,
    23832433
    2384 module_eval(<<'.,.,', 'parser.y', 769)
     2434module_eval(<<'.,.,', 'parser.y', 819)
    23852435  def _reduce_151(val, _values, result)
    23862436        result = val[0] << val[2]
     
    23902440.,.,
    23912441
    2392 module_eval(<<'.,.,', 'parser.y', 773)
     2442module_eval(<<'.,.,', 'parser.y', 823)
    23932443  def _reduce_152(val, _values, result)
    23942444        result = val[0]
     
    23982448.,.,
    23992449
    2400 module_eval(<<'.,.,', 'parser.y', 778)
     2450module_eval(<<'.,.,', 'parser.y', 828)
    24012451  def _reduce_153(val, _values, result)
    24022452        begin
     
    24112461.,.,
    24122462
    2413 module_eval(<<'.,.,', 'parser.y', 787)
     2463module_eval(<<'.,.,', 'parser.y', 837)
    24142464  def _reduce_154(val, _values, result)
    24152465        begin
     
    24242474.,.,
    24252475
    2426 module_eval(<<'.,.,', 'parser.y', 796)
     2476module_eval(<<'.,.,', 'parser.y', 846)
    24272477  def _reduce_155(val, _values, result)
    24282478        begin
     
    24612511# reduce 167 omitted
    24622512
    2463 module_eval(<<'.,.,', 'parser.y', 820)
     2513module_eval(<<'.,.,', 'parser.y', 870)
    24642514  def _reduce_168(val, _values, result)
    24652515        begin
     
    24742524.,.,
    24752525
    2476 module_eval(<<'.,.,', 'parser.y', 829)
     2526module_eval(<<'.,.,', 'parser.y', 879)
    24772527  def _reduce_169(val, _values, result)
    24782528        begin
     
    24872537.,.,
    24882538
    2489 module_eval(<<'.,.,', 'parser.y', 838)
     2539module_eval(<<'.,.,', 'parser.y', 888)
    24902540  def _reduce_170(val, _values, result)
    24912541        begin
     
    25242574# reduce 182 omitted
    25252575
    2526 module_eval(<<'.,.,', 'parser.y', 863)
     2576module_eval(<<'.,.,', 'parser.y', 913)
    25272577  def _reduce_183(val, _values, result)
    25282578        result = true
     
    25322582.,.,
    25332583
    2534 module_eval(<<'.,.,', 'parser.y', 867)
     2584module_eval(<<'.,.,', 'parser.y', 917)
    25352585  def _reduce_184(val, _values, result)
    25362586        result = false
     
    25542604# reduce 191 omitted
    25552605
    2556 module_eval(<<'.,.,', 'parser.y', 882)
     2606module_eval(<<'.,.,', 'parser.y', 932)
    25572607  def _reduce_192(val, _values, result)
    25582608        result = val[0]
     
    26122662# reduce 217 omitted
    26132663
    2614 module_eval(<<'.,.,', 'parser.y', 917)
     2664module_eval(<<'.,.,', 'parser.y', 967)
    26152665  def _reduce_218(val, _values, result)
    26162666        @@logger.debug("V_ISO8601_EXTENDED_DATE_TIME: #{val[0]} at #{@filename}:#{@lineno}")
     
    26452695# reduce 230 omitted
    26462696
    2647 module_eval(<<'.,.,', 'parser.y', 937)
     2697module_eval(<<'.,.,', 'parser.y', 987)
    26482698  def _reduce_231(val, _values, result)
    26492699        @@logger.debug("V_ISO8601_DURATION: #{val[0]} at #{@filename}:#{@lineno}")
     
    26782728# reduce 243 omitted
    26792729
    2680 module_eval(<<'.,.,', 'parser.y', 957)
     2730module_eval(<<'.,.,', 'parser.y', 1007)
    26812731  def _reduce_244(val, _values, result)
    26822732        @@logger.debug("#{__FILE__}:#{__LINE__}: V_QUALIFIED_TERM_CODE_REF = #{val[0]} at #{@filename}:#{@lineno}")
     
    26932743# reduce 247 omitted
    26942744
    2695 module_eval(<<'.,.,', 'parser.y', 967)
     2745module_eval(<<'.,.,', 'parser.y', 1017)
    26962746  def _reduce_248(val, _values, result)
    26972747        @@logger.debug("#{__FILE__}:#{__LINE__}: V_URI = #{val[0]} at #{@filename}:#{@lineno}")
     
    27182768# reduce 256 omitted
    27192769
    2720 module_eval(<<'.,.,', 'parser.y', 990)
     2770module_eval(<<'.,.,', 'parser.y', 1040)
    27212771  def _reduce_257(val, _values, result)
    27222772        @@logger.debug("#{__FILE__}:#{__LINE__}, boolean_node:  relative_path = #{val[0]}, regexp_body => #{val[3]} at #{@filename}")
     
    27832833# reduce 285 omitted
    27842834
    2785 module_eval(<<'.,.,', 'parser.y', 1037)
     2835module_eval(<<'.,.,', 'parser.y', 1087)
    27862836  def _reduce_286(val, _values, result)
    27872837        @@logger.debug("#{__FILE__}:#{__LINE__}, relative_path = #{val[0]}")
     
    27922842.,.,
    27932843
    2794 module_eval(<<'.,.,', 'parser.y', 1042)
     2844module_eval(<<'.,.,', 'parser.y', 1092)
    27952845  def _reduce_287(val, _values, result)
    27962846        @@logger.debug("#{__FILE__}:#{__LINE__}, relative_path = #{val[0]}/#{val[2]}")
     
    28012851.,.,
    28022852
    2803 module_eval(<<'.,.,', 'parser.y', 1048)
     2853module_eval(<<'.,.,', 'parser.y', 1098)
    28042854  def _reduce_288(val, _values, result)
    28052855        @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}")
     
    28102860.,.,
    28112861
    2812 module_eval(<<'.,.,', 'parser.y', 1053)
     2862module_eval(<<'.,.,', 'parser.y', 1103)
    28132863  def _reduce_289(val, _values, result)
    28142864        @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}")
     
    28192869.,.,
    28202870
    2821 module_eval(<<'.,.,', 'parser.y', 1065)
     2871module_eval(<<'.,.,', 'parser.y', 1115)
    28222872  def _reduce_290(val, _values, result)
    28232873        result = Range.new(1,1)
     
    28272877.,.,
    28282878
    2829 module_eval(<<'.,.,', 'parser.y', 1069)
     2879module_eval(<<'.,.,', 'parser.y', 1119)
    28302880  def _reduce_291(val, _values, result)
    28312881        result = val[3]
     
    28352885.,.,
    28362886
    2837 module_eval(<<'.,.,', 'parser.y', 1074)
     2887module_eval(<<'.,.,', 'parser.y', 1124)
    28382888  def _reduce_292(val, _values, result)
    28392889        begin
     
    28482898.,.,
    28492899
    2850 module_eval(<<'.,.,', 'parser.y', 1083)
     2900module_eval(<<'.,.,', 'parser.y', 1133)
    28512901  def _reduce_293(val, _values, result)
    28522902        begin
     
    28622912.,.,
    28632913
    2864 module_eval(<<'.,.,', 'parser.y', 1094)
     2914module_eval(<<'.,.,', 'parser.y', 1144)
    28652915  def _reduce_294(val, _values, result)
    28662916        result = OpenEhr::AM::Archetype::ConstraintModel::CARDINALITY.new
     
    28702920.,.,
    28712921
    2872 module_eval(<<'.,.,', 'parser.y', 1099)
     2922module_eval(<<'.,.,', 'parser.y', 1149)
    28732923  def _reduce_295(val, _values, result)
    28742924        result = val[0]
     
    28922942# reduce 302 omitted
    28932943
    2894 module_eval(<<'.,.,', 'parser.y', 1111)
     2944module_eval(<<'.,.,', 'parser.y', 1161)
    28952945  def _reduce_303(val, _values, result)
    28962946        result = val[0]
     
    29002950.,.,
    29012951
    2902 module_eval(<<'.,.,', 'parser.y', 1115)
     2952module_eval(<<'.,.,', 'parser.y', 1165)
    29032953  def _reduce_304(val, _values, result)
    29042954        result = val[0]
     
    29102960# reduce 305 omitted
    29112961
    2912 module_eval(<<'.,.,', 'parser.y', 1122)
     2962module_eval(<<'.,.,', 'parser.y', 1172)
    29132963  def _reduce_306(val, _values, result)
    29142964        case val[3]
     
    29252975# reduce 307 omitted
    29262976
    2927 module_eval(<<'.,.,', 'parser.y', 1133)
     2977module_eval(<<'.,.,', 'parser.y', 1183)
    29282978  def _reduce_308(val, _values, result)
    29292979        result = val[0]
     
    29332983.,.,
    29342984
    2935 module_eval(<<'.,.,', 'parser.y', 1137)
     2985module_eval(<<'.,.,', 'parser.y', 1187)
    29362986  def _reduce_309(val, _values, result)
    29372987        result = OpenEhr::RM::Support::AssumedTypes::Interval.new(val[0], val[2])
     
    30273077# reduce 352 omitted
    30283078
    3029 module_eval(<<'.,.,', 'parser.y', 1203)
     3079module_eval(<<'.,.,', 'parser.y', 1253)
    30303080  def _reduce_353(val, _values, result)
    30313081        result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN.new(:true_valid => true)
     
    30353085.,.,
    30363086
    3037 module_eval(<<'.,.,', 'parser.y', 1207)
     3087module_eval(<<'.,.,', 'parser.y', 1257)
    30383088  def _reduce_354(val, _values, result)
    30393089        result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN.new(:true_valid => false)
     
    30433093.,.,
    30443094
    3045 module_eval(<<'.,.,', 'parser.y', 1211)
     3095module_eval(<<'.,.,', 'parser.y', 1261)
    30463096  def _reduce_355(val, _values, result)
    30473097        result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN.new(:true_valid => true,:false_valid => false)
     
    30513101.,.,
    30523102
    3053 module_eval(<<'.,.,', 'parser.y', 1215)
     3103module_eval(<<'.,.,', 'parser.y', 1265)
    30543104  def _reduce_356(val, _values, result)
    30553105        result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN.new(:true_valid => false,:false_valid => true)
     
    30593109.,.,
    30603110
    3061 module_eval(<<'.,.,', 'parser.y', 1220)
     3111module_eval(<<'.,.,', 'parser.y', 1270)
    30623112  def _reduce_357(val, _values, result)
    30633113        result = val[0]
     
    30673117.,.,
    30683118
    3069 module_eval(<<'.,.,', 'parser.y', 1224)
     3119module_eval(<<'.,.,', 'parser.y', 1274)
    30703120  def _reduce_358(val, _values, result)
    30713121        result = val[0]
     
    30763126.,.,
    30773127
    3078 module_eval(<<'.,.,', 'parser.y', 1229)
     3128module_eval(<<'.,.,', 'parser.y', 1279)
    30793129  def _reduce_359(val, _values, result)
    30803130        raise 'Not implemented yet'
     
    30943144# reduce 364 omitted
    30953145
    3096 module_eval(<<'.,.,', 'parser.y', 1241)
     3146module_eval(<<'.,.,', 'parser.y', 1291)
    30973147  def _reduce_365(val, _values, result)
    30983148        @in_interval = false
     
    31033153.,.,
    31043154
    3105 module_eval(<<'.,.,', 'parser.y', 1248)
     3155module_eval(<<'.,.,', 'parser.y', 1298)
    31063156  def _reduce_366(val, _values, result)
    31073157          result = val[0]
     
    31113161.,.,
    31123162
    3113 module_eval(<<'.,.,', 'parser.y', 1252)
     3163module_eval(<<'.,.,', 'parser.y', 1302)
    31143164  def _reduce_367(val, _values, result)
    31153165          result = val[0]
     
    31193169.,.,
    31203170
    3121 module_eval(<<'.,.,', 'parser.y', 1258)
     3171module_eval(<<'.,.,', 'parser.y', 1308)
    31223172  def _reduce_368(val, _values, result)
    31233173        @@logger.debug("#{__FILE__}:#{__LINE__}, START_TERM_CODE_CONSTRAINT = #{val[0]} at #{@filename}")
     
    31363186# reduce 371 omitted
    31373187
    3138 module_eval(<<'.,.,', 'parser.y', 1274)
     3188module_eval(<<'.,.,', 'parser.y', 1324)
    31393189  def _reduce_372(val, _values, result)
    31403190          result = val[0]
     
    31443194.,.,
    31453195
    3146 module_eval(<<'.,.,', 'parser.y', 1279)
     3196module_eval(<<'.,.,', 'parser.y', 1329)
    31473197  def _reduce_373(val, _values, result)
    31483198          result = val[0]
     
    31523202.,.,
    31533203
    3154 module_eval(<<'.,.,', 'parser.y', 1283)
     3204module_eval(<<'.,.,', 'parser.y', 1333)
    31553205  def _reduce_374(val, _values, result)
    31563206        @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{word} at #{@filename}")
     
    31613211.,.,
    31623212
    3163 module_eval(<<'.,.,', 'parser.y', 1294)
     3213module_eval(<<'.,.,', 'parser.y', 1344)
    31643214  def _reduce_375(val, _values, result)
    31653215        result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_DURATION.new #val[0]
  • ruby/trunk/lib/adl_parser/lib/parser.y

    r323 r326  
    123123arch_language: #-- empty is ok for ADL 1.4 tools
    124124  {
    125     result = {:arch_language => nil}
     125    result = {:arch_language => ""}
    126126  }
    127127    | SYM_LANGUAGE dadl_section
    128128  {
    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
    130134  }
    131135  | SYM_LANGUAGE error
     
    138142    | SYM_DESCRIPTION dadl_section
    139143  {
    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)
    141184  }
    142185  | SYM_DESCRIPTION error
     
    500543    |  attr_vals
    501544  {
    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}")
    503546    result = val[0]
    504547  }
    505548  | complex_object_block
    506549  {
    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}")
    508551    result = val[0]
    509552  }
     
    565608untyped_multiple_attr_object_block: multiple_attr_object_block_head keyed_objects SYM_END_DBLOCK
    566609  {
    567     result = {:multiple_attr_object_block_head => val[0], :keyed_objects => val[1]}
     610    result = val[1]
    568611  }
    569612
     
    584627keyed_object: object_key SYM_EQ object_block
    585628  {
    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
    588636  }
    589637
     
    606654  {
    607655    @@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 = []
    609658  }
    610659  | single_attr_object_complex_head attr_vals SYM_END_DBLOCK
    611660  {
    612661    @@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]
    614664  }
    615665single_attr_object_complex_head: SYM_START_DBLOCK
     
    626676untyped_primitive_object_block: SYM_START_DBLOCK primitive_object_value SYM_END_DBLOCK
    627677  {
    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}")
    629679    result = val[1]
    630680  }
  • ruby/trunk/lib/adl_parser/test/parser_test.rb

    r323 r326  
    1010  end
    1111
     12
     13  must "openEHR-EHR-SECTION.reason_for_encounter.v1.adl be properly parsed" do
     14    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-SECTION.reason_for_encounter.v1.adl")
     15    assert_nothing_raised do
     16      ast = @parser.parse(file, 'openEHR-EHR-SECTION.reason_for_encounter.v1')
     17      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     18      assert_instance_of OpenEhr::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY, ast.ontology
     19    end
     20  end
     21
    1222  must "openEHR-EHR-CLUSTER.exam-uterus.v1.adl be properly parsed" do
    1323    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-uterus.v1.adl")
     
    157167    end
    158168  end
    159 
    160   must "openEHR-EHR-SECTION.reason_for_encounter.v1.adl be properly parsed" do
    161     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-SECTION.reason_for_encounter.v1.adl")
    162     assert_nothing_raised do
    163       ast = @parser.parse(file, 'openEHR-EHR-SECTION.reason_for_encounter.v1')
    164       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    165     end
    166   end
    167 
    168169
    169170
     
    298299    end
    299300  end
    300 
    301301end
Note: See TracChangeset for help on using the changeset viewer.