Changeset 321


Ignore:
Timestamp:
Oct 18, 2009, 12:06:41 AM (15 years ago)
Author:
Tatsukawa, Akimichi
Message:

commit from Pittsburgh

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

Legend:

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

    r320 r321  
    519519              when /\A\+/   # +
    520520                yield :Plus_code, :Plus_code
     521              when /\A\=/   # =
     522                yield :Equal_code, :Equal_code
    521523              when /\A\*/   # *
    522524                yield :Star_code, :Star_code
     
    542544                yield :Right_parenthesis_code, :Right_parenthesis_code
    543545              when /\A\//   # /
    544 #                yield :Slash_code, :Slash_code
    545 #              when /\A\// #V_REGEXP /
    546                 assert_at(__FILE__,__LINE__){@adl_type.last != :regexp}
    547                 #@in_regexp = true
     546                @@logger.debug("CADLScanner#scan: Slash_code #{@filename}:#{@lineno}")
     547                yield :Slash_code, :Slash_code
     548# #                yield :Slash_code, :Slash_code
     549# #              when /\A\// #V_REGEXP /
     550#                 assert_at(__FILE__,__LINE__){@adl_type.last != :regexp}
     551#                 #@in_regexp = true
     552#                 @adl_type.push(:regexp)
     553# #                yield :START_REGEXP_BLOCK, :START_REGEXP_BLOCK
     554
     555              when /\A\{\// # REGEXP_HEAD {/
     556                assert_at(__FILE__,__LINE__){ @adl_type.last != :regexp}
     557                #                   @in_regexp = true
     558                @@logger.debug("CADLScanner#scan: REGEXP_HEAD:")
     559                @adl_type.push(:cadl)
    548560                @adl_type.push(:regexp)
    549 #                yield :START_REGEXP_BLOCK, :START_REGEXP_BLOCK
    550                 yield :Slash_code, :Slash_code
    551 
    552 #               when /\A\{\// #V_REGEXP {/
    553 #                 if @adl_type.last != :regexp
    554 #                   @in_regexp = true
    555 #                   @adl_type.push(:regexp)
    556 #                   yield :START_REGEXP_BLOCK, :START_REGEXP_BLOCK
    557 #                 else
    558 #                   assert_at(__FILE__,__LINE__){false}
    559 #                 end
     561                #                   yield :START_REGEXP_BLOCK, :START_REGEXP_BLOCK
     562                yield :REGEXP_HEAD, :REGEXP_HEAD
    560563              when /\A\{/   # {
    561564                @adl_type.push(:cadl)
    562                 @@logger.debug("CADLScanner#scan: entering cADL at #{@filename}:#{@lineno}")
     565                #@@logger.debug("CADLScanner#scan: entering cADL at #{@filename}:#{@lineno}")
    563566                yield :SYM_START_CBLOCK, :SYM_START_CBLOCK
    564567              when /\A\}/   # }
     
    628631              when /\AP[yY]?[mM]?[wW]?[dD]?/   #V_ISO8601_DURATION_CONSTRAINT_PATTERN
    629632                yield :V_ISO8601_DURATION_CONSTRAINT_PATTERN, $&
    630               when /\A[a-zA-Z][a-zA-Z0-9_]*/
     633              when /\A[a-z][a-zA-Z0-9_]*/
    631634                word = $&.dup
    632635                if RESERVED[word.downcase]
    633                   @@logger.debug("CADLScanner#scan: RESERVED = #{word} at #{@filename}:#{@lineno}")
     636                  @@logger.debug("ADLScanner#scan: RESERVED = #{RESERVED[word]} at #{@filename}:#{@lineno}")
    634637                  yield RESERVED[word.downcase], RESERVED[word.downcase]
    635638                else
     
    654657              when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})?/
    655658                yield :V_ISO8601_EXTENDED_DATE_TIME, $&
    656               when /\A[[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9](Z|[+-][0-9]{4})?/
     659              when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9](Z|[+-][0-9]{4})?/
    657660                yield :V_ISO8601_EXTENDED_DATE_TIME, $&
    658               when /\A[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})? /   #V_ISO8601_EXTENDED_TIME hh:mm:ss[,sss][Z|+/-nnnn]
     661              when /\A[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?/   #V_ISO8601_EXTENDED_TIME hh:mm:ss[,sss][Z|+/-nnnn]
     662                yield :V_ISO8601_EXTENDED_TIME, $&
     663              when /\A[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})?/   #V_ISO8601_EXTENDED_TIME hh:mm:ss[,sss][Z|+/-nnnn]
    659664                yield :V_ISO8601_EXTENDED_TIME, $&
    660665              when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]/   #V_ISO8601_EXTENDED_DATE YYYY-MM-DD
     
    696701              end
    697702            when :term_constraint
    698               @@logger.debug("Entering scan_term_constraint at #{@filename}:#{@lineno}: data = #{data.inspect}")
    699703              term_constraint_scanner = OpenEhr::ADL::Scanner::TermConstraintScanner.new(@adl_type, @filename, @lineno)
    700704              data = term_constraint_scanner.scan(data) do |sym, val|
     
    726730            when :regexp
    727731              case data
    728               when /\A\// #V_REGEXP /
    729                 assert_at(__FILE__,__LINE__){@adl_type.last == :regexp}
    730                 #@in_regexp = false
    731                 @adl_type.pop
    732                 yield :END_REGEXP_BLOCK, :END_REGEXP_BLOCK
     732# #              when /\A\// #V_REGEXP /
     733#               when /\A([^\/]+)\// #V_REGEXP
     734#                 assert_at(__FILE__,__LINE__){@adl_type.last == :regexp}
     735#                 #@in_regexp = false
     736#                 @adl_type.pop
     737#                 @@logger.debug("#{__FILE__}:#{__LINE__}: RegexScanner::scan  $1 = #{$1.inspect}")
     738# #                yield :END_REGEXP_BLOCK, :END_REGEXP_BLOCK
     739#                 yield :V_REGEXP,  $1
    733740#               when /\A\/\}/ #V_REGEXP /
    734741#                 if @adl_type.last == :regexp
     
    740747#                 end
    741748#              when /\A(.*)(\/\})/ #V_REGEXP /}
    742               when /\A([^\/]+)/ #V_REGEXP
     749#              when /\A(.*)\/\}/ # REGEXP_BODY
     750              when /\A(.*)\// # REGEXP_BODY
     751                @adl_type.pop
     752                @@logger.debug("#{__FILE__}:#{__LINE__}: RegexScanner::scan REGEXP_BODY = #{$1}")
    743753                yield :REGEXP_BODY, $1
    744 #              else
    745 #                raise "should not happen at #{data}"
    746754              end
    747755              data = $' # variable $' receives the string after the match
  • ruby/trunk/lib/adl_parser/lib/parser.rb

    r320 r321  
    2727    class Parser < Racc::Parser
    2828
    29 module_eval(<<'...end parser.y/module_eval...', 'parser.y', 1290)
     29module_eval(<<'...end parser.y/module_eval...', 'parser.y', 1317)
    3030
    3131def assert_at(file,line, message = "")
     
    152152
    153153racc_action_table = [
    154    574,   473,   149,   151,   468,   594,   462,   163,     1,   466,
    155     64,   464,   213,   576,    12,   371,   325,   158,   264,   149,
    156    151,   596,   159,   568,   259,   497,   103,     6,   529,   187,
    157     48,   146,    71,   493,    14,   214,   541,   516,   153,   519,
    158    521,    76,   517,   513,   149,   151,   510,   435,   146,   511,
    159    512,    42,    44,   310,   121,   153,    78,    81,    83,   191,
    160    237,    93,   300,   305,   599,   103,   105,   107,   109,   537,
    161    529,   103,   109,   146,    71,   145,   107,   105,   541,   516,
    162    153,   519,   521,   316,   109,   307,   309,   271,   536,   161,
    163    105,   283,   145,    42,    44,   310,   149,   151,    78,    81,
    164     83,   191,   109,    93,   300,   305,   109,   103,   105,   107,
    165    109,   537,   149,   151,   149,   151,   475,   145,   149,   151,
    166     78,   375,   376,   570,   451,   146,   458,   307,   309,   271,
    167    536,   433,   153,   283,   491,   149,   151,   495,   154,   155,
    168    460,   146,   147,   146,   417,   148,   150,   146,   153,   419,
    169    153,   237,   149,   151,   153,   154,   155,   333,   133,   147,
    170     75,   156,   148,   150,   146,   387,   157,   386,   247,   145,
    171    109,   153,   378,   379,    42,    44,    93,   573,   115,   117,
    172     99,   146,    78,   375,   376,   145,   210,   145,   153,   107,
    173    103,   145,    71,   630,    76,   107,    34,   378,   379,   449,
    174    103,    93,    98,   152,   238,   134,   105,   229,   145,   572,
    175    231,    42,    44,    99,   499,    16,    78,    81,    83,   187,
    176    152,    93,    95,    97,   172,   145,   501,    76,    48,   120,
    177     99,    89,    92,    17,   246,   141,   258,    42,    44,   251,
    178    230,  -374,   254,   255,    76,   123,    78,   375,   376,    78,
    179     81,    83,   141,   169,    93,    95,    97,   167,   168,   165,
    180    166,    78,   375,   376,    89,    92,    78,    81,    83,    35,
    181   -373,    93,    95,    97,   378,   379,    99,    24,    93,    34,
    182     58,    89,    92,    78,    81,    83,   482,   171,    93,   328,
    183     76,   331,   103,   105,   107,   109,    56,   323,    98,   391,
    184    105,    99,   392,   107,    34,    25,   120,    42,    44,   483,
    185    393,    48,    78,    81,    83,    76,   127,    93,    95,    97,
    186     42,    44,   394,    98,    48,   395,    99,    89,    92,    95,
    187     97,   396,    42,    44,   337,   338,    48,    78,    81,    83,
    188     76,   127,    93,    95,    97,    42,    44,   102,   141,    29,
    189     30,    99,    89,    92,   373,    64,   472,    42,    44,   610,
    190    611,   612,    78,    81,    83,    76,   397,    93,    95,    97,
    191    218,   398,   389,   141,   399,    48,    99,    89,    92,   115,
    192    117,   400,    42,    44,    76,   142,   143,    78,    81,    83,
    193     76,   401,    93,    95,    97,   218,   378,   379,   141,   262,
    194     93,    99,    89,    92,   601,   602,    78,    81,    83,    76,
    195    402,    93,    78,    81,    83,    76,   403,    93,    95,    97,
    196    218,   378,   379,   141,   263,    93,    99,    89,    92,   264,
    197    414,    78,    81,    83,    76,   404,    93,    78,    81,    83,
    198     76,   266,    93,    95,    97,   411,   375,   376,   141,   335,
    199    336,    99,    89,    92,   267,   414,    78,    81,    83,    42,
    200     44,    93,    78,    81,    83,    76,   405,    93,    95,    97,
    201     78,   375,   376,    98,    54,   406,    99,    89,    92,    20,
    202    414,    21,    42,    44,    34,   430,   431,    78,    81,    83,
    203     76,   317,    93,    95,    97,   411,   375,   376,   141,   345,
    204    346,    99,    89,    92,   384,   409,   378,   379,   410,    20,
    205     93,    21,    78,    81,    83,    76,    48,    93,    95,    97,
    206    245,   218,   244,    98,   243,    42,    44,    89,    92,    78,
    207    375,   376,    42,    44,    99,    76,   242,    78,    81,    83,
    208    347,   348,    93,    95,    97,   373,   218,   260,    76,    78,
    209    375,   376,    89,    92,   218,   261,    98,    78,    81,    83,
    210     76,   262,    93,   263,   218,    42,    44,   264,    76,   241,
    211     78,    81,    83,   240,   218,    93,    95,    97,    76,   436,
    212    218,   437,    78,    81,    83,    89,    92,    93,    76,   218,
    213     78,    81,    83,   438,    76,    93,    78,   375,   376,   218,
    214     78,    81,    83,    76,   439,    93,   218,    78,   375,   376,
    215     78,    81,    83,    76,   440,    93,    78,    81,    83,   441,
    216     76,    93,   428,   429,   442,    78,    81,    83,   378,   379,
    217     93,   443,    93,   426,   427,    78,    81,    83,   361,   362,
    218     93,   444,    78,    81,    83,   310,   445,    93,    78,    81,
    219     83,   191,   446,    93,   300,   305,   447,   103,   105,   107,
    220    109,    78,    81,    83,   363,   364,    93,   424,   425,   239,
    221    103,   105,   107,   109,   422,   423,   216,   307,   309,   271,
    222   -103,   420,   421,   283,   206,   316,   317,    78,    81,    83,
    223    191,   452,    93,   115,   117,   120,   103,   105,   107,   109,
    224    187,   112,   121,   628,   629,    78,    81,    83,   115,   117,
    225     93,   115,   117,   120,   103,   105,   107,   109,   453,   112,
    226     78,    81,    83,   454,   455,    93,   456,   457,   156,   103,
    227    105,   107,   109,    78,    81,    83,   158,   157,    93,   159,
    228    141,   172,   103,   105,   107,   109,    78,    81,    83,   143,
    229    212,    93,   127,   175,   470,   103,   105,   107,   109,   167,
    230    168,   165,   166,   167,   168,   165,   166,   167,   168,   165,
    231    166,   167,   168,   165,   166,   381,    78,   375,   376,   167,
    232    168,   165,   166,   167,   168,   165,   166,   167,   168,   165,
    233    166,   167,   168,   165,   166,   265,   162,   161,   477,   478,
    234    480,   481,   144,   484,   485,   486,   103,   488,   105,   266,
    235    141,   137,   136,    48,   125,   502,   107,   504,   109,   506,
    236    109,   508,    68,    67,   514,   515,    66,   543,    34,   545,
    237    546,   547,   103,   549,   105,   551,   107,   553,   109,   555,
    238    267,   557,    58,   559,   560,   561,   562,   109,   109,   109,
    239    109,   563,   564,  -103,   567,    53,   107,   169,   268,    50,
    240     32,   578,   579,   105,   581,   582,   583,   584,   585,   586,
    241    587,    28,   590,   591,   592,   593,    27,   248,   269,   103,
    242    270,   603,   604,   605,   606,    76,   568,   608,   311,    18,
    243    617,   619,   620,   621,    15,   623,    10,     9,   625,   626,
    244    627,   320,     8,     7,   161 ]
     154   514,   493,   133,   466,   164,   588,   464,   460,   129,   462,
     155    57,   374,   228,   327,   475,    10,   568,   169,   170,   167,
     156   168,   433,    29,   109,   511,   183,   108,   508,   524,   415,
     157   509,   510,    71,   431,    66,    12,   537,   512,    49,   515,
     158   517,   314,   569,    59,   491,   229,    95,    98,   567,   134,
     159    30,    46,    47,   309,    49,   571,    78,    81,    84,   187,
     160   117,    93,   295,   301,    75,   109,   112,   114,   117,   532,
     161   524,   117,   109,   114,    71,   112,   123,   124,   537,   512,
     162   117,   515,   517,   117,   101,   109,   307,   270,   271,   534,
     163   161,   114,   283,    46,    47,   309,    71,   230,    78,    81,
     164    84,   187,   114,    93,   295,   301,    99,   109,   112,   114,
     165   117,   532,   152,    66,   373,    46,    47,   101,   477,   142,
     166    78,    81,    84,   429,   117,    93,    95,    98,   307,   270,
     167   271,   534,   489,    49,   283,    88,    91,   152,   487,   139,
     168   152,   478,    76,   156,   157,   152,   217,   148,   155,   472,
     169   151,   153,   152,    78,    81,    84,   236,   158,    93,    95,
     170    98,   114,   159,   152,   143,   150,   456,   152,    88,    91,
     171   156,   157,   458,   155,   148,    76,   155,   151,   153,   152,
     172   112,   155,    78,    81,    84,   147,   149,    93,   155,   112,
     173   150,   152,   594,   150,   109,   236,   183,   577,   150,   155,
     174   166,   330,   127,   155,    76,   150,   576,   447,   154,   565,
     175   147,   149,   112,   147,   149,   155,   150,  -373,   147,   149,
     176   150,   217,    78,   376,   377,   147,   149,   155,   448,   380,
     177   381,   217,   150,    93,   371,   154,   147,   149,   112,   258,
     178   147,   149,   250,   212,   150,   254,   255,   117,    78,   376,
     179   377,    35,   147,   149,    78,   376,   377,    78,    81,    84,
     180    46,    47,    93,   101,   147,   149,   213,    78,    81,    84,
     181   265,   109,    93,   144,   126,   564,   380,   381,   145,    76,
     182    93,   101,   237,    49,    20,   139,    78,    81,    84,    76,
     183   217,    93,    46,    47,   495,   109,   112,   114,   117,    78,
     184    81,    84,    21,    99,    93,    95,    98,    16,   101,    17,
     185     1,   324,    46,    47,    88,    91,   217,    78,    81,    84,
     186   126,    76,    93,    95,    98,   319,    78,    81,    84,     5,
     187   139,    93,    88,    91,   217,   169,   170,   167,   168,    76,
     188   217,    78,   376,   377,    78,    81,    84,   217,    76,    93,
     189    95,    98,    78,    81,    84,   209,   333,    93,   217,    88,
     190    91,   496,   171,   380,   381,    35,    76,    93,   114,   310,
     191    78,    81,    84,   102,    76,    93,    78,    81,    84,  -374,
     192   390,    93,   101,    78,    81,    84,   380,   381,    93,    16,
     193    93,    17,    76,    54,    78,    81,    84,    49,    76,    93,
     194   101,   424,   425,    35,   139,    76,    46,    47,   391,   380,
     195   381,    39,   392,    93,    46,    47,    76,   393,    78,    81,
     196    84,    35,    99,    93,    95,    98,   380,   381,   101,   394,
     197    93,    46,    47,    88,    91,    49,    78,    81,    84,   411,
     198    76,    93,    95,    98,    46,    47,   101,   416,   417,   102,
     199    99,    88,    91,    49,    78,   376,   377,   395,    76,    46,
     200    47,   396,    46,    47,    78,    81,    84,   397,    99,    93,
     201    95,    98,   398,   373,   101,   470,   399,    46,    47,    88,
     202    91,   400,    78,    81,    84,   262,    76,    93,    95,    98,
     203    46,    47,   101,   386,   322,   385,    99,    88,    91,   401,
     204   217,   123,   124,   402,    76,    46,    47,   411,   422,   423,
     205    78,    81,    84,   264,   139,    93,    95,    98,   101,   614,
     206   615,   616,   410,   376,   377,    88,    91,   265,    78,    81,
     207    84,   411,    76,    93,    95,    98,    78,    81,    84,   268,
     208   139,    93,   101,    88,    91,   266,   410,   376,   377,   403,
     209    76,   217,   418,   419,    78,    81,    84,   404,    76,    93,
     210    95,    98,   420,   421,   139,   217,    78,   376,   377,    88,
     211    91,   388,   405,   380,   381,   316,    76,    93,    78,    81,
     212    84,   426,   427,    93,    95,    98,   408,    78,    81,    84,
     213    46,    47,    93,    88,    91,   169,   170,   167,   168,   269,
     214    76,    78,    81,    84,   335,   336,    93,   309,   268,    76,
     215    78,    81,    84,   187,   267,    93,   295,   301,   266,   109,
     216   112,   114,   117,    76,    78,    81,    84,   314,   316,    93,
     217    78,   376,   377,   109,   112,   114,   117,    78,   376,   377,
     218   307,   270,   271,  -104,   343,   344,   283,   202,   345,   346,
     219    78,    81,    84,   187,   265,    93,   123,   124,   126,   109,
     220   112,   114,   117,   183,   120,   127,   347,   348,    78,    81,
     221    84,    25,    26,    93,   123,   124,   126,   109,   112,   114,
     222   117,   264,   120,    78,    81,    84,   596,   597,    93,    78,
     223   376,   377,   109,   112,   114,   117,    78,    81,    84,   361,
     224   362,    93,   363,   364,   263,   109,   112,   114,   117,    78,
     225    81,    84,   123,   124,    93,   624,   625,   262,   109,   112,
     226   114,   117,   383,    78,   376,   377,   169,   170,   167,   168,
     227   169,   170,   167,   168,   169,   170,   167,   168,   169,   170,
     228   167,   168,   261,   260,   259,   248,   434,   435,   436,   437,
     229   438,   439,   440,   441,   442,   443,   444,   445,   247,   246,
     230   450,   451,   452,   453,   454,   455,   144,   158,   145,   159,
     231   245,   244,   243,   242,   241,   240,   468,   239,   471,   238,
     232   215,   476,   139,   480,   481,   482,   483,   484,   109,   171,
     233   143,   211,   207,   102,   165,   498,   112,   500,   114,   502,
     234   117,   504,    76,   161,   507,   146,   139,   539,   540,   541,
     235   137,   543,   544,   109,   546,   112,   548,   114,   550,   117,
     236   552,   135,    49,   555,   556,   557,   558,   559,   560,   117,
     237   117,   117,   117,   131,   562,    68,    67,    35,   166,    59,
     238    56,  -104,   574,   161,    53,   578,   579,   581,   582,   583,
     239   584,   585,   586,   587,    34,   590,   591,    31,    28,    24,
     240   598,   127,    23,   602,   603,    76,   564,   605,   607,   608,
     241   609,   610,    15,   612,    13,     9,     8,   618,   619,   620,
     242   621,     7,   622,   623,   573 ]
    245243
    246244racc_action_check = [
    247    532,   401,   220,   220,   398,   569,   395,    89,     0,   397,
    248     41,   396,   142,   532,     6,   259,   242,    83,   518,   228,
    249    228,   571,    83,   518,   193,   427,   242,     0,   532,   259,
    250     41,   220,   532,   423,     6,   142,   532,   532,   220,   532,
    251    532,    89,   482,   470,   319,   319,   470,   348,   228,   470,
    252    470,   532,   532,   532,   401,   228,   532,   532,   532,   532,
    253    319,   532,   532,   532,   573,   532,   532,   532,   532,   532,
    254    482,   395,   398,   319,   482,   220,   397,   396,   482,   482,
    255    319,   482,   482,   482,   427,   532,   532,   532,   532,   569,
    256    423,   532,   228,   482,   482,   482,   221,   221,   482,   482,
    257    482,   482,   470,   482,   482,   482,   348,   482,   482,   482,
    258    482,   482,   227,   227,   223,   223,   402,   319,   225,   225,
    259    573,   573,   573,   521,   364,   221,   392,   482,   482,   482,
    260    482,   346,   221,   482,   421,   173,   173,   425,   173,   173,
    261    394,   227,   173,   223,   336,   173,   173,   225,   227,   338,
    262    223,   173,    80,    80,   225,    80,    80,   248,    68,    80,
    263     53,    81,    80,    80,   173,   267,    81,   267,   185,   221,
    264    248,   173,   364,   364,   521,   521,   364,   527,   402,   402,
    265     53,    80,   392,   392,   392,   227,   136,   223,    80,   346,
    266    421,   225,    53,   623,    53,   425,   136,   394,   394,   362,
    267    336,   394,    53,   173,   174,    68,   338,   161,   173,   527,
    268    162,    53,    53,   623,   429,    10,    53,    53,    53,   261,
    269     80,    53,    53,    53,    98,    80,   431,   623,   136,   268,
    270    162,    53,    53,    10,   184,   623,   191,   136,   136,   191,
    271    161,    98,   191,   191,   162,    59,   362,   362,   362,   623,
    272    623,   623,   162,    91,   623,   623,   623,   174,   174,   174,
    273    174,   429,   429,   429,   623,   623,   162,   162,   162,    27,
    274     91,   162,   162,   162,   431,   431,    74,    18,   431,    27,
    275     59,   162,   162,   191,   191,   191,   410,    92,   191,   244,
    276     74,   247,   191,   191,   191,   191,    33,   240,    74,   270,
    277    244,   624,   272,   247,   516,    18,   240,    74,    74,   410,
    278    273,    27,    74,    74,    74,   624,   125,    74,    74,    74,
    279     27,    27,   275,   624,    33,   278,   171,    74,    74,    92,
    280     92,   281,   624,   624,   250,   250,   516,   624,   624,   624,
    281    171,    67,   624,   624,   624,   516,   516,    57,   171,    22,
    282     22,   168,   624,   624,   400,    57,   400,   125,   125,   605,
    283    605,   605,   171,   171,   171,   168,   285,   171,   171,   171,
    284    152,   288,   269,   168,   291,    57,   167,   171,   171,   269,
    285    269,   293,    67,    67,   152,    77,    77,   168,   168,   168,
    286    167,   295,   168,   168,   168,   155,   451,   451,   167,   297,
    287    451,   166,   168,   168,   577,   577,   152,   152,   152,   155,
    288    299,   152,   167,   167,   167,   166,   300,   167,   167,   167,
    289    154,   501,   501,   166,   302,   501,   165,   167,   167,   303,
    290    563,   155,   155,   155,   154,   305,   155,   166,   166,   166,
    291    165,   308,   166,   166,   166,   563,   563,   563,   165,   249,
    292    249,   608,   166,   166,   310,   484,   154,   154,   154,   519,
    293    519,   154,   165,   165,   165,   608,   311,   165,   165,   165,
    294    484,   484,   484,   608,    32,   312,    99,   165,   165,    14,
    295    320,    14,   608,   608,    32,   344,   344,   608,   608,   608,
    296     99,   314,   608,   608,   608,   320,   320,   320,    99,   252,
    297    252,   613,   608,   608,   266,   317,   266,   266,   318,    30,
    298    266,    30,    99,    99,    99,   613,    32,    99,    99,    99,
    299    183,   218,   182,   613,   181,    32,    32,    99,    99,   262,
    300    262,   262,   613,   613,   617,   218,   180,   613,   613,   613,
    301    253,   253,   613,   613,   613,   260,   153,   195,   617,   572,
    302    572,   572,   613,   613,   145,   196,   617,   218,   218,   218,
    303    153,   198,   218,   200,   146,   617,   617,   201,   145,   179,
    304    617,   617,   617,   178,   147,   617,   617,   617,   146,   349,
    305    151,   350,   153,   153,   153,   617,   617,   153,   147,   149,
    306    145,   145,   145,   351,   151,   145,   449,   449,   449,   150,
    307    146,   146,   146,   149,   352,   146,   148,   499,   499,   499,
    308    147,   147,   147,   150,   353,   147,   151,   151,   151,   354,
    309    148,   151,   343,   343,   355,   149,   149,   149,   263,   263,
    310    149,   356,   263,   342,   342,   150,   150,   150,   256,   256,
    311    150,   357,   148,   148,   148,   213,   358,   148,   213,   213,
    312    213,   213,   359,   213,   213,   213,   360,   213,   213,   213,
    313    213,   255,   255,   255,   257,   257,   255,   341,   341,   177,
    314    255,   255,   255,   255,   340,   340,   144,   213,   213,   213,
    315    127,   339,   339,   213,   127,   216,   216,   127,   127,   127,
    316    127,   365,   127,   127,   127,   127,   127,   127,   127,   127,
    317    127,   127,    58,   621,   621,    58,    58,    58,   265,   265,
    318     58,    58,    58,    58,    58,    58,    58,    58,   366,    58,
    319    254,   254,   254,   367,   368,   254,   369,   370,   375,   254,
    320    254,   254,   254,   258,   258,   258,   376,   378,   258,   379,
    321    143,   141,   258,   258,   258,   258,   251,   251,   251,   140,
    322    137,   251,   131,   119,   399,   251,   251,   251,   251,   236,
    323    236,   236,   236,   235,   235,   235,   235,   234,   234,   234,
    324    234,   232,   232,   232,   232,   264,   264,   264,   264,    90,
    325     90,    90,    90,   616,   616,   616,   616,   233,   233,   233,
    326    233,   631,   631,   631,   631,   203,    86,    84,   403,   404,
    327    408,   409,    79,   411,   413,   416,   417,   418,   419,   204,
    328     76,    71,    69,    64,    61,   432,   433,   434,   435,   448,
    329    246,   450,    52,    49,   480,   481,    48,   483,    40,   487,
    330    489,   490,   491,   492,   493,   494,   495,   496,   497,   498,
    331    206,   500,    39,   503,   505,   507,   509,   510,   511,   512,
    332    513,   514,   515,    34,   517,    31,   243,   520,   207,    28,
    333     26,   536,   538,   241,   543,   548,   550,   552,   554,   556,
    334    558,    20,   564,   565,   566,   568,    19,   189,   208,   239,
    335    212,   579,   588,   589,   590,   595,   597,   603,   214,    11,
    336    609,   610,   611,   612,     8,   615,     5,     4,   618,   619,
    337    620,   230,     3,     2,   540 ]
     245   477,   423,    68,   396,    91,   563,   395,   393,    60,   394,
     246    40,   261,   161,   243,   401,     5,   525,   234,   234,   234,
     247   234,   348,    23,   243,   468,   261,    58,   468,   477,   336,
     248   468,   468,   477,   346,    58,     5,   477,   477,    40,   477,
     249   477,   477,   529,    60,   421,   161,    91,    91,   525,    68,
     250    23,   477,   477,   477,    58,   529,   477,   477,   477,   477,
     251   423,   477,   477,   477,    53,   477,   477,   477,   477,   477,
     252   529,   396,   393,   395,   529,   394,   401,   401,   529,   529,
     253   348,   529,   529,   468,    53,   336,   477,   477,   477,   477,
     254   563,   346,   477,   529,   529,   529,    53,   165,   529,   529,
     255   529,   529,   421,   529,   529,   529,    53,   529,   529,   529,
     256   529,   529,   226,    48,   260,    53,    53,   165,   404,    80,
     257    53,    53,    53,   344,   246,    53,    53,    53,   529,   529,
     258   529,   529,   419,    48,   529,    53,    53,   227,   417,   165,
     259   172,   404,    53,   172,   172,   224,   149,   172,   226,   400,
     260   172,   172,   223,   165,   165,   165,   172,    84,   165,   165,
     261   165,   244,    84,   218,    80,   226,   390,    83,   165,   165,
     262    83,    83,   392,   227,    83,   165,   172,    83,    83,   318,
     263   344,   224,   149,   149,   149,   226,   226,   149,   223,   419,
     264   227,   221,   568,   172,   417,   318,   263,   539,   224,   218,
     265    94,   245,   400,    83,   149,   223,   539,   362,   172,   517,
     266   227,   227,   245,   172,   172,   318,   218,    94,   224,   224,
     267    83,   153,   390,   390,   390,   223,   223,   221,   364,   392,
     268   392,   152,   318,   392,   259,    83,   218,   218,   242,   187,
     269    83,    83,   187,   142,   221,   187,   187,   259,   568,   568,
     270   568,   512,   318,   318,   362,   362,   362,   153,   153,   153,
     271   517,   517,   153,   170,   221,   221,   142,   152,   152,   152,
     272   516,   240,   152,    81,   238,   516,   364,   364,    81,   153,
     273   364,   611,   173,   512,    13,   170,   187,   187,   187,   152,
     274   151,   187,   512,   512,   425,   187,   187,   187,   187,   170,
     275   170,   170,    13,   611,   170,   170,   170,    26,   168,    26,
     276     0,   241,   611,   611,   170,   170,   150,   611,   611,   611,
     277   241,   170,   611,   611,   611,   229,   151,   151,   151,     0,
     278   168,   151,   611,   611,   156,   173,   173,   173,   173,   611,
     279   157,   425,   425,   425,   168,   168,   168,   148,   151,   168,
     280   168,   168,   150,   150,   150,   135,   247,   150,   147,   168,
     281   168,   427,    99,   496,   496,   135,   168,   496,   247,   213,
     282   156,   156,   156,    56,   150,   156,   157,   157,   157,    99,
     283   272,   157,   164,   148,   148,   148,   264,   264,   148,    12,
     284   264,    12,   156,    34,   147,   147,   147,   135,   157,   147,
     285   612,   341,   341,    34,   164,   148,   135,   135,   273,   427,
     286   427,    28,   275,   427,    56,    56,   147,   278,   164,   164,
     287   164,    28,   612,   164,   164,   164,   448,   448,    79,   281,
     288   448,   612,   612,   164,   164,    34,   612,   612,   612,   482,
     289   164,   612,   612,   612,    34,    34,   605,   337,   337,   131,
     290    79,   612,   612,    28,   482,   482,   482,   285,   612,    79,
     291    79,   288,    28,    28,    79,    79,    79,   291,   605,    79,
     292    79,    79,   293,   398,   617,   398,   295,   605,   605,    79,
     293    79,   296,   605,   605,   605,   298,    79,   605,   605,   605,
     294   131,   131,   169,   266,   239,   266,   617,   605,   605,   300,
     295   217,   239,   239,   301,   605,   617,   617,   319,   340,   340,
     296   617,   617,   617,   303,   169,   617,   617,   617,   167,   609,
     297   609,   609,   319,   319,   319,   617,   617,   304,   169,   169,
     298   169,   578,   617,   169,   169,   169,   217,   217,   217,   308,
     299   167,   217,   101,   169,   169,   309,   578,   578,   578,   310,
     300   169,   155,   338,   338,   167,   167,   167,   311,   217,   167,
     301   167,   167,   339,   339,   101,   154,   495,   495,   495,   167,
     302   167,   268,   312,   268,   268,   315,   167,   268,   101,   101,
     303   101,   342,   342,   101,   101,   101,   316,   155,   155,   155,
     304   515,   515,   155,   101,   101,   235,   235,   235,   235,   211,
     305   101,   154,   154,   154,   249,   249,   154,   212,   205,   155,
     306   212,   212,   212,   212,   204,   212,   212,   212,   202,   212,
     307   212,   212,   212,   154,   258,   258,   258,   215,   215,   258,
     308   447,   447,   447,   258,   258,   258,   258,   262,   262,   262,
     309   212,   212,   212,   102,   251,   251,   212,   102,   252,   252,
     310   102,   102,   102,   102,   201,   102,   102,   102,   102,   102,
     311   102,   102,   102,   102,   102,    59,   253,   253,    59,    59,
     312    59,    18,    18,    59,    59,    59,    59,    59,    59,    59,
     313    59,   200,    59,   254,   254,   254,   572,   572,   254,   567,
     314   567,   567,   254,   254,   254,   254,   250,   250,   250,   256,
     315   256,   250,   257,   257,   198,   250,   250,   250,   250,   255,
     316   255,   255,   267,   267,   255,   621,   621,   197,   255,   255,
     317   255,   255,   265,   265,   265,   265,    96,    96,    96,    96,
     318   233,   233,   233,   233,   232,   232,   232,   232,   231,   231,
     319   231,   231,   195,   194,   189,   186,   349,   350,   351,   352,
     320   353,   354,   355,   356,   357,   358,   359,   360,   185,   184,
     321   365,   366,   367,   368,   369,   370,   376,   377,   380,   381,
     322   182,   181,   180,   179,   178,   177,   397,   175,   399,   174,
     323   146,   402,   143,   407,   408,   410,   413,   414,   415,   139,
     324   138,   137,   111,   106,    92,   428,   429,   430,   431,   432,
     325   433,   446,    88,    86,   449,    82,    76,   478,   480,   481,
     326    71,   485,   486,   487,   488,   489,   490,   491,   492,   493,
     327   494,    69,    66,   497,   499,   501,   503,   505,   506,   508,
     328   509,   510,   511,    62,   514,    52,    49,    45,   518,    44,
     329    38,    35,   535,   538,    33,   540,   541,   545,   547,   549,
     330   551,   553,   554,   561,    27,   564,   566,    24,    22,    16,
     331   574,   576,    14,   579,   580,   589,   593,   598,   599,   600,
     332   601,   602,     8,   606,     6,     4,     3,   613,   614,   615,
     333   616,     2,   619,   620,   534 ]
    338334
    339335racc_action_pointer = [
    340      7,   nil,   884,   902,   879,   869,    13,   nil,   894,   nil,
    341    214,   861,   nil,   nil,   455,   nil,   nil,   nil,   276,   846,
    342    863,   nil,   327,   nil,   nil,   nil,   829,   268,   834,   nil,
    343    485,   823,   473,   281,   803,   nil,   nil,   nil,   nil,   792,
    344    817,   -13,   nil,   nil,   nil,   nil,   nil,   nil,   825,   815,
    345    nil,   nil,   775,   159,   nil,   nil,   nil,   332,   648,   230,
    346    nil,   806,   nil,   nil,   770,   nil,   nil,   330,   157,   763,
    347    nil,   777,   nil,   nil,   255,   nil,   767,   351,   nil,   768,
    348    146,   104,   nil,   -40,   712,   nil,   750,   nil,   nil,     6,
    349    704,   224,   266,   nil,   nil,   nil,   nil,   nil,   195,   455,
     336   309,   nil,   862,   876,   857,    14,   847,   nil,   872,   nil,
     337   nil,   nil,   365,   283,   834,   nil,   851,   nil,   649,   nil,
     338   nil,   nil,   828,    21,   832,   nil,   283,   823,   410,   nil,
     339   nil,   nil,   nil,   812,   392,   791,   nil,   nil,   832,   nil,
     340    -5,   nil,   nil,   nil,   789,   826,   nil,   nil,    90,   835,
     341   nil,   nil,   788,    63,   nil,   nil,   362,   nil,    11,   611,
     342    -7,   nil,   825,   nil,   nil,   nil,   779,   nil,     1,   772,
     343   nil,   776,   nil,   nil,   nil,   nil,   763,   nil,   nil,   407,
     344    85,   216,   771,   161,   100,   nil,   717,   nil,   723,   nil,
     345   nil,   -17,   748,   nil,   171,   nil,   651,   nil,   nil,   333,
     346   nil,   521,   593,   nil,   nil,   nil,   782,   nil,   nil,   nil,
     347   nil,   741,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    350348   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    351    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   702,
    352    nil,   nil,   nil,   nil,   nil,   305,   nil,   630,   nil,   nil,
    353    nil,   741,   nil,   nil,   nil,   nil,   185,   715,   nil,   nil,
    354    714,   712,     0,   697,   664,   533,   543,   553,   585,   568,
    355    578,   559,   349,   525,   399,   374,   nil,   nil,   nil,   nil,
    356    nil,   206,   209,   nil,   nil,   405,   380,   355,   330,   nil,
    357    nil,   305,   nil,   129,   182,   nil,   nil,   614,   518,   514,
    358    481,   469,   467,   505,   179,   113,   nil,   nil,   nil,   822,
    359    nil,   226,   nil,   -31,   nil,   492,   500,   nil,   506,   nil,
    360    508,   512,   nil,   740,   754,   nil,   785,   803,   823,   nil,
    361    nil,   nil,   844,   591,   852,   nil,   643,   nil,   500,   nil,
    362     -4,    90,   nil,   108,   nil,   112,   nil,   106,    13,   nil,
    363    889,   nil,   696,   712,   692,   688,   684,   nil,   nil,   813,
    364    241,   796,   -40,   788,   233,   nil,   751,   235,   101,   389,
    365    274,   689,   439,   480,   663,   604,   578,   604,   676,   -41,
    366    491,   149,   472,   570,   719,   645,   448,   111,   164,   316,
    367    264,   nil,   279,   296,   nil,   299,   nil,   nil,   302,   nil,
    368    nil,   308,   nil,   nil,   nil,   343,   nil,   nil,   348,   nil,
    369    nil,   339,   nil,   326,   nil,   368,   nil,   344,   nil,   387,
    370    361,   nil,   369,   374,   nil,   380,   nil,   nil,   386,   nil,
    371    399,   431,   461,   nil,   448,   nil,   nil,   425,   474,    38,
    372    438,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    373    nil,   nil,   nil,   nil,   nil,   nil,   134,   nil,   139,   621,
    374    614,   607,   573,   562,   425,   nil,   121,   nil,    37,   519,
    375    521,   533,   544,   554,   559,   564,   571,   581,   586,   592,
    376    596,   nil,   189,   nil,   114,   631,   658,   663,   664,   666,
    377    667,   nil,   nil,   nil,   nil,   671,   679,   nil,   675,   677,
     349   nil,   438,   nil,   nil,   nil,   354,   nil,   756,   711,   760,
     350   nil,   nil,   231,   739,   nil,   nil,   768,   337,   326,   125,
     351   295,   269,   210,   200,   544,   530,   313,   319,   nil,   nil,
     352   nil,    11,   nil,   nil,   361,    96,   nil,   497,   287,   471,
     353   242,   nil,   134,   260,   724,   722,   nil,   720,   719,   718,
     354   717,   716,   715,   nil,   704,   703,   730,   229,   nil,   689,
     355   nil,   nil,   nil,   nil,   688,   687,   nil,   662,   649,   nil,
     356   626,   599,   563,   nil,   559,   553,   nil,   nil,   nil,   nil,
     357   nil,   563,   553,   333,   nil,   585,   nil,   479,   157,   nil,
     358   nil,   185,   nil,   146,   139,   nil,   106,   131,   nil,   313,
     359   nil,   663,   659,   655,   -58,   520,   nil,   nil,   209,   438,
     360   205,   255,   171,   -43,    93,   145,    55,   300,   nil,   544,
     361   639,   584,   588,   606,   626,   652,   639,   642,   567,   178,
     362    60,   -45,   580,   126,   328,   666,   439,   649,   515,   nil,
     363   nil,   nil,   357,   394,   nil,   389,   nil,   nil,   394,   nil,
     364   nil,   406,   nil,   nil,   nil,   434,   nil,   nil,   438,   nil,
     365   nil,   388,   nil,   417,   nil,   421,   458,   nil,   430,   nil,
     366   476,   448,   nil,   458,   472,   nil,   nil,   nil,   484,   490,
     367   535,   523,   558,   nil,   nil,   532,   505,   nil,   173,   465,
    378368   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    379    nil,   nil,   125,   nil,   139,     5,    10,     8,     3,   694,
    380    300,     0,   115,   734,   736,   nil,   nil,   nil,   719,   767,
    381    274,   742,   nil,   790,   nil,   nil,   745,   740,   747,   741,
    382    nil,   124,   nil,    23,   nil,   127,   nil,    15,   nil,   204,
    383    nil,   216,   755,   748,   757,   749,   nil,   nil,   nil,   nil,
    384    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   759,   539,
    385    761,   338,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     369   nil,   nil,   nil,   nil,   nil,   nil,    19,   387,   492,   502,
     370   448,   341,   521,   nil,   113,   nil,    23,   nil,    11,   686,
     371   687,   688,   689,   690,   691,   692,   693,   694,   695,   696,
     372   697,   nil,   197,   nil,   218,   700,   701,   702,   703,   704,
     373   705,   nil,   nil,   nil,   nil,   nil,   709,   710,   nil,   nil,
     374   706,   707,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     375   165,   nil,   171,     6,     8,     5,     2,   716,   419,   714,
     376   148,    13,   718,   nil,   106,   nil,   nil,   701,   750,   nil,
     377   724,   nil,   nil,   772,   727,   722,   nil,   128,   nil,   122,
     378   nil,    34,   nil,    -9,   nil,   284,   nil,   351,   735,   729,
     379   737,   730,   739,   731,   nil,   nil,   nil,   nil,   nil,   nil,
     380   nil,   nil,   nil,   nil,   nil,   nil,   741,   573,   368,   744,
    386381   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    387     33,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    388    790,   813,    41,   791,   413,   nil,   nil,   769,   nil,   770,
    389    771,   766,   773,   767,   775,   768,   777,   769,   779,   550,
    390    781,   363,   nil,   783,   nil,   784,   nil,   785,   nil,   786,
    391    778,   779,   780,   781,   839,   795,   293,   840,   -37,   407,
    392    828,   122,   nil,   nil,   nil,   nil,   nil,   154,   nil,   nil,
    393    nil,   nil,    -1,   nil,   nil,   nil,   770,   nil,   828,   nil,
    394    819,   nil,   nil,   829,   nil,   nil,   nil,   nil,   805,   nil,
    395    806,   nil,   807,   nil,   808,   nil,   809,   nil,   810,   nil,
    396    nil,   nil,   nil,   388,   811,   859,   835,   nil,   805,     4,
    397    nil,    -8,   492,    63,   nil,   nil,   nil,   314,   nil,   869,
    398    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   868,   860,
    399    827,   nil,   nil,   nil,   nil,   850,   nil,   826,   nil,   nil,
    400    nil,   nil,   nil,   843,   nil,   277,   nil,   nil,   430,   845,
    401    868,   869,   870,   480,   nil,   849,   708,   513,   884,   815,
    402    816,   621,   nil,   192,   280,   nil,   nil,   nil,   nil,   nil,
    403    nil,   716 ]
     382   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    14,   nil,
     383   nil,   nil,   nil,   nil,   nil,   nil,   nil,    -1,   771,   nil,
     384   774,   797,   397,   nil,   nil,   751,   752,   747,   754,   748,
     385   756,   749,   758,   750,   760,   509,   305,   763,   nil,   764,
     386   nil,   765,   nil,   766,   nil,   767,   768,   nil,   760,   761,
     387   762,   763,   240,   nil,   820,   538,   215,   208,   809,   nil,
     388   nil,   nil,   nil,   nil,   nil,    -7,   nil,   nil,   nil,    41,
     389   nil,   nil,   nil,   nil,   792,   808,   nil,   nil,   757,   183,
     390   833,   789,   nil,   nil,   nil,   787,   nil,   788,   nil,   789,
     391   nil,   790,   nil,   791,   792,   nil,   nil,   nil,   nil,   nil,
     392   nil,   814,   nil,     4,   785,   nil,   827,   632,   191,   nil,
     393   nil,   nil,   595,   nil,   848,   nil,   807,   nil,   489,   802,
     394   850,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   786,
     395   nil,   nil,   nil,   806,   nil,   nil,   nil,   nil,   823,   854,
     396   855,   847,   814,   nil,   nil,   425,   828,   nil,   nil,   436,
     397   nil,   260,   379,   863,   855,   856,   857,   453,   nil,   797,
     398   798,   632,   nil,   nil,   nil,   nil ]
    404399
    405400racc_action_default = [
    406   -376,    -2,  -376,  -376,  -376,   -13,    -6,    -4,  -376,    -1,
    407   -376,  -376,    -5,    -7,  -376,   632,   -15,   -14,  -376,   -18,
    408   -376,   -12,  -376,    -9,   -17,   -16,   -21,   -87,  -376,    -8,
    409   -376,  -376,   -87,  -376,  -112,   -20,   -98,   -99,  -100,  -376,
    410   -376,   -88,  -146,   -89,  -147,   -90,   -19,  -108,   -94,  -376,
    411    -11,   -10,   -82,  -376,   -23,   -22,  -110,  -376,  -376,  -376,
    412   -104,  -376,  -101,  -109,  -376,   -91,   -95,  -376,  -376,  -376,
    413   -253,  -376,   -26,  -254,   -27,   -25,  -284,  -376,  -152,  -376,
    414   -376,  -376,  -273,  -376,  -305,  -274,  -376,  -286,  -283,  -376,
    415   -251,   -31,  -376,  -167,  -281,  -271,  -282,  -272,  -289,  -376,
    416   -248,   -24,  -111,  -191,  -125,  -204,  -126,  -217,  -127,  -230,
    417   -128,  -129,  -247,  -130,  -121,  -182,  -122,  -183,  -123,  -376,
    418   -187,  -148,  -124,  -102,  -105,  -376,   -92,  -112,   -93,  -113,
    419    -97,  -376,   -96,   -84,   -83,    -3,   -87,  -376,  -373,  -249,
    420   -285,  -289,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
    421   -376,  -376,  -376,  -376,  -376,  -376,  -153,  -168,  -154,  -169,
    422    -30,  -376,  -376,  -256,  -255,  -376,  -376,  -376,  -376,   -32,
    423   -259,  -376,  -288,  -376,  -376,  -107,  -106,  -136,  -125,  -137,
    424   -126,  -138,  -127,  -376,  -139,  -128,  -117,  -243,  -140,  -129,
    425   -118,  -376,  -141,  -119,  -142,  -131,  -120,  -143,  -132,  -144,
    426   -133,  -122,  -145,  -134,  -123,  -116,  -148,  -135,  -124,  -114,
    427    -86,   -85,  -376,  -376,  -376,  -287,  -376,  -279,  -376,  -278,
    428   -263,  -264,  -275,  -265,  -276,  -260,  -277,  -261,  -262,  -307,
    429   -376,  -252,  -250,  -268,  -269,  -266,  -267,  -280,  -270,  -376,
    430   -376,  -376,  -376,  -376,  -376,  -115,  -376,  -376,  -376,  -376,
     401  -376,    -2,  -376,  -376,  -376,    -6,   -13,    -4,  -376,    -1,
     402    -5,    -7,  -376,  -376,  -376,   626,  -376,   -12,  -376,    -9,
     403   -15,   -14,   -18,  -376,  -376,    -8,  -376,   -21,   -88,   -17,
     404   -16,   -11,   -10,  -376,   -88,  -113,   -91,  -109,  -376,   -20,
     405  -376,   -99,  -100,  -101,  -376,  -376,  -147,  -148,   -89,   -95,
     406   -90,   -19,   -83,  -376,   -23,   -22,  -376,  -111,  -376,  -376,
     407  -376,  -105,  -376,  -110,  -102,   -92,  -376,   -96,  -376,  -376,
     408  -249,  -376,   -24,  -254,   -26,   -25,  -284,  -255,  -153,   -27,
     409  -376,  -376,  -376,  -376,  -376,  -283,  -305,  -282,  -376,  -286,
     410  -281,  -376,  -376,  -168,   -31,  -271,  -252,  -279,  -272,  -289,
     411  -280,  -376,  -113,   -94,  -114,   -98,  -376,   -97,  -112,  -192,
     412  -125,  -376,  -205,  -126,  -218,  -127,  -122,  -231,  -128,  -129,
     413  -248,  -130,  -131,  -183,  -184,  -123,  -188,  -149,  -124,  -103,
     414  -106,  -376,   -93,   -85,   -84,   -88,    -3,  -376,  -285,  -289,
     415  -250,  -373,  -376,  -376,  -154,  -169,  -376,  -376,  -376,  -376,
     416  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -155,  -170,
     417   -30,  -376,  -256,  -259,  -376,  -376,   -32,  -376,  -376,  -376,
     418  -376,  -288,  -376,  -376,  -136,  -125,  -117,  -137,  -126,  -138,
     419  -127,  -139,  -128,  -244,  -140,  -129,  -376,  -376,  -141,  -130,
     420  -118,  -142,  -119,  -143,  -132,  -120,  -144,  -133,  -121,  -145,
     421  -134,  -123,  -149,  -146,  -135,  -124,  -115,  -108,  -107,   -87,
     422   -86,  -376,  -376,  -376,  -287,  -376,  -276,  -376,  -263,  -277,
     423  -274,  -264,  -273,  -265,  -260,  -275,  -261,  -262,  -307,  -376,
     424  -253,  -251,  -268,  -269,  -266,  -267,  -278,  -270,  -376,  -376,
     425  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -116,  -376,
    431426  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
     427  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,   -28,
     428  -328,  -334,  -313,  -376,  -323,  -319,   -54,  -329,  -325,   -55,
     429  -335,  -331,   -56,  -375,  -342,  -337,  -312,   -57,  -344,  -318,
     430   -58,  -340,  -324,  -348,   -59,  -353,  -350,  -330,  -311,   -60,
     431  -357,  -354,  -336,  -317,  -310,   -61,  -343,  -322,  -316,  -347,
     432  -376,  -376,  -376,   -33,   -62,   -34,  -290,   -63,  -376,  -376,
     433  -190,  -185,  -187,  -194,  -191,  -189,  -207,  -195,  -193,  -220,
     434  -208,  -206,  -233,  -221,  -219,  -204,  -376,  -376,  -376,  -376,
     435  -376,  -376,  -376,  -217,  -376,  -230,  -376,  -243,  -376,  -376,
    432436  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
    433   -376,  -334,  -313,  -376,  -323,  -319,   -54,  -329,  -325,   -55,
    434   -335,  -331,   -56,  -375,  -342,  -337,  -312,   -57,  -344,  -318,
    435    -58,  -340,  -324,  -348,   -59,  -350,  -330,  -311,   -60,  -357,
    436   -353,  -336,  -317,  -310,   -61,  -354,  -343,  -322,  -316,  -328,
    437   -347,  -376,  -376,   -33,   -34,   -63,   -62,  -290,  -376,  -376,
    438   -376,  -193,  -188,  -190,  -206,  -194,  -192,  -219,  -207,  -205,
    439   -232,  -220,  -218,  -233,  -231,  -203,  -376,  -216,  -376,  -376,
    440   -376,  -376,  -376,  -376,  -376,  -229,  -376,  -242,  -376,  -376,
    441   -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
    442   -376,  -166,  -376,  -181,  -376,  -376,  -376,  -376,  -376,  -376,
    443   -376,  -246,  -244,  -150,  -245,  -376,  -376,  -156,  -376,  -376,
    444   -171,  -157,  -155,  -185,  -172,  -170,  -151,  -149,  -189,  -186,
    445   -184,   -28,  -376,  -257,  -376,  -376,  -376,  -376,  -376,  -376,
    446   -376,  -376,  -376,  -376,  -376,  -258,   -29,   -64,   -68,  -376,
    447   -376,  -152,  -303,  -376,  -304,  -308,  -376,  -376,  -376,  -376,
    448   -201,  -376,  -214,  -376,  -227,  -376,  -240,  -376,  -164,  -376,
    449   -179,  -376,  -376,  -376,  -376,  -376,  -200,  -213,  -226,  -239,
    450   -163,  -178,  -202,  -215,  -228,  -241,  -165,  -180,  -376,  -376,
    451   -376,  -376,  -199,  -212,  -225,  -238,  -162,  -177,  -315,  -314,
    452   -321,  -320,  -327,  -326,  -333,  -332,  -339,  -338,  -346,  -345,
    453   -376,  -341,  -349,  -352,  -351,  -359,  -358,  -355,  -356,   -69,
    454   -376,  -376,  -376,  -376,  -376,  -306,  -195,  -376,  -208,  -376,
    455   -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
    456   -376,  -376,  -221,  -376,  -234,  -376,  -158,  -376,  -173,  -376,
    457   -376,  -376,  -376,  -376,  -376,  -376,   -87,   -44,  -310,  -376,
    458    -31,  -376,   -72,   -70,   -36,   -37,   -38,  -360,   -39,  -372,
    459   -363,   -40,  -376,  -366,   -41,   -42,  -369,  -367,  -376,   -35,
    460   -305,   -43,   -53,  -376,  -309,  -197,  -210,  -196,  -376,  -209,
    461   -376,  -222,  -376,  -235,  -376,  -159,  -376,  -174,  -376,  -223,
    462   -236,  -160,  -175,  -376,  -292,  -376,  -376,   -67,  -376,  -305,
    463    -52,   -50,  -376,  -376,   -44,   -71,   -65,  -376,  -370,  -376,
    464    -49,   -66,  -198,  -211,  -224,  -237,  -161,  -176,  -376,  -295,
    465   -376,  -291,   -45,  -365,   -47,  -376,   -51,  -376,  -364,  -362,
    466   -361,  -368,  -371,   -73,  -294,  -376,  -293,   -46,  -376,   -75,
    467   -296,  -297,  -298,   -74,   -77,  -376,   -80,  -376,  -376,  -376,
    468   -376,  -376,   -78,  -376,   -76,   -48,  -299,  -300,  -301,  -302,
    469    -81,   -79 ]
     437  -376,  -167,  -376,  -182,  -376,  -376,  -376,  -376,  -376,  -376,
     438  -376,  -234,  -232,  -151,  -247,  -245,  -376,  -376,  -157,  -246,
     439  -376,  -376,  -172,  -158,  -156,  -152,  -150,  -186,  -173,  -171,
     440  -376,  -258,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
     441  -376,  -376,  -376,  -257,  -376,   -29,   -64,   -69,  -376,  -308,
     442  -153,  -304,  -303,  -376,  -376,  -376,  -202,  -376,  -215,  -376,
     443  -228,  -376,  -241,  -376,  -165,  -376,  -180,  -376,  -376,  -376,
     444  -376,  -376,  -376,  -376,  -201,  -214,  -227,  -240,  -164,  -179,
     445  -203,  -216,  -229,  -242,  -166,  -181,  -376,  -376,  -376,  -376,
     446  -200,  -213,  -226,  -239,  -163,  -178,  -315,  -314,  -321,  -320,
     447  -327,  -326,  -333,  -332,  -339,  -338,  -346,  -345,  -376,  -341,
     448  -349,  -355,  -352,  -351,  -358,  -359,  -356,  -376,  -376,   -70,
     449  -376,  -376,  -376,  -306,  -196,  -376,  -376,  -376,  -376,  -376,
     450  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -209,  -376,
     451  -222,  -376,  -235,  -376,  -159,  -376,  -376,  -174,  -376,  -376,
     452  -376,  -376,   -88,   -53,   -44,  -376,  -310,  -376,   -31,   -73,
     453   -71,   -36,   -37,   -38,  -372,  -360,   -39,  -363,   -40,  -376,
     454  -366,   -41,  -367,   -42,  -369,  -376,   -35,   -43,  -305,  -376,
     455  -376,  -376,  -309,  -198,  -197,  -376,  -210,  -376,  -223,  -376,
     456  -236,  -376,  -160,  -376,  -376,  -175,  -211,  -224,  -237,  -161,
     457  -176,  -376,   -68,  -305,  -376,   -52,   -50,  -376,  -376,   -44,
     458   -72,   -65,  -376,  -370,  -376,   -49,  -376,   -66,  -376,  -292,
     459  -376,  -199,  -212,  -225,  -238,  -162,  -177,   -45,   -47,  -376,
     460  -365,   -51,  -364,  -376,  -362,  -361,  -368,  -371,   -74,  -376,
     461  -376,  -295,  -376,  -291,   -46,  -376,   -76,   -67,  -294,  -376,
     462  -293,   -75,  -376,  -376,  -296,  -297,  -298,   -77,   -48,  -376,
     463  -376,  -376,  -299,  -300,  -301,  -302 ]
    470464
    471465racc_goto_table = [
    472     90,   116,   164,   160,   202,   313,   118,    40,    46,   413,
    473    193,   104,    40,    55,   119,    63,   173,    62,   132,   128,
    474     65,    90,   315,   122,   523,    60,    23,   110,    86,   111,
    475    100,   613,     3,    91,   408,   532,    65,   622,    57,   273,
    476    624,   618,    51,   126,   609,   124,   174,   131,   622,    86,
    477    108,   139,   314,   217,   219,    59,   312,   222,   106,   224,
    478    479,   226,    74,   209,   220,   221,   183,   223,   186,   225,
    479    201,   227,   228,   190,   575,   204,   132,   176,    72,   196,
    480    178,   474,   101,   205,    22,    13,     2,   135,    69,    52,
    481     31,   195,   208,   198,   200,   203,   185,   207,   189,   177,
    482    179,   181,   184,   188,   192,   131,    63,   194,    62,   232,
    483    197,   199,   233,   234,   235,   236,    40,   211,   174,   182,
    484    407,    26,    19,   170,   140,    11,     5,   180,   215,   565,
    485    588,     4,   544,   598,   256,   319,   577,   nil,   nil,   257,
    486    nil,   nil,   372,   nil,   374,   nil,   nil,   nil,   nil,   nil,
    487    nil,   nil,   nil,   nil,   nil,   nil,   303,   nil,   nil,   nil,
    488    252,   308,   253,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    489    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    490    nil,   nil,   nil,   250,   nil,   nil,   nil,   nil,   nil,   nil,
    491    nil,   249,   nil,   322,   343,   nil,   nil,   353,   359,   344,
    492    nil,   369,   354,   360,   nil,   377,   370,   382,   nil,   nil,
    493    nil,   380,   327,   nil,   385,   nil,   332,   330,   nil,   334,
    494    341,   388,   342,   351,   357,   352,   358,   367,   nil,   368,
    495    383,   nil,   nil,   324,   390,   nil,   329,   nil,   nil,   321,
    496    nil,   nil,   326,   340,   nil,   nil,   350,   356,   nil,   nil,
    497    366,   339,   589,   nil,   349,   355,   nil,   nil,   365,   nil,
    498    nil,   nil,   nil,   412,   nil,   nil,   nil,   nil,   nil,   nil,
    499    nil,   522,   nil,   nil,   nil,   nil,   471,   nil,   nil,   nil,
     466    79,   140,   125,   162,    45,    51,   160,   203,   128,   313,
     467    45,    55,   110,   413,   473,   121,   195,   317,   107,   103,
     468   520,    63,   111,    64,    65,    61,    19,     3,   407,    94,
     469   113,   119,   106,   172,    65,   173,    58,   529,   118,   273,
     470    32,   130,   132,   613,   216,   201,   219,   220,   606,   222,
     471    60,   205,   225,   315,   115,   175,   312,   479,   189,   206,
     472   186,   190,   192,    74,   198,   176,    72,    18,    11,     2,
     473   136,    69,   570,   178,   185,    52,    33,   194,   197,   200,
     474   218,   182,    63,   221,    64,   223,   224,   204,   226,   227,
     475   174,   177,   179,   107,   208,   181,   184,   180,   173,   231,
     476   188,   232,   233,   234,   235,   191,   193,   106,   196,   199,
     477    27,    45,   210,    22,   163,   138,    14,   406,     6,   214,
     478   580,   600,     4,   542,   592,   572,   nil,   nil,   nil,   nil,
     479   256,   nil,   nil,   nil,   nil,   nil,   257,   nil,   nil,   nil,
     480   nil,   nil,   nil,   253,   nil,   nil,   nil,   nil,   nil,   318,
     481   nil,   nil,   nil,   nil,   nil,   304,   nil,   nil,   nil,   252,
     482   nil,   308,   nil,   nil,   nil,   nil,   251,   nil,   nil,   nil,
     483   nil,   nil,   nil,   nil,   nil,   375,   nil,   379,   nil,   nil,
     484   nil,   nil,   249,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     485   599,   nil,   321,   341,   nil,   nil,   nil,   353,   359,   342,
     486   nil,   369,   332,   354,   360,   378,   340,   370,   384,   320,
     487   352,   358,   325,   382,   368,   372,   329,   389,   nil,   334,
     488   387,   326,   339,   nil,   331,   nil,   351,   357,   nil,   338,
     489   367,   nil,   nil,   350,   356,   323,   nil,   366,   328,   nil,
     490   nil,   nil,   nil,   nil,   nil,   337,   nil,   nil,   nil,   349,
     491   355,   nil,   nil,   365,   nil,   nil,   nil,   nil,   nil,   nil,
     492   nil,   nil,   412,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     493   nil,   519,   601,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    500494   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    501495   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    502    nil,   nil,   nil,   nil,   nil,   448,   nil,   nil,   nil,   nil,
    503    nil,   nil,   450,   nil,   nil,   432,   nil,   nil,   nil,   434,
     496   nil,   nil,   469,   nil,   432,   446,   nil,   nil,   nil,   nil,
     497   nil,   nil,   nil,   449,   nil,   nil,   nil,   nil,   430,   nil,
     498   nil,   nil,   nil,   428,   nil,   nil,   nil,   nil,   nil,   nil,
     499   nil,   414,   nil,   457,   nil,   nil,   nil,   nil,   nil,   nil,
     500   nil,   459,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     501   nil,   nil,   467,   nil,   474,   nil,   nil,   nil,   nil,   nil,
     502   nil,   nil,   nil,   nil,   nil,   nil,   nil,   465,   494,   nil,
     503   nil,   nil,   nil,   463,   nil,   nil,   497,   nil,   nil,   492,
     504   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   461,   503,
     505   505,   nil,   nil,   490,   nil,   nil,   nil,   506,   488,   nil,
     506   nil,   nil,   nil,   501,   nil,   nil,   nil,   nil,   499,   nil,
     507   485,   nil,   486,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     508   516,   nil,   nil,   nil,   253,   412,   308,   nil,   nil,   nil,
     509   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   553,   nil,
     510   nil,   nil,   nil,   nil,   nil,   554,   nil,   nil,   nil,   551,
     511   nil,   nil,   nil,   518,   nil,   nil,   nil,   nil,   575,   nil,
     512   nil,   nil,   nil,   549,   340,   352,   358,   368,   547,   nil,
     513   nil,   nil,   516,   nil,   nil,   nil,   nil,   nil,   308,   nil,
     514   nil,   nil,   545,   589,   nil,   nil,   nil,   nil,    45,   561,
     515   nil,   563,   nil,   566,   nil,   nil,   nil,   nil,   nil,   nil,
     516   nil,   nil,   nil,   nil,   604,   518,   nil,   nil,   nil,   nil,
     517   593,   595,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     518   nil,   412,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     519   nil,   nil,   nil,   140,   nil,   nil,   nil,   nil,   nil,   140,
    504520   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    505    418,   nil,   nil,   nil,   nil,   459,   416,   nil,   nil,   nil,
    506    nil,   nil,   461,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    507    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    508    nil,   nil,   nil,   nil,   nil,   nil,   467,   476,   nil,   469,
    509    nil,   nil,   498,   nil,   nil,   nil,   nil,   nil,   nil,   500,
    510    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   465,   nil,
    511    nil,   nil,   507,   nil,   494,   463,   nil,   nil,   496,   509,
    512    nil,   nil,   503,   nil,   nil,   nil,   505,   nil,   nil,   nil,
    513    nil,   489,   nil,   nil,   nil,   492,   nil,   487,   nil,   nil,
    514    nil,   490,   nil,   nil,   nil,   518,   nil,   412,   nil,   nil,
    515    308,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    516    nil,   253,   556,   nil,   nil,   nil,   nil,   nil,   nil,   558,
    517    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   580,
    518    nil,   nil,   520,   nil,   552,   nil,   nil,   nil,   554,   nil,
    519    nil,   nil,   nil,   nil,   nil,   518,   nil,   nil,   nil,   nil,
    520    308,   342,   352,   358,   368,   550,   nil,   nil,   595,   nil,
    521    nil,   548,   nil,   nil,   nil,   nil,    40,   566,   nil,   569,
    522    nil,   571,   nil,   nil,   nil,   nil,   412,   nil,   607,   nil,
    523    nil,   nil,   520,   nil,   nil,   597,   600,   nil,   nil,   nil,
     521   nil,   nil,   611,   nil,   nil,   nil,   nil,   nil,   nil,   617 ]
     522
     523racc_goto_check = [
     524    18,   104,    80,    34,    23,    15,    22,   103,    81,    24,
     525    23,    15,    82,   114,    51,    87,    78,    48,    59,    62,
     526    26,    72,    71,    66,    60,    69,    14,     1,    52,    23,
     527    83,    86,    23,   108,    60,    57,    58,    50,    85,    39,
     528    14,    69,    60,    37,   110,    80,   110,   110,    36,   110,
     529    68,    81,   110,    25,    84,    82,    20,    53,    87,    74,
     530    75,    76,    77,    17,    79,    71,    16,    13,    12,    11,
     531    10,     9,    26,    83,    86,     8,     7,    89,    90,    91,
     532   108,    85,    72,   108,    66,   108,   108,    92,   108,   108,
     533    93,    94,    95,    59,    62,    96,    97,    84,    57,    57,
     534    98,    57,    57,    57,    57,    99,   100,    23,   101,   102,
     535     6,    23,    15,     5,   105,   107,     4,    48,     3,   111,
     536   112,   113,     2,   115,   126,   128,   nil,   nil,   nil,   nil,
     537    80,   nil,   nil,   nil,   nil,   nil,    81,   nil,   nil,   nil,
     538   nil,   nil,   nil,    87,   nil,   nil,   nil,   nil,   nil,   108,
     539   nil,   nil,   nil,   nil,   nil,    80,   nil,   nil,   nil,    86,
     540   nil,    81,   nil,   nil,   nil,   nil,    85,   nil,   nil,   nil,
     541   nil,   nil,   nil,   nil,   nil,    78,   nil,    78,   nil,   nil,
     542   nil,   nil,    84,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     543    51,   nil,    82,    80,   nil,   nil,   nil,    80,    80,    81,
     544   nil,    80,    87,    81,    81,    80,    87,    81,    80,    83,
     545    87,    87,    83,    81,    87,    87,    86,    81,   nil,    86,
     546    82,    85,    86,   nil,    85,   nil,    86,    86,   nil,    85,
     547    86,   nil,   nil,    85,    85,    84,   nil,    85,    84,   nil,
     548   nil,   nil,   nil,   nil,   nil,    84,   nil,   nil,   nil,    84,
     549    84,   nil,   nil,    84,   nil,   nil,   nil,   nil,   nil,   nil,
     550   nil,   nil,    80,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     551   nil,    24,   114,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    524552   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    525553   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     554   nil,   nil,   103,   nil,    87,    80,   nil,   nil,   nil,   nil,
     555   nil,   nil,   nil,    81,   nil,   nil,   nil,   nil,    86,   nil,
     556   nil,   nil,   nil,    85,   nil,   nil,   nil,   nil,   nil,   nil,
     557   nil,    84,   nil,    80,   nil,   nil,   nil,   nil,   nil,   nil,
     558   nil,    81,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     559   nil,   nil,    87,   nil,    82,   nil,   nil,   nil,   nil,   nil,
     560   nil,   nil,   nil,   nil,   nil,   nil,   nil,    86,    80,   nil,
     561   nil,   nil,   nil,    85,   nil,   nil,    81,   nil,   nil,    87,
     562   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    84,    87,
     563    80,   nil,   nil,    86,   nil,   nil,   nil,    81,    85,   nil,
     564   nil,   nil,   nil,    86,   nil,   nil,   nil,   nil,    85,   nil,
     565    84,   nil,    84,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     566    80,   nil,   nil,   nil,    87,    80,    81,   nil,   nil,   nil,
     567   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    80,   nil,
     568   nil,   nil,   nil,   nil,   nil,    81,   nil,   nil,   nil,    87,
     569   nil,   nil,   nil,    23,   nil,   nil,   nil,   nil,    22,   nil,
     570   nil,   nil,   nil,    86,    87,    87,    87,    87,    85,   nil,
     571   nil,   nil,    80,   nil,   nil,   nil,   nil,   nil,    81,   nil,
     572   nil,   nil,    84,    22,   nil,   nil,   nil,   nil,    23,    15,
     573   nil,    23,   nil,    23,   nil,   nil,   nil,   nil,   nil,   nil,
     574   nil,   nil,   nil,   nil,    34,    23,   nil,   nil,   nil,   nil,
     575    80,    80,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     576   nil,    80,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     577   nil,   nil,   nil,   104,   nil,   nil,   nil,   nil,   nil,   104,
    526578   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    527    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    528    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    529    631 ]
    530 
    531 racc_goto_check = [
    532     56,    80,    34,    22,   103,    24,    81,    23,    15,   114,
    533     77,    83,    23,    15,    70,    71,   108,    65,    58,    61,
    534     59,    56,    48,    82,    26,    68,    14,    86,    55,    87,
    535    104,    53,     1,    23,    51,    50,    59,    54,    57,    39,
    536     53,    37,    14,    59,    36,    68,    56,    23,    54,    55,
    537     85,   104,    25,   109,   109,    67,    20,   109,    84,   109,
    538     52,   109,    18,    73,   108,   108,    74,   108,    75,   108,
    539     80,   108,   108,    76,    26,    81,    58,    61,    17,    78,
    540     83,    79,    16,    70,    13,    12,    11,    10,     9,     8,
    541      7,    89,    82,    90,    91,    92,    86,    93,    87,    94,
    542     95,    96,    97,    98,    99,    23,    71,   100,    65,    56,
    543    101,   102,    56,    56,    56,    56,    23,    15,    56,    85,
    544     48,     6,     5,   105,   107,     4,     3,    84,   111,   112,
    545    113,     2,   115,   126,    80,   108,   128,   nil,   nil,    81,
    546    nil,   nil,    77,   nil,    77,   nil,   nil,   nil,   nil,   nil,
    547    nil,   nil,   nil,   nil,   nil,   nil,    80,   nil,   nil,   nil,
    548     86,    81,    87,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    549    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    550    nil,   nil,   nil,    85,   nil,   nil,   nil,   nil,   nil,   nil,
    551    nil,    84,   nil,    83,    80,   nil,   nil,    80,    80,    81,
    552    nil,    80,    81,    81,   nil,    80,    81,    80,   nil,   nil,
    553    nil,    81,    86,   nil,    81,   nil,    86,    87,   nil,    87,
    554     86,    83,    87,    86,    86,    87,    87,    86,   nil,    87,
    555     82,   nil,   nil,    85,    82,   nil,    85,   nil,   nil,    84,
    556    nil,   nil,    84,    85,   nil,   nil,    85,    85,   nil,   nil,
    557     85,    84,   114,   nil,    84,    84,   nil,   nil,    84,   nil,
    558    nil,   nil,   nil,    80,   nil,   nil,   nil,   nil,   nil,   nil,
    559    nil,    24,   nil,   nil,   nil,   nil,   103,   nil,   nil,   nil,
    560    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    561    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    562    nil,   nil,   nil,   nil,   nil,    80,   nil,   nil,   nil,   nil,
    563    nil,   nil,    81,   nil,   nil,    86,   nil,   nil,   nil,    87,
    564    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    565     85,   nil,   nil,   nil,   nil,    80,    84,   nil,   nil,   nil,
    566    nil,   nil,    81,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    567    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    568    nil,   nil,   nil,   nil,   nil,   nil,    86,    82,   nil,    87,
    569    nil,   nil,    80,   nil,   nil,   nil,   nil,   nil,   nil,    81,
    570    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    85,   nil,
    571    nil,   nil,    80,   nil,    86,    84,   nil,   nil,    87,    81,
    572    nil,   nil,    86,   nil,   nil,   nil,    87,   nil,   nil,   nil,
    573    nil,    85,   nil,   nil,   nil,    85,   nil,    84,   nil,   nil,
    574    nil,    84,   nil,   nil,   nil,    80,   nil,    80,   nil,   nil,
    575     81,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    576    nil,    87,    80,   nil,   nil,   nil,   nil,   nil,   nil,    81,
    577    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    22,
    578    nil,   nil,    23,   nil,    86,   nil,   nil,   nil,    87,   nil,
    579    nil,   nil,   nil,   nil,   nil,    80,   nil,   nil,   nil,   nil,
    580     81,    87,    87,    87,    87,    85,   nil,   nil,    22,   nil,
    581    nil,    84,   nil,   nil,   nil,   nil,    23,    15,   nil,    23,
    582    nil,    23,   nil,   nil,   nil,   nil,    80,   nil,    34,   nil,
    583    nil,   nil,    23,   nil,   nil,    80,    80,   nil,   nil,   nil,
    584    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    585    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    586    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    587    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    588    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    589     56 ]
     579   nil,   nil,    18,   nil,   nil,   nil,   nil,   nil,   nil,    18 ]
    590580
    591581racc_goto_pointer = [
    592    nil,    32,   131,   126,   120,   111,   102,    64,    58,    36,
    593     18,    86,    79,    70,    12,   -19,    29,    25,     9,   nil,
    594   -160,   nil,   -81,   -20,  -211,  -164,  -458,   nil,   nil,   nil,
    595    nil,   nil,   nil,   nil,   -87,   nil,  -559,  -568,   nil,  -174,
    596    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -194,   nil,
    597   -447,  -283,  -348,  -577,  -576,   -25,   -53,     5,   -49,   -21,
    598    nil,   -48,   nil,   nil,   nil,   -23,   nil,    16,   -14,   nil,
    599    -44,   -25,   nil,   -68,   -61,   -59,   -54,  -117,   -48,  -320,
    600    -57,   -52,   -35,   -47,     0,    -8,   -31,   -29,   nil,   -36,
    601    -34,   -33,   -32,   -30,   -28,   -27,   -26,   -25,   -24,   -23,
    602    -20,   -17,   -16,  -123,   -23,    31,   nil,    48,   -83,   -92,
    603    nil,   -15,  -386,  -433,  -311,  -352,   nil,   nil,   nil,   nil,
    604    nil,   nil,   nil,   nil,   nil,   nil,  -439,   nil,  -400 ]
     582   nil,    27,   122,   118,   110,    99,    88,    49,    42,    19,
     583     1,    69,    63,    55,    14,   -23,    13,    10,   -53,   nil,
     584  -159,   nil,   -80,   -24,  -206,  -162,  -457,   nil,   nil,   nil,
     585   nil,   nil,   nil,   nil,   -85,   nil,  -550,  -563,   nil,  -173,
     586   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -198,   nil,
     587  -440,  -386,  -288,  -350,   nil,   nil,   nil,   -66,    -4,   -38,
     588   -24,   nil,   -37,   nil,   nil,   nil,   -22,   nil,     6,   -19,
     589   nil,   -37,   -24,   nil,   -47,   -42,   -41,   -40,   -86,   -38,
     590   -57,   -51,   -47,   -29,    -5,   -21,   -28,   -44,   nil,   -25,
     591   -24,   -23,   -15,   -12,   -11,   -10,    -7,    -6,    -2,     3,
     592     4,     6,     7,   -95,   -78,    23,   nil,    39,   -68,   nil,
     593  -103,   -24,  -421,  -457,  -306,  -359,   nil,   nil,   nil,   nil,
     594   nil,   nil,   nil,   nil,   nil,   nil,  -443,   nil,  -409 ]
    605595
    606596racc_goto_default = [
    607597   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    608    nil,   nil,   nil,   nil,   nil,   nil,   nil,   539,   nil,    79,
    609    nil,    84,   nil,   138,   nil,   nil,   nil,   524,   525,   526,
    610    528,   531,   534,   535,    88,   538,   nil,   nil,   540,   542,
    611    276,   279,   282,   287,   290,   294,   298,   304,   nil,   318,
    612    nil,   nil,   nil,   nil,   614,   615,   616,    41,    43,    45,
    613     49,   nil,   130,    36,    37,    38,    39,   nil,   nil,    61,
    614    nil,    47,    33,   129,   nil,   nil,   nil,   nil,   nil,   114,
    615     94,    96,   nil,   nil,   274,   277,   280,   284,   113,   293,
    616    297,   302,   nil,   nil,   nil,   nil,   nil,   nil,   286,   289,
    617    292,   296,   301,   306,   nil,    70,    73,    77,    80,    82,
    618     85,    87,   nil,   nil,   nil,   415,   272,   275,   278,   281,
    619    285,   288,   291,   295,   299,   527,   530,   533,   nil ]
     598   nil,   nil,   nil,   nil,   nil,   nil,   nil,   536,   nil,    82,
     599   nil,    86,   nil,   141,   nil,   nil,   nil,   521,   522,   523,
     600   526,   528,   531,   533,    90,   535,   nil,   nil,   538,   513,
     601   276,   279,   282,   287,   290,   294,   299,   305,   nil,   311,
     602   nil,   116,   nil,   nil,   nil,   nil,    92,    96,    48,    50,
     603    36,    38,   nil,   105,    41,    42,    43,    44,   nil,   nil,
     604    62,   nil,    37,    40,   104,   nil,   nil,   nil,   nil,   nil,
     605    97,   100,   nil,   nil,   274,   277,   280,   284,   122,   293,
     606   298,   303,   nil,   nil,   nil,   nil,   nil,   nil,   286,   289,
     607   292,   297,   302,   306,    70,    73,    77,    80,    83,    85,
     608    87,    89,   nil,   nil,   nil,   409,   272,   275,   278,   281,
     609   285,   288,   291,   296,   300,   525,   527,   530,   nil ]
    620610
    621611racc_reduce_table = [
    622612  0, 0, :racc_error,
    623   2, 94, :_reduce_1,
    624   1, 94, :_reduce_none,
    625   8, 95, :_reduce_3,
    626   2, 96, :_reduce_4,
    627   2, 96, :_reduce_5,
    628   1, 104, :_reduce_6,
    629   2, 104, :_reduce_7,
    630   3, 105, :_reduce_8,
    631   1, 106, :_reduce_9,
    632   3, 106, :_reduce_10,
    633   3, 107, :_reduce_11,
    634   1, 107, :_reduce_12,
    635   0, 97, :_reduce_none,
    636   2, 97, :_reduce_14,
    637   2, 97, :_reduce_none,
    638   2, 98, :_reduce_16,
     613  2, 95, :_reduce_1,
     614  1, 95, :_reduce_none,
     615  8, 96, :_reduce_3,
     616  2, 97, :_reduce_4,
     617  2, 97, :_reduce_5,
     618  1, 105, :_reduce_6,
     619  2, 105, :_reduce_7,
     620  3, 106, :_reduce_8,
     621  1, 107, :_reduce_9,
     622  3, 107, :_reduce_10,
     623  3, 108, :_reduce_11,
     624  1, 108, :_reduce_12,
     625  0, 98, :_reduce_none,
     626  2, 98, :_reduce_14,
    639627  2, 98, :_reduce_none,
    640   0, 99, :_reduce_18,
    641   2, 99, :_reduce_19,
     628  2, 99, :_reduce_16,
    642629  2, 99, :_reduce_none,
    643   0, 100, :_reduce_none,
    644   2, 100, :_reduce_22,
     630  0, 100, :_reduce_18,
     631  2, 100, :_reduce_19,
    645632  2, 100, :_reduce_none,
    646   2, 101, :_reduce_24,
     633  0, 101, :_reduce_none,
     634  2, 101, :_reduce_22,
    647635  2, 101, :_reduce_none,
    648   1, 109, :_reduce_26,
    649   1, 109, :_reduce_27,
    650   5, 110, :_reduce_28,
    651   5, 110, :_reduce_29,
    652   2, 112, :_reduce_30,
    653   1, 114, :_reduce_31,
    654   2, 114, :_reduce_32,
    655   1, 113, :_reduce_none,
    656   1, 113, :_reduce_34,
    657   1, 119, :_reduce_35,
    658   1, 119, :_reduce_36,
    659   1, 119, :_reduce_37,
    660   1, 119, :_reduce_38,
    661   1, 119, :_reduce_39,
    662   1, 119, :_reduce_40,
    663   1, 119, :_reduce_41,
    664   1, 119, :_reduce_42,
    665   1, 119, :_reduce_none,
    666   1, 119, :_reduce_none,
    667   3, 126, :_reduce_45,
    668   4, 120, :_reduce_46,
    669   3, 120, :_reduce_none,
    670   6, 121, :_reduce_48,
    671   2, 128, :_reduce_49,
    672   2, 131, :_reduce_50,
    673   3, 131, :_reduce_none,
    674   2, 131, :_reduce_none,
    675   1, 125, :_reduce_53,
    676   1, 132, :_reduce_54,
    677   1, 132, :_reduce_55,
    678   1, 132, :_reduce_56,
    679   1, 132, :_reduce_57,
    680   1, 132, :_reduce_58,
    681   1, 132, :_reduce_59,
    682   1, 132, :_reduce_60,
    683   1, 132, :_reduce_61,
    684   1, 117, :_reduce_none,
    685   1, 118, :_reduce_63,
    686   2, 118, :_reduce_64,
    687   5, 141, :_reduce_65,
    688   5, 141, :_reduce_66,
    689   5, 141, :_reduce_67,
    690   2, 142, :_reduce_68,
    691   3, 142, :_reduce_69,
    692   1, 143, :_reduce_70,
    693   2, 143, :_reduce_71,
    694   1, 143, :_reduce_72,
    695   0, 129, :_reduce_none,
    696   2, 129, :_reduce_74,
     636  2, 102, :_reduce_24,
     637  2, 102, :_reduce_none,
     638  1, 110, :_reduce_26,
     639  1, 110, :_reduce_27,
     640  4, 111, :_reduce_28,
     641  5, 111, :_reduce_29,
     642  2, 113, :_reduce_30,
     643  1, 115, :_reduce_31,
     644  2, 115, :_reduce_32,
     645  1, 114, :_reduce_none,
     646  1, 114, :_reduce_34,
     647  1, 120, :_reduce_35,
     648  1, 120, :_reduce_36,
     649  1, 120, :_reduce_37,
     650  1, 120, :_reduce_38,
     651  1, 120, :_reduce_39,
     652  1, 120, :_reduce_40,
     653  1, 120, :_reduce_41,
     654  1, 120, :_reduce_42,
     655  1, 120, :_reduce_none,
     656  1, 120, :_reduce_none,
     657  3, 127, :_reduce_45,
     658  4, 121, :_reduce_46,
     659  3, 121, :_reduce_none,
     660  6, 122, :_reduce_48,
     661  2, 129, :_reduce_49,
     662  2, 132, :_reduce_50,
     663  3, 132, :_reduce_none,
     664  2, 132, :_reduce_none,
     665  1, 126, :_reduce_53,
     666  1, 133, :_reduce_54,
     667  1, 133, :_reduce_55,
     668  1, 133, :_reduce_56,
     669  1, 133, :_reduce_57,
     670  1, 133, :_reduce_58,
     671  1, 133, :_reduce_59,
     672  1, 133, :_reduce_60,
     673  1, 133, :_reduce_61,
     674  1, 118, :_reduce_none,
     675  1, 119, :_reduce_63,
     676  2, 119, :_reduce_64,
     677  5, 142, :_reduce_65,
     678  5, 142, :_reduce_66,
     679  7, 142, :_reduce_67,
     680  5, 142, :_reduce_68,
     681  2, 143, :_reduce_69,
     682  3, 143, :_reduce_70,
     683  1, 144, :_reduce_71,
     684  2, 144, :_reduce_72,
     685  1, 144, :_reduce_73,
    697686  0, 130, :_reduce_none,
    698   2, 130, :_reduce_76,
    699   1, 146, :_reduce_none,
    700   2, 146, :_reduce_none,
    701   3, 147, :_reduce_none,
    702   1, 147, :_reduce_none,
    703   3, 147, :_reduce_none,
    704   0, 102, :_reduce_none,
    705   2, 102, :_reduce_none,
    706   2, 102, :_reduce_none,
    707   2, 103, :_reduce_85,
     687  2, 130, :_reduce_75,
     688  0, 131, :_reduce_none,
     689  2, 131, :_reduce_77,
     690  1, 148, :_reduce_none,
     691  2, 148, :_reduce_none,
     692  3, 149, :_reduce_none,
     693  1, 149, :_reduce_none,
     694  3, 149, :_reduce_none,
     695  0, 103, :_reduce_none,
    708696  2, 103, :_reduce_none,
    709   0, 108, :_reduce_none,
    710   1, 108, :_reduce_88,
    711   1, 108, :_reduce_89,
    712   1, 150, :_reduce_90,
    713   2, 150, :_reduce_91,
    714   3, 150, :_reduce_92,
     697  2, 103, :_reduce_none,
     698  2, 104, :_reduce_86,
     699  2, 104, :_reduce_none,
     700  0, 109, :_reduce_none,
     701  1, 109, :_reduce_89,
     702  1, 109, :_reduce_90,
     703  1, 152, :_reduce_91,
     704  2, 152, :_reduce_92,
    715705  3, 152, :_reduce_93,
    716   1, 153, :_reduce_94,
    717   2, 153, :_reduce_none,
    718   1, 154, :_reduce_96,
    719   1, 154, :_reduce_97,
    720   1, 151, :_reduce_98,
    721   1, 151, :_reduce_99,
    722   1, 157, :_reduce_100,
    723   2, 157, :_reduce_101,
    724   3, 158, :_reduce_102,
    725   1, 159, :_reduce_103,
    726   1, 160, :_reduce_104,
    727   2, 160, :_reduce_105,
    728   3, 161, :_reduce_106,
    729   3, 162, :_reduce_107,
    730   1, 156, :_reduce_108,
    731   2, 156, :_reduce_109,
    732   2, 164, :_reduce_110,
    733   3, 164, :_reduce_111,
    734   1, 165, :_reduce_none,
    735   1, 155, :_reduce_113,
    736   2, 155, :_reduce_114,
    737   3, 166, :_reduce_115,
    738   1, 167, :_reduce_116,
    739   1, 167, :_reduce_117,
    740   1, 167, :_reduce_118,
    741   1, 167, :_reduce_119,
    742   1, 167, :_reduce_120,
    743   1, 163, :_reduce_121,
    744   1, 163, :_reduce_122,
    745   1, 163, :_reduce_123,
    746   1, 163, :_reduce_124,
    747   1, 163, :_reduce_125,
    748   1, 163, :_reduce_126,
    749   1, 163, :_reduce_127,
    750   1, 163, :_reduce_128,
    751   1, 163, :_reduce_129,
    752   1, 163, :_reduce_130,
    753   1, 168, :_reduce_131,
    754   1, 168, :_reduce_132,
    755   1, 168, :_reduce_133,
    756   1, 168, :_reduce_134,
    757   1, 168, :_reduce_135,
    758   1, 168, :_reduce_136,
    759   1, 168, :_reduce_137,
    760   1, 168, :_reduce_138,
    761   1, 168, :_reduce_139,
    762   1, 169, :_reduce_none,
    763   1, 169, :_reduce_none,
    764   1, 169, :_reduce_none,
    765   1, 169, :_reduce_none,
    766   1, 169, :_reduce_none,
    767   1, 169, :_reduce_none,
    768   1, 116, :_reduce_146,
    769   1, 116, :_reduce_147,
    770   1, 172, :_reduce_148,
    771   3, 182, :_reduce_149,
    772   3, 182, :_reduce_150,
    773   3, 182, :_reduce_151,
    774   1, 173, :_reduce_152,
    775   2, 173, :_reduce_153,
    776   2, 173, :_reduce_154,
    777   3, 183, :_reduce_none,
    778   3, 183, :_reduce_none,
    779   3, 183, :_reduce_none,
    780   5, 191, :_reduce_none,
    781   6, 191, :_reduce_none,
    782   6, 191, :_reduce_none,
    783   7, 191, :_reduce_none,
    784   4, 191, :_reduce_none,
    785   4, 191, :_reduce_none,
    786   4, 191, :_reduce_none,
    787   4, 191, :_reduce_none,
    788   3, 191, :_reduce_none,
    789   1, 174, :_reduce_167,
    790   2, 174, :_reduce_168,
    791   2, 174, :_reduce_169,
     706  3, 154, :_reduce_94,
     707  1, 155, :_reduce_95,
     708  2, 155, :_reduce_none,
     709  1, 156, :_reduce_97,
     710  1, 156, :_reduce_98,
     711  1, 153, :_reduce_99,
     712  1, 153, :_reduce_100,
     713  1, 159, :_reduce_101,
     714  2, 159, :_reduce_102,
     715  3, 160, :_reduce_103,
     716  1, 161, :_reduce_104,
     717  1, 162, :_reduce_105,
     718  2, 162, :_reduce_106,
     719  3, 163, :_reduce_107,
     720  3, 164, :_reduce_108,
     721  1, 158, :_reduce_109,
     722  2, 158, :_reduce_110,
     723  2, 166, :_reduce_111,
     724  3, 166, :_reduce_112,
     725  1, 167, :_reduce_none,
     726  1, 157, :_reduce_114,
     727  2, 157, :_reduce_115,
     728  3, 168, :_reduce_116,
     729  1, 169, :_reduce_117,
     730  1, 169, :_reduce_118,
     731  1, 169, :_reduce_119,
     732  1, 169, :_reduce_120,
     733  1, 169, :_reduce_121,
     734  1, 165, :_reduce_122,
     735  1, 165, :_reduce_123,
     736  1, 165, :_reduce_124,
     737  1, 165, :_reduce_125,
     738  1, 165, :_reduce_126,
     739  1, 165, :_reduce_127,
     740  1, 165, :_reduce_128,
     741  1, 165, :_reduce_129,
     742  1, 165, :_reduce_130,
     743  1, 165, :_reduce_131,
     744  1, 170, :_reduce_132,
     745  1, 170, :_reduce_133,
     746  1, 170, :_reduce_134,
     747  1, 170, :_reduce_135,
     748  1, 170, :_reduce_136,
     749  1, 170, :_reduce_137,
     750  1, 170, :_reduce_138,
     751  1, 170, :_reduce_139,
     752  1, 170, :_reduce_140,
     753  1, 171, :_reduce_none,
     754  1, 171, :_reduce_none,
     755  1, 171, :_reduce_none,
     756  1, 171, :_reduce_none,
     757  1, 171, :_reduce_none,
     758  1, 171, :_reduce_none,
     759  1, 117, :_reduce_147,
     760  1, 117, :_reduce_148,
     761  1, 145, :_reduce_149,
     762  3, 183, :_reduce_150,
     763  3, 183, :_reduce_151,
     764  3, 183, :_reduce_152,
     765  1, 174, :_reduce_153,
     766  2, 174, :_reduce_154,
     767  2, 174, :_reduce_155,
    792768  3, 184, :_reduce_none,
    793769  3, 184, :_reduce_none,
     
    802778  4, 192, :_reduce_none,
    803779  3, 192, :_reduce_none,
    804   1, 175, :_reduce_182,
    805   1, 175, :_reduce_183,
     780  1, 175, :_reduce_168,
     781  2, 175, :_reduce_169,
     782  2, 175, :_reduce_170,
    806783  3, 185, :_reduce_none,
    807784  3, 185, :_reduce_none,
    808785  3, 185, :_reduce_none,
    809   1, 176, :_reduce_none,
    810   3, 186, :_reduce_none,
    811   3, 186, :_reduce_none,
    812   3, 186, :_reduce_none,
    813   1, 177, :_reduce_191,
    814   3, 187, :_reduce_none,
    815   3, 187, :_reduce_none,
    816   3, 187, :_reduce_none,
    817786  5, 193, :_reduce_none,
    818787  6, 193, :_reduce_none,
     
    824793  4, 193, :_reduce_none,
    825794  3, 193, :_reduce_none,
    826   1, 178, :_reduce_none,
     795  1, 176, :_reduce_183,
     796  1, 176, :_reduce_184,
     797  3, 186, :_reduce_none,
     798  3, 186, :_reduce_none,
     799  3, 186, :_reduce_none,
     800  1, 177, :_reduce_none,
     801  3, 187, :_reduce_none,
     802  3, 187, :_reduce_none,
     803  3, 187, :_reduce_none,
     804  1, 178, :_reduce_192,
    827805  3, 188, :_reduce_none,
    828806  3, 188, :_reduce_none,
     
    837815  4, 194, :_reduce_none,
    838816  3, 194, :_reduce_none,
    839   1, 179, :_reduce_217,
     817  1, 179, :_reduce_none,
    840818  3, 189, :_reduce_none,
    841819  3, 189, :_reduce_none,
     
    850828  4, 195, :_reduce_none,
    851829  3, 195, :_reduce_none,
    852   1, 180, :_reduce_230,
     830  1, 180, :_reduce_218,
    853831  3, 190, :_reduce_none,
    854832  3, 190, :_reduce_none,
     
    863841  4, 196, :_reduce_none,
    864842  3, 196, :_reduce_none,
    865   1, 170, :_reduce_243,
    866   3, 171, :_reduce_none,
    867   3, 171, :_reduce_none,
    868   3, 171, :_reduce_none,
    869   1, 181, :_reduce_247,
    870   1, 111, :_reduce_none,
    871   2, 111, :_reduce_none,
     843  1, 181, :_reduce_231,
     844  3, 191, :_reduce_none,
     845  3, 191, :_reduce_none,
     846  3, 191, :_reduce_none,
     847  5, 197, :_reduce_none,
     848  6, 197, :_reduce_none,
     849  6, 197, :_reduce_none,
     850  7, 197, :_reduce_none,
     851  4, 197, :_reduce_none,
     852  4, 197, :_reduce_none,
     853  4, 197, :_reduce_none,
     854  4, 197, :_reduce_none,
    872855  3, 197, :_reduce_none,
    873   1, 197, :_reduce_none,
    874   3, 197, :_reduce_none,
    875   1, 149, :_reduce_none,
    876   1, 149, :_reduce_none,
    877   2, 199, :_reduce_none,
    878   2, 199, :_reduce_none,
    879   5, 199, :_reduce_none,
    880   5, 199, :_reduce_none,
    881   2, 199, :_reduce_none,
    882   3, 199, :_reduce_none,
    883   3, 199, :_reduce_none,
    884   3, 199, :_reduce_none,
    885   3, 199, :_reduce_none,
    886   3, 199, :_reduce_none,
    887   3, 199, :_reduce_none,
    888   3, 199, :_reduce_none,
    889   3, 199, :_reduce_none,
    890   3, 199, :_reduce_none,
    891   3, 199, :_reduce_none,
     856  1, 172, :_reduce_244,
     857  3, 173, :_reduce_none,
     858  3, 173, :_reduce_none,
     859  3, 173, :_reduce_none,
     860  1, 182, :_reduce_248,
     861  1, 112, :_reduce_none,
     862  2, 112, :_reduce_none,
    892863  3, 198, :_reduce_none,
    893864  1, 198, :_reduce_none,
    894   1, 198, :_reduce_none,
    895   1, 201, :_reduce_none,
    896   1, 201, :_reduce_none,
     865  3, 198, :_reduce_none,
     866  1, 151, :_reduce_none,
     867  1, 151, :_reduce_none,
     868  2, 200, :_reduce_none,
     869  5, 200, :_reduce_257,
     870  5, 200, :_reduce_none,
     871  2, 200, :_reduce_none,
     872  3, 200, :_reduce_none,
     873  3, 200, :_reduce_none,
     874  3, 200, :_reduce_none,
     875  3, 200, :_reduce_none,
     876  3, 200, :_reduce_none,
     877  3, 200, :_reduce_none,
     878  3, 200, :_reduce_none,
     879  3, 200, :_reduce_none,
     880  3, 200, :_reduce_none,
     881  3, 200, :_reduce_none,
     882  3, 199, :_reduce_none,
     883  1, 199, :_reduce_none,
     884  1, 199, :_reduce_none,
    897885  3, 203, :_reduce_none,
    898886  3, 203, :_reduce_none,
     
    900888  3, 203, :_reduce_none,
    901889  3, 203, :_reduce_none,
    902   3, 202, :_reduce_none,
     890  3, 204, :_reduce_none,
     891  1, 204, :_reduce_none,
     892  1, 204, :_reduce_none,
     893  1, 204, :_reduce_none,
    903894  1, 202, :_reduce_none,
    904895  1, 202, :_reduce_none,
    905   1, 202, :_reduce_none,
    906   1, 127, :_reduce_none,
    907   2, 127, :_reduce_none,
    908   1, 200, :_reduce_none,
    909   3, 200, :_reduce_none,
    910   2, 204, :_reduce_288,
    911   1, 204, :_reduce_289,
    912   0, 144, :_reduce_290,
    913   5, 144, :_reduce_291,
    914   1, 205, :_reduce_292,
    915   3, 205, :_reduce_293,
    916   5, 145, :_reduce_294,
    917   1, 206, :_reduce_none,
    918   3, 206, :_reduce_none,
    919   3, 206, :_reduce_none,
    920   3, 206, :_reduce_none,
    921   5, 206, :_reduce_none,
    922   5, 206, :_reduce_none,
    923   5, 206, :_reduce_none,
    924   5, 206, :_reduce_none,
    925   1, 208, :_reduce_303,
    926   1, 208, :_reduce_304,
    927   0, 115, :_reduce_none,
    928   5, 115, :_reduce_306,
    929   2, 115, :_reduce_none,
    930   1, 207, :_reduce_308,
    931   3, 207, :_reduce_309,
    932   1, 209, :_reduce_none,
    933   1, 209, :_reduce_none,
    934   1, 209, :_reduce_none,
    935   1, 133, :_reduce_none,
    936   3, 133, :_reduce_none,
    937   3, 133, :_reduce_none,
     896  1, 128, :_reduce_none,
     897  2, 128, :_reduce_none,
     898  1, 201, :_reduce_286,
     899  3, 201, :_reduce_287,
     900  2, 205, :_reduce_288,
     901  1, 205, :_reduce_289,
     902  0, 146, :_reduce_290,
     903  5, 146, :_reduce_291,
     904  1, 206, :_reduce_292,
     905  3, 206, :_reduce_293,
     906  5, 147, :_reduce_294,
     907  1, 207, :_reduce_none,
     908  3, 207, :_reduce_none,
     909  3, 207, :_reduce_none,
     910  3, 207, :_reduce_none,
     911  5, 207, :_reduce_none,
     912  5, 207, :_reduce_none,
     913  5, 207, :_reduce_none,
     914  5, 207, :_reduce_none,
     915  1, 209, :_reduce_303,
     916  1, 209, :_reduce_304,
     917  0, 116, :_reduce_none,
     918  5, 116, :_reduce_306,
     919  2, 116, :_reduce_none,
     920  1, 208, :_reduce_308,
     921  3, 208, :_reduce_309,
    938922  1, 210, :_reduce_none,
    939923  1, 210, :_reduce_none,
     
    961945  3, 137, :_reduce_none,
    962946  1, 214, :_reduce_none,
    963   3, 214, :_reduce_none,
    964947  1, 214, :_reduce_none,
    965948  1, 214, :_reduce_none,
     
    967950  3, 138, :_reduce_none,
    968951  3, 138, :_reduce_none,
    969   1, 216, :_reduce_none,
    970   1, 216, :_reduce_none,
    971   3, 216, :_reduce_none,
     952  1, 215, :_reduce_none,
     953  3, 215, :_reduce_none,
     954  1, 215, :_reduce_none,
     955  1, 215, :_reduce_none,
    972956  1, 139, :_reduce_none,
    973957  3, 139, :_reduce_none,
    974958  3, 139, :_reduce_none,
    975   1, 217, :_reduce_353,
    976   1, 217, :_reduce_354,
    977   3, 217, :_reduce_355,
    978   3, 217, :_reduce_356,
    979   1, 140, :_reduce_357,
    980   3, 140, :_reduce_358,
    981   3, 140, :_reduce_359,
    982   1, 124, :_reduce_none,
    983   3, 124, :_reduce_none,
    984   3, 124, :_reduce_none,
    985   1, 218, :_reduce_none,
    986   3, 218, :_reduce_none,
    987   3, 219, :_reduce_365,
    988   1, 123, :_reduce_366,
    989   1, 123, :_reduce_367,
    990   3, 220, :_reduce_368,
    991   0, 221, :_reduce_none,
    992   1, 221, :_reduce_none,
    993   2, 221, :_reduce_none,
    994   1, 122, :_reduce_372,
    995   1, 148, :_reduce_373,
    996   1, 148, :_reduce_374,
    997   1, 215, :_reduce_375 ]
     959  1, 217, :_reduce_none,
     960  1, 217, :_reduce_none,
     961  3, 217, :_reduce_none,
     962  1, 140, :_reduce_none,
     963  3, 140, :_reduce_none,
     964  3, 140, :_reduce_none,
     965  1, 218, :_reduce_353,
     966  1, 218, :_reduce_354,
     967  3, 218, :_reduce_355,
     968  3, 218, :_reduce_356,
     969  1, 141, :_reduce_357,
     970  3, 141, :_reduce_358,
     971  3, 141, :_reduce_359,
     972  1, 125, :_reduce_none,
     973  3, 125, :_reduce_none,
     974  3, 125, :_reduce_none,
     975  1, 219, :_reduce_none,
     976  3, 219, :_reduce_none,
     977  3, 220, :_reduce_365,
     978  1, 124, :_reduce_366,
     979  1, 124, :_reduce_367,
     980  3, 221, :_reduce_368,
     981  0, 222, :_reduce_none,
     982  1, 222, :_reduce_none,
     983  2, 222, :_reduce_none,
     984  1, 123, :_reduce_372,
     985  1, 150, :_reduce_373,
     986  1, 150, :_reduce_374,
     987  1, 216, :_reduce_375 ]
    998988
    999989racc_reduce_n = 376
    1000990
    1001 racc_shift_n = 632
     991racc_shift_n = 626
    1002992
    1003993racc_token_table = {
     
    10371027  :c_complx_object_head => 33,
    10381028  :SYM_MATCHES => 34,
    1039   :Slash_code => 35,
     1029  :REGEXP_HEAD => 35,
    10401030  :REGEXP_BODY => 36,
    10411031  :ERR_C_DOMAIN_TYPE => 37,
     
    10481038  :SYM_INCLUDE => 44,
    10491039  :SYM_EXCLUDE => 45,
    1050   ":" => 46,
     1040  :Colon_code => 46,
    10511041  :SYM_INVARIANT => 47,
    10521042  :V_ASSERTION_TEXT => 48,
     
    10761066  :SYM_EXISTS => 72,
    10771067  :SYM_NOT => 73,
    1078   "=" => 74,
     1068  :Equal_code => 74,
    10791069  :SYM_AND => 75,
    10801070  :SYM_OR => 76,
    10811071  :SYM_XOR => 77,
    10821072  :SYM_IMPLIES => 78,
    1083   "^" => 79,
    1084   :SYM_EXISTENCE => 80,
    1085   :SYM_CARDINALITY => 81,
    1086   :SYM_ORDERED => 82,
    1087   :SYM_UNORDERED => 83,
    1088   :SYM_UNIQUE => 84,
    1089   :SYM_OCCURRENCES => 85,
    1090   :V_ISO8601_DATE_CONSTRAINT_PATTERN => 86,
    1091   :V_ISO8601_TIME_CONSTRAINT_PATTERN => 87,
    1092   :V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN => 88,
    1093   :START_TERM_CODE_CONSTRAINT => 89,
    1094   :END_TERM_CODE_CONSTRAINT => 90,
    1095   :TERM_CODE => 91,
    1096   :V_ISO8601_DURATION_CONSTRAINT_PATTERN => 92 }
    1097 
    1098 racc_nt_base = 93
     1073  :Slash_code => 79,
     1074  :Caret_code => 80,
     1075  :SYM_EXISTENCE => 81,
     1076  :SYM_CARDINALITY => 82,
     1077  :SYM_ORDERED => 83,
     1078  :SYM_UNORDERED => 84,
     1079  :SYM_UNIQUE => 85,
     1080  :SYM_OCCURRENCES => 86,
     1081  :V_ISO8601_DATE_CONSTRAINT_PATTERN => 87,
     1082  :V_ISO8601_TIME_CONSTRAINT_PATTERN => 88,
     1083  :V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN => 89,
     1084  :START_TERM_CODE_CONSTRAINT => 90,
     1085  :END_TERM_CODE_CONSTRAINT => 91,
     1086  :TERM_CODE => 92,
     1087  :V_ISO8601_DURATION_CONSTRAINT_PATTERN => 93 }
     1088
     1089racc_nt_base = 94
    10991090
    11001091racc_use_result_var = true
     
    11521143  "c_complx_object_head",
    11531144  "SYM_MATCHES",
    1154   "Slash_code",
     1145  "REGEXP_HEAD",
    11551146  "REGEXP_BODY",
    11561147  "ERR_C_DOMAIN_TYPE",
     
    11631154  "SYM_INCLUDE",
    11641155  "SYM_EXCLUDE",
    1165   "\":\"",
     1156  "Colon_code",
    11661157  "SYM_INVARIANT",
    11671158  "V_ASSERTION_TEXT",
     
    11911182  "SYM_EXISTS",
    11921183  "SYM_NOT",
    1193   "\"=\"",
     1184  "Equal_code",
    11941185  "SYM_AND",
    11951186  "SYM_OR",
    11961187  "SYM_XOR",
    11971188  "SYM_IMPLIES",
    1198   "\"^\"",
     1189  "Slash_code",
     1190  "Caret_code",
    11991191  "SYM_EXISTENCE",
    12001192  "SYM_CARDINALITY",
     
    12611253  "c_attr_head",
    12621254  "c_attr_values",
     1255  "string_value",
    12631256  "c_existence",
    12641257  "c_cardinality",
     
    12891282  "term_code",
    12901283  "term_code_list_value",
    1291   "string_value",
    12921284  "integer_value",
    12931285  "real_value",
     
    13191311  "relative_path",
    13201312  "arithmetic_expression",
     1313  "arithmetic_node",
    13211314  "arithmetic_leaf",
    1322   "arithmetic_node",
    13231315  "path_segment",
    13241316  "existence_spec",
     
    15391531module_eval(<<'.,.,', 'parser.y', 169)
    15401532  def _reduce_28(val, _values, result)
    1541         result = OpenEhr::AM::Archetype::ConstraintModel::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
     1533        @@logger.debug("#{__FILE__}:#{__LINE__}:c_complx_object = \n c_complx_object_head = #{val[0].to_yaml}")
     1534    result = OpenEhr::AM::Archetype::ConstraintModel::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
    15421535      c_complex_object.node_id = val[0][:c_complex_object_id][:local_term_code_ref]
    15431536      c_complex_object.rm_type_name = val[0][:c_complex_object_id][:type_identifier]
     
    15491542.,.,
    15501543
    1551 module_eval(<<'.,.,', 'parser.y', 177)
     1544module_eval(<<'.,.,', 'parser.y', 179)
    15521545  def _reduce_29(val, _values, result)
    15531546        result = OpenEhr::AM::Archetype::ConstraintModel::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
     
    15611554.,.,
    15621555
    1563 module_eval(<<'.,.,', 'parser.y', 188)
     1556module_eval(<<'.,.,', 'parser.y', 191)
    15641557  def _reduce_30(val, _values, result)
    1565         result = {:c_complex_object_id => val[0], :c_occurrences => val[1]}
    1566  
    1567     result
    1568   end
    1569 .,.,
    1570 
    1571 module_eval(<<'.,.,', 'parser.y', 193)
     1558        @@logger.debug("#{__FILE__}:#{__LINE__}: c_complex_object_head: c_complex_object_id => #{val[0]}, c_occurrences => #{val[1]}")
     1559    result = {:c_complex_object_id => val[0], :c_occurrences => val[1]}
     1560 
     1561    result
     1562  end
     1563.,.,
     1564
     1565module_eval(<<'.,.,', 'parser.y', 197)
    15721566  def _reduce_31(val, _values, result)
    15731567        result = {:type_identifier => val[0]}
     
    15771571.,.,
    15781572
    1579 module_eval(<<'.,.,', 'parser.y', 197)
     1573module_eval(<<'.,.,', 'parser.y', 201)
    15801574  def _reduce_32(val, _values, result)
    15811575        result = {:type_identifier => val[0], :local_term_code_ref => val[1]}
     
    15871581# reduce 33 omitted
    15881582
    1589 module_eval(<<'.,.,', 'parser.y', 203)
     1583module_eval(<<'.,.,', 'parser.y', 207)
    15901584  def _reduce_34(val, _values, result)
    15911585        result = OpenEhr::AM::Archetype::ConstraintModel::C_COMPLEX_OBJECT.new(:attributes => val[0])
     
    15951589.,.,
    15961590
    1597 module_eval(<<'.,.,', 'parser.y', 221)
     1591module_eval(<<'.,.,', 'parser.y', 225)
    15981592  def _reduce_35(val, _values, result)
    15991593        @@logger.debug("#{__FILE__}:#{__LINE__}: c_complex_object = #{val[0].inspect} at #{@filename}:#{@lineno}")
     
    16041598.,.,
    16051599
    1606 module_eval(<<'.,.,', 'parser.y', 226)
     1600module_eval(<<'.,.,', 'parser.y', 230)
    16071601  def _reduce_36(val, _values, result)
    16081602        result = OpenEhr::AM::Archetype::ConstraintModel::ARCHETYPE_INTERNAL_REF.create do |archetype_internal_ref|
     
    16161610.,.,
    16171611
    1618 module_eval(<<'.,.,', 'parser.y', 234)
     1612module_eval(<<'.,.,', 'parser.y', 238)
    16191613  def _reduce_37(val, _values, result)
    16201614        result = val[0]
     
    16241618.,.,
    16251619
    1626 module_eval(<<'.,.,', 'parser.y', 238)
     1620module_eval(<<'.,.,', 'parser.y', 242)
    16271621  def _reduce_38(val, _values, result)
    16281622        result = OpenEhr::AM::Archetype::ConstraintModel::CONSTRAINT_REF.create do |constraint_ref|
     
    16341628.,.,
    16351629
    1636 module_eval(<<'.,.,', 'parser.y', 244)
     1630module_eval(<<'.,.,', 'parser.y', 248)
    16371631  def _reduce_39(val, _values, result)
    16381632        result = val[0]
     
    16421636.,.,
    16431637
    1644 module_eval(<<'.,.,', 'parser.y', 248)
     1638module_eval(<<'.,.,', 'parser.y', 252)
    16451639  def _reduce_40(val, _values, result)
    16461640        result = val[0]
     
    16501644.,.,
    16511645
    1652 module_eval(<<'.,.,', 'parser.y', 252)
     1646module_eval(<<'.,.,', 'parser.y', 256)
    16531647  def _reduce_41(val, _values, result)
    16541648        result = val[0]
     
    16581652.,.,
    16591653
    1660 module_eval(<<'.,.,', 'parser.y', 256)
     1654module_eval(<<'.,.,', 'parser.y', 260)
    16611655  def _reduce_42(val, _values, result)
    16621656        result = val[0]
     
    16701664# reduce 44 omitted
    16711665
    1672 module_eval(<<'.,.,', 'parser.y', 289)
     1666module_eval(<<'.,.,', 'parser.y', 293)
    16731667  def _reduce_45(val, _values, result)
    16741668        result = val[1]
     
    16781672.,.,
    16791673
    1680 module_eval(<<'.,.,', 'parser.y', 295)
     1674module_eval(<<'.,.,', 'parser.y', 299)
    16811675  def _reduce_46(val, _values, result)
    16821676        result = {:type_identifier => val[1], :c_occurrences => val[2], :absolute_path => val[3] }
     
    16881682# reduce 47 omitted
    16891683
    1690 module_eval(<<'.,.,', 'parser.y', 302)
     1684module_eval(<<'.,.,', 'parser.y', 306)
    16911685  def _reduce_48(val, _values, result)
    16921686        result = OpenEhr::AM::Archetype::ConstraintModel::ARCHETYPE_SLOT.create do |archetype_slot|
     
    17011695.,.,
    17021696
    1703 module_eval(<<'.,.,', 'parser.y', 311)
     1697module_eval(<<'.,.,', 'parser.y', 315)
    17041698  def _reduce_49(val, _values, result)
    17051699        result = {:c_archetype_slot_id => val[0],:c_occurrences => val[1]}
     
    17091703.,.,
    17101704
    1711 module_eval(<<'.,.,', 'parser.y', 316)
     1705module_eval(<<'.,.,', 'parser.y', 320)
    17121706  def _reduce_50(val, _values, result)
    17131707        result = val[1]
     
    17211715# reduce 52 omitted
    17221716
    1723 module_eval(<<'.,.,', 'parser.y', 324)
     1717module_eval(<<'.,.,', 'parser.y', 328)
    17241718  def _reduce_53(val, _values, result)
    17251719        assert_at(__FILE__,__LINE__){val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_PRIMITIVE)}
     
    17321726.,.,
    17331727
    1734 module_eval(<<'.,.,', 'parser.y', 332)
     1728module_eval(<<'.,.,', 'parser.y', 336)
    17351729  def _reduce_54(val, _values, result)
    17361730        @@logger.debug("#{__FILE__}:#{__LINE__}: c_integer = #{val[0]} at #{@filename}:#{@lineno}")
     
    17451739.,.,
    17461740
    1747 module_eval(<<'.,.,', 'parser.y', 341)
     1741module_eval(<<'.,.,', 'parser.y', 345)
    17481742  def _reduce_55(val, _values, result)
    17491743        @@logger.debug("#{__FILE__}:#{__LINE__}: c_real = #{val[0]} at #{@filename}:#{@lineno}")
     
    17541748.,.,
    17551749
    1756 module_eval(<<'.,.,', 'parser.y', 346)
     1750module_eval(<<'.,.,', 'parser.y', 350)
    17571751  def _reduce_56(val, _values, result)
    17581752        @@logger.debug("#{__FILE__}:#{__LINE__}: c_date = #{val[0]} at #{@filename}:#{@lineno}")
     
    17631757.,.,
    17641758
    1765 module_eval(<<'.,.,', 'parser.y', 351)
     1759module_eval(<<'.,.,', 'parser.y', 355)
    17661760  def _reduce_57(val, _values, result)
    17671761        @@logger.debug("#{__FILE__}:#{__LINE__}: c_time = #{val[0]} at #{@filename}:#{@lineno}")
     
    17721766.,.,
    17731767
    1774 module_eval(<<'.,.,', 'parser.y', 356)
     1768module_eval(<<'.,.,', 'parser.y', 360)
    17751769  def _reduce_58(val, _values, result)
    17761770        @@logger.debug("#{__FILE__}:#{__LINE__}: c_date_time = #{val[0]} at #{@filename}:#{@lineno}")
     
    17811775.,.,
    17821776
    1783 module_eval(<<'.,.,', 'parser.y', 361)
     1777module_eval(<<'.,.,', 'parser.y', 365)
    17841778  def _reduce_59(val, _values, result)
    17851779        @@logger.debug("#{__FILE__}:#{__LINE__}: c_duration = #{val[0]} at #{@filename}:#{@lineno}")
     
    17901784.,.,
    17911785
    1792 module_eval(<<'.,.,', 'parser.y', 366)
     1786module_eval(<<'.,.,', 'parser.y', 370)
    17931787  def _reduce_60(val, _values, result)
    17941788        @@logger.debug("#{__FILE__}:#{__LINE__}: c_string = #{val[0]} at #{@filename}:#{@lineno}")
     
    17991793.,.,
    18001794
    1801 module_eval(<<'.,.,', 'parser.y', 371)
     1795module_eval(<<'.,.,', 'parser.y', 375)
    18021796  def _reduce_61(val, _values, result)
    18031797        assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN)}
     
    18111805# reduce 62 omitted
    18121806
    1813 module_eval(<<'.,.,', 'parser.y', 383)
     1807module_eval(<<'.,.,', 'parser.y', 387)
    18141808  def _reduce_63(val, _values, result)
    18151809        result = [val[0]]
     
    18191813.,.,
    18201814
    1821 module_eval(<<'.,.,', 'parser.y', 387)
     1815module_eval(<<'.,.,', 'parser.y', 391)
    18221816  def _reduce_64(val, _values, result)
    18231817        result = (val[0] << val[1])
     
    18271821.,.,
    18281822
    1829 module_eval(<<'.,.,', 'parser.y', 393)
     1823module_eval(<<'.,.,', 'parser.y', 397)
    18301824  def _reduce_65(val, _values, result)
    1831         assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::C_ATTRIBUTE)}
     1825        @@logger.debug("#{__FILE__}:#{__LINE__}:c_attribute: #{val[0]} matches #{val[3]}")
     1826    assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::C_ATTRIBUTE)}
    18321827    c_attribute = val[0]
    18331828    c_attribute.children = val[3]
     
    18381833.,.,
    18391834
    1840 module_eval(<<'.,.,', 'parser.y', 401)
     1835module_eval(<<'.,.,', 'parser.y', 405)
    18411836  def _reduce_66(val, _values, result)
     1837        @@logger.debug("c_attribute: #{val[0]} matches #{val[3]}}")
     1838    assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::C_ATTRIBUTE)}
     1839    result = val[0]
     1840 
     1841    result
     1842  end
     1843.,.,
     1844
     1845module_eval(<<'.,.,', 'parser.y', 412)
     1846  def _reduce_67(val, _values, result)
     1847        @@logger.debug("c_attribute: #{val[0]} matches #{val[5]}}")
     1848    assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::C_ATTRIBUTE)}
     1849    result = val[0]
     1850 
     1851    result
     1852  end
     1853.,.,
     1854
     1855module_eval(<<'.,.,', 'parser.y', 418)
     1856  def _reduce_68(val, _values, result)
    18421857        assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::C_ATTRIBUTE)}
    18431858    result = val[0]
     
    18471862.,.,
    18481863
    1849 module_eval(<<'.,.,', 'parser.y', 406)
    1850   def _reduce_67(val, _values, result)
    1851         assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::C_ATTRIBUTE)}
    1852     result = val[0]
    1853  
    1854     result
    1855   end
    1856 .,.,
    1857 
    1858 module_eval(<<'.,.,', 'parser.y', 413)
    1859   def _reduce_68(val, _values, result)
     1864module_eval(<<'.,.,', 'parser.y', 425)
     1865  def _reduce_69(val, _values, result)
    18601866        @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}, c_existence = #{val[1]} at #{@filename}")
    18611867    result = OpenEhr::AM::Archetype::ConstraintModel::C_SINGLE_ATTRIBUTE.new(
     
    18691875.,.,
    18701876
    1871 module_eval(<<'.,.,', 'parser.y', 422)
    1872   def _reduce_69(val, _values, result)
     1877module_eval(<<'.,.,', 'parser.y', 434)
     1878  def _reduce_70(val, _values, result)
    18731879        assert_at(__FILE__,__LINE__){ val[2].instance_of?(OpenEhr::AM::Archetype::ConstraintModel::CARDINALITY) }
    18741880    @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER: #{val[0]}, c_existence = #{val[1]}, c_cardinality = #{val[2]} at #{@filename}")
     
    18831889.,.,
    18841890
    1885 module_eval(<<'.,.,', 'parser.y', 433)
    1886   def _reduce_70(val, _values, result)
     1891module_eval(<<'.,.,', 'parser.y', 445)
     1892  def _reduce_71(val, _values, result)
    18871893        result = Array[val[0]]
    18881894 
     
    18911897.,.,
    18921898
    1893 module_eval(<<'.,.,', 'parser.y', 437)
    1894   def _reduce_71(val, _values, result)
     1899module_eval(<<'.,.,', 'parser.y', 449)
     1900  def _reduce_72(val, _values, result)
    18951901        result = (val[0] << val[1])
    18961902 
     
    18991905.,.,
    19001906
    1901 module_eval(<<'.,.,', 'parser.y', 441)
    1902   def _reduce_72(val, _values, result)
     1907module_eval(<<'.,.,', 'parser.y', 453)
     1908  def _reduce_73(val, _values, result)
    19031909        result = Array[val[0]]
    19041910 
     
    19071913.,.,
    19081914
    1909 # reduce 73 omitted
    1910 
    1911 module_eval(<<'.,.,', 'parser.y', 449)
    1912   def _reduce_74(val, _values, result)
    1913         result = val[1]
    1914 
    1915     result
    1916   end
    1917 .,.,
    1918 
    1919 # reduce 75 omitted
    1920 
    1921 module_eval(<<'.,.,', 'parser.y', 457)
    1922   def _reduce_76(val, _values, result)
    1923         result = val[1]
    1924 
    1925     result
    1926   end
    1927 .,.,
    1928 
    1929 # reduce 77 omitted
     1915# reduce 74 omitted
     1916
     1917module_eval(<<'.,.,', 'parser.y', 459)
     1918  def _reduce_75(val, _values, result)
     1919        @@logger.debug("#{__FILE__}:#{__LINE__}: c_includes: assertions = #{val[1]}")
     1920    result = val[1]
     1921
     1922    result
     1923  end
     1924.,.,
     1925
     1926# reduce 76 omitted
     1927
     1928module_eval(<<'.,.,', 'parser.y', 468)
     1929  def _reduce_77(val, _values, result)
     1930        @@logger.debug("#{__FILE__}:#{__LINE__}: c_excludes: assertions = #{val[1]}")
     1931    result = val[1]
     1932 
     1933    result
     1934  end
     1935.,.,
    19301936
    19311937# reduce 78 omitted
     
    19431949# reduce 84 omitted
    19441950
    1945 module_eval(<<'.,.,', 'parser.y', 477)
    1946   def _reduce_85(val, _values, result)
     1951# reduce 85 omitted
     1952
     1953module_eval(<<'.,.,', 'parser.y', 491)
     1954  def _reduce_86(val, _values, result)
    19471955        dadl_section = val[1]
    19481956    result = OpenEhr::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY.new
     
    19521960.,.,
    19531961
    1954 # reduce 86 omitted
    1955 
    19561962# reduce 87 omitted
    19571963
    1958 module_eval(<<'.,.,', 'parser.y', 487)
    1959   def _reduce_88(val, _values, result)
     1964# reduce 88 omitted
     1965
     1966module_eval(<<'.,.,', 'parser.y', 501)
     1967  def _reduce_89(val, _values, result)
    19601968        @@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section attr_vals = \n#{val[0].to_yaml}")
    19611969    result = val[0]
     
    19651973.,.,
    19661974
    1967 module_eval(<<'.,.,', 'parser.y', 492)
    1968   def _reduce_89(val, _values, result)
     1975module_eval(<<'.,.,', 'parser.y', 506)
     1976  def _reduce_90(val, _values, result)
    19691977        @@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section complex_object_block = \n#{val[0].to_yaml}")
    19701978    result = val[0]
     
    19741982.,.,
    19751983
    1976 module_eval(<<'.,.,', 'parser.y', 499)
    1977   def _reduce_90(val, _values, result)
     1984module_eval(<<'.,.,', 'parser.y', 513)
     1985  def _reduce_91(val, _values, result)
    19781986        result = Array[val[0]]
    19791987 
     
    19821990.,.,
    19831991
    1984 module_eval(<<'.,.,', 'parser.y', 503)
    1985   def _reduce_91(val, _values, result)
     1992module_eval(<<'.,.,', 'parser.y', 517)
     1993  def _reduce_92(val, _values, result)
    19861994        result = (val[0] << val[1])
    19871995 
     
    19901998.,.,
    19911999
    1992 module_eval(<<'.,.,', 'parser.y', 507)
    1993   def _reduce_92(val, _values, result)
     2000module_eval(<<'.,.,', 'parser.y', 521)
     2001  def _reduce_93(val, _values, result)
    19942002        result = (val[0] << val[2])
    19952003 
     
    19982006.,.,
    19992007
    2000 module_eval(<<'.,.,', 'parser.y', 512)
    2001   def _reduce_93(val, _values, result)
     2008module_eval(<<'.,.,', 'parser.y', 526)
     2009  def _reduce_94(val, _values, result)
    20022010        @@logger.debug("#{__FILE__}:#{__LINE__}:attr_val\n attr_id = #{val[0]}, object_block = #{val[1]}")
    20032011    result = {:attr_id => val[0], :object_block => val[2]}
     
    20072015.,.,
    20082016
    2009 module_eval(<<'.,.,', 'parser.y', 518)
    2010   def _reduce_94(val, _values, result)
     2017module_eval(<<'.,.,', 'parser.y', 532)
     2018  def _reduce_95(val, _values, result)
    20112019        @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}")
    20122020    result = val[0]
     
    20162024.,.,
    20172025
    2018 # reduce 95 omitted
    2019 
    2020 module_eval(<<'.,.,', 'parser.y', 525)
    2021   def _reduce_96(val, _values, result)
    2022         result = val[0]
    2023  
    2024     result
    2025   end
    2026 .,.,
    2027 
    2028 module_eval(<<'.,.,', 'parser.y', 529)
     2026# reduce 96 omitted
     2027
     2028module_eval(<<'.,.,', 'parser.y', 539)
    20292029  def _reduce_97(val, _values, result)
    20302030        result = val[0]
     
    20342034.,.,
    20352035
    2036 module_eval(<<'.,.,', 'parser.y', 534)
     2036module_eval(<<'.,.,', 'parser.y', 543)
    20372037  def _reduce_98(val, _values, result)
    20382038        result = val[0]
     
    20422042.,.,
    20432043
    2044 module_eval(<<'.,.,', 'parser.y', 538)
     2044module_eval(<<'.,.,', 'parser.y', 548)
    20452045  def _reduce_99(val, _values, result)
    20462046        result = val[0]
     
    20502050.,.,
    20512051
    2052 module_eval(<<'.,.,', 'parser.y', 543)
     2052module_eval(<<'.,.,', 'parser.y', 552)
    20532053  def _reduce_100(val, _values, result)
     2054        result = val[0]
     2055 
     2056    result
     2057  end
     2058.,.,
     2059
     2060module_eval(<<'.,.,', 'parser.y', 557)
     2061  def _reduce_101(val, _values, result)
    20542062        result = {:untyped_multiple_attr_object_block => val[0]}
    20552063 
     
    20582066.,.,
    20592067
    2060 module_eval(<<'.,.,', 'parser.y', 547)
    2061   def _reduce_101(val, _values, result)
     2068module_eval(<<'.,.,', 'parser.y', 561)
     2069  def _reduce_102(val, _values, result)
    20622070        result = {:type_identifier => val[0], :untyped_multiple_attr_object_block => val[1]}
    20632071 
     
    20662074.,.,
    20672075
    2068 module_eval(<<'.,.,', 'parser.y', 552)
    2069   def _reduce_102(val, _values, result)
     2076module_eval(<<'.,.,', 'parser.y', 566)
     2077  def _reduce_103(val, _values, result)
    20702078        result = {:multiple_attr_object_block_head => val[0], :keyed_objects => val[1]}
    20712079 
     
    20742082.,.,
    20752083
    2076 module_eval(<<'.,.,', 'parser.y', 557)
    2077   def _reduce_103(val, _values, result)
     2084module_eval(<<'.,.,', 'parser.y', 571)
     2085  def _reduce_104(val, _values, result)
    20782086        result = val[0]
    20792087 
     
    20822090.,.,
    20832091
    2084 module_eval(<<'.,.,', 'parser.y', 562)
    2085   def _reduce_104(val, _values, result)
     2092module_eval(<<'.,.,', 'parser.y', 576)
     2093  def _reduce_105(val, _values, result)
    20862094        result = Array[val[0]]
    20872095 
     
    20902098.,.,
    20912099
    2092 module_eval(<<'.,.,', 'parser.y', 566)
    2093   def _reduce_105(val, _values, result)
     2100module_eval(<<'.,.,', 'parser.y', 580)
     2101  def _reduce_106(val, _values, result)
    20942102        result = (val[0] << val[1])
    20952103 
     
    20982106.,.,
    20992107
    2100 module_eval(<<'.,.,', 'parser.y', 571)
    2101   def _reduce_106(val, _values, result)
     2108module_eval(<<'.,.,', 'parser.y', 585)
     2109  def _reduce_107(val, _values, result)
    21022110        @@logger.debug("#{__FILE__}:#{__LINE__}: keyed_object = #{val[0]} at #{@filename}:#{@lineno}")
    21032111    result = {:object_key => val[0], :object_block => val[2]}
     
    21072115.,.,
    21082116
    2109 module_eval(<<'.,.,', 'parser.y', 577)
    2110   def _reduce_107(val, _values, result)
     2117module_eval(<<'.,.,', 'parser.y', 591)
     2118  def _reduce_108(val, _values, result)
    21112119        @@logger.debug("object_key: [#{val[1]}] at #{@filename}:#{@lineno}")
    21122120    result = val[1]
     
    21162124.,.,
    21172125
    2118 module_eval(<<'.,.,', 'parser.y', 583)
    2119   def _reduce_108(val, _values, result)
     2126module_eval(<<'.,.,', 'parser.y', 597)
     2127  def _reduce_109(val, _values, result)
    21202128        result = {:untyped_single_attr_object_block => val[0]}
    21212129 
     
    21242132.,.,
    21252133
    2126 module_eval(<<'.,.,', 'parser.y', 587)
    2127   def _reduce_109(val, _values, result)
     2134module_eval(<<'.,.,', 'parser.y', 601)
     2135  def _reduce_110(val, _values, result)
    21282136        result = {:type_identifier => val[0], :untyped_single_attr_object_block => val[1]}
    21292137 
     
    21322140.,.,
    21332141
    2134 module_eval(<<'.,.,', 'parser.y', 592)
    2135   def _reduce_110(val, _values, result)
     2142module_eval(<<'.,.,', 'parser.y', 606)
     2143  def _reduce_111(val, _values, result)
    21362144        @@logger.debug("#{__FILE__}:#{__LINE__}: single_attr_object_complex_head = #{val[0]} at #{@filename}:#{@lineno}")
    21372145    result = {:single_attr_object_complex_head => val[0]}
     
    21412149.,.,
    21422150
    2143 module_eval(<<'.,.,', 'parser.y', 597)
    2144   def _reduce_111(val, _values, result)
     2151module_eval(<<'.,.,', 'parser.y', 611)
     2152  def _reduce_112(val, _values, result)
    21452153        @@logger.debug("#{__FILE__}:#{__LINE__}: attr_vals = #{val[1]} at #{@filename}:#{@lineno}")
    21462154    result = {:single_attr_object_complex_head => val[0], :attr_vals => val[1]}
     
    21502158.,.,
    21512159
    2152 # reduce 112 omitted
    2153 
    2154 module_eval(<<'.,.,', 'parser.y', 603)
    2155   def _reduce_113(val, _values, result)
     2160# reduce 113 omitted
     2161
     2162module_eval(<<'.,.,', 'parser.y', 617)
     2163  def _reduce_114(val, _values, result)
    21562164        @@logger.debug("#{__FILE__}:#{__LINE__}: untyped_primitive_object_block = #{val[0]} at #{@filename}:#{@lineno}")
    21572165    result = {:untyped_primitive_object_block => val[0]}
     
    21612169.,.,
    21622170
    2163 module_eval(<<'.,.,', 'parser.y', 608)
    2164   def _reduce_114(val, _values, result)
     2171module_eval(<<'.,.,', 'parser.y', 622)
     2172  def _reduce_115(val, _values, result)
    21652173        @@logger.debug("#{__FILE__}:#{__LINE__}: type_identifier = #{val[0]}, untyped_primitive_object_block = #{val[1]} at #{@filename}:#{@lineno}")
    21662174    result = {:type_identifier => val[0], :untyped_primitive_object_block => val[1]}
     
    21702178.,.,
    21712179
    2172 module_eval(<<'.,.,', 'parser.y', 613)
    2173   def _reduce_115(val, _values, result)
     2180module_eval(<<'.,.,', 'parser.y', 627)
     2181  def _reduce_116(val, _values, result)
    21742182        @@logger.debug("#{__FILE__}:#{__LINE__}: primitive_object_block = <#{val[1]}> at #{@filename}:#{@lineno}")
    21752183    result = val[1]
     
    21792187.,.,
    21802188
    2181 module_eval(<<'.,.,', 'parser.y', 618)
    2182   def _reduce_116(val, _values, result)
    2183         result = val[0]
    2184  
    2185     result
    2186   end
    2187 .,.,
    2188 
    2189 module_eval(<<'.,.,', 'parser.y', 622)
     2189module_eval(<<'.,.,', 'parser.y', 632)
    21902190  def _reduce_117(val, _values, result)
    21912191        result = val[0]
     
    21952195.,.,
    21962196
    2197 module_eval(<<'.,.,', 'parser.y', 626)
     2197module_eval(<<'.,.,', 'parser.y', 636)
    21982198  def _reduce_118(val, _values, result)
    21992199        result = val[0]
     
    22032203.,.,
    22042204
    2205 module_eval(<<'.,.,', 'parser.y', 630)
     2205module_eval(<<'.,.,', 'parser.y', 640)
    22062206  def _reduce_119(val, _values, result)
    22072207        result = val[0]
     
    22112211.,.,
    22122212
    2213 module_eval(<<'.,.,', 'parser.y', 634)
     2213module_eval(<<'.,.,', 'parser.y', 644)
    22142214  def _reduce_120(val, _values, result)
    22152215        result = val[0]
     
    22192219.,.,
    22202220
    2221 module_eval(<<'.,.,', 'parser.y', 638)
     2221module_eval(<<'.,.,', 'parser.y', 648)
    22222222  def _reduce_121(val, _values, result)
     2223        result = val[0]
     2224 
     2225    result
     2226  end
     2227.,.,
     2228
     2229module_eval(<<'.,.,', 'parser.y', 652)
     2230  def _reduce_122(val, _values, result)
    22232231        @@logger.debug("string_value: #{val[0]} at #{@filename}:#{@lineno}")
    22242232    result = val[0]
     
    22282236.,.,
    22292237
    2230 module_eval(<<'.,.,', 'parser.y', 643)
    2231   def _reduce_122(val, _values, result)
     2238module_eval(<<'.,.,', 'parser.y', 657)
     2239  def _reduce_123(val, _values, result)
    22322240        @@logger.debug("integer_value: #{val[0]} at #{@filename}:#{@lineno}")
    22332241    result = val[0]
     
    22372245.,.,
    22382246
    2239 module_eval(<<'.,.,', 'parser.y', 648)
    2240   def _reduce_123(val, _values, result)
     2247module_eval(<<'.,.,', 'parser.y', 662)
     2248  def _reduce_124(val, _values, result)
    22412249        @@logger.debug("real_value: #{val[0]} at #{@filename}:#{@lineno}")
    22422250    result = val[0]
     
    22462254.,.,
    22472255
    2248 module_eval(<<'.,.,', 'parser.y', 653)
    2249   def _reduce_124(val, _values, result)
     2256module_eval(<<'.,.,', 'parser.y', 667)
     2257  def _reduce_125(val, _values, result)
    22502258        @@logger.debug("boolean_value: #{val[0]} at #{@filename}:#{@lineno}")
    22512259    result = val[0]
     
    22552263.,.,
    22562264
    2257 module_eval(<<'.,.,', 'parser.y', 658)
    2258   def _reduce_125(val, _values, result)
     2265module_eval(<<'.,.,', 'parser.y', 672)
     2266  def _reduce_126(val, _values, result)
    22592267        @@logger.debug("character_value: #{val[0]} at #{@filename}:#{@lineno}")
    22602268    result = val[0]
     
    22642272.,.,
    22652273
    2266 module_eval(<<'.,.,', 'parser.y', 663)
    2267   def _reduce_126(val, _values, result)
     2274module_eval(<<'.,.,', 'parser.y', 677)
     2275  def _reduce_127(val, _values, result)
    22682276        @@logger.debug("date_value: #{val[0]} at #{@filename}:#{@lineno}")
    22692277    result = val[0]
     
    22732281.,.,
    22742282
    2275 module_eval(<<'.,.,', 'parser.y', 668)
    2276   def _reduce_127(val, _values, result)
     2283module_eval(<<'.,.,', 'parser.y', 682)
     2284  def _reduce_128(val, _values, result)
    22772285        @@logger.debug("time_value: #{val[0]} at #{@filename}:#{@lineno}")
    22782286    result = val[0]
     
    22822290.,.,
    22832291
    2284 module_eval(<<'.,.,', 'parser.y', 673)
    2285   def _reduce_128(val, _values, result)
     2292module_eval(<<'.,.,', 'parser.y', 687)
     2293  def _reduce_129(val, _values, result)
    22862294        @@logger.debug("date_time_value: #{val[0]} at #{@filename}:#{@lineno}")
    22872295    result = val[0]
     
    22912299.,.,
    22922300
    2293 module_eval(<<'.,.,', 'parser.y', 678)
    2294   def _reduce_129(val, _values, result)
     2301module_eval(<<'.,.,', 'parser.y', 692)
     2302  def _reduce_130(val, _values, result)
    22952303        @@logger.debug("duration_value: #{val[0]} at #{@filename}:#{@lineno}")
    22962304    result = val[0]
     
    23002308.,.,
    23012309
    2302 module_eval(<<'.,.,', 'parser.y', 683)
    2303   def _reduce_130(val, _values, result)
     2310module_eval(<<'.,.,', 'parser.y', 697)
     2311  def _reduce_131(val, _values, result)
    23042312        @@logger.debug("uri_value: #{val[0]} at #{@filename}:#{@lineno}")
    23052313    result = val[0]
     
    23092317.,.,
    23102318
    2311 module_eval(<<'.,.,', 'parser.y', 689)
    2312   def _reduce_131(val, _values, result)
     2319module_eval(<<'.,.,', 'parser.y', 703)
     2320  def _reduce_132(val, _values, result)
    23132321        @@logger.debug("string_list_value: #{val[0]} at #{@filename}:#{@lineno}")
    23142322    result = val[0]
     
    23182326.,.,
    23192327
    2320 module_eval(<<'.,.,', 'parser.y', 694)
    2321   def _reduce_132(val, _values, result)
    2322         result = val[0]
    2323  
    2324     result
    2325   end
    2326 .,.,
    2327 
    2328 module_eval(<<'.,.,', 'parser.y', 698)
     2328module_eval(<<'.,.,', 'parser.y', 708)
    23292329  def _reduce_133(val, _values, result)
    23302330        result = val[0]
     
    23342334.,.,
    23352335
    2336 module_eval(<<'.,.,', 'parser.y', 702)
     2336module_eval(<<'.,.,', 'parser.y', 712)
    23372337  def _reduce_134(val, _values, result)
    23382338        result = val[0]
     
    23422342.,.,
    23432343
    2344 module_eval(<<'.,.,', 'parser.y', 706)
     2344module_eval(<<'.,.,', 'parser.y', 716)
    23452345  def _reduce_135(val, _values, result)
    23462346        result = val[0]
     
    23502350.,.,
    23512351
    2352 module_eval(<<'.,.,', 'parser.y', 710)
     2352module_eval(<<'.,.,', 'parser.y', 720)
    23532353  def _reduce_136(val, _values, result)
    23542354        result = val[0]
     
    23582358.,.,
    23592359
    2360 module_eval(<<'.,.,', 'parser.y', 714)
     2360module_eval(<<'.,.,', 'parser.y', 724)
    23612361  def _reduce_137(val, _values, result)
    23622362        result = val[0]
     
    23662366.,.,
    23672367
    2368 module_eval(<<'.,.,', 'parser.y', 718)
     2368module_eval(<<'.,.,', 'parser.y', 728)
    23692369  def _reduce_138(val, _values, result)
    23702370        result = val[0]
     
    23742374.,.,
    23752375
    2376 module_eval(<<'.,.,', 'parser.y', 722)
     2376module_eval(<<'.,.,', 'parser.y', 732)
    23772377  def _reduce_139(val, _values, result)
    23782378        result = val[0]
     
    23822382.,.,
    23832383
    2384 # reduce 140 omitted
     2384module_eval(<<'.,.,', 'parser.y', 736)
     2385  def _reduce_140(val, _values, result)
     2386        result = val[0]
     2387 
     2388    result
     2389  end
     2390.,.,
    23852391
    23862392# reduce 141 omitted
     
    23942400# reduce 145 omitted
    23952401
    2396 module_eval(<<'.,.,', 'parser.y', 734)
    2397   def _reduce_146(val, _values, result)
     2402# reduce 146 omitted
     2403
     2404module_eval(<<'.,.,', 'parser.y', 748)
     2405  def _reduce_147(val, _values, result)
    23982406        @@logger.debug("V_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
    23992407    result = val[0]
     
    24032411.,.,
    24042412
    2405 module_eval(<<'.,.,', 'parser.y', 739)
    2406   def _reduce_147(val, _values, result)
     2413module_eval(<<'.,.,', 'parser.y', 753)
     2414  def _reduce_148(val, _values, result)
    24072415        @@logger.debug("V_GENERIC_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
    24082416    result = val[0]
     
    24122420.,.,
    24132421
    2414 module_eval(<<'.,.,', 'parser.y', 745)
    2415   def _reduce_148(val, _values, result)
     2422module_eval(<<'.,.,', 'parser.y', 759)
     2423  def _reduce_149(val, _values, result)
    24162424        @@logger.debug("V_STRING: #{val[0]} at #{@filename}:#{@lineno}")
    24172425    result = val[0]
     
    24212429.,.,
    24222430
    2423 module_eval(<<'.,.,', 'parser.y', 751)
    2424   def _reduce_149(val, _values, result)
     2431module_eval(<<'.,.,', 'parser.y', 765)
     2432  def _reduce_150(val, _values, result)
    24252433        result = [val[0],val[2]]
    24262434 
     
    24292437.,.,
    24302438
    2431 module_eval(<<'.,.,', 'parser.y', 755)
    2432   def _reduce_150(val, _values, result)
     2439module_eval(<<'.,.,', 'parser.y', 769)
     2440  def _reduce_151(val, _values, result)
    24332441        result = val[0] << val[2]
    24342442 
     
    24372445.,.,
    24382446
    2439 module_eval(<<'.,.,', 'parser.y', 759)
    2440   def _reduce_151(val, _values, result)
     2447module_eval(<<'.,.,', 'parser.y', 773)
     2448  def _reduce_152(val, _values, result)
    24412449        result = val[0]
    24422450 
     
    24452453.,.,
    24462454
    2447 module_eval(<<'.,.,', 'parser.y', 764)
    2448   def _reduce_152(val, _values, result)
    2449         begin
    2450       integer = Integer(val[0])
    2451     rescue
    2452       raise
    2453     end
    2454     result = integer
    2455  
    2456     result
    2457   end
    2458 .,.,
    2459 
    2460 module_eval(<<'.,.,', 'parser.y', 773)
     2455module_eval(<<'.,.,', 'parser.y', 778)
    24612456  def _reduce_153(val, _values, result)
    24622457        begin
     
    24712466.,.,
    24722467
    2473 module_eval(<<'.,.,', 'parser.y', 782)
     2468module_eval(<<'.,.,', 'parser.y', 787)
    24742469  def _reduce_154(val, _values, result)
    24752470        begin
     
    24782473      raise
    24792474    end
     2475    result = integer
     2476 
     2477    result
     2478  end
     2479.,.,
     2480
     2481module_eval(<<'.,.,', 'parser.y', 796)
     2482  def _reduce_155(val, _values, result)
     2483        begin
     2484      integer = Integer(val[0])
     2485    rescue
     2486      raise
     2487    end
    24802488    result = - integer
    24812489 
     
    24842492.,.,
    24852493
    2486 # reduce 155 omitted
    2487 
    24882494# reduce 156 omitted
    24892495
     
    25082514# reduce 166 omitted
    25092515
    2510 module_eval(<<'.,.,', 'parser.y', 808)
    2511   def _reduce_167(val, _values, result)
     2516# reduce 167 omitted
     2517
     2518module_eval(<<'.,.,', 'parser.y', 822)
     2519  def _reduce_168(val, _values, result)
    25122520        begin
    25132521      real = Float(val[0])
     
    25212529.,.,
    25222530
    2523 module_eval(<<'.,.,', 'parser.y', 817)
    2524   def _reduce_168(val, _values, result)
     2531module_eval(<<'.,.,', 'parser.y', 831)
     2532  def _reduce_169(val, _values, result)
    25252533        begin
    25262534      real = Float(val[1])
     
    25342542.,.,
    25352543
    2536 module_eval(<<'.,.,', 'parser.y', 826)
    2537   def _reduce_169(val, _values, result)
     2544module_eval(<<'.,.,', 'parser.y', 840)
     2545  def _reduce_170(val, _values, result)
    25382546        begin
    25392547      real = Float(val[1])
     
    25472555.,.,
    25482556
    2549 # reduce 170 omitted
    2550 
    25512557# reduce 171 omitted
    25522558
     
    25712577# reduce 181 omitted
    25722578
    2573 module_eval(<<'.,.,', 'parser.y', 851)
    2574   def _reduce_182(val, _values, result)
     2579# reduce 182 omitted
     2580
     2581module_eval(<<'.,.,', 'parser.y', 865)
     2582  def _reduce_183(val, _values, result)
    25752583        result = true
    25762584 
     
    25792587.,.,
    25802588
    2581 module_eval(<<'.,.,', 'parser.y', 855)
    2582   def _reduce_183(val, _values, result)
     2589module_eval(<<'.,.,', 'parser.y', 869)
     2590  def _reduce_184(val, _values, result)
    25832591        result = false
    25842592 
     
    25872595.,.,
    25882596
    2589 # reduce 184 omitted
    2590 
    25912597# reduce 185 omitted
    25922598
     
    26012607# reduce 190 omitted
    26022608
    2603 module_eval(<<'.,.,', 'parser.y', 870)
    2604   def _reduce_191(val, _values, result)
     2609# reduce 191 omitted
     2610
     2611module_eval(<<'.,.,', 'parser.y', 884)
     2612  def _reduce_192(val, _values, result)
    26052613        result = val[0]
    26062614 
     
    26092617.,.,
    26102618
    2611 # reduce 192 omitted
    2612 
    26132619# reduce 193 omitted
    26142620
     
    26592665# reduce 216 omitted
    26602666
    2661 module_eval(<<'.,.,', 'parser.y', 905)
    2662   def _reduce_217(val, _values, result)
     2667# reduce 217 omitted
     2668
     2669module_eval(<<'.,.,', 'parser.y', 919)
     2670  def _reduce_218(val, _values, result)
    26632671        @@logger.debug("V_ISO8601_EXTENDED_DATE_TIME: #{val[0]} at #{@filename}:#{@lineno}")
    26642672    result = val[0]
     
    26682676.,.,
    26692677
    2670 # reduce 218 omitted
    2671 
    26722678# reduce 219 omitted
    26732679
     
    26922698# reduce 229 omitted
    26932699
    2694 module_eval(<<'.,.,', 'parser.y', 925)
    2695   def _reduce_230(val, _values, result)
     2700# reduce 230 omitted
     2701
     2702module_eval(<<'.,.,', 'parser.y', 939)
     2703  def _reduce_231(val, _values, result)
    26962704        @@logger.debug("V_ISO8601_DURATION: #{val[0]} at #{@filename}:#{@lineno}")
    26972705    result = val[0]
     
    27012709.,.,
    27022710
    2703 # reduce 231 omitted
    2704 
    27052711# reduce 232 omitted
    27062712
     
    27252731# reduce 242 omitted
    27262732
    2727 module_eval(<<'.,.,', 'parser.y', 945)
    2728   def _reduce_243(val, _values, result)
     2733# reduce 243 omitted
     2734
     2735module_eval(<<'.,.,', 'parser.y', 959)
     2736  def _reduce_244(val, _values, result)
    27292737        @@logger.debug("#{__FILE__}:#{__LINE__}: V_QUALIFIED_TERM_CODE_REF = #{val[0]} at #{@filename}:#{@lineno}")
    27302738    result = val[0]
     
    27342742.,.,
    27352743
    2736 # reduce 244 omitted
    2737 
    27382744# reduce 245 omitted
    27392745
    27402746# reduce 246 omitted
    27412747
    2742 module_eval(<<'.,.,', 'parser.y', 955)
    2743   def _reduce_247(val, _values, result)
     2748# reduce 247 omitted
     2749
     2750module_eval(<<'.,.,', 'parser.y', 969)
     2751  def _reduce_248(val, _values, result)
    27442752        @@logger.debug("#{__FILE__}:#{__LINE__}: V_URI = #{val[0]} at #{@filename}:#{@lineno}")
    27452753    result = val[0]
     
    27492757.,.,
    27502758
    2751 # reduce 248 omitted
    2752 
    27532759# reduce 249 omitted
    27542760
     
    27672773# reduce 256 omitted
    27682774
    2769 # reduce 257 omitted
     2775module_eval(<<'.,.,', 'parser.y', 992)
     2776  def _reduce_257(val, _values, result)
     2777        @@logger.debug("#{__FILE__}:#{__LINE__}, boolean_node:  relative_path = #{val[0]}, regexp_body => #{val[3]} at #{@filename}")
     2778    result = {:relative_path => val[0], :regexp_body => val[3]}
     2779 
     2780    result
     2781  end
     2782.,.,
    27702783
    27712784# reduce 258 omitted
     
    28252838# reduce 285 omitted
    28262839
    2827 # reduce 286 omitted
    2828 
    2829 # reduce 287 omitted
    2830 
    2831 module_eval(<<'.,.,', 'parser.y', 1026)
     2840module_eval(<<'.,.,', 'parser.y', 1039)
     2841  def _reduce_286(val, _values, result)
     2842        @@logger.debug("#{__FILE__}:#{__LINE__}, relative_path = #{val[0]}")
     2843    result = val[0]
     2844 
     2845    result
     2846  end
     2847.,.,
     2848
     2849module_eval(<<'.,.,', 'parser.y', 1044)
     2850  def _reduce_287(val, _values, result)
     2851        @@logger.debug("#{__FILE__}:#{__LINE__}, relative_path = #{val[0]}/#{val[2]}")
     2852    result = [val[0],val[2]]
     2853 
     2854    result
     2855  end
     2856.,.,
     2857
     2858module_eval(<<'.,.,', 'parser.y', 1050)
    28322859  def _reduce_288(val, _values, result)
    28332860        @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}")
    2834  
    2835     result
    2836   end
    2837 .,.,
    2838 
    2839 module_eval(<<'.,.,', 'parser.y', 1030)
     2861    result = [val[0],val[1]]
     2862 
     2863    result
     2864  end
     2865.,.,
     2866
     2867module_eval(<<'.,.,', 'parser.y', 1055)
    28402868  def _reduce_289(val, _values, result)
    28412869        @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}")
    2842  
    2843     result
    2844   end
    2845 .,.,
    2846 
    2847 module_eval(<<'.,.,', 'parser.y', 1041)
     2870    result = val[0]
     2871 
     2872    result
     2873  end
     2874.,.,
     2875
     2876module_eval(<<'.,.,', 'parser.y', 1067)
    28482877  def _reduce_290(val, _values, result)
    28492878        result = Range.new(1,1)
     
    28532882.,.,
    28542883
    2855 module_eval(<<'.,.,', 'parser.y', 1045)
     2884module_eval(<<'.,.,', 'parser.y', 1071)
    28562885  def _reduce_291(val, _values, result)
    28572886        result = val[3]
     
    28612890.,.,
    28622891
    2863 module_eval(<<'.,.,', 'parser.y', 1050)
     2892module_eval(<<'.,.,', 'parser.y', 1076)
    28642893  def _reduce_292(val, _values, result)
    28652894        begin
     
    28742903.,.,
    28752904
    2876 module_eval(<<'.,.,', 'parser.y', 1059)
     2905module_eval(<<'.,.,', 'parser.y', 1085)
    28772906  def _reduce_293(val, _values, result)
    28782907        begin
     
    28882917.,.,
    28892918
    2890 module_eval(<<'.,.,', 'parser.y', 1070)
     2919module_eval(<<'.,.,', 'parser.y', 1096)
    28912920  def _reduce_294(val, _values, result)
    28922921        result = OpenEhr::AM::Archetype::ConstraintModel::CARDINALITY.new
     
    29122941# reduce 302 omitted
    29132942
    2914 module_eval(<<'.,.,', 'parser.y', 1084)
     2943module_eval(<<'.,.,', 'parser.y', 1110)
    29152944  def _reduce_303(val, _values, result)
    29162945        result = val[0]
     
    29202949.,.,
    29212950
    2922 module_eval(<<'.,.,', 'parser.y', 1088)
     2951module_eval(<<'.,.,', 'parser.y', 1114)
    29232952  def _reduce_304(val, _values, result)
    29242953        result = val[0]
     
    29302959# reduce 305 omitted
    29312960
    2932 module_eval(<<'.,.,', 'parser.y', 1095)
     2961module_eval(<<'.,.,', 'parser.y', 1121)
    29332962  def _reduce_306(val, _values, result)
    29342963        case val[3]
     
    29452974# reduce 307 omitted
    29462975
    2947 module_eval(<<'.,.,', 'parser.y', 1106)
     2976module_eval(<<'.,.,', 'parser.y', 1132)
    29482977  def _reduce_308(val, _values, result)
    29492978        result = val[0]
     
    29532982.,.,
    29542983
    2955 module_eval(<<'.,.,', 'parser.y', 1110)
     2984module_eval(<<'.,.,', 'parser.y', 1136)
    29562985  def _reduce_309(val, _values, result)
    29572986        result = OpenEhr::RM::Support::AssumedTypes::Interval.new(val[0], val[2])
     
    30473076# reduce 352 omitted
    30483077
    3049 module_eval(<<'.,.,', 'parser.y', 1176)
     3078module_eval(<<'.,.,', 'parser.y', 1202)
    30503079  def _reduce_353(val, _values, result)
    30513080        result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN.new(:true_valid => true)
     
    30553084.,.,
    30563085
    3057 module_eval(<<'.,.,', 'parser.y', 1180)
     3086module_eval(<<'.,.,', 'parser.y', 1206)
    30583087  def _reduce_354(val, _values, result)
    30593088        result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN.new(:true_valid => false)
     
    30633092.,.,
    30643093
    3065 module_eval(<<'.,.,', 'parser.y', 1184)
     3094module_eval(<<'.,.,', 'parser.y', 1210)
    30663095  def _reduce_355(val, _values, result)
    30673096        result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN.new(:true_valid => true,:false_valid => false)
     
    30713100.,.,
    30723101
    3073 module_eval(<<'.,.,', 'parser.y', 1188)
     3102module_eval(<<'.,.,', 'parser.y', 1214)
    30743103  def _reduce_356(val, _values, result)
    30753104        result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN.new(:true_valid => false,:false_valid => true)
     
    30793108.,.,
    30803109
    3081 module_eval(<<'.,.,', 'parser.y', 1193)
     3110module_eval(<<'.,.,', 'parser.y', 1219)
    30823111  def _reduce_357(val, _values, result)
    30833112        result = val[0]
     
    30873116.,.,
    30883117
    3089 module_eval(<<'.,.,', 'parser.y', 1197)
     3118module_eval(<<'.,.,', 'parser.y', 1223)
    30903119  def _reduce_358(val, _values, result)
    3091         raise 'Not implemented yet'
    3092  
    3093     result
    3094   end
    3095 .,.,
    3096 
    3097 module_eval(<<'.,.,', 'parser.y', 1201)
     3120        result = val[0]
     3121    #raise 'Not implemented yet'
     3122 
     3123    result
     3124  end
     3125.,.,
     3126
     3127module_eval(<<'.,.,', 'parser.y', 1228)
    30983128  def _reduce_359(val, _values, result)
    30993129        raise 'Not implemented yet'
     
    31133143# reduce 364 omitted
    31143144
    3115 module_eval(<<'.,.,', 'parser.y', 1213)
     3145module_eval(<<'.,.,', 'parser.y', 1240)
    31163146  def _reduce_365(val, _values, result)
    31173147        @in_interval = false
     
    31223152.,.,
    31233153
    3124 module_eval(<<'.,.,', 'parser.y', 1220)
     3154module_eval(<<'.,.,', 'parser.y', 1247)
    31253155  def _reduce_366(val, _values, result)
    31263156          result = val[0]
     
    31303160.,.,
    31313161
    3132 module_eval(<<'.,.,', 'parser.y', 1224)
     3162module_eval(<<'.,.,', 'parser.y', 1251)
    31333163  def _reduce_367(val, _values, result)
    31343164          result = val[0]
     
    31383168.,.,
    31393169
    3140 module_eval(<<'.,.,', 'parser.y', 1230)
     3170module_eval(<<'.,.,', 'parser.y', 1257)
    31413171  def _reduce_368(val, _values, result)
    31423172        @@logger.debug("#{__FILE__}:#{__LINE__}, START_TERM_CODE_CONSTRAINT = #{val[0]} at #{@filename}")
     
    31553185# reduce 371 omitted
    31563186
    3157 module_eval(<<'.,.,', 'parser.y', 1246)
     3187module_eval(<<'.,.,', 'parser.y', 1273)
    31583188  def _reduce_372(val, _values, result)
    31593189          result = val[0]
     
    31633193.,.,
    31643194
    3165 module_eval(<<'.,.,', 'parser.y', 1251)
     3195module_eval(<<'.,.,', 'parser.y', 1278)
    31663196  def _reduce_373(val, _values, result)
    31673197          result = val[0]
     
    31713201.,.,
    31723202
    3173 module_eval(<<'.,.,', 'parser.y', 1255)
     3203module_eval(<<'.,.,', 'parser.y', 1282)
    31743204  def _reduce_374(val, _values, result)
    31753205        @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{word} at #{@filename}")
     
    31803210.,.,
    31813211
    3182 module_eval(<<'.,.,', 'parser.y', 1266)
     3212module_eval(<<'.,.,', 'parser.y', 1293)
    31833213  def _reduce_375(val, _values, result)
    31843214        result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_DURATION.new #val[0]
  • ruby/trunk/lib/adl_parser/lib/parser.y

    r320 r321  
    164164#  | error
    165165
    166 #c_complex_object: c_complex_object_head SYM_MATCHES SYM_START_CBLOCK c_complex_object_body SYM_END_CBLOCK
    167 #c_complex_object: c_complx_object_head SYM_MATCHES START_REGEXP_BLOCK REGEXP_BODY END_REGEXP_BLOCK # added by akimichi
    168 c_complex_object: c_complx_object_head SYM_MATCHES Slash_code REGEXP_BODY Slash_code # added by akimichi
    169   {
     166### c_complex_object: c_complex_object_head SYM_MATCHES SYM_START_CBLOCK c_complex_object_body SYM_END_CBLOCK
     167#  | c_complx_object_head SYM_MATCHES Slash_code REGEXP_BODY Slash_code # added by akimichi
     168c_complex_object:  c_complx_object_head SYM_MATCHES REGEXP_HEAD REGEXP_BODY # added by akimichi
     169  {
     170    @@logger.debug("#{__FILE__}:#{__LINE__}:c_complx_object = \n c_complx_object_head = #{val[0].to_yaml}")
    170171    result = OpenEhr::AM::Archetype::ConstraintModel::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
    171172      c_complex_object.node_id = val[0][:c_complex_object_id][:local_term_code_ref]
     
    174175    end
    175176  }
    176     | c_complex_object_head SYM_MATCHES SYM_START_CBLOCK c_complex_object_body SYM_END_CBLOCK
     177#c_complex_object: c_complex_object_head SYM_MATCHES SYM_START_CBLOCK c_complex_object_body SYM_END_CBLOCK
     178  | c_complex_object_head SYM_MATCHES SYM_START_CBLOCK c_complex_object_body SYM_END_CBLOCK
    177179  {
    178180    result = OpenEhr::AM::Archetype::ConstraintModel::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
     
    182184    end
    183185  }
     186
    184187#    | c_complex_object_head error SYM_END_CBLOCK
    185188#    | c_complex_object_head SYM_MATCHES SYM_START_CBLOCK c_complex_object_body c_invariants SYM_END_CBLOCK
     
    187190c_complex_object_head: c_complex_object_id c_occurrences
    188191  {
     192    @@logger.debug("#{__FILE__}:#{__LINE__}: c_complex_object_head: c_complex_object_id => #{val[0]}, c_occurrences => #{val[1]}")
    189193    result = {:c_complex_object_id => val[0], :c_occurrences => val[1]}
    190194  }
     
    392396c_attribute: c_attr_head SYM_MATCHES SYM_START_CBLOCK c_attr_values SYM_END_CBLOCK
    393397  {
     398    @@logger.debug("#{__FILE__}:#{__LINE__}:c_attribute: #{val[0]} matches #{val[3]}")
    394399    assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::C_ATTRIBUTE)}
    395400    c_attribute = val[0]
     
    397402    result = c_attribute
    398403  }
    399 #  | c_attr_head SYM_MATCHES START_REGEXP_BLOCK REGEXP_BODY END_REGEXP_BLOCK # added by akimichi
    400   | c_attr_head SYM_MATCHES Slash_code REGEXP_BODY Slash_code # added by akimichi
    401   {
     404  | c_attr_head SYM_MATCHES REGEXP_HEAD REGEXP_BODY SYM_END_CBLOCK # added by akimichi
     405  {
     406    @@logger.debug("c_attribute: #{val[0]} matches #{val[3]}}")
     407    assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::C_ATTRIBUTE)}
     408    result = val[0]
     409  }
     410  | c_attr_head SYM_MATCHES REGEXP_HEAD REGEXP_BODY Semicolon_code string_value SYM_END_CBLOCK # added by akimichi
     411
     412  {
     413    @@logger.debug("c_attribute: #{val[0]} matches #{val[5]}}")
    402414    assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::C_ATTRIBUTE)}
    403415    result = val[0]
     
    443455  }
    444456
    445 ### c_includes: #-- Empty
    446 ###     | SYM_INCLUDE assertions
    447457c_includes: #-- Empty
    448     | SYM_INCLUDE invariants
     458    | SYM_INCLUDE assertions
    449459{
     460    @@logger.debug("#{__FILE__}:#{__LINE__}: c_includes: assertions = #{val[1]}")
    450461    result = val[1]
    451462}
    452 
     463### c_includes: #-- Empty
     464###     | SYM_INCLUDE invariants
     465
     466c_excludes: #-- Empty
     467    | SYM_EXCLUDE assertions
     468  {
     469    @@logger.debug("#{__FILE__}:#{__LINE__}: c_excludes: assertions = #{val[1]}")
     470    result = val[1]
     471  }
    453472### c_excludes: #-- Empty
    454 ###     | SYM_EXCLUDE assertions
    455 c_excludes: #-- Empty
    456     | SYM_EXCLUDE invariants
    457 {
    458     result = val[1]
    459 }
     473###     | SYM_EXCLUDE invariants
    460474
    461475invariants: invariant
    462476  | invariants invariant
    463477
    464 invariant: any_identifier ':' boolean_expression
     478invariant: any_identifier Colon_code boolean_expression
    465479  | boolean_expression
    466   | any_identifier ':' error
     480  | any_identifier Colon_code error
    467481
    468482arch_invariant: #-- no invariant ok
     
    964978  | assertions assertion
    965979
    966 assertion: any_identifier ':' boolean_expression
     980assertion: any_identifier Colon_code boolean_expression
    967981  | boolean_expression
    968   | any_identifier ':' error
     982  | any_identifier Colon_code error
    969983
    970984#---------------------- expressions ---------------------
     
    974988
    975989boolean_node: SYM_EXISTS absolute_path
    976 #  | absolute_path
    977   | SYM_EXISTS error
     990#  | SYM_EXISTS error
     991  | relative_path SYM_MATCHES REGEXP_HEAD REGEXP_BODY SYM_END_CBLOCK# added by akimichi
     992  {
     993    @@logger.debug("#{__FILE__}:#{__LINE__}, boolean_node:  relative_path = #{val[0]}, regexp_body => #{val[3]} at #{@filename}")
     994    result = {:relative_path => val[0], :regexp_body => val[3]}
     995  }
    978996  | relative_path SYM_MATCHES SYM_START_CBLOCK c_primitive SYM_END_CBLOCK
    979 #  | relative_path SYM_MATCHES START_REGEXP_BLOCK REGEXP_BODY END_REGEXP_BLOCK # added by akimichi
    980   | relative_path SYM_MATCHES Slash_code REGEXP_BODY Slash_code # added by akimichi
     997#  | relative_path SYM_MATCHES SYM_START_CBLOCK Slash_code REGEXP_BODY Slash_code SYM_END_CBLOCK# added by akimichi
    981998  | SYM_NOT boolean_leaf
    982   | arithmetic_expression '=' arithmetic_expression
     999  | arithmetic_expression Equal_code arithmetic_expression
    9831000  | arithmetic_expression SYM_NE arithmetic_expression
    9841001  | arithmetic_expression SYM_LT arithmetic_expression
     
    9951012  | SYM_FALSE
    9961013
    997 arithmetic_expression: arithmetic_leaf
    998   | arithmetic_node
    999 
    10001014arithmetic_node: arithmetic_expression '+' arithmetic_leaf
    1001   | arithmetic_expression '-' arithmetic_leaf
     1015  | arithmetic_expression Minus_code arithmetic_leaf
    10021016  | arithmetic_expression Star_code arithmetic_leaf
    10031017  | arithmetic_expression Slash_code arithmetic_leaf
    1004   | arithmetic_expression '^' arithmetic_leaf
     1018  | arithmetic_expression Caret_code arithmetic_leaf
    10051019
    10061020arithmetic_leaf:  Left_parenthesis_code arithmetic_expression Right_parenthesis_code
     
    10091023  | absolute_path
    10101024
     1025arithmetic_expression: arithmetic_leaf
     1026  | arithmetic_node
    10111027
    10121028#--------------- THE FOLLOWING SOURCE TAKEN FROM OG_PATH_VALIDATOR.Y -------------
     
    10211037
    10221038relative_path: path_segment
     1039  {
     1040    @@logger.debug("#{__FILE__}:#{__LINE__}, relative_path = #{val[0]}")
     1041    result = val[0]
     1042  }
    10231043  | relative_path Slash_code path_segment
     1044  {
     1045    @@logger.debug("#{__FILE__}:#{__LINE__}, relative_path = #{val[0]}/#{val[2]}")
     1046    result = [val[0],val[2]]
     1047  }
    10241048
    10251049path_segment: V_ATTRIBUTE_IDENTIFIER V_LOCAL_TERM_CODE_REF
    10261050  {
    10271051    @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}")
     1052    result = [val[0],val[1]]
    10281053  }
    10291054  | V_ATTRIBUTE_IDENTIFIER
    10301055  {
    10311056    @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}")
     1057    result = val[0]
    10321058  }
    10331059
     
    11961222  | c_boolean_spec Semicolon_code boolean_value
    11971223  {
    1198     raise 'Not implemented yet'
     1224    result = val[0]
     1225    #raise 'Not implemented yet'
    11991226  }
    12001227  | c_boolean_spec Semicolon_code error
  • ruby/trunk/lib/adl_parser/test/parser_test.rb

    r320 r321  
    66  end
    77
    8 #   must "assert parser instance" do
    9 #     assert_instance_of ::OpenEhr::ADL::Parser,@parser
    10 #   end
    11 
    12 #   must "openEHR-EHR-CLUSTER.exam-uterus.v1.adl be properly parsed" do
    13 #     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-uterus.v1.adl")
    14 #     assert_nothing_raised do
    15 #       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-uterus.v11')
    16 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    17 #     end
    18 #   end
    19 
    20 #   must "openEHR-EHR-SECTION.summary.v1.adl be properly parsed" do
    21 #     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-SECTION.summary.v1.adl")
    22 #     assert_nothing_raised do
    23 #       ast = @parser.parse(file, 'openEHR-EHR-SECTION.summary.v1')
    24 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    25 #     end
    26 #   end
    27 
    28 
    29 #   must "openEHR-EHR-ACTION.referral.v1.adl be properly parsed" do
    30 #     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-ACTION.referral.v1.adl")
    31 #     assert_nothing_raised do
    32 #       ast = @parser.parse(file, 'openEHR-EHR-ACTION.referral.v1')
    33 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    34 #     end
    35 #   end
    36 
    37 #   must "openEHR-EHR-CLUSTER.auscultation-chest.v1.adl be properly parsed" do
    38 #     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.auscultation-chest.v1.adl")
    39 #     assert_nothing_raised do
    40 #       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.auscultation-chest.v1')
    41 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    42 #     end
    43 #   end
    44 
    45 #   must "openEHR-EHR-CLUSTER.auscultation.v1.adl be properly parsed" do
    46 #     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.auscultation.v1.adl")
    47 #     assert_nothing_raised do
    48 #       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.auscultation.v1')
    49 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    50 #     end
    51 #   end
    52 
    53 
    54 #   must "openEHR-EHR-CLUSTER.exam-abdomen.v1.adl be properly parsed" do
    55 #     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-abdomen.v1.adl")
    56 #     assert_nothing_raised do
    57 #       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-abdomen.v1')
    58 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    59 #     end
    60 #   end
    61 
    62 #   must "openEHR-EHR-CLUSTER.exam-chest.v1.adl be properly parsed" do
    63 #     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-chest.v1.adl")
    64 #     assert_nothing_raised do
    65 #       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-chest.v1')
    66 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    67 #     end
    68 #   end
    69 
    70 #   must "openEHR-EHR-CLUSTER.exam-generic-joint.v1.adl be properly parsed" do
    71 #     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-generic-joint.v1.adl")
    72 #     assert_nothing_raised do
    73 #       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-generic-joint.v1')
    74 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    75 #     end
    76 #   end
    77 
    78 #   must "openEHR-EHR-CLUSTER.exam-generic-lymphnode.v1.adl be properly parsed" do
    79 #     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-generic-lymphnode.v1.adl")
    80 #     assert_nothing_raised do
    81 #       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-generic-lymphnode.v1')
    82 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    83 #     end
    84 #   end
    85 
    86 #   must "openEHR-EHR-CLUSTER.exam-generic-mass.v1.adl be properly parsed" do
    87 #     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-generic-mass.v1.adl")
    88 #     assert_nothing_raised do
    89 #       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-generic-mass.v1')
    90 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    91 #     end
    92 #   end
    93 
    94 #   must "openEHR-EHR-CLUSTER.exam-generic.v1.adl be properly parsed" do
    95 #     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-generic.v1.adl")
    96 #     assert_nothing_raised do
    97 #       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-generic.v1')
    98 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    99 #     end
    100 #   end
    101 
    102 #   must "openEHR-EHR-CLUSTER.exam-nervous_system.v1.adl be properly parsed" do
    103 #     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-nervous_system.v1.adl")
    104 #     assert_nothing_raised do
    105 #       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-nervous_system.v1')
    106 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    107 #     end
    108 #   end
    109 
    110 #   must "openEHR-EHR-COMPOSITION.discharge.v1draft.adl be properly parsed" do
    111 #     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-COMPOSITION.discharge.v1draft.adl")
    112 #     assert_nothing_raised do
    113 #       ast = @parser.parse(file, 'openEHR-EHR-COMPOSITION.discharge.v1draft')
    114 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    115 #     end
    116 #   end
    117 
    118 
    119 #   must "openEHR-EHR-INSTRUCTION.medication.v1.adl be properly parsed" do
    120 #     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-INSTRUCTION.medication.v1.adl")
    121 #     assert_nothing_raised do
    122 #       ast = @parser.parse(file, 'openEHR-EHR-INSTRUCTION.medication.v1')
    123 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    124 #     end
    125 #   end
    126 
    127 #   must "openEHR-EHR-INSTRUCTION.referral.v1.adl be properly parsed" do
    128 #     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-INSTRUCTION.referral.v1.adl")
    129 #     assert_nothing_raised do
    130 #       ast = @parser.parse(file, 'openEHR-EHR-INSTRUCTION.referral.v1')
    131 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    132 #     end
    133 #   end
    134 
    135 #   must "openEHR-EHR-ITEM_TREE.Laboratory_request.v1.adl be properly parsed" do
    136 #     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-ITEM_TREE.Laboratory_request.v1.adl")
    137 #     assert_nothing_raised do
    138 #       ast = @parser.parse(file, 'openEHR-EHR-ITEM_TREE.Laboratory_request.v1')
    139 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    140 #     end
    141 #   end
    142 
    143 
    144 #   must "openEHR-EHR-OBSERVATION.apgar.v1.adl be properly parsed" do
    145 #     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-OBSERVATION.apgar.v1.adl")
    146 #     assert_nothing_raised do
    147 #       ast = @parser.parse(file, 'openEHR-EHR-OBSERVATION.apgar.v1')
    148 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    149 #     end
    150 #   end
    151 
    152 #   must "openEHR-EHR-SECTION.findings.v1.adl be properly parsed" do
    153 #     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-SECTION.findings.v1.adl")
    154 #     assert_nothing_raised do
    155 #       ast = @parser.parse(file, 'openEHR-EHR-SECTION.findings.v1')
    156 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    157 #     end
    158 #   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 
    168 
    169 #   must "openEHR-EHR-SECTION.vital_signs.v1.adl be properly parsed" do
    170 #     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-SECTION.vital_signs.v1.adl")
    171 #     assert_nothing_raised do
    172 #       ast = @parser.parse(file, 'openEHR-EHR-SECTION.vital_signs.v1')
    173 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    174 #     end
    175 #   end
    176 
    177 
    178 # # C_DV_QUANTITY parse error
    179 #   must "openEHR-EHR-EVALUATION.adverse.v1.adl be properly parsed" do
    180 #     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-EVALUATION.adverse.v1.adl")
    181 #     assert_nothing_raised do
    182 #       ast = @parser.parse(file, 'openEHR-EHR-EVALUATION.adverse.v1')
    183 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    184 #     end
    185 #   end
    186 
    187 #   must "openEHR-EHR-CLUSTER.dimensions-circumference.v1.adl be properly parsed" do
    188 #     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.dimensions-circumference.v1.adl")
    189 #     assert_nothing_raised do
    190 #       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.dimensions-circumference.v1')
    191 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    192 #     end
    193 #   end
    194 
    195 #   must "openEHR-EHR-CLUSTER.dimensions.v1.adl be properly parsed" do
    196 #     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.dimensions.v1.adl")
    197 #     assert_nothing_raised do
    198 #       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.dimensions.v1')
    199 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    200 #     end
    201 #   end
    202 
    203 #   must "openEHR-EHR-CLUSTER.exam-fetus.v1.adl be properly parsed" do
    204 #     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-fetus.v1.adl")
    205 #     assert_nothing_raised do
    206 #       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-fetus.v1')
    207 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    208 #     end
    209 #   end
    210 
    211 #   must "openEHR-EHR-CLUSTER.exam-uterine_cervix.v1.adl be properly parsed" do
    212 #     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-uterine_cervix.v1.adl")
    213 #     assert_nothing_raised do
    214 #       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-uterine_cervix.v1')
    215 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    216 #     end
    217 #   end
    218 
    219 #   must "openEHR-EHR-OBSERVATION.body_mass_index.v1.adl be properly parsed" do
    220 #     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-OBSERVATION.body_mass_index.v1.adl")
    221 #     assert_nothing_raised do
    222 #       ast = @parser.parse(file, 'openEHR-EHR-OBSERVATION.body_mass_index.v1')
    223 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    224 #     end
    225 #   end
    226 
    227 #   must "openEHR-EHR-ACTION.imaging.v1.adl be properly parsed" do
    228 #     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-ACTION.imaging.v1.adl")
    229 #     assert_nothing_raised do
    230 #       ast = @parser.parse(file, 'openEHR-EHR-ACTION.imaging.v1')
    231 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    232 #     end
    233 #   end
    234 
    235 #   must "openEHR-EHR-COMPOSITION.encounter.v1draft.adl be properly parsed" do
    236 #     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-COMPOSITION.encounter.v1draft.adl")
    237 #     assert_nothing_raised do
    238 #       ast = @parser.parse(file, 'openEHR-EHR-COMPOSITION.encounter.v1draft')
    239 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    240 #     end
    241 #   end
    242 
    243 #   must "openEHR-EHR-ITEM_TREE.follow_up.v1draft.adl be properly parsed" do
    244 #     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-ITEM_TREE.follow_up.v1draft.adl")
    245 #     assert_nothing_raised do
    246 #       ast = @parser.parse(file, 'openEHR-EHR-ITEM_TREE.follow_up.v1draft')
    247 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    248 #     end
    249 #   end
    250 
    251 #   must "openEHR-EHR-ITEM_TREE.medication-formulation.v1.adl be properly parsed" do
    252 #     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-ITEM_TREE.medication-formulation.v1.adl")
    253 #     assert_nothing_raised do
    254 #       ast = @parser.parse(file, 'openEHR-EHR-ITEM_TREE.medication-formulation.v1')
    255 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    256 #     end
    257 #   end
     8  must "assert parser instance" do
     9    assert_instance_of ::OpenEhr::ADL::Parser,@parser
     10  end
     11
     12  must "openEHR-EHR-CLUSTER.exam-uterus.v1.adl be properly parsed" do
     13    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-uterus.v1.adl")
     14    assert_nothing_raised do
     15      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-uterus.v11')
     16      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     17    end
     18  end
     19
     20  must "openEHR-EHR-SECTION.summary.v1.adl be properly parsed" do
     21    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-SECTION.summary.v1.adl")
     22    assert_nothing_raised do
     23      ast = @parser.parse(file, 'openEHR-EHR-SECTION.summary.v1')
     24      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     25    end
     26  end
     27
     28
     29  must "openEHR-EHR-ACTION.referral.v1.adl be properly parsed" do
     30    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-ACTION.referral.v1.adl")
     31    assert_nothing_raised do
     32      ast = @parser.parse(file, 'openEHR-EHR-ACTION.referral.v1')
     33      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     34    end
     35  end
     36
     37  must "openEHR-EHR-CLUSTER.auscultation-chest.v1.adl be properly parsed" do
     38    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.auscultation-chest.v1.adl")
     39    assert_nothing_raised do
     40      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.auscultation-chest.v1')
     41      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     42    end
     43  end
     44
     45  must "openEHR-EHR-CLUSTER.auscultation.v1.adl be properly parsed" do
     46    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.auscultation.v1.adl")
     47    assert_nothing_raised do
     48      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.auscultation.v1')
     49      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     50    end
     51  end
     52
     53
     54  must "openEHR-EHR-CLUSTER.exam-abdomen.v1.adl be properly parsed" do
     55    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-abdomen.v1.adl")
     56    assert_nothing_raised do
     57      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-abdomen.v1')
     58      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     59    end
     60  end
     61
     62  must "openEHR-EHR-CLUSTER.exam-chest.v1.adl be properly parsed" do
     63    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-chest.v1.adl")
     64    assert_nothing_raised do
     65      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-chest.v1')
     66      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     67    end
     68  end
     69
     70  must "openEHR-EHR-CLUSTER.exam-generic-joint.v1.adl be properly parsed" do
     71    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-generic-joint.v1.adl")
     72    assert_nothing_raised do
     73      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-generic-joint.v1')
     74      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     75    end
     76  end
     77
     78  must "openEHR-EHR-CLUSTER.exam-generic-lymphnode.v1.adl be properly parsed" do
     79    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-generic-lymphnode.v1.adl")
     80    assert_nothing_raised do
     81      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-generic-lymphnode.v1')
     82      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     83    end
     84  end
     85
     86  must "openEHR-EHR-CLUSTER.exam-generic-mass.v1.adl be properly parsed" do
     87    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-generic-mass.v1.adl")
     88    assert_nothing_raised do
     89      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-generic-mass.v1')
     90      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     91    end
     92  end
     93
     94  must "openEHR-EHR-CLUSTER.exam-generic.v1.adl be properly parsed" do
     95    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-generic.v1.adl")
     96    assert_nothing_raised do
     97      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-generic.v1')
     98      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     99    end
     100  end
     101
     102  must "openEHR-EHR-CLUSTER.exam-nervous_system.v1.adl be properly parsed" do
     103    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-nervous_system.v1.adl")
     104    assert_nothing_raised do
     105      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-nervous_system.v1')
     106      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     107    end
     108  end
     109
     110  must "openEHR-EHR-COMPOSITION.discharge.v1draft.adl be properly parsed" do
     111    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-COMPOSITION.discharge.v1draft.adl")
     112    assert_nothing_raised do
     113      ast = @parser.parse(file, 'openEHR-EHR-COMPOSITION.discharge.v1draft')
     114      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     115    end
     116  end
     117
     118
     119  must "openEHR-EHR-INSTRUCTION.medication.v1.adl be properly parsed" do
     120    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-INSTRUCTION.medication.v1.adl")
     121    assert_nothing_raised do
     122      ast = @parser.parse(file, 'openEHR-EHR-INSTRUCTION.medication.v1')
     123      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     124    end
     125  end
     126
     127  must "openEHR-EHR-INSTRUCTION.referral.v1.adl be properly parsed" do
     128    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-INSTRUCTION.referral.v1.adl")
     129    assert_nothing_raised do
     130      ast = @parser.parse(file, 'openEHR-EHR-INSTRUCTION.referral.v1')
     131      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     132    end
     133  end
     134
     135  must "openEHR-EHR-ITEM_TREE.Laboratory_request.v1.adl be properly parsed" do
     136    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-ITEM_TREE.Laboratory_request.v1.adl")
     137    assert_nothing_raised do
     138      ast = @parser.parse(file, 'openEHR-EHR-ITEM_TREE.Laboratory_request.v1')
     139      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     140    end
     141  end
     142
     143
     144  must "openEHR-EHR-OBSERVATION.apgar.v1.adl be properly parsed" do
     145    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-OBSERVATION.apgar.v1.adl")
     146    assert_nothing_raised do
     147      ast = @parser.parse(file, 'openEHR-EHR-OBSERVATION.apgar.v1')
     148      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     149    end
     150  end
     151
     152  must "openEHR-EHR-SECTION.findings.v1.adl be properly parsed" do
     153    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-SECTION.findings.v1.adl")
     154    assert_nothing_raised do
     155      ast = @parser.parse(file, 'openEHR-EHR-SECTION.findings.v1')
     156      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     157    end
     158  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
     168
     169
     170
     171# C_DV_QUANTITY parse error
     172  must "openEHR-EHR-EVALUATION.adverse.v1.adl be properly parsed" do
     173    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-EVALUATION.adverse.v1.adl")
     174    assert_nothing_raised do
     175      ast = @parser.parse(file, 'openEHR-EHR-EVALUATION.adverse.v1')
     176      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     177    end
     178  end
     179
     180  must "openEHR-EHR-CLUSTER.dimensions-circumference.v1.adl be properly parsed" do
     181    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.dimensions-circumference.v1.adl")
     182    assert_nothing_raised do
     183      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.dimensions-circumference.v1')
     184      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     185    end
     186  end
     187
     188  must "openEHR-EHR-CLUSTER.dimensions.v1.adl be properly parsed" do
     189    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.dimensions.v1.adl")
     190    assert_nothing_raised do
     191      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.dimensions.v1')
     192      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     193    end
     194  end
     195
     196  must "openEHR-EHR-CLUSTER.exam-fetus.v1.adl be properly parsed" do
     197    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-fetus.v1.adl")
     198    assert_nothing_raised do
     199      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-fetus.v1')
     200      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     201    end
     202  end
     203
     204  must "openEHR-EHR-CLUSTER.exam-uterine_cervix.v1.adl be properly parsed" do
     205    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-uterine_cervix.v1.adl")
     206    assert_nothing_raised do
     207      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-uterine_cervix.v1')
     208      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     209    end
     210  end
     211
     212  must "openEHR-EHR-OBSERVATION.body_mass_index.v1.adl be properly parsed" do
     213    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-OBSERVATION.body_mass_index.v1.adl")
     214    assert_nothing_raised do
     215      ast = @parser.parse(file, 'openEHR-EHR-OBSERVATION.body_mass_index.v1')
     216      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     217    end
     218  end
     219
     220  must "openEHR-EHR-ACTION.imaging.v1.adl be properly parsed" do
     221    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-ACTION.imaging.v1.adl")
     222    assert_nothing_raised do
     223      ast = @parser.parse(file, 'openEHR-EHR-ACTION.imaging.v1')
     224      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     225    end
     226  end
     227
     228  must "openEHR-EHR-COMPOSITION.encounter.v1draft.adl be properly parsed" do
     229    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-COMPOSITION.encounter.v1draft.adl")
     230    assert_nothing_raised do
     231      ast = @parser.parse(file, 'openEHR-EHR-COMPOSITION.encounter.v1draft')
     232      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     233    end
     234  end
     235
     236  must "openEHR-EHR-ITEM_TREE.follow_up.v1draft.adl be properly parsed" do
     237    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-ITEM_TREE.follow_up.v1draft.adl")
     238    assert_nothing_raised do
     239      ast = @parser.parse(file, 'openEHR-EHR-ITEM_TREE.follow_up.v1draft')
     240      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     241    end
     242  end
     243
     244  must "openEHR-EHR-SECTION.vital_signs.v1.adl be properly parsed" do
     245    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-SECTION.vital_signs.v1.adl")
     246    assert_nothing_raised do
     247      ast = @parser.parse(file, 'openEHR-EHR-SECTION.vital_signs.v1')
     248      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     249    end
     250  end
     251
     252  must "openEHR-EHR-ITEM_TREE.medication-formulation.v1.adl be properly parsed" do
     253    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-ITEM_TREE.medication-formulation.v1.adl")
     254    assert_nothing_raised do
     255      ast = @parser.parse(file, 'openEHR-EHR-ITEM_TREE.medication-formulation.v1')
     256      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     257    end
     258  end
     259
     260  must "adl-test-ENTRY.basic_types.v1.adl be properly parsed" do
     261    file =  File.read("#{TEST_ROOT_DIR}/adl/adl-test-ENTRY.basic_types.v1.adl")
     262    assert_nothing_raised do
     263      ast = @parser.parse(file, 'adl-test-ENTRY.basic_types.v1')
     264      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
     265    end
     266  end
     267
    258268
    259269  must "adl-test-ENTRY.assumed_types.v1.adl be properly parsed" do
     
    265275  end
    266276
    267 #   must "adl-test-ENTRY.basic_types.v1.adl be properly parsed" do
    268 #     file =  File.read("#{TEST_ROOT_DIR}/adl/adl-test-ENTRY.basic_types.v1.adl")
    269 #     assert_nothing_raised do
    270 #       ast = @parser.parse(file, 'adl-test-ENTRY.basic_types.v1')
    271 #       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
    272 #     end
    273 #   end
    274 
    275277end
  • ruby/trunk/lib/adl_parser/test/scanner_test.rb

    r320 r321  
    128128  end
    129129
     130  must "assert CADLScanner scanner scan V_ISO8601_EXTENDED_TIME" do
     131    @scanner.scan("01:00:00") do |sym, val|
     132      assert_equal :V_ISO8601_EXTENDED_TIME,sym
     133      assert_equal "01:00:00",val
     134    end
     135    @scanner.scan("12:01") do |sym, val|
     136      assert_equal :V_ISO8601_EXTENDED_TIME,sym
     137      assert_equal "12:01",val
     138    end
     139
     140  end
     141
    130142end
    131143
Note: See TracChangeset for help on using the changeset viewer.