# # DO NOT MODIFY!!!! # This file is automatically generated by Racc 1.4.6 # from Racc grammer file "". # require 'racc/parser.rb' $:.unshift File.join(File.dirname(__FILE__)) require 'logger' require 'yaml' require 'rubygems' require 'open_ehr' #require 'adl_parser.rb' #require 'am.rb' #require 'rm.rb' #require 'rm/support/assumed_types.rb' #require 'assumed_library_types.rb' $DEBUG = true module OpenEhr module ADL class Parser < Racc::Parser module_eval(<<'...end parser.y/module_eval...', 'parser.y', 1290) def assert_at(file,line, message = "") unless yield raise "Assertion failed !: #{file}, #{line}: #{message}" end end if $DEBUG @@logger = Logger.new('log/parser.log','daily') @@logger.level = Logger::DEBUG else @@logger = Logger.new(STDOUT) @@logger.level = Logger::WARN end ###----------/* keywords */ --------------------------------------------- ### @@adl_reserved = { ### 'archetype' => :SYM_ARCHETYPE, ### 'adl_version' => :SYM_ADL_VERSION, ### 'controlled' => :SYM_IS_CONTROLLED, ### 'specialize' => :SYM_SPECIALIZE, ### 'concept' => :SYM_CONCEPT, ### 'language' => :SYM_LANGUAGE, ### 'description' => :SYM_DESCRIPTION, ### 'definition' => :SYM_DEFINITION, ### 'invariant' => :SYM_INVARIANT, ### 'ontology' => :SYM_ONTOLOGY, ### 'matches' => :SYM_MATCHES, ### 'is_in' => :SYM_MATCHES, ### 'occurrences' => :SYM_OCCURRENCES, ### 'true' => :SYM_TRUE, #[Tt][Rr][Uu][Ee] -- -> SYM_TRUE ### 'false' => :SYM_FALSE, # [Ff][Aa][Ll][Ss][Ee] -- -> SYM_FALSE ### 'infinity' => :SYM_INFINITY # [Ii][Nn][Ff][Ii][Nn][Ii][Tt][Yy] -- -> SYM_INFINITY ### } ### @@dadl_reserved = { ### 'true' => :SYM_TRUE, #[Tt][Rr][Uu][Ee] -- -> SYM_TRUE ### 'false' => :SYM_FALSE, # [Ff][Aa][Ll][Ss][Ee] -- -> SYM_FALSE ### 'infinity' => :SYM_INFINITY # [Ii][Nn][Ff][Ii][Nn][Ii][Tt][Yy] -- -> SYM_INFINITY ### } ### @@cadl_reserved = { ### 'then' => :SYM_THEN, # [Tt][Hh][Ee][Nn] ### 'else' => :SYM_ELSE, # [Ee][Ll][Ss][Ee] ### 'and' => :SYM_AND, # [Aa][Nn][Dd] ### 'or' => :SYM_OR, # [Oo][Rr] ### 'xor' => :SYM_XOR, # [Xx][Oo][Rr] ### 'not' => :SYM_NOT, # [Nn][Oo][Tt] ### 'implies' => :SYM_IMPLIES, # [Ii][Mm][Pp][Ll][Ii][Ee][Ss] ### 'true' => :SYM_TRUE, #[Tt][Rr][Uu][Ee] -- -> SYM_TRUE ### 'false' => :SYM_FALSE, # [Ff][Aa][Ll][Ss][Ee] -- -> SYM_FALSE ### 'forall' => :SYM_FORALL, # [Ff][Oo][Rr][_][Aa][Ll][Ll] ### 'exists' => :SYM_EXISTS, # [Ee][Xx][Ii][Ss][Tt][Ss] ### 'existence' => :SYM_EXISTENCE, # [Ee][Xx][Iu][Ss][Tt][Ee][Nn][Cc][Ee] ### 'occurrences' => :SYM_OCCURRENCES, # [Oo][Cc][Cc][Uu][Rr][Rr][Ee][Nn][Cc][Ee][Ss] ### 'cardinality' => :SYM_CARDINALITY, # [Cc][Aa][Rr][Dd][Ii][Nn][Aa][Ll][Ii][Tt][Yy] ### 'ordered' => :SYM_ORDERED, # [Oo][Rr][Dd][Ee][Rr][Ee][Dd] ### 'unordered' => :SYM_UNORDERED, # [Uu][Nn][Oo][Rr][Dd][Ee][Rr][Ee][Dd] ### 'unique' => :SYM_UNIQUE, # [Uu][Nn][Ii][Qq][Uu][Ee] ### 'matches' => :SYM_MATCHES, # [Mm][Aa][Tt][Cc][Hh][Ee][Ss] ### 'is_in' => :SYM_MATCHES, # [Ii][Ss][_][Ii][Nn] ### 'invariant' => :SYM_INVARIANT, # [Ii][Nn][Vv][Aa][Rr][Ii][Aa][Nn][Tt] ### 'infinity' => :SYM_INFINITY, # [Ii][Nn][Ff][Ii][Nn][Ii][Tt][Yy] -- -> SYM_INFINITY ### 'use_node' => :SYM_USE_NODE, # [Uu][Ss][Ee][_][Nn][Oo][Dd][Ee] ### 'use_archetype' => :SYM_ALLOW_ARCHETYPE, # [Uu][Ss][Ee][_][Aa][Rr][Cc][Hh][Ee][Tt][Yy][Pp][Ee] ### 'allow_archetype' => :SYM_ALLOW_ARCHETYPE, # [Aa][Ll][Ll][Oo][Ww][_][Aa][Rr][Cc][Hh][Ee][Tt][Yy][Pp][Ee] ### 'include' => :SYM_INCLUDE, # [Ii][Nn][Cc][Ll][Uu][Dd][Ee] ### 'exclude' => :SYM_EXCLUDE # [Ee][Xx][Cc][Ll][Uu][Dd][Ee] ### } ###----------/* Scanner */ ----------------------------------------------- def scan @@logger.debug("#{__FILE__}:#{__LINE__}: Entering scan at #{@filename}:#{@lineno}:") scanner = OpenEhr::ADL::Scanner::ADLScanner.new(@adl_type, @filename) until @data.nil? do @data = scanner.scan(@data) do |sym, val| yield sym, val end @data = $' # variable $' receives the string after the match end yield :EOF, nil yield false, '$' end # of scan def parse(data, filename, lineno = 1, debug = false) @yydebug = true @parsestring = data @data = data @lineno = lineno @filename = filename @adl_type = [:adl] # {:adl, :cadl, :dadl} @in_regexp = false @in_interval = false @in_c_domain_type = false yyparse self, :scan end def on_error( t, v, values) raise Racc::ParseError, "#{@filename}:#{@lineno}: Inline syntax error on #{v.inspect}" end __END__ ### Local Variables: ### mode:ruby ### mode:font-lock ### comment-column:0 ### comment-start: "### " ### comment-end:"" ### End: ...end parser.y/module_eval... ##### State transition tables begin ### racc_action_table = [ 574, 473, 149, 151, 468, 594, 462, 163, 1, 466, 64, 464, 213, 576, 12, 371, 325, 158, 264, 149, 151, 596, 159, 568, 259, 497, 103, 6, 529, 187, 48, 146, 71, 493, 14, 214, 541, 516, 153, 519, 521, 76, 517, 513, 149, 151, 510, 435, 146, 511, 512, 42, 44, 310, 121, 153, 78, 81, 83, 191, 237, 93, 300, 305, 599, 103, 105, 107, 109, 537, 529, 103, 109, 146, 71, 145, 107, 105, 541, 516, 153, 519, 521, 316, 109, 307, 309, 271, 536, 161, 105, 283, 145, 42, 44, 310, 149, 151, 78, 81, 83, 191, 109, 93, 300, 305, 109, 103, 105, 107, 109, 537, 149, 151, 149, 151, 475, 145, 149, 151, 78, 375, 376, 570, 451, 146, 458, 307, 309, 271, 536, 433, 153, 283, 491, 149, 151, 495, 154, 155, 460, 146, 147, 146, 417, 148, 150, 146, 153, 419, 153, 237, 149, 151, 153, 154, 155, 333, 133, 147, 75, 156, 148, 150, 146, 387, 157, 386, 247, 145, 109, 153, 378, 379, 42, 44, 93, 573, 115, 117, 99, 146, 78, 375, 376, 145, 210, 145, 153, 107, 103, 145, 71, 630, 76, 107, 34, 378, 379, 449, 103, 93, 98, 152, 238, 134, 105, 229, 145, 572, 231, 42, 44, 99, 499, 16, 78, 81, 83, 187, 152, 93, 95, 97, 172, 145, 501, 76, 48, 120, 99, 89, 92, 17, 246, 141, 258, 42, 44, 251, 230, -374, 254, 255, 76, 123, 78, 375, 376, 78, 81, 83, 141, 169, 93, 95, 97, 167, 168, 165, 166, 78, 375, 376, 89, 92, 78, 81, 83, 35, -373, 93, 95, 97, 378, 379, 99, 24, 93, 34, 58, 89, 92, 78, 81, 83, 482, 171, 93, 328, 76, 331, 103, 105, 107, 109, 56, 323, 98, 391, 105, 99, 392, 107, 34, 25, 120, 42, 44, 483, 393, 48, 78, 81, 83, 76, 127, 93, 95, 97, 42, 44, 394, 98, 48, 395, 99, 89, 92, 95, 97, 396, 42, 44, 337, 338, 48, 78, 81, 83, 76, 127, 93, 95, 97, 42, 44, 102, 141, 29, 30, 99, 89, 92, 373, 64, 472, 42, 44, 610, 611, 612, 78, 81, 83, 76, 397, 93, 95, 97, 218, 398, 389, 141, 399, 48, 99, 89, 92, 115, 117, 400, 42, 44, 76, 142, 143, 78, 81, 83, 76, 401, 93, 95, 97, 218, 378, 379, 141, 262, 93, 99, 89, 92, 601, 602, 78, 81, 83, 76, 402, 93, 78, 81, 83, 76, 403, 93, 95, 97, 218, 378, 379, 141, 263, 93, 99, 89, 92, 264, 414, 78, 81, 83, 76, 404, 93, 78, 81, 83, 76, 266, 93, 95, 97, 411, 375, 376, 141, 335, 336, 99, 89, 92, 267, 414, 78, 81, 83, 42, 44, 93, 78, 81, 83, 76, 405, 93, 95, 97, 78, 375, 376, 98, 54, 406, 99, 89, 92, 20, 414, 21, 42, 44, 34, 430, 431, 78, 81, 83, 76, 317, 93, 95, 97, 411, 375, 376, 141, 345, 346, 99, 89, 92, 384, 409, 378, 379, 410, 20, 93, 21, 78, 81, 83, 76, 48, 93, 95, 97, 245, 218, 244, 98, 243, 42, 44, 89, 92, 78, 375, 376, 42, 44, 99, 76, 242, 78, 81, 83, 347, 348, 93, 95, 97, 373, 218, 260, 76, 78, 375, 376, 89, 92, 218, 261, 98, 78, 81, 83, 76, 262, 93, 263, 218, 42, 44, 264, 76, 241, 78, 81, 83, 240, 218, 93, 95, 97, 76, 436, 218, 437, 78, 81, 83, 89, 92, 93, 76, 218, 78, 81, 83, 438, 76, 93, 78, 375, 376, 218, 78, 81, 83, 76, 439, 93, 218, 78, 375, 376, 78, 81, 83, 76, 440, 93, 78, 81, 83, 441, 76, 93, 428, 429, 442, 78, 81, 83, 378, 379, 93, 443, 93, 426, 427, 78, 81, 83, 361, 362, 93, 444, 78, 81, 83, 310, 445, 93, 78, 81, 83, 191, 446, 93, 300, 305, 447, 103, 105, 107, 109, 78, 81, 83, 363, 364, 93, 424, 425, 239, 103, 105, 107, 109, 422, 423, 216, 307, 309, 271, -103, 420, 421, 283, 206, 316, 317, 78, 81, 83, 191, 452, 93, 115, 117, 120, 103, 105, 107, 109, 187, 112, 121, 628, 629, 78, 81, 83, 115, 117, 93, 115, 117, 120, 103, 105, 107, 109, 453, 112, 78, 81, 83, 454, 455, 93, 456, 457, 156, 103, 105, 107, 109, 78, 81, 83, 158, 157, 93, 159, 141, 172, 103, 105, 107, 109, 78, 81, 83, 143, 212, 93, 127, 175, 470, 103, 105, 107, 109, 167, 168, 165, 166, 167, 168, 165, 166, 167, 168, 165, 166, 167, 168, 165, 166, 381, 78, 375, 376, 167, 168, 165, 166, 167, 168, 165, 166, 167, 168, 165, 166, 167, 168, 165, 166, 265, 162, 161, 477, 478, 480, 481, 144, 484, 485, 486, 103, 488, 105, 266, 141, 137, 136, 48, 125, 502, 107, 504, 109, 506, 109, 508, 68, 67, 514, 515, 66, 543, 34, 545, 546, 547, 103, 549, 105, 551, 107, 553, 109, 555, 267, 557, 58, 559, 560, 561, 562, 109, 109, 109, 109, 563, 564, -103, 567, 53, 107, 169, 268, 50, 32, 578, 579, 105, 581, 582, 583, 584, 585, 586, 587, 28, 590, 591, 592, 593, 27, 248, 269, 103, 270, 603, 604, 605, 606, 76, 568, 608, 311, 18, 617, 619, 620, 621, 15, 623, 10, 9, 625, 626, 627, 320, 8, 7, 161 ] racc_action_check = [ 532, 401, 220, 220, 398, 569, 395, 89, 0, 397, 41, 396, 142, 532, 6, 259, 242, 83, 518, 228, 228, 571, 83, 518, 193, 427, 242, 0, 532, 259, 41, 220, 532, 423, 6, 142, 532, 532, 220, 532, 532, 89, 482, 470, 319, 319, 470, 348, 228, 470, 470, 532, 532, 532, 401, 228, 532, 532, 532, 532, 319, 532, 532, 532, 573, 532, 532, 532, 532, 532, 482, 395, 398, 319, 482, 220, 397, 396, 482, 482, 319, 482, 482, 482, 427, 532, 532, 532, 532, 569, 423, 532, 228, 482, 482, 482, 221, 221, 482, 482, 482, 482, 470, 482, 482, 482, 348, 482, 482, 482, 482, 482, 227, 227, 223, 223, 402, 319, 225, 225, 573, 573, 573, 521, 364, 221, 392, 482, 482, 482, 482, 346, 221, 482, 421, 173, 173, 425, 173, 173, 394, 227, 173, 223, 336, 173, 173, 225, 227, 338, 223, 173, 80, 80, 225, 80, 80, 248, 68, 80, 53, 81, 80, 80, 173, 267, 81, 267, 185, 221, 248, 173, 364, 364, 521, 521, 364, 527, 402, 402, 53, 80, 392, 392, 392, 227, 136, 223, 80, 346, 421, 225, 53, 623, 53, 425, 136, 394, 394, 362, 336, 394, 53, 173, 174, 68, 338, 161, 173, 527, 162, 53, 53, 623, 429, 10, 53, 53, 53, 261, 80, 53, 53, 53, 98, 80, 431, 623, 136, 268, 162, 53, 53, 10, 184, 623, 191, 136, 136, 191, 161, 98, 191, 191, 162, 59, 362, 362, 362, 623, 623, 623, 162, 91, 623, 623, 623, 174, 174, 174, 174, 429, 429, 429, 623, 623, 162, 162, 162, 27, 91, 162, 162, 162, 431, 431, 74, 18, 431, 27, 59, 162, 162, 191, 191, 191, 410, 92, 191, 244, 74, 247, 191, 191, 191, 191, 33, 240, 74, 270, 244, 624, 272, 247, 516, 18, 240, 74, 74, 410, 273, 27, 74, 74, 74, 624, 125, 74, 74, 74, 27, 27, 275, 624, 33, 278, 171, 74, 74, 92, 92, 281, 624, 624, 250, 250, 516, 624, 624, 624, 171, 67, 624, 624, 624, 516, 516, 57, 171, 22, 22, 168, 624, 624, 400, 57, 400, 125, 125, 605, 605, 605, 171, 171, 171, 168, 285, 171, 171, 171, 152, 288, 269, 168, 291, 57, 167, 171, 171, 269, 269, 293, 67, 67, 152, 77, 77, 168, 168, 168, 167, 295, 168, 168, 168, 155, 451, 451, 167, 297, 451, 166, 168, 168, 577, 577, 152, 152, 152, 155, 299, 152, 167, 167, 167, 166, 300, 167, 167, 167, 154, 501, 501, 166, 302, 501, 165, 167, 167, 303, 563, 155, 155, 155, 154, 305, 155, 166, 166, 166, 165, 308, 166, 166, 166, 563, 563, 563, 165, 249, 249, 608, 166, 166, 310, 484, 154, 154, 154, 519, 519, 154, 165, 165, 165, 608, 311, 165, 165, 165, 484, 484, 484, 608, 32, 312, 99, 165, 165, 14, 320, 14, 608, 608, 32, 344, 344, 608, 608, 608, 99, 314, 608, 608, 608, 320, 320, 320, 99, 252, 252, 613, 608, 608, 266, 317, 266, 266, 318, 30, 266, 30, 99, 99, 99, 613, 32, 99, 99, 99, 183, 218, 182, 613, 181, 32, 32, 99, 99, 262, 262, 262, 613, 613, 617, 218, 180, 613, 613, 613, 253, 253, 613, 613, 613, 260, 153, 195, 617, 572, 572, 572, 613, 613, 145, 196, 617, 218, 218, 218, 153, 198, 218, 200, 146, 617, 617, 201, 145, 179, 617, 617, 617, 178, 147, 617, 617, 617, 146, 349, 151, 350, 153, 153, 153, 617, 617, 153, 147, 149, 145, 145, 145, 351, 151, 145, 449, 449, 449, 150, 146, 146, 146, 149, 352, 146, 148, 499, 499, 499, 147, 147, 147, 150, 353, 147, 151, 151, 151, 354, 148, 151, 343, 343, 355, 149, 149, 149, 263, 263, 149, 356, 263, 342, 342, 150, 150, 150, 256, 256, 150, 357, 148, 148, 148, 213, 358, 148, 213, 213, 213, 213, 359, 213, 213, 213, 360, 213, 213, 213, 213, 255, 255, 255, 257, 257, 255, 341, 341, 177, 255, 255, 255, 255, 340, 340, 144, 213, 213, 213, 127, 339, 339, 213, 127, 216, 216, 127, 127, 127, 127, 365, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 58, 621, 621, 58, 58, 58, 265, 265, 58, 58, 58, 58, 58, 58, 58, 58, 366, 58, 254, 254, 254, 367, 368, 254, 369, 370, 375, 254, 254, 254, 254, 258, 258, 258, 376, 378, 258, 379, 143, 141, 258, 258, 258, 258, 251, 251, 251, 140, 137, 251, 131, 119, 399, 251, 251, 251, 251, 236, 236, 236, 236, 235, 235, 235, 235, 234, 234, 234, 234, 232, 232, 232, 232, 264, 264, 264, 264, 90, 90, 90, 90, 616, 616, 616, 616, 233, 233, 233, 233, 631, 631, 631, 631, 203, 86, 84, 403, 404, 408, 409, 79, 411, 413, 416, 417, 418, 419, 204, 76, 71, 69, 64, 61, 432, 433, 434, 435, 448, 246, 450, 52, 49, 480, 481, 48, 483, 40, 487, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 206, 500, 39, 503, 505, 507, 509, 510, 511, 512, 513, 514, 515, 34, 517, 31, 243, 520, 207, 28, 26, 536, 538, 241, 543, 548, 550, 552, 554, 556, 558, 20, 564, 565, 566, 568, 19, 189, 208, 239, 212, 579, 588, 589, 590, 595, 597, 603, 214, 11, 609, 610, 611, 612, 8, 615, 5, 4, 618, 619, 620, 230, 3, 2, 540 ] racc_action_pointer = [ 7, nil, 884, 902, 879, 869, 13, nil, 894, nil, 214, 861, nil, nil, 455, nil, nil, nil, 276, 846, 863, nil, 327, nil, nil, nil, 829, 268, 834, nil, 485, 823, 473, 281, 803, nil, nil, nil, nil, 792, 817, -13, nil, nil, nil, nil, nil, nil, 825, 815, nil, nil, 775, 159, nil, nil, nil, 332, 648, 230, nil, 806, nil, nil, 770, nil, nil, 330, 157, 763, nil, 777, nil, nil, 255, nil, 767, 351, nil, 768, 146, 104, nil, -40, 712, nil, 750, nil, nil, 6, 704, 224, 266, nil, nil, nil, nil, nil, 195, 455, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 702, nil, nil, nil, nil, nil, 305, nil, 630, nil, nil, nil, 741, nil, nil, nil, nil, 185, 715, nil, nil, 714, 712, 0, 697, 664, 533, 543, 553, 585, 568, 578, 559, 349, 525, 399, 374, nil, nil, nil, nil, nil, 206, 209, nil, nil, 405, 380, 355, 330, nil, nil, 305, nil, 129, 182, nil, nil, 614, 518, 514, 481, 469, 467, 505, 179, 113, nil, nil, nil, 822, nil, 226, nil, -31, nil, 492, 500, nil, 506, nil, 508, 512, nil, 740, 754, nil, 785, 803, 823, nil, nil, nil, 844, 591, 852, nil, 643, nil, 500, nil, -4, 90, nil, 108, nil, 112, nil, 106, 13, nil, 889, nil, 696, 712, 692, 688, 684, nil, nil, 813, 241, 796, -40, 788, 233, nil, 751, 235, 101, 389, 274, 689, 439, 480, 663, 604, 578, 604, 676, -41, 491, 149, 472, 570, 719, 645, 448, 111, 164, 316, 264, nil, 279, 296, nil, 299, nil, nil, 302, nil, nil, 308, nil, nil, nil, 343, nil, nil, 348, nil, nil, 339, nil, 326, nil, 368, nil, 344, nil, 387, 361, nil, 369, 374, nil, 380, nil, nil, 386, nil, 399, 431, 461, nil, 448, nil, nil, 425, 474, 38, 438, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 134, nil, 139, 621, 614, 607, 573, 562, 425, nil, 121, nil, 37, 519, 521, 533, 544, 554, 559, 564, 571, 581, 586, 592, 596, nil, 189, nil, 114, 631, 658, 663, 664, 666, 667, nil, nil, nil, nil, 671, 679, nil, 675, 677, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 125, nil, 139, 5, 10, 8, 3, 694, 300, 0, 115, 734, 736, nil, nil, nil, 719, 767, 274, 742, nil, 790, nil, nil, 745, 740, 747, 741, nil, 124, nil, 23, nil, 127, nil, 15, nil, 204, nil, 216, 755, 748, 757, 749, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 759, 539, 761, 338, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 33, nil, nil, nil, nil, nil, nil, nil, nil, nil, 790, 813, 41, 791, 413, nil, nil, 769, nil, 770, 771, 766, 773, 767, 775, 768, 777, 769, 779, 550, 781, 363, nil, 783, nil, 784, nil, 785, nil, 786, 778, 779, 780, 781, 839, 795, 293, 840, -37, 407, 828, 122, nil, nil, nil, nil, nil, 154, nil, nil, nil, nil, -1, nil, nil, nil, 770, nil, 828, nil, 819, nil, nil, 829, nil, nil, nil, nil, 805, nil, 806, nil, 807, nil, 808, nil, 809, nil, 810, nil, nil, nil, nil, 388, 811, 859, 835, nil, 805, 4, nil, -8, 492, 63, nil, nil, nil, 314, nil, 869, nil, nil, nil, nil, nil, nil, nil, nil, 868, 860, 827, nil, nil, nil, nil, 850, nil, 826, nil, nil, nil, nil, nil, 843, nil, 277, nil, nil, 430, 845, 868, 869, 870, 480, nil, 849, 708, 513, 884, 815, 816, 621, nil, 192, 280, nil, nil, nil, nil, nil, nil, 716 ] racc_action_default = [ -376, -2, -376, -376, -376, -13, -6, -4, -376, -1, -376, -376, -5, -7, -376, 632, -15, -14, -376, -18, -376, -12, -376, -9, -17, -16, -21, -87, -376, -8, -376, -376, -87, -376, -112, -20, -98, -99, -100, -376, -376, -88, -146, -89, -147, -90, -19, -108, -94, -376, -11, -10, -82, -376, -23, -22, -110, -376, -376, -376, -104, -376, -101, -109, -376, -91, -95, -376, -376, -376, -253, -376, -26, -254, -27, -25, -284, -376, -152, -376, -376, -376, -273, -376, -305, -274, -376, -286, -283, -376, -251, -31, -376, -167, -281, -271, -282, -272, -289, -376, -248, -24, -111, -191, -125, -204, -126, -217, -127, -230, -128, -129, -247, -130, -121, -182, -122, -183, -123, -376, -187, -148, -124, -102, -105, -376, -92, -112, -93, -113, -97, -376, -96, -84, -83, -3, -87, -376, -373, -249, -285, -289, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -153, -168, -154, -169, -30, -376, -376, -256, -255, -376, -376, -376, -376, -32, -259, -376, -288, -376, -376, -107, -106, -136, -125, -137, -126, -138, -127, -376, -139, -128, -117, -243, -140, -129, -118, -376, -141, -119, -142, -131, -120, -143, -132, -144, -133, -122, -145, -134, -123, -116, -148, -135, -124, -114, -86, -85, -376, -376, -376, -287, -376, -279, -376, -278, -263, -264, -275, -265, -276, -260, -277, -261, -262, -307, -376, -252, -250, -268, -269, -266, -267, -280, -270, -376, -376, -376, -376, -376, -376, -115, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -334, -313, -376, -323, -319, -54, -329, -325, -55, -335, -331, -56, -375, -342, -337, -312, -57, -344, -318, -58, -340, -324, -348, -59, -350, -330, -311, -60, -357, -353, -336, -317, -310, -61, -354, -343, -322, -316, -328, -347, -376, -376, -33, -34, -63, -62, -290, -376, -376, -376, -193, -188, -190, -206, -194, -192, -219, -207, -205, -232, -220, -218, -233, -231, -203, -376, -216, -376, -376, -376, -376, -376, -376, -376, -229, -376, -242, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -166, -376, -181, -376, -376, -376, -376, -376, -376, -376, -246, -244, -150, -245, -376, -376, -156, -376, -376, -171, -157, -155, -185, -172, -170, -151, -149, -189, -186, -184, -28, -376, -257, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -258, -29, -64, -68, -376, -376, -152, -303, -376, -304, -308, -376, -376, -376, -376, -201, -376, -214, -376, -227, -376, -240, -376, -164, -376, -179, -376, -376, -376, -376, -376, -200, -213, -226, -239, -163, -178, -202, -215, -228, -241, -165, -180, -376, -376, -376, -376, -199, -212, -225, -238, -162, -177, -315, -314, -321, -320, -327, -326, -333, -332, -339, -338, -346, -345, -376, -341, -349, -352, -351, -359, -358, -355, -356, -69, -376, -376, -376, -376, -376, -306, -195, -376, -208, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -221, -376, -234, -376, -158, -376, -173, -376, -376, -376, -376, -376, -376, -376, -87, -44, -310, -376, -31, -376, -72, -70, -36, -37, -38, -360, -39, -372, -363, -40, -376, -366, -41, -42, -369, -367, -376, -35, -305, -43, -53, -376, -309, -197, -210, -196, -376, -209, -376, -222, -376, -235, -376, -159, -376, -174, -376, -223, -236, -160, -175, -376, -292, -376, -376, -67, -376, -305, -52, -50, -376, -376, -44, -71, -65, -376, -370, -376, -49, -66, -198, -211, -224, -237, -161, -176, -376, -295, -376, -291, -45, -365, -47, -376, -51, -376, -364, -362, -361, -368, -371, -73, -294, -376, -293, -46, -376, -75, -296, -297, -298, -74, -77, -376, -80, -376, -376, -376, -376, -376, -78, -376, -76, -48, -299, -300, -301, -302, -81, -79 ] racc_goto_table = [ 90, 116, 164, 160, 202, 313, 118, 40, 46, 413, 193, 104, 40, 55, 119, 63, 173, 62, 132, 128, 65, 90, 315, 122, 523, 60, 23, 110, 86, 111, 100, 613, 3, 91, 408, 532, 65, 622, 57, 273, 624, 618, 51, 126, 609, 124, 174, 131, 622, 86, 108, 139, 314, 217, 219, 59, 312, 222, 106, 224, 479, 226, 74, 209, 220, 221, 183, 223, 186, 225, 201, 227, 228, 190, 575, 204, 132, 176, 72, 196, 178, 474, 101, 205, 22, 13, 2, 135, 69, 52, 31, 195, 208, 198, 200, 203, 185, 207, 189, 177, 179, 181, 184, 188, 192, 131, 63, 194, 62, 232, 197, 199, 233, 234, 235, 236, 40, 211, 174, 182, 407, 26, 19, 170, 140, 11, 5, 180, 215, 565, 588, 4, 544, 598, 256, 319, 577, nil, nil, 257, nil, nil, 372, nil, 374, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 303, nil, nil, nil, 252, 308, 253, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 250, nil, nil, nil, nil, nil, nil, nil, 249, nil, 322, 343, nil, nil, 353, 359, 344, nil, 369, 354, 360, nil, 377, 370, 382, nil, nil, nil, 380, 327, nil, 385, nil, 332, 330, nil, 334, 341, 388, 342, 351, 357, 352, 358, 367, nil, 368, 383, nil, nil, 324, 390, nil, 329, nil, nil, 321, nil, nil, 326, 340, nil, nil, 350, 356, nil, nil, 366, 339, 589, nil, 349, 355, nil, nil, 365, nil, nil, nil, nil, 412, nil, nil, nil, nil, nil, nil, nil, 522, nil, nil, nil, nil, 471, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 448, nil, nil, nil, nil, nil, nil, 450, nil, nil, 432, nil, nil, nil, 434, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 418, nil, nil, nil, nil, 459, 416, nil, nil, nil, nil, nil, 461, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 467, 476, nil, 469, nil, nil, 498, nil, nil, nil, nil, nil, nil, 500, nil, nil, nil, nil, nil, nil, nil, nil, 465, nil, nil, nil, 507, nil, 494, 463, nil, nil, 496, 509, nil, nil, 503, nil, nil, nil, 505, nil, nil, nil, nil, 489, nil, nil, nil, 492, nil, 487, nil, nil, nil, 490, nil, nil, nil, 518, nil, 412, nil, nil, 308, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 253, 556, nil, nil, nil, nil, nil, nil, 558, nil, nil, nil, nil, nil, nil, nil, nil, nil, 580, nil, nil, 520, nil, 552, nil, nil, nil, 554, nil, nil, nil, nil, nil, nil, 518, nil, nil, nil, nil, 308, 342, 352, 358, 368, 550, nil, nil, 595, nil, nil, 548, nil, nil, nil, nil, 40, 566, nil, 569, nil, 571, nil, nil, nil, nil, 412, nil, 607, nil, nil, nil, 520, nil, nil, 597, 600, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 631 ] racc_goto_check = [ 56, 80, 34, 22, 103, 24, 81, 23, 15, 114, 77, 83, 23, 15, 70, 71, 108, 65, 58, 61, 59, 56, 48, 82, 26, 68, 14, 86, 55, 87, 104, 53, 1, 23, 51, 50, 59, 54, 57, 39, 53, 37, 14, 59, 36, 68, 56, 23, 54, 55, 85, 104, 25, 109, 109, 67, 20, 109, 84, 109, 52, 109, 18, 73, 108, 108, 74, 108, 75, 108, 80, 108, 108, 76, 26, 81, 58, 61, 17, 78, 83, 79, 16, 70, 13, 12, 11, 10, 9, 8, 7, 89, 82, 90, 91, 92, 86, 93, 87, 94, 95, 96, 97, 98, 99, 23, 71, 100, 65, 56, 101, 102, 56, 56, 56, 56, 23, 15, 56, 85, 48, 6, 5, 105, 107, 4, 3, 84, 111, 112, 113, 2, 115, 126, 80, 108, 128, nil, nil, 81, nil, nil, 77, nil, 77, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 80, nil, nil, nil, 86, 81, 87, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 85, nil, nil, nil, nil, nil, nil, nil, 84, nil, 83, 80, nil, nil, 80, 80, 81, nil, 80, 81, 81, nil, 80, 81, 80, nil, nil, nil, 81, 86, nil, 81, nil, 86, 87, nil, 87, 86, 83, 87, 86, 86, 87, 87, 86, nil, 87, 82, nil, nil, 85, 82, nil, 85, nil, nil, 84, nil, nil, 84, 85, nil, nil, 85, 85, nil, nil, 85, 84, 114, nil, 84, 84, nil, nil, 84, nil, nil, nil, nil, 80, nil, nil, nil, nil, nil, nil, nil, 24, nil, nil, nil, nil, 103, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 80, nil, nil, nil, nil, nil, nil, 81, nil, nil, 86, nil, nil, nil, 87, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 85, nil, nil, nil, nil, 80, 84, nil, nil, nil, nil, nil, 81, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 86, 82, nil, 87, nil, nil, 80, nil, nil, nil, nil, nil, nil, 81, nil, nil, nil, nil, nil, nil, nil, nil, 85, nil, nil, nil, 80, nil, 86, 84, nil, nil, 87, 81, nil, nil, 86, nil, nil, nil, 87, nil, nil, nil, nil, 85, nil, nil, nil, 85, nil, 84, nil, nil, nil, 84, nil, nil, nil, 80, nil, 80, nil, nil, 81, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 87, 80, nil, nil, nil, nil, nil, nil, 81, nil, nil, nil, nil, nil, nil, nil, nil, nil, 22, nil, nil, 23, nil, 86, nil, nil, nil, 87, nil, nil, nil, nil, nil, nil, 80, nil, nil, nil, nil, 81, 87, 87, 87, 87, 85, nil, nil, 22, nil, nil, 84, nil, nil, nil, nil, 23, 15, nil, 23, nil, 23, nil, nil, nil, nil, 80, nil, 34, nil, nil, nil, 23, nil, nil, 80, 80, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 56 ] racc_goto_pointer = [ nil, 32, 131, 126, 120, 111, 102, 64, 58, 36, 18, 86, 79, 70, 12, -19, 29, 25, 9, nil, -160, nil, -81, -20, -211, -164, -458, nil, nil, nil, nil, nil, nil, nil, -87, nil, -559, -568, nil, -174, nil, nil, nil, nil, nil, nil, nil, nil, -194, nil, -447, -283, -348, -577, -576, -25, -53, 5, -49, -21, nil, -48, nil, nil, nil, -23, nil, 16, -14, nil, -44, -25, nil, -68, -61, -59, -54, -117, -48, -320, -57, -52, -35, -47, 0, -8, -31, -29, nil, -36, -34, -33, -32, -30, -28, -27, -26, -25, -24, -23, -20, -17, -16, -123, -23, 31, nil, 48, -83, -92, nil, -15, -386, -433, -311, -352, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, -439, nil, -400 ] racc_goto_default = [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 539, nil, 79, nil, 84, nil, 138, nil, nil, nil, 524, 525, 526, 528, 531, 534, 535, 88, 538, nil, nil, 540, 542, 276, 279, 282, 287, 290, 294, 298, 304, nil, 318, nil, nil, nil, nil, 614, 615, 616, 41, 43, 45, 49, nil, 130, 36, 37, 38, 39, nil, nil, 61, nil, 47, 33, 129, nil, nil, nil, nil, nil, 114, 94, 96, nil, nil, 274, 277, 280, 284, 113, 293, 297, 302, nil, nil, nil, nil, nil, nil, 286, 289, 292, 296, 301, 306, nil, 70, 73, 77, 80, 82, 85, 87, nil, nil, nil, 415, 272, 275, 278, 281, 285, 288, 291, 295, 299, 527, 530, 533, nil ] racc_reduce_table = [ 0, 0, :racc_error, 2, 94, :_reduce_1, 1, 94, :_reduce_none, 8, 95, :_reduce_3, 2, 96, :_reduce_4, 2, 96, :_reduce_5, 1, 104, :_reduce_6, 2, 104, :_reduce_7, 3, 105, :_reduce_8, 1, 106, :_reduce_9, 3, 106, :_reduce_10, 3, 107, :_reduce_11, 1, 107, :_reduce_12, 0, 97, :_reduce_none, 2, 97, :_reduce_14, 2, 97, :_reduce_none, 2, 98, :_reduce_16, 2, 98, :_reduce_none, 0, 99, :_reduce_18, 2, 99, :_reduce_19, 2, 99, :_reduce_none, 0, 100, :_reduce_none, 2, 100, :_reduce_22, 2, 100, :_reduce_none, 2, 101, :_reduce_24, 2, 101, :_reduce_none, 1, 109, :_reduce_26, 1, 109, :_reduce_27, 5, 110, :_reduce_28, 5, 110, :_reduce_29, 2, 112, :_reduce_30, 1, 114, :_reduce_31, 2, 114, :_reduce_32, 1, 113, :_reduce_none, 1, 113, :_reduce_34, 1, 119, :_reduce_35, 1, 119, :_reduce_36, 1, 119, :_reduce_37, 1, 119, :_reduce_38, 1, 119, :_reduce_39, 1, 119, :_reduce_40, 1, 119, :_reduce_41, 1, 119, :_reduce_42, 1, 119, :_reduce_none, 1, 119, :_reduce_none, 3, 126, :_reduce_45, 4, 120, :_reduce_46, 3, 120, :_reduce_none, 6, 121, :_reduce_48, 2, 128, :_reduce_49, 2, 131, :_reduce_50, 3, 131, :_reduce_none, 2, 131, :_reduce_none, 1, 125, :_reduce_53, 1, 132, :_reduce_54, 1, 132, :_reduce_55, 1, 132, :_reduce_56, 1, 132, :_reduce_57, 1, 132, :_reduce_58, 1, 132, :_reduce_59, 1, 132, :_reduce_60, 1, 132, :_reduce_61, 1, 117, :_reduce_none, 1, 118, :_reduce_63, 2, 118, :_reduce_64, 5, 141, :_reduce_65, 5, 141, :_reduce_66, 5, 141, :_reduce_67, 2, 142, :_reduce_68, 3, 142, :_reduce_69, 1, 143, :_reduce_70, 2, 143, :_reduce_71, 1, 143, :_reduce_72, 0, 129, :_reduce_none, 2, 129, :_reduce_74, 0, 130, :_reduce_none, 2, 130, :_reduce_76, 1, 146, :_reduce_none, 2, 146, :_reduce_none, 3, 147, :_reduce_none, 1, 147, :_reduce_none, 3, 147, :_reduce_none, 0, 102, :_reduce_none, 2, 102, :_reduce_none, 2, 102, :_reduce_none, 2, 103, :_reduce_85, 2, 103, :_reduce_none, 0, 108, :_reduce_none, 1, 108, :_reduce_88, 1, 108, :_reduce_89, 1, 150, :_reduce_90, 2, 150, :_reduce_91, 3, 150, :_reduce_92, 3, 152, :_reduce_93, 1, 153, :_reduce_94, 2, 153, :_reduce_none, 1, 154, :_reduce_96, 1, 154, :_reduce_97, 1, 151, :_reduce_98, 1, 151, :_reduce_99, 1, 157, :_reduce_100, 2, 157, :_reduce_101, 3, 158, :_reduce_102, 1, 159, :_reduce_103, 1, 160, :_reduce_104, 2, 160, :_reduce_105, 3, 161, :_reduce_106, 3, 162, :_reduce_107, 1, 156, :_reduce_108, 2, 156, :_reduce_109, 2, 164, :_reduce_110, 3, 164, :_reduce_111, 1, 165, :_reduce_none, 1, 155, :_reduce_113, 2, 155, :_reduce_114, 3, 166, :_reduce_115, 1, 167, :_reduce_116, 1, 167, :_reduce_117, 1, 167, :_reduce_118, 1, 167, :_reduce_119, 1, 167, :_reduce_120, 1, 163, :_reduce_121, 1, 163, :_reduce_122, 1, 163, :_reduce_123, 1, 163, :_reduce_124, 1, 163, :_reduce_125, 1, 163, :_reduce_126, 1, 163, :_reduce_127, 1, 163, :_reduce_128, 1, 163, :_reduce_129, 1, 163, :_reduce_130, 1, 168, :_reduce_131, 1, 168, :_reduce_132, 1, 168, :_reduce_133, 1, 168, :_reduce_134, 1, 168, :_reduce_135, 1, 168, :_reduce_136, 1, 168, :_reduce_137, 1, 168, :_reduce_138, 1, 168, :_reduce_139, 1, 169, :_reduce_none, 1, 169, :_reduce_none, 1, 169, :_reduce_none, 1, 169, :_reduce_none, 1, 169, :_reduce_none, 1, 169, :_reduce_none, 1, 116, :_reduce_146, 1, 116, :_reduce_147, 1, 172, :_reduce_148, 3, 182, :_reduce_149, 3, 182, :_reduce_150, 3, 182, :_reduce_151, 1, 173, :_reduce_152, 2, 173, :_reduce_153, 2, 173, :_reduce_154, 3, 183, :_reduce_none, 3, 183, :_reduce_none, 3, 183, :_reduce_none, 5, 191, :_reduce_none, 6, 191, :_reduce_none, 6, 191, :_reduce_none, 7, 191, :_reduce_none, 4, 191, :_reduce_none, 4, 191, :_reduce_none, 4, 191, :_reduce_none, 4, 191, :_reduce_none, 3, 191, :_reduce_none, 1, 174, :_reduce_167, 2, 174, :_reduce_168, 2, 174, :_reduce_169, 3, 184, :_reduce_none, 3, 184, :_reduce_none, 3, 184, :_reduce_none, 5, 192, :_reduce_none, 6, 192, :_reduce_none, 6, 192, :_reduce_none, 7, 192, :_reduce_none, 4, 192, :_reduce_none, 4, 192, :_reduce_none, 4, 192, :_reduce_none, 4, 192, :_reduce_none, 3, 192, :_reduce_none, 1, 175, :_reduce_182, 1, 175, :_reduce_183, 3, 185, :_reduce_none, 3, 185, :_reduce_none, 3, 185, :_reduce_none, 1, 176, :_reduce_none, 3, 186, :_reduce_none, 3, 186, :_reduce_none, 3, 186, :_reduce_none, 1, 177, :_reduce_191, 3, 187, :_reduce_none, 3, 187, :_reduce_none, 3, 187, :_reduce_none, 5, 193, :_reduce_none, 6, 193, :_reduce_none, 6, 193, :_reduce_none, 7, 193, :_reduce_none, 4, 193, :_reduce_none, 4, 193, :_reduce_none, 4, 193, :_reduce_none, 4, 193, :_reduce_none, 3, 193, :_reduce_none, 1, 178, :_reduce_none, 3, 188, :_reduce_none, 3, 188, :_reduce_none, 3, 188, :_reduce_none, 5, 194, :_reduce_none, 6, 194, :_reduce_none, 6, 194, :_reduce_none, 7, 194, :_reduce_none, 4, 194, :_reduce_none, 4, 194, :_reduce_none, 4, 194, :_reduce_none, 4, 194, :_reduce_none, 3, 194, :_reduce_none, 1, 179, :_reduce_217, 3, 189, :_reduce_none, 3, 189, :_reduce_none, 3, 189, :_reduce_none, 5, 195, :_reduce_none, 6, 195, :_reduce_none, 6, 195, :_reduce_none, 7, 195, :_reduce_none, 4, 195, :_reduce_none, 4, 195, :_reduce_none, 4, 195, :_reduce_none, 4, 195, :_reduce_none, 3, 195, :_reduce_none, 1, 180, :_reduce_230, 3, 190, :_reduce_none, 3, 190, :_reduce_none, 3, 190, :_reduce_none, 5, 196, :_reduce_none, 6, 196, :_reduce_none, 6, 196, :_reduce_none, 7, 196, :_reduce_none, 4, 196, :_reduce_none, 4, 196, :_reduce_none, 4, 196, :_reduce_none, 4, 196, :_reduce_none, 3, 196, :_reduce_none, 1, 170, :_reduce_243, 3, 171, :_reduce_none, 3, 171, :_reduce_none, 3, 171, :_reduce_none, 1, 181, :_reduce_247, 1, 111, :_reduce_none, 2, 111, :_reduce_none, 3, 197, :_reduce_none, 1, 197, :_reduce_none, 3, 197, :_reduce_none, 1, 149, :_reduce_none, 1, 149, :_reduce_none, 2, 199, :_reduce_none, 2, 199, :_reduce_none, 5, 199, :_reduce_none, 5, 199, :_reduce_none, 2, 199, :_reduce_none, 3, 199, :_reduce_none, 3, 199, :_reduce_none, 3, 199, :_reduce_none, 3, 199, :_reduce_none, 3, 199, :_reduce_none, 3, 199, :_reduce_none, 3, 199, :_reduce_none, 3, 199, :_reduce_none, 3, 199, :_reduce_none, 3, 199, :_reduce_none, 3, 198, :_reduce_none, 1, 198, :_reduce_none, 1, 198, :_reduce_none, 1, 201, :_reduce_none, 1, 201, :_reduce_none, 3, 203, :_reduce_none, 3, 203, :_reduce_none, 3, 203, :_reduce_none, 3, 203, :_reduce_none, 3, 203, :_reduce_none, 3, 202, :_reduce_none, 1, 202, :_reduce_none, 1, 202, :_reduce_none, 1, 202, :_reduce_none, 1, 127, :_reduce_none, 2, 127, :_reduce_none, 1, 200, :_reduce_none, 3, 200, :_reduce_none, 2, 204, :_reduce_288, 1, 204, :_reduce_289, 0, 144, :_reduce_290, 5, 144, :_reduce_291, 1, 205, :_reduce_292, 3, 205, :_reduce_293, 5, 145, :_reduce_294, 1, 206, :_reduce_none, 3, 206, :_reduce_none, 3, 206, :_reduce_none, 3, 206, :_reduce_none, 5, 206, :_reduce_none, 5, 206, :_reduce_none, 5, 206, :_reduce_none, 5, 206, :_reduce_none, 1, 208, :_reduce_303, 1, 208, :_reduce_304, 0, 115, :_reduce_none, 5, 115, :_reduce_306, 2, 115, :_reduce_none, 1, 207, :_reduce_308, 3, 207, :_reduce_309, 1, 209, :_reduce_none, 1, 209, :_reduce_none, 1, 209, :_reduce_none, 1, 133, :_reduce_none, 3, 133, :_reduce_none, 3, 133, :_reduce_none, 1, 210, :_reduce_none, 1, 210, :_reduce_none, 1, 210, :_reduce_none, 1, 134, :_reduce_none, 3, 134, :_reduce_none, 3, 134, :_reduce_none, 1, 211, :_reduce_none, 1, 211, :_reduce_none, 1, 211, :_reduce_none, 1, 135, :_reduce_none, 3, 135, :_reduce_none, 3, 135, :_reduce_none, 1, 212, :_reduce_none, 1, 212, :_reduce_none, 1, 212, :_reduce_none, 1, 136, :_reduce_none, 3, 136, :_reduce_none, 3, 136, :_reduce_none, 1, 213, :_reduce_none, 1, 213, :_reduce_none, 1, 213, :_reduce_none, 1, 137, :_reduce_none, 3, 137, :_reduce_none, 3, 137, :_reduce_none, 1, 214, :_reduce_none, 3, 214, :_reduce_none, 1, 214, :_reduce_none, 1, 214, :_reduce_none, 1, 138, :_reduce_none, 3, 138, :_reduce_none, 3, 138, :_reduce_none, 1, 216, :_reduce_none, 1, 216, :_reduce_none, 3, 216, :_reduce_none, 1, 139, :_reduce_none, 3, 139, :_reduce_none, 3, 139, :_reduce_none, 1, 217, :_reduce_353, 1, 217, :_reduce_354, 3, 217, :_reduce_355, 3, 217, :_reduce_356, 1, 140, :_reduce_357, 3, 140, :_reduce_358, 3, 140, :_reduce_359, 1, 124, :_reduce_none, 3, 124, :_reduce_none, 3, 124, :_reduce_none, 1, 218, :_reduce_none, 3, 218, :_reduce_none, 3, 219, :_reduce_365, 1, 123, :_reduce_366, 1, 123, :_reduce_367, 3, 220, :_reduce_368, 0, 221, :_reduce_none, 1, 221, :_reduce_none, 2, 221, :_reduce_none, 1, 122, :_reduce_372, 1, 148, :_reduce_373, 1, 148, :_reduce_374, 1, 215, :_reduce_375 ] racc_reduce_n = 376 racc_shift_n = 632 racc_token_table = { false => 0, :error => 1, :UMINUS => 2, :UPLUS => 3, "*" => 4, "/" => 5, "+" => 6, "-" => 7, :SYM_EQ => 8, :SYM_NE => 9, :SYM_LT => 10, :SYM_START_DBLOCK => 11, :SYM_START_CBLOCK => 12, :SYM_GT => 13, :SYM_END_CBLOCK => 14, :SYM_END_DBLOCK => 15, :SYM_LE => 16, :SYM_GE => 17, :EOF => 18, :V_ARCHETYPE_ID => 19, :SYM_ARCHETYPE => 20, :Left_parenthesis_code => 21, :Right_parenthesis_code => 22, :Semicolon_code => 23, :SYM_ADL_VERSION => 24, :V_VERSION_STRING => 25, :SYM_IS_CONTROLLED => 26, :SYM_SPECIALIZE => 27, :SYM_CONCEPT => 28, :V_LOCAL_TERM_CODE_REF => 29, :SYM_LANGUAGE => 30, :SYM_DESCRIPTION => 31, :SYM_DEFINITION => 32, :c_complx_object_head => 33, :SYM_MATCHES => 34, :Slash_code => 35, :REGEXP_BODY => 36, :ERR_C_DOMAIN_TYPE => 37, :START_V_C_DOMAIN_TYPE_BLOCK => 38, :END_V_C_DOMAIN_TYPE_BLOCK => 39, :SYM_USE_NODE => 40, :SYM_ALLOW_ARCHETYPE => 41, :Star_code => 42, :V_ATTRIBUTE_IDENTIFIER => 43, :SYM_INCLUDE => 44, :SYM_EXCLUDE => 45, ":" => 46, :SYM_INVARIANT => 47, :V_ASSERTION_TEXT => 48, :SYM_ONTOLOGY => 49, :Left_bracket_code => 50, :Right_bracket_code => 51, :V_TYPE_IDENTIFIER => 52, :V_GENERIC_TYPE_IDENTIFIER => 53, :V_STRING => 54, :Comma_code => 55, :SYM_LIST_CONTINUE => 56, :V_INTEGER => 57, :Plus_code => 58, :Minus_code => 59, :SYM_INTERVAL_DELIM => 60, :SYM_ELLIPSIS => 61, :V_REAL => 62, :SYM_TRUE => 63, :SYM_FALSE => 64, :V_CHARACTER => 65, :V_ISO8601_EXTENDED_DATE => 66, :V_ISO8601_EXTENDED_TIME => 67, :V_ISO8601_EXTENDED_DATE_TIME => 68, :V_ISO8601_DURATION => 69, :V_QUALIFIED_TERM_CODE_REF => 70, :V_URI => 71, :SYM_EXISTS => 72, :SYM_NOT => 73, "=" => 74, :SYM_AND => 75, :SYM_OR => 76, :SYM_XOR => 77, :SYM_IMPLIES => 78, "^" => 79, :SYM_EXISTENCE => 80, :SYM_CARDINALITY => 81, :SYM_ORDERED => 82, :SYM_UNORDERED => 83, :SYM_UNIQUE => 84, :SYM_OCCURRENCES => 85, :V_ISO8601_DATE_CONSTRAINT_PATTERN => 86, :V_ISO8601_TIME_CONSTRAINT_PATTERN => 87, :V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN => 88, :START_TERM_CODE_CONSTRAINT => 89, :END_TERM_CODE_CONSTRAINT => 90, :TERM_CODE => 91, :V_ISO8601_DURATION_CONSTRAINT_PATTERN => 92 } racc_nt_base = 93 racc_use_result_var = true Racc_arg = [ racc_action_table, racc_action_check, racc_action_default, racc_action_pointer, racc_goto_table, racc_goto_check, racc_goto_default, racc_goto_pointer, racc_nt_base, racc_reduce_table, racc_token_table, racc_shift_n, racc_reduce_n, racc_use_result_var ] Racc_token_to_s_table = [ "$end", "error", "UMINUS", "UPLUS", "\"*\"", "\"/\"", "\"+\"", "\"-\"", "SYM_EQ", "SYM_NE", "SYM_LT", "SYM_START_DBLOCK", "SYM_START_CBLOCK", "SYM_GT", "SYM_END_CBLOCK", "SYM_END_DBLOCK", "SYM_LE", "SYM_GE", "EOF", "V_ARCHETYPE_ID", "SYM_ARCHETYPE", "Left_parenthesis_code", "Right_parenthesis_code", "Semicolon_code", "SYM_ADL_VERSION", "V_VERSION_STRING", "SYM_IS_CONTROLLED", "SYM_SPECIALIZE", "SYM_CONCEPT", "V_LOCAL_TERM_CODE_REF", "SYM_LANGUAGE", "SYM_DESCRIPTION", "SYM_DEFINITION", "c_complx_object_head", "SYM_MATCHES", "Slash_code", "REGEXP_BODY", "ERR_C_DOMAIN_TYPE", "START_V_C_DOMAIN_TYPE_BLOCK", "END_V_C_DOMAIN_TYPE_BLOCK", "SYM_USE_NODE", "SYM_ALLOW_ARCHETYPE", "Star_code", "V_ATTRIBUTE_IDENTIFIER", "SYM_INCLUDE", "SYM_EXCLUDE", "\":\"", "SYM_INVARIANT", "V_ASSERTION_TEXT", "SYM_ONTOLOGY", "Left_bracket_code", "Right_bracket_code", "V_TYPE_IDENTIFIER", "V_GENERIC_TYPE_IDENTIFIER", "V_STRING", "Comma_code", "SYM_LIST_CONTINUE", "V_INTEGER", "Plus_code", "Minus_code", "SYM_INTERVAL_DELIM", "SYM_ELLIPSIS", "V_REAL", "SYM_TRUE", "SYM_FALSE", "V_CHARACTER", "V_ISO8601_EXTENDED_DATE", "V_ISO8601_EXTENDED_TIME", "V_ISO8601_EXTENDED_DATE_TIME", "V_ISO8601_DURATION", "V_QUALIFIED_TERM_CODE_REF", "V_URI", "SYM_EXISTS", "SYM_NOT", "\"=\"", "SYM_AND", "SYM_OR", "SYM_XOR", "SYM_IMPLIES", "\"^\"", "SYM_EXISTENCE", "SYM_CARDINALITY", "SYM_ORDERED", "SYM_UNORDERED", "SYM_UNIQUE", "SYM_OCCURRENCES", "V_ISO8601_DATE_CONSTRAINT_PATTERN", "V_ISO8601_TIME_CONSTRAINT_PATTERN", "V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN", "START_TERM_CODE_CONSTRAINT", "END_TERM_CODE_CONSTRAINT", "TERM_CODE", "V_ISO8601_DURATION_CONSTRAINT_PATTERN", "$start", "input", "archetype", "arch_identification", "arch_specialisation", "arch_concept", "arch_language", "arch_description", "arch_definition", "arch_invariant", "arch_ontology", "arch_head", "arch_meta_data", "arch_meta_data_items", "arch_meta_data_item", "dadl_section", "cadl_section", "c_complex_object", "assertions", "c_complex_object_head", "c_complex_object_body", "c_complex_object_id", "c_occurrences", "type_identifier", "c_any", "c_attributes", "c_object", "archetype_internal_ref", "archetype_slot", "constraint_ref", "c_code_phrase", "c_ordinal", "c_primitive_object", "v_c_domain_type", "absolute_path", "c_archetype_slot_head", "c_includes", "c_excludes", "c_archetype_slot_id", "c_primitive", "c_integer", "c_real", "c_date", "c_time", "c_date_time", "c_duration", "c_string", "c_boolean", "c_attribute", "c_attr_head", "c_attr_values", "c_existence", "c_cardinality", "invariants", "invariant", "any_identifier", "boolean_expression", "attr_vals", "complex_object_block", "attr_val", "attr_id", "object_block", "primitive_object_block", "single_attr_object_block", "multiple_attr_object_block", "untyped_multiple_attr_object_block", "multiple_attr_object_block_head", "keyed_objects", "keyed_object", "object_key", "simple_value", "untyped_single_attr_object_block", "single_attr_object_complex_head", "untyped_primitive_object_block", "primitive_object_value", "simple_list_value", "simple_interval_value", "term_code", "term_code_list_value", "string_value", "integer_value", "real_value", "boolean_value", "character_value", "date_value", "time_value", "date_time_value", "duration_value", "uri_value", "string_list_value", "integer_list_value", "real_list_value", "boolean_list_value", "character_list_value", "date_list_value", "time_list_value", "date_time_list_value", "duration_list_value", "integer_interval_value", "real_interval_value", "date_interval_value", "time_interval_value", "date_time_interval_value", "duration_interval_value", "assertion", "boolean_leaf", "boolean_node", "relative_path", "arithmetic_expression", "arithmetic_leaf", "arithmetic_node", "path_segment", "existence_spec", "cardinality_spec", "occurrence_spec", "cardinality_limit_value", "c_integer_spec", "c_real_spec", "c_date_constraint", "c_time_constraint", "c_date_time_constraint", "c_duration_constraint", "duration_pattern", "c_string_spec", "c_boolean_spec", "c_ordinal_spec", "ordinal", "term_code_constraint_section", "term_code_body" ] Racc_debug_parser = false ##### State transition tables end ##### # reduce 0 omitted module_eval(<<'.,.,', 'parser.y', 30) def _reduce_1(val, _values, result) result = val[0] result end .,., # reduce 2 omitted module_eval(<<'.,.,', 'parser.y', 36) def _reduce_3(val, _values, result) assert_at(__FILE__,__LINE__) do val[4].instance_of?(OpenEhr::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION) and val[5].instance_of?(OpenEhr::AM::Archetype::ConstraintModel::C_COMPLEX_OBJECT) and val[7].instance_of?(OpenEhr::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY) end archetype_id = val[0][:archetype_id] parent_archtype_id = val[1][:parent_archtype_id] if val[1] adl_version = val[0][:arch_head][:arch_meta_data][:adl_version] concept = val[2][:arch_concept] language = val[3][:arch_language] archetype = OpenEhr::AM::Archetype::ARCHETYPE.create( :archetype_id => archetype_id, :parent_archtype_id => parent_archtype_id, :adl_version => adl_version, :concept => concept, :description => val[4], :definition => val[5], :ontology => val[7] ) do |archetype| archetype.original_language = language end @@logger.debug("#{__FILE__}:#{__LINE__}: archetype = #{archetype.to_yaml} at #{@filename}:#{@lineno}") result = archetype result end .,., module_eval(<<'.,.,', 'parser.y', 63) def _reduce_4(val, _values, result) result = {:arch_head => val[0], :archetype_id => val[1] } result end .,., module_eval(<<'.,.,', 'parser.y', 67) def _reduce_5(val, _values, result) raise result end .,., module_eval(<<'.,.,', 'parser.y', 72) def _reduce_6(val, _values, result) result = {:arch_meta_data => nil } result end .,., module_eval(<<'.,.,', 'parser.y', 76) def _reduce_7(val, _values, result) result = val[1] result end .,., module_eval(<<'.,.,', 'parser.y', 81) def _reduce_8(val, _values, result) result = {:arch_meta_data => val[1] } result end .,., module_eval(<<'.,.,', 'parser.y', 86) def _reduce_9(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 90) def _reduce_10(val, _values, result) result = val[0].merge(val[2]) result end .,., module_eval(<<'.,.,', 'parser.y', 96) def _reduce_11(val, _values, result) result = {:adl_version => val[2], :is_controlled => false } result end .,., module_eval(<<'.,.,', 'parser.y', 100) def _reduce_12(val, _values, result) result = {:is_controlled => true } result end .,., # reduce 13 omitted module_eval(<<'.,.,', 'parser.y', 108) def _reduce_14(val, _values, result) result = {:parent_archtype_id => val[1]} result end .,., # reduce 15 omitted module_eval(<<'.,.,', 'parser.y', 114) def _reduce_16(val, _values, result) result = {:arch_concept => val[1] } result end .,., # reduce 17 omitted module_eval(<<'.,.,', 'parser.y', 124) def _reduce_18(val, _values, result) result = {:arch_language => nil} result end .,., module_eval(<<'.,.,', 'parser.y', 128) def _reduce_19(val, _values, result) result = {:arch_language => val[1]} result end .,., # reduce 20 omitted # reduce 21 omitted module_eval(<<'.,.,', 'parser.y', 139) def _reduce_22(val, _values, result) result = OpenEhr::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION.new(:details => val[1]) result end .,., # reduce 23 omitted module_eval(<<'.,.,', 'parser.y', 147) def _reduce_24(val, _values, result) result = val[1] result end .,., # reduce 25 omitted module_eval(<<'.,.,', 'parser.y', 155) def _reduce_26(val, _values, result) assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEhr::AM::Archetype::ConstraintModel::C_COMPLEX_OBJECT)} @@logger.debug("#{__FILE__}:#{__LINE__}: c_complex_object = #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 161) def _reduce_27(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 169) def _reduce_28(val, _values, result) result = OpenEhr::AM::Archetype::ConstraintModel::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object| c_complex_object.node_id = val[0][:c_complex_object_id][:local_term_code_ref] c_complex_object.rm_type_name = val[0][:c_complex_object_id][:type_identifier] c_complex_object.occurrences = val[0][:c_occurrences] end result end .,., module_eval(<<'.,.,', 'parser.y', 177) def _reduce_29(val, _values, result) result = OpenEhr::AM::Archetype::ConstraintModel::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object| c_complex_object.node_id = val[0][:c_complex_object_id][:local_term_code_ref] c_complex_object.rm_type_name = val[0][:c_complex_object_id][:type_identifier] c_complex_object.occurrences = val[0][:c_occurrences] end result end .,., module_eval(<<'.,.,', 'parser.y', 188) def _reduce_30(val, _values, result) result = {:c_complex_object_id => val[0], :c_occurrences => val[1]} result end .,., module_eval(<<'.,.,', 'parser.y', 193) def _reduce_31(val, _values, result) result = {:type_identifier => val[0]} result end .,., module_eval(<<'.,.,', 'parser.y', 197) def _reduce_32(val, _values, result) result = {:type_identifier => val[0], :local_term_code_ref => val[1]} result end .,., # reduce 33 omitted module_eval(<<'.,.,', 'parser.y', 203) def _reduce_34(val, _values, result) result = OpenEhr::AM::Archetype::ConstraintModel::C_COMPLEX_OBJECT.new(:attributes => val[0]) result end .,., module_eval(<<'.,.,', 'parser.y', 221) def _reduce_35(val, _values, result) @@logger.debug("#{__FILE__}:#{__LINE__}: c_complex_object = #{val[0].inspect} at #{@filename}:#{@lineno}") result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 226) def _reduce_36(val, _values, result) result = OpenEhr::AM::Archetype::ConstraintModel::ARCHETYPE_INTERNAL_REF.create do |archetype_internal_ref| archetype_internal_ref.target_path = val[0][:absolute_path] archetype_internal_ref.rm_type_name = val[0][:type_identifier] archetype_internal_ref.occurrences = val[0][:c_occurrences] end result end .,., module_eval(<<'.,.,', 'parser.y', 234) def _reduce_37(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 238) def _reduce_38(val, _values, result) result = OpenEhr::AM::Archetype::ConstraintModel::CONSTRAINT_REF.create do |constraint_ref| constraint_ref.reference = val[0] end result end .,., module_eval(<<'.,.,', 'parser.y', 244) def _reduce_39(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 248) def _reduce_40(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 252) def _reduce_41(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 256) def _reduce_42(val, _values, result) result = val[0] result end .,., # reduce 43 omitted # reduce 44 omitted module_eval(<<'.,.,', 'parser.y', 289) def _reduce_45(val, _values, result) result = val[1] result end .,., module_eval(<<'.,.,', 'parser.y', 295) def _reduce_46(val, _values, result) result = {:type_identifier => val[1], :c_occurrences => val[2], :absolute_path => val[3] } result end .,., # reduce 47 omitted module_eval(<<'.,.,', 'parser.y', 302) def _reduce_48(val, _values, result) result = OpenEhr::AM::Archetype::ConstraintModel::ARCHETYPE_SLOT.create do |archetype_slot| archetype_slot.includes = val[3] archetype_slot.excludes = val[4] archetype_slot.rm_type_name = val[0][:c_archetype_slot_id] archetype_slot.occurrences = val[0][:c_occurrences] end result end .,., module_eval(<<'.,.,', 'parser.y', 311) def _reduce_49(val, _values, result) result = {:c_archetype_slot_id => val[0],:c_occurrences => val[1]} result end .,., module_eval(<<'.,.,', 'parser.y', 316) def _reduce_50(val, _values, result) result = val[1] result end .,., # reduce 51 omitted # reduce 52 omitted module_eval(<<'.,.,', 'parser.y', 324) def _reduce_53(val, _values, result) assert_at(__FILE__,__LINE__){val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_PRIMITIVE)} result = OpenEhr::AM::Archetype::ConstraintModel::C_PRIMITIVE_OBJECT.create do |c_primitive_object| c_primitive_object.item = val[0] end result end .,., module_eval(<<'.,.,', 'parser.y', 332) def _reduce_54(val, _values, result) @@logger.debug("#{__FILE__}:#{__LINE__}: c_integer = #{val[0]} at #{@filename}:#{@lineno}") result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_INTEGER.create do |c_integer| c_integer.list c_integer.range c_integer.assumed_value end result end .,., module_eval(<<'.,.,', 'parser.y', 341) def _reduce_55(val, _values, result) @@logger.debug("#{__FILE__}:#{__LINE__}: c_real = #{val[0]} at #{@filename}:#{@lineno}") result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_REAL.new result end .,., module_eval(<<'.,.,', 'parser.y', 346) def _reduce_56(val, _values, result) @@logger.debug("#{__FILE__}:#{__LINE__}: c_date = #{val[0]} at #{@filename}:#{@lineno}") result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_DATE.new result end .,., module_eval(<<'.,.,', 'parser.y', 351) def _reduce_57(val, _values, result) @@logger.debug("#{__FILE__}:#{__LINE__}: c_time = #{val[0]} at #{@filename}:#{@lineno}") result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_TIME.new result end .,., module_eval(<<'.,.,', 'parser.y', 356) def _reduce_58(val, _values, result) @@logger.debug("#{__FILE__}:#{__LINE__}: c_date_time = #{val[0]} at #{@filename}:#{@lineno}") result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_DATE_TIME.new result end .,., module_eval(<<'.,.,', 'parser.y', 361) def _reduce_59(val, _values, result) @@logger.debug("#{__FILE__}:#{__LINE__}: c_duration = #{val[0]} at #{@filename}:#{@lineno}") result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_DURATION.new result end .,., module_eval(<<'.,.,', 'parser.y', 366) def _reduce_60(val, _values, result) @@logger.debug("#{__FILE__}:#{__LINE__}: c_string = #{val[0]} at #{@filename}:#{@lineno}") result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_STRING.new result end .,., module_eval(<<'.,.,', 'parser.y', 371) def _reduce_61(val, _values, result) assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN)} @@logger.debug("#{__FILE__}:#{__LINE__}: c_boolean = #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., # reduce 62 omitted module_eval(<<'.,.,', 'parser.y', 383) def _reduce_63(val, _values, result) result = [val[0]] result end .,., module_eval(<<'.,.,', 'parser.y', 387) def _reduce_64(val, _values, result) result = (val[0] << val[1]) result end .,., module_eval(<<'.,.,', 'parser.y', 393) def _reduce_65(val, _values, result) assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::C_ATTRIBUTE)} c_attribute = val[0] c_attribute.children = val[3] result = c_attribute result end .,., module_eval(<<'.,.,', 'parser.y', 401) def _reduce_66(val, _values, result) assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::C_ATTRIBUTE)} result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 406) def _reduce_67(val, _values, result) assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::C_ATTRIBUTE)} result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 413) def _reduce_68(val, _values, result) @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}, c_existence = #{val[1]} at #{@filename}") result = OpenEhr::AM::Archetype::ConstraintModel::C_SINGLE_ATTRIBUTE.new( :rm_attribute_name => val[0], :existence => val[1] ) result end .,., module_eval(<<'.,.,', 'parser.y', 422) def _reduce_69(val, _values, result) assert_at(__FILE__,__LINE__){ val[2].instance_of?(OpenEhr::AM::Archetype::ConstraintModel::CARDINALITY) } @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER: #{val[0]}, c_existence = #{val[1]}, c_cardinality = #{val[2]} at #{@filename}") result = OpenEhr::AM::Archetype::ConstraintModel::C_MULTIPLE_ATTRIBUTE.new( :rm_attribute_name => val[0], :existence => val[1], :cardinality => val[2] ) result end .,., module_eval(<<'.,.,', 'parser.y', 433) def _reduce_70(val, _values, result) result = Array[val[0]] result end .,., module_eval(<<'.,.,', 'parser.y', 437) def _reduce_71(val, _values, result) result = (val[0] << val[1]) result end .,., module_eval(<<'.,.,', 'parser.y', 441) def _reduce_72(val, _values, result) result = Array[val[0]] result end .,., # reduce 73 omitted module_eval(<<'.,.,', 'parser.y', 449) def _reduce_74(val, _values, result) result = val[1] result end .,., # reduce 75 omitted module_eval(<<'.,.,', 'parser.y', 457) def _reduce_76(val, _values, result) result = val[1] result end .,., # reduce 77 omitted # reduce 78 omitted # reduce 79 omitted # reduce 80 omitted # reduce 81 omitted # reduce 82 omitted # reduce 83 omitted # reduce 84 omitted module_eval(<<'.,.,', 'parser.y', 477) def _reduce_85(val, _values, result) dadl_section = val[1] result = OpenEhr::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY.new result end .,., # reduce 86 omitted # reduce 87 omitted module_eval(<<'.,.,', 'parser.y', 487) def _reduce_88(val, _values, result) @@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section attr_vals = \n#{val[0].to_yaml}") result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 492) def _reduce_89(val, _values, result) @@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section complex_object_block = \n#{val[0].to_yaml}") result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 499) def _reduce_90(val, _values, result) result = Array[val[0]] result end .,., module_eval(<<'.,.,', 'parser.y', 503) def _reduce_91(val, _values, result) result = (val[0] << val[1]) result end .,., module_eval(<<'.,.,', 'parser.y', 507) def _reduce_92(val, _values, result) result = (val[0] << val[2]) result end .,., module_eval(<<'.,.,', 'parser.y', 512) def _reduce_93(val, _values, result) @@logger.debug("#{__FILE__}:#{__LINE__}:attr_val\n attr_id = #{val[0]}, object_block = #{val[1]}") result = {:attr_id => val[0], :object_block => val[2]} result end .,., module_eval(<<'.,.,', 'parser.y', 518) def _reduce_94(val, _values, result) @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}") result = val[0] result end .,., # reduce 95 omitted module_eval(<<'.,.,', 'parser.y', 525) def _reduce_96(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 529) def _reduce_97(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 534) def _reduce_98(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 538) def _reduce_99(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 543) def _reduce_100(val, _values, result) result = {:untyped_multiple_attr_object_block => val[0]} result end .,., module_eval(<<'.,.,', 'parser.y', 547) def _reduce_101(val, _values, result) result = {:type_identifier => val[0], :untyped_multiple_attr_object_block => val[1]} result end .,., module_eval(<<'.,.,', 'parser.y', 552) def _reduce_102(val, _values, result) result = {:multiple_attr_object_block_head => val[0], :keyed_objects => val[1]} result end .,., module_eval(<<'.,.,', 'parser.y', 557) def _reduce_103(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 562) def _reduce_104(val, _values, result) result = Array[val[0]] result end .,., module_eval(<<'.,.,', 'parser.y', 566) def _reduce_105(val, _values, result) result = (val[0] << val[1]) result end .,., module_eval(<<'.,.,', 'parser.y', 571) def _reduce_106(val, _values, result) @@logger.debug("#{__FILE__}:#{__LINE__}: keyed_object = #{val[0]} at #{@filename}:#{@lineno}") result = {:object_key => val[0], :object_block => val[2]} result end .,., module_eval(<<'.,.,', 'parser.y', 577) def _reduce_107(val, _values, result) @@logger.debug("object_key: [#{val[1]}] at #{@filename}:#{@lineno}") result = val[1] result end .,., module_eval(<<'.,.,', 'parser.y', 583) def _reduce_108(val, _values, result) result = {:untyped_single_attr_object_block => val[0]} result end .,., module_eval(<<'.,.,', 'parser.y', 587) def _reduce_109(val, _values, result) result = {:type_identifier => val[0], :untyped_single_attr_object_block => val[1]} result end .,., module_eval(<<'.,.,', 'parser.y', 592) def _reduce_110(val, _values, result) @@logger.debug("#{__FILE__}:#{__LINE__}: single_attr_object_complex_head = #{val[0]} at #{@filename}:#{@lineno}") result = {:single_attr_object_complex_head => val[0]} result end .,., module_eval(<<'.,.,', 'parser.y', 597) def _reduce_111(val, _values, result) @@logger.debug("#{__FILE__}:#{__LINE__}: attr_vals = #{val[1]} at #{@filename}:#{@lineno}") result = {:single_attr_object_complex_head => val[0], :attr_vals => val[1]} result end .,., # reduce 112 omitted module_eval(<<'.,.,', 'parser.y', 603) def _reduce_113(val, _values, result) @@logger.debug("#{__FILE__}:#{__LINE__}: untyped_primitive_object_block = #{val[0]} at #{@filename}:#{@lineno}") result = {:untyped_primitive_object_block => val[0]} result end .,., module_eval(<<'.,.,', 'parser.y', 608) def _reduce_114(val, _values, result) @@logger.debug("#{__FILE__}:#{__LINE__}: type_identifier = #{val[0]}, untyped_primitive_object_block = #{val[1]} at #{@filename}:#{@lineno}") result = {:type_identifier => val[0], :untyped_primitive_object_block => val[1]} result end .,., module_eval(<<'.,.,', 'parser.y', 613) def _reduce_115(val, _values, result) @@logger.debug("#{__FILE__}:#{__LINE__}: primitive_object_block = <#{val[1]}> at #{@filename}:#{@lineno}") result = val[1] result end .,., module_eval(<<'.,.,', 'parser.y', 618) def _reduce_116(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 622) def _reduce_117(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 626) def _reduce_118(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 630) def _reduce_119(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 634) def _reduce_120(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 638) def _reduce_121(val, _values, result) @@logger.debug("string_value: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 643) def _reduce_122(val, _values, result) @@logger.debug("integer_value: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 648) def _reduce_123(val, _values, result) @@logger.debug("real_value: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 653) def _reduce_124(val, _values, result) @@logger.debug("boolean_value: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 658) def _reduce_125(val, _values, result) @@logger.debug("character_value: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 663) def _reduce_126(val, _values, result) @@logger.debug("date_value: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 668) def _reduce_127(val, _values, result) @@logger.debug("time_value: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 673) def _reduce_128(val, _values, result) @@logger.debug("date_time_value: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 678) def _reduce_129(val, _values, result) @@logger.debug("duration_value: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 683) def _reduce_130(val, _values, result) @@logger.debug("uri_value: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 689) def _reduce_131(val, _values, result) @@logger.debug("string_list_value: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 694) def _reduce_132(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 698) def _reduce_133(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 702) def _reduce_134(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 706) def _reduce_135(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 710) def _reduce_136(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 714) def _reduce_137(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 718) def _reduce_138(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 722) def _reduce_139(val, _values, result) result = val[0] result end .,., # reduce 140 omitted # reduce 141 omitted # reduce 142 omitted # reduce 143 omitted # reduce 144 omitted # reduce 145 omitted module_eval(<<'.,.,', 'parser.y', 734) def _reduce_146(val, _values, result) @@logger.debug("V_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 739) def _reduce_147(val, _values, result) @@logger.debug("V_GENERIC_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 745) def _reduce_148(val, _values, result) @@logger.debug("V_STRING: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 751) def _reduce_149(val, _values, result) result = [val[0],val[2]] result end .,., module_eval(<<'.,.,', 'parser.y', 755) def _reduce_150(val, _values, result) result = val[0] << val[2] result end .,., module_eval(<<'.,.,', 'parser.y', 759) def _reduce_151(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 764) def _reduce_152(val, _values, result) begin integer = Integer(val[0]) rescue raise end result = integer result end .,., module_eval(<<'.,.,', 'parser.y', 773) def _reduce_153(val, _values, result) begin integer = Integer(val[0]) rescue raise end result = integer result end .,., module_eval(<<'.,.,', 'parser.y', 782) def _reduce_154(val, _values, result) begin integer = Integer(val[0]) rescue raise end result = - integer result end .,., # reduce 155 omitted # reduce 156 omitted # reduce 157 omitted # reduce 158 omitted # reduce 159 omitted # reduce 160 omitted # reduce 161 omitted # reduce 162 omitted # reduce 163 omitted # reduce 164 omitted # reduce 165 omitted # reduce 166 omitted module_eval(<<'.,.,', 'parser.y', 808) def _reduce_167(val, _values, result) begin real = Float(val[0]) rescue raise end result = real result end .,., module_eval(<<'.,.,', 'parser.y', 817) def _reduce_168(val, _values, result) begin real = Float(val[1]) rescue raise end result = real result end .,., module_eval(<<'.,.,', 'parser.y', 826) def _reduce_169(val, _values, result) begin real = Float(val[1]) rescue raise end result = - real result end .,., # reduce 170 omitted # reduce 171 omitted # reduce 172 omitted # reduce 173 omitted # reduce 174 omitted # reduce 175 omitted # reduce 176 omitted # reduce 177 omitted # reduce 178 omitted # reduce 179 omitted # reduce 180 omitted # reduce 181 omitted module_eval(<<'.,.,', 'parser.y', 851) def _reduce_182(val, _values, result) result = true result end .,., module_eval(<<'.,.,', 'parser.y', 855) def _reduce_183(val, _values, result) result = false result end .,., # reduce 184 omitted # reduce 185 omitted # reduce 186 omitted # reduce 187 omitted # reduce 188 omitted # reduce 189 omitted # reduce 190 omitted module_eval(<<'.,.,', 'parser.y', 870) def _reduce_191(val, _values, result) result = val[0] result end .,., # reduce 192 omitted # reduce 193 omitted # reduce 194 omitted # reduce 195 omitted # reduce 196 omitted # reduce 197 omitted # reduce 198 omitted # reduce 199 omitted # reduce 200 omitted # reduce 201 omitted # reduce 202 omitted # reduce 203 omitted # reduce 204 omitted # reduce 205 omitted # reduce 206 omitted # reduce 207 omitted # reduce 208 omitted # reduce 209 omitted # reduce 210 omitted # reduce 211 omitted # reduce 212 omitted # reduce 213 omitted # reduce 214 omitted # reduce 215 omitted # reduce 216 omitted module_eval(<<'.,.,', 'parser.y', 905) def _reduce_217(val, _values, result) @@logger.debug("V_ISO8601_EXTENDED_DATE_TIME: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., # reduce 218 omitted # reduce 219 omitted # reduce 220 omitted # reduce 221 omitted # reduce 222 omitted # reduce 223 omitted # reduce 224 omitted # reduce 225 omitted # reduce 226 omitted # reduce 227 omitted # reduce 228 omitted # reduce 229 omitted module_eval(<<'.,.,', 'parser.y', 925) def _reduce_230(val, _values, result) @@logger.debug("V_ISO8601_DURATION: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., # reduce 231 omitted # reduce 232 omitted # reduce 233 omitted # reduce 234 omitted # reduce 235 omitted # reduce 236 omitted # reduce 237 omitted # reduce 238 omitted # reduce 239 omitted # reduce 240 omitted # reduce 241 omitted # reduce 242 omitted module_eval(<<'.,.,', 'parser.y', 945) def _reduce_243(val, _values, result) @@logger.debug("#{__FILE__}:#{__LINE__}: V_QUALIFIED_TERM_CODE_REF = #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., # reduce 244 omitted # reduce 245 omitted # reduce 246 omitted module_eval(<<'.,.,', 'parser.y', 955) def _reduce_247(val, _values, result) @@logger.debug("#{__FILE__}:#{__LINE__}: V_URI = #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., # reduce 248 omitted # reduce 249 omitted # reduce 250 omitted # reduce 251 omitted # reduce 252 omitted # reduce 253 omitted # reduce 254 omitted # reduce 255 omitted # reduce 256 omitted # reduce 257 omitted # reduce 258 omitted # reduce 259 omitted # reduce 260 omitted # reduce 261 omitted # reduce 262 omitted # reduce 263 omitted # reduce 264 omitted # reduce 265 omitted # reduce 266 omitted # reduce 267 omitted # reduce 268 omitted # reduce 269 omitted # reduce 270 omitted # reduce 271 omitted # reduce 272 omitted # reduce 273 omitted # reduce 274 omitted # reduce 275 omitted # reduce 276 omitted # reduce 277 omitted # reduce 278 omitted # reduce 279 omitted # reduce 280 omitted # reduce 281 omitted # reduce 282 omitted # reduce 283 omitted # reduce 284 omitted # reduce 285 omitted # reduce 286 omitted # reduce 287 omitted module_eval(<<'.,.,', 'parser.y', 1026) def _reduce_288(val, _values, result) @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}") result end .,., module_eval(<<'.,.,', 'parser.y', 1030) def _reduce_289(val, _values, result) @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}") result end .,., module_eval(<<'.,.,', 'parser.y', 1041) def _reduce_290(val, _values, result) result = Range.new(1,1) result end .,., module_eval(<<'.,.,', 'parser.y', 1045) def _reduce_291(val, _values, result) result = val[3] result end .,., module_eval(<<'.,.,', 'parser.y', 1050) def _reduce_292(val, _values, result) begin integer = Integer(val[0]) rescue raise end result = integer result end .,., module_eval(<<'.,.,', 'parser.y', 1059) def _reduce_293(val, _values, result) begin from_integer = Integer(val[0]) to_integer = Integer(val[2]) rescue raise end result = Range.new(from_integer,to_integer) result end .,., module_eval(<<'.,.,', 'parser.y', 1070) def _reduce_294(val, _values, result) result = OpenEhr::AM::Archetype::ConstraintModel::CARDINALITY.new result end .,., # reduce 295 omitted # reduce 296 omitted # reduce 297 omitted # reduce 298 omitted # reduce 299 omitted # reduce 300 omitted # reduce 301 omitted # reduce 302 omitted module_eval(<<'.,.,', 'parser.y', 1084) def _reduce_303(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 1088) def _reduce_304(val, _values, result) result = val[0] result end .,., # reduce 305 omitted module_eval(<<'.,.,', 'parser.y', 1095) def _reduce_306(val, _values, result) case val[3] when OpenEhr::RM::Support::AssumedTypes::Interval result = val[3] else result = val[3] end result end .,., # reduce 307 omitted module_eval(<<'.,.,', 'parser.y', 1106) def _reduce_308(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 1110) def _reduce_309(val, _values, result) result = OpenEhr::RM::Support::AssumedTypes::Interval.new(val[0], val[2]) result end .,., # reduce 310 omitted # reduce 311 omitted # reduce 312 omitted # reduce 313 omitted # reduce 314 omitted # reduce 315 omitted # reduce 316 omitted # reduce 317 omitted # reduce 318 omitted # reduce 319 omitted # reduce 320 omitted # reduce 321 omitted # reduce 322 omitted # reduce 323 omitted # reduce 324 omitted # reduce 325 omitted # reduce 326 omitted # reduce 327 omitted # reduce 328 omitted # reduce 329 omitted # reduce 330 omitted # reduce 331 omitted # reduce 332 omitted # reduce 333 omitted # reduce 334 omitted # reduce 335 omitted # reduce 336 omitted # reduce 337 omitted # reduce 338 omitted # reduce 339 omitted # reduce 340 omitted # reduce 341 omitted # reduce 342 omitted # reduce 343 omitted # reduce 344 omitted # reduce 345 omitted # reduce 346 omitted # reduce 347 omitted # reduce 348 omitted # reduce 349 omitted # reduce 350 omitted # reduce 351 omitted # reduce 352 omitted module_eval(<<'.,.,', 'parser.y', 1176) def _reduce_353(val, _values, result) result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN.new(:true_valid => true) result end .,., module_eval(<<'.,.,', 'parser.y', 1180) def _reduce_354(val, _values, result) result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN.new(:true_valid => false) result end .,., module_eval(<<'.,.,', 'parser.y', 1184) def _reduce_355(val, _values, result) result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN.new(:true_valid => true,:false_valid => false) result end .,., module_eval(<<'.,.,', 'parser.y', 1188) def _reduce_356(val, _values, result) result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN.new(:true_valid => false,:false_valid => true) result end .,., module_eval(<<'.,.,', 'parser.y', 1193) def _reduce_357(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 1197) def _reduce_358(val, _values, result) raise 'Not implemented yet' result end .,., module_eval(<<'.,.,', 'parser.y', 1201) def _reduce_359(val, _values, result) raise 'Not implemented yet' result end .,., # reduce 360 omitted # reduce 361 omitted # reduce 362 omitted # reduce 363 omitted # reduce 364 omitted module_eval(<<'.,.,', 'parser.y', 1213) def _reduce_365(val, _values, result) @in_interval = false @@logger.debug("#{__FILE__}:#{__LINE__}, #{val[0]}|#{val[2]} at #{@filename}") result end .,., module_eval(<<'.,.,', 'parser.y', 1220) def _reduce_366(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 1224) def _reduce_367(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 1230) def _reduce_368(val, _values, result) @@logger.debug("#{__FILE__}:#{__LINE__}, START_TERM_CODE_CONSTRAINT = #{val[0]} at #{@filename}") @@logger.debug("#{__FILE__}:#{__LINE__}, term_code_body = #{val[1]}") @@logger.debug("#{__FILE__}:#{__LINE__}, END_TERM_CODE_CONSTRAINT = #{val[2]}") result = val[1] result end .,., # reduce 369 omitted # reduce 370 omitted # reduce 371 omitted module_eval(<<'.,.,', 'parser.y', 1246) def _reduce_372(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 1251) def _reduce_373(val, _values, result) result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 1255) def _reduce_374(val, _values, result) @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{word} at #{@filename}") result = val[0] result end .,., module_eval(<<'.,.,', 'parser.y', 1266) def _reduce_375(val, _values, result) result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_DURATION.new #val[0] result end .,., def _reduce_none(val, _values, result) val[0] end end # class Parser end # module ADL end # module OpenEhr