Index: /ruby/trunk/lib/adl_parser/lib/adl_scanner.rb
===================================================================
--- /ruby/trunk/lib/adl_parser/lib/adl_scanner.rb	(revision 320)
+++ /ruby/trunk/lib/adl_parser/lib/adl_scanner.rb	(revision 321)
@@ -519,4 +519,6 @@
               when /\A\+/   # +
                 yield :Plus_code, :Plus_code
+              when /\A\=/   # =
+                yield :Equal_code, :Equal_code
               when /\A\*/   # *
                 yield :Star_code, :Star_code
@@ -542,23 +544,24 @@
                 yield :Right_parenthesis_code, :Right_parenthesis_code
               when /\A\//   # /
-#                yield :Slash_code, :Slash_code
-#              when /\A\// #V_REGEXP /
-                assert_at(__FILE__,__LINE__){@adl_type.last != :regexp}
-                #@in_regexp = true
+                @@logger.debug("CADLScanner#scan: Slash_code #{@filename}:#{@lineno}")
+                yield :Slash_code, :Slash_code
+# #                yield :Slash_code, :Slash_code
+# #              when /\A\// #V_REGEXP /
+#                 assert_at(__FILE__,__LINE__){@adl_type.last != :regexp}
+#                 #@in_regexp = true
+#                 @adl_type.push(:regexp)
+# #                yield :START_REGEXP_BLOCK, :START_REGEXP_BLOCK
+
+              when /\A\{\// # REGEXP_HEAD {/
+                assert_at(__FILE__,__LINE__){ @adl_type.last != :regexp}
+                #                   @in_regexp = true
+                @@logger.debug("CADLScanner#scan: REGEXP_HEAD:")
+                @adl_type.push(:cadl)
                 @adl_type.push(:regexp)
-#                yield :START_REGEXP_BLOCK, :START_REGEXP_BLOCK
-                yield :Slash_code, :Slash_code
-
-#               when /\A\{\// #V_REGEXP {/
-#                 if @adl_type.last != :regexp
-#                   @in_regexp = true
-#                   @adl_type.push(:regexp)
-#                   yield :START_REGEXP_BLOCK, :START_REGEXP_BLOCK
-#                 else
-#                   assert_at(__FILE__,__LINE__){false}
-#                 end
+                #                   yield :START_REGEXP_BLOCK, :START_REGEXP_BLOCK
+                yield :REGEXP_HEAD, :REGEXP_HEAD
               when /\A\{/   # {
                 @adl_type.push(:cadl)
-                @@logger.debug("CADLScanner#scan: entering cADL at #{@filename}:#{@lineno}")
+                #@@logger.debug("CADLScanner#scan: entering cADL at #{@filename}:#{@lineno}")
                 yield :SYM_START_CBLOCK, :SYM_START_CBLOCK
               when /\A\}/   # }
@@ -628,8 +631,8 @@
               when /\AP[yY]?[mM]?[wW]?[dD]?/   #V_ISO8601_DURATION_CONSTRAINT_PATTERN
                 yield :V_ISO8601_DURATION_CONSTRAINT_PATTERN, $&
-              when /\A[a-zA-Z][a-zA-Z0-9_]*/
+              when /\A[a-z][a-zA-Z0-9_]*/
                 word = $&.dup
                 if RESERVED[word.downcase]
-                  @@logger.debug("CADLScanner#scan: RESERVED = #{word} at #{@filename}:#{@lineno}")
+                  @@logger.debug("ADLScanner#scan: RESERVED = #{RESERVED[word]} at #{@filename}:#{@lineno}")
                   yield RESERVED[word.downcase], RESERVED[word.downcase]
                 else
@@ -654,7 +657,9 @@
               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})?/
                 yield :V_ISO8601_EXTENDED_DATE_TIME, $&
-              when /\A[[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9](Z|[+-][0-9]{4})?/
+              when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9](Z|[+-][0-9]{4})?/
                 yield :V_ISO8601_EXTENDED_DATE_TIME, $&
-              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]
+              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]
+                yield :V_ISO8601_EXTENDED_TIME, $&
+              when /\A[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})?/   #V_ISO8601_EXTENDED_TIME hh:mm:ss[,sss][Z|+/-nnnn]
                 yield :V_ISO8601_EXTENDED_TIME, $&
               when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]/   #V_ISO8601_EXTENDED_DATE YYYY-MM-DD
@@ -696,5 +701,4 @@
               end
             when :term_constraint
-              @@logger.debug("Entering scan_term_constraint at #{@filename}:#{@lineno}: data = #{data.inspect}")
               term_constraint_scanner = OpenEhr::ADL::Scanner::TermConstraintScanner.new(@adl_type, @filename, @lineno)
               data = term_constraint_scanner.scan(data) do |sym, val|
@@ -726,9 +730,12 @@
             when :regexp
               case data
-              when /\A\// #V_REGEXP /
-                assert_at(__FILE__,__LINE__){@adl_type.last == :regexp}
-                #@in_regexp = false
-                @adl_type.pop
-                yield :END_REGEXP_BLOCK, :END_REGEXP_BLOCK
+# #              when /\A\// #V_REGEXP /
+#               when /\A([^\/]+)\// #V_REGEXP 
+#                 assert_at(__FILE__,__LINE__){@adl_type.last == :regexp}
+#                 #@in_regexp = false
+#                 @adl_type.pop
+#                 @@logger.debug("#{__FILE__}:#{__LINE__}: RegexScanner::scan  $1 = #{$1.inspect}")
+# #                yield :END_REGEXP_BLOCK, :END_REGEXP_BLOCK
+#                 yield :V_REGEXP,  $1
 #               when /\A\/\}/ #V_REGEXP /
 #                 if @adl_type.last == :regexp
@@ -740,8 +747,9 @@
 #                 end
 #              when /\A(.*)(\/\})/ #V_REGEXP /}
-              when /\A([^\/]+)/ #V_REGEXP 
+#              when /\A(.*)\/\}/ # REGEXP_BODY
+              when /\A(.*)\// # REGEXP_BODY
+                @adl_type.pop
+                @@logger.debug("#{__FILE__}:#{__LINE__}: RegexScanner::scan REGEXP_BODY = #{$1}")
                 yield :REGEXP_BODY, $1
-#              else
-#                raise "should not happen at #{data}"
               end
               data = $' # variable $' receives the string after the match
Index: /ruby/trunk/lib/adl_parser/lib/parser.rb
===================================================================
--- /ruby/trunk/lib/adl_parser/lib/parser.rb	(revision 320)
+++ /ruby/trunk/lib/adl_parser/lib/parser.rb	(revision 321)
@@ -27,5 +27,5 @@
     class Parser < Racc::Parser
 
-module_eval(<<'...end parser.y/module_eval...', 'parser.y', 1290)
+module_eval(<<'...end parser.y/module_eval...', 'parser.y', 1317)
 
 def assert_at(file,line, message = "")
@@ -152,642 +152,618 @@
 
 racc_action_table = [
-   574,   473,   149,   151,   468,   594,   462,   163,     1,   466,
-    64,   464,   213,   576,    12,   371,   325,   158,   264,   149,
-   151,   596,   159,   568,   259,   497,   103,     6,   529,   187,
-    48,   146,    71,   493,    14,   214,   541,   516,   153,   519,
-   521,    76,   517,   513,   149,   151,   510,   435,   146,   511,
-   512,    42,    44,   310,   121,   153,    78,    81,    83,   191,
-   237,    93,   300,   305,   599,   103,   105,   107,   109,   537,
-   529,   103,   109,   146,    71,   145,   107,   105,   541,   516,
-   153,   519,   521,   316,   109,   307,   309,   271,   536,   161,
-   105,   283,   145,    42,    44,   310,   149,   151,    78,    81,
-    83,   191,   109,    93,   300,   305,   109,   103,   105,   107,
-   109,   537,   149,   151,   149,   151,   475,   145,   149,   151,
-    78,   375,   376,   570,   451,   146,   458,   307,   309,   271,
-   536,   433,   153,   283,   491,   149,   151,   495,   154,   155,
-   460,   146,   147,   146,   417,   148,   150,   146,   153,   419,
-   153,   237,   149,   151,   153,   154,   155,   333,   133,   147,
-    75,   156,   148,   150,   146,   387,   157,   386,   247,   145,
-   109,   153,   378,   379,    42,    44,    93,   573,   115,   117,
-    99,   146,    78,   375,   376,   145,   210,   145,   153,   107,
-   103,   145,    71,   630,    76,   107,    34,   378,   379,   449,
-   103,    93,    98,   152,   238,   134,   105,   229,   145,   572,
-   231,    42,    44,    99,   499,    16,    78,    81,    83,   187,
-   152,    93,    95,    97,   172,   145,   501,    76,    48,   120,
-    99,    89,    92,    17,   246,   141,   258,    42,    44,   251,
-   230,  -374,   254,   255,    76,   123,    78,   375,   376,    78,
-    81,    83,   141,   169,    93,    95,    97,   167,   168,   165,
-   166,    78,   375,   376,    89,    92,    78,    81,    83,    35,
-  -373,    93,    95,    97,   378,   379,    99,    24,    93,    34,
-    58,    89,    92,    78,    81,    83,   482,   171,    93,   328,
-    76,   331,   103,   105,   107,   109,    56,   323,    98,   391,
-   105,    99,   392,   107,    34,    25,   120,    42,    44,   483,
-   393,    48,    78,    81,    83,    76,   127,    93,    95,    97,
-    42,    44,   394,    98,    48,   395,    99,    89,    92,    95,
-    97,   396,    42,    44,   337,   338,    48,    78,    81,    83,
-    76,   127,    93,    95,    97,    42,    44,   102,   141,    29,
-    30,    99,    89,    92,   373,    64,   472,    42,    44,   610,
-   611,   612,    78,    81,    83,    76,   397,    93,    95,    97,
-   218,   398,   389,   141,   399,    48,    99,    89,    92,   115,
-   117,   400,    42,    44,    76,   142,   143,    78,    81,    83,
-    76,   401,    93,    95,    97,   218,   378,   379,   141,   262,
-    93,    99,    89,    92,   601,   602,    78,    81,    83,    76,
-   402,    93,    78,    81,    83,    76,   403,    93,    95,    97,
-   218,   378,   379,   141,   263,    93,    99,    89,    92,   264,
-   414,    78,    81,    83,    76,   404,    93,    78,    81,    83,
-    76,   266,    93,    95,    97,   411,   375,   376,   141,   335,
-   336,    99,    89,    92,   267,   414,    78,    81,    83,    42,
-    44,    93,    78,    81,    83,    76,   405,    93,    95,    97,
-    78,   375,   376,    98,    54,   406,    99,    89,    92,    20,
-   414,    21,    42,    44,    34,   430,   431,    78,    81,    83,
-    76,   317,    93,    95,    97,   411,   375,   376,   141,   345,
-   346,    99,    89,    92,   384,   409,   378,   379,   410,    20,
-    93,    21,    78,    81,    83,    76,    48,    93,    95,    97,
-   245,   218,   244,    98,   243,    42,    44,    89,    92,    78,
-   375,   376,    42,    44,    99,    76,   242,    78,    81,    83,
-   347,   348,    93,    95,    97,   373,   218,   260,    76,    78,
-   375,   376,    89,    92,   218,   261,    98,    78,    81,    83,
-    76,   262,    93,   263,   218,    42,    44,   264,    76,   241,
-    78,    81,    83,   240,   218,    93,    95,    97,    76,   436,
-   218,   437,    78,    81,    83,    89,    92,    93,    76,   218,
-    78,    81,    83,   438,    76,    93,    78,   375,   376,   218,
-    78,    81,    83,    76,   439,    93,   218,    78,   375,   376,
-    78,    81,    83,    76,   440,    93,    78,    81,    83,   441,
-    76,    93,   428,   429,   442,    78,    81,    83,   378,   379,
-    93,   443,    93,   426,   427,    78,    81,    83,   361,   362,
-    93,   444,    78,    81,    83,   310,   445,    93,    78,    81,
-    83,   191,   446,    93,   300,   305,   447,   103,   105,   107,
-   109,    78,    81,    83,   363,   364,    93,   424,   425,   239,
-   103,   105,   107,   109,   422,   423,   216,   307,   309,   271,
-  -103,   420,   421,   283,   206,   316,   317,    78,    81,    83,
-   191,   452,    93,   115,   117,   120,   103,   105,   107,   109,
-   187,   112,   121,   628,   629,    78,    81,    83,   115,   117,
-    93,   115,   117,   120,   103,   105,   107,   109,   453,   112,
-    78,    81,    83,   454,   455,    93,   456,   457,   156,   103,
-   105,   107,   109,    78,    81,    83,   158,   157,    93,   159,
-   141,   172,   103,   105,   107,   109,    78,    81,    83,   143,
-   212,    93,   127,   175,   470,   103,   105,   107,   109,   167,
-   168,   165,   166,   167,   168,   165,   166,   167,   168,   165,
-   166,   167,   168,   165,   166,   381,    78,   375,   376,   167,
-   168,   165,   166,   167,   168,   165,   166,   167,   168,   165,
-   166,   167,   168,   165,   166,   265,   162,   161,   477,   478,
-   480,   481,   144,   484,   485,   486,   103,   488,   105,   266,
-   141,   137,   136,    48,   125,   502,   107,   504,   109,   506,
-   109,   508,    68,    67,   514,   515,    66,   543,    34,   545,
-   546,   547,   103,   549,   105,   551,   107,   553,   109,   555,
-   267,   557,    58,   559,   560,   561,   562,   109,   109,   109,
-   109,   563,   564,  -103,   567,    53,   107,   169,   268,    50,
-    32,   578,   579,   105,   581,   582,   583,   584,   585,   586,
-   587,    28,   590,   591,   592,   593,    27,   248,   269,   103,
-   270,   603,   604,   605,   606,    76,   568,   608,   311,    18,
-   617,   619,   620,   621,    15,   623,    10,     9,   625,   626,
-   627,   320,     8,     7,   161 ]
+   514,   493,   133,   466,   164,   588,   464,   460,   129,   462,
+    57,   374,   228,   327,   475,    10,   568,   169,   170,   167,
+   168,   433,    29,   109,   511,   183,   108,   508,   524,   415,
+   509,   510,    71,   431,    66,    12,   537,   512,    49,   515,
+   517,   314,   569,    59,   491,   229,    95,    98,   567,   134,
+    30,    46,    47,   309,    49,   571,    78,    81,    84,   187,
+   117,    93,   295,   301,    75,   109,   112,   114,   117,   532,
+   524,   117,   109,   114,    71,   112,   123,   124,   537,   512,
+   117,   515,   517,   117,   101,   109,   307,   270,   271,   534,
+   161,   114,   283,    46,    47,   309,    71,   230,    78,    81,
+    84,   187,   114,    93,   295,   301,    99,   109,   112,   114,
+   117,   532,   152,    66,   373,    46,    47,   101,   477,   142,
+    78,    81,    84,   429,   117,    93,    95,    98,   307,   270,
+   271,   534,   489,    49,   283,    88,    91,   152,   487,   139,
+   152,   478,    76,   156,   157,   152,   217,   148,   155,   472,
+   151,   153,   152,    78,    81,    84,   236,   158,    93,    95,
+    98,   114,   159,   152,   143,   150,   456,   152,    88,    91,
+   156,   157,   458,   155,   148,    76,   155,   151,   153,   152,
+   112,   155,    78,    81,    84,   147,   149,    93,   155,   112,
+   150,   152,   594,   150,   109,   236,   183,   577,   150,   155,
+   166,   330,   127,   155,    76,   150,   576,   447,   154,   565,
+   147,   149,   112,   147,   149,   155,   150,  -373,   147,   149,
+   150,   217,    78,   376,   377,   147,   149,   155,   448,   380,
+   381,   217,   150,    93,   371,   154,   147,   149,   112,   258,
+   147,   149,   250,   212,   150,   254,   255,   117,    78,   376,
+   377,    35,   147,   149,    78,   376,   377,    78,    81,    84,
+    46,    47,    93,   101,   147,   149,   213,    78,    81,    84,
+   265,   109,    93,   144,   126,   564,   380,   381,   145,    76,
+    93,   101,   237,    49,    20,   139,    78,    81,    84,    76,
+   217,    93,    46,    47,   495,   109,   112,   114,   117,    78,
+    81,    84,    21,    99,    93,    95,    98,    16,   101,    17,
+     1,   324,    46,    47,    88,    91,   217,    78,    81,    84,
+   126,    76,    93,    95,    98,   319,    78,    81,    84,     5,
+   139,    93,    88,    91,   217,   169,   170,   167,   168,    76,
+   217,    78,   376,   377,    78,    81,    84,   217,    76,    93,
+    95,    98,    78,    81,    84,   209,   333,    93,   217,    88,
+    91,   496,   171,   380,   381,    35,    76,    93,   114,   310,
+    78,    81,    84,   102,    76,    93,    78,    81,    84,  -374,
+   390,    93,   101,    78,    81,    84,   380,   381,    93,    16,
+    93,    17,    76,    54,    78,    81,    84,    49,    76,    93,
+   101,   424,   425,    35,   139,    76,    46,    47,   391,   380,
+   381,    39,   392,    93,    46,    47,    76,   393,    78,    81,
+    84,    35,    99,    93,    95,    98,   380,   381,   101,   394,
+    93,    46,    47,    88,    91,    49,    78,    81,    84,   411,
+    76,    93,    95,    98,    46,    47,   101,   416,   417,   102,
+    99,    88,    91,    49,    78,   376,   377,   395,    76,    46,
+    47,   396,    46,    47,    78,    81,    84,   397,    99,    93,
+    95,    98,   398,   373,   101,   470,   399,    46,    47,    88,
+    91,   400,    78,    81,    84,   262,    76,    93,    95,    98,
+    46,    47,   101,   386,   322,   385,    99,    88,    91,   401,
+   217,   123,   124,   402,    76,    46,    47,   411,   422,   423,
+    78,    81,    84,   264,   139,    93,    95,    98,   101,   614,
+   615,   616,   410,   376,   377,    88,    91,   265,    78,    81,
+    84,   411,    76,    93,    95,    98,    78,    81,    84,   268,
+   139,    93,   101,    88,    91,   266,   410,   376,   377,   403,
+    76,   217,   418,   419,    78,    81,    84,   404,    76,    93,
+    95,    98,   420,   421,   139,   217,    78,   376,   377,    88,
+    91,   388,   405,   380,   381,   316,    76,    93,    78,    81,
+    84,   426,   427,    93,    95,    98,   408,    78,    81,    84,
+    46,    47,    93,    88,    91,   169,   170,   167,   168,   269,
+    76,    78,    81,    84,   335,   336,    93,   309,   268,    76,
+    78,    81,    84,   187,   267,    93,   295,   301,   266,   109,
+   112,   114,   117,    76,    78,    81,    84,   314,   316,    93,
+    78,   376,   377,   109,   112,   114,   117,    78,   376,   377,
+   307,   270,   271,  -104,   343,   344,   283,   202,   345,   346,
+    78,    81,    84,   187,   265,    93,   123,   124,   126,   109,
+   112,   114,   117,   183,   120,   127,   347,   348,    78,    81,
+    84,    25,    26,    93,   123,   124,   126,   109,   112,   114,
+   117,   264,   120,    78,    81,    84,   596,   597,    93,    78,
+   376,   377,   109,   112,   114,   117,    78,    81,    84,   361,
+   362,    93,   363,   364,   263,   109,   112,   114,   117,    78,
+    81,    84,   123,   124,    93,   624,   625,   262,   109,   112,
+   114,   117,   383,    78,   376,   377,   169,   170,   167,   168,
+   169,   170,   167,   168,   169,   170,   167,   168,   169,   170,
+   167,   168,   261,   260,   259,   248,   434,   435,   436,   437,
+   438,   439,   440,   441,   442,   443,   444,   445,   247,   246,
+   450,   451,   452,   453,   454,   455,   144,   158,   145,   159,
+   245,   244,   243,   242,   241,   240,   468,   239,   471,   238,
+   215,   476,   139,   480,   481,   482,   483,   484,   109,   171,
+   143,   211,   207,   102,   165,   498,   112,   500,   114,   502,
+   117,   504,    76,   161,   507,   146,   139,   539,   540,   541,
+   137,   543,   544,   109,   546,   112,   548,   114,   550,   117,
+   552,   135,    49,   555,   556,   557,   558,   559,   560,   117,
+   117,   117,   117,   131,   562,    68,    67,    35,   166,    59,
+    56,  -104,   574,   161,    53,   578,   579,   581,   582,   583,
+   584,   585,   586,   587,    34,   590,   591,    31,    28,    24,
+   598,   127,    23,   602,   603,    76,   564,   605,   607,   608,
+   609,   610,    15,   612,    13,     9,     8,   618,   619,   620,
+   621,     7,   622,   623,   573 ]
 
 racc_action_check = [
-   532,   401,   220,   220,   398,   569,   395,    89,     0,   397,
-    41,   396,   142,   532,     6,   259,   242,    83,   518,   228,
-   228,   571,    83,   518,   193,   427,   242,     0,   532,   259,
-    41,   220,   532,   423,     6,   142,   532,   532,   220,   532,
-   532,    89,   482,   470,   319,   319,   470,   348,   228,   470,
-   470,   532,   532,   532,   401,   228,   532,   532,   532,   532,
-   319,   532,   532,   532,   573,   532,   532,   532,   532,   532,
-   482,   395,   398,   319,   482,   220,   397,   396,   482,   482,
-   319,   482,   482,   482,   427,   532,   532,   532,   532,   569,
-   423,   532,   228,   482,   482,   482,   221,   221,   482,   482,
-   482,   482,   470,   482,   482,   482,   348,   482,   482,   482,
-   482,   482,   227,   227,   223,   223,   402,   319,   225,   225,
-   573,   573,   573,   521,   364,   221,   392,   482,   482,   482,
-   482,   346,   221,   482,   421,   173,   173,   425,   173,   173,
-   394,   227,   173,   223,   336,   173,   173,   225,   227,   338,
-   223,   173,    80,    80,   225,    80,    80,   248,    68,    80,
-    53,    81,    80,    80,   173,   267,    81,   267,   185,   221,
-   248,   173,   364,   364,   521,   521,   364,   527,   402,   402,
-    53,    80,   392,   392,   392,   227,   136,   223,    80,   346,
-   421,   225,    53,   623,    53,   425,   136,   394,   394,   362,
-   336,   394,    53,   173,   174,    68,   338,   161,   173,   527,
-   162,    53,    53,   623,   429,    10,    53,    53,    53,   261,
-    80,    53,    53,    53,    98,    80,   431,   623,   136,   268,
-   162,    53,    53,    10,   184,   623,   191,   136,   136,   191,
-   161,    98,   191,   191,   162,    59,   362,   362,   362,   623,
-   623,   623,   162,    91,   623,   623,   623,   174,   174,   174,
-   174,   429,   429,   429,   623,   623,   162,   162,   162,    27,
-    91,   162,   162,   162,   431,   431,    74,    18,   431,    27,
-    59,   162,   162,   191,   191,   191,   410,    92,   191,   244,
-    74,   247,   191,   191,   191,   191,    33,   240,    74,   270,
-   244,   624,   272,   247,   516,    18,   240,    74,    74,   410,
-   273,    27,    74,    74,    74,   624,   125,    74,    74,    74,
-    27,    27,   275,   624,    33,   278,   171,    74,    74,    92,
-    92,   281,   624,   624,   250,   250,   516,   624,   624,   624,
-   171,    67,   624,   624,   624,   516,   516,    57,   171,    22,
-    22,   168,   624,   624,   400,    57,   400,   125,   125,   605,
-   605,   605,   171,   171,   171,   168,   285,   171,   171,   171,
-   152,   288,   269,   168,   291,    57,   167,   171,   171,   269,
-   269,   293,    67,    67,   152,    77,    77,   168,   168,   168,
-   167,   295,   168,   168,   168,   155,   451,   451,   167,   297,
-   451,   166,   168,   168,   577,   577,   152,   152,   152,   155,
-   299,   152,   167,   167,   167,   166,   300,   167,   167,   167,
-   154,   501,   501,   166,   302,   501,   165,   167,   167,   303,
-   563,   155,   155,   155,   154,   305,   155,   166,   166,   166,
-   165,   308,   166,   166,   166,   563,   563,   563,   165,   249,
-   249,   608,   166,   166,   310,   484,   154,   154,   154,   519,
-   519,   154,   165,   165,   165,   608,   311,   165,   165,   165,
-   484,   484,   484,   608,    32,   312,    99,   165,   165,    14,
-   320,    14,   608,   608,    32,   344,   344,   608,   608,   608,
-    99,   314,   608,   608,   608,   320,   320,   320,    99,   252,
-   252,   613,   608,   608,   266,   317,   266,   266,   318,    30,
-   266,    30,    99,    99,    99,   613,    32,    99,    99,    99,
-   183,   218,   182,   613,   181,    32,    32,    99,    99,   262,
-   262,   262,   613,   613,   617,   218,   180,   613,   613,   613,
-   253,   253,   613,   613,   613,   260,   153,   195,   617,   572,
-   572,   572,   613,   613,   145,   196,   617,   218,   218,   218,
-   153,   198,   218,   200,   146,   617,   617,   201,   145,   179,
-   617,   617,   617,   178,   147,   617,   617,   617,   146,   349,
-   151,   350,   153,   153,   153,   617,   617,   153,   147,   149,
-   145,   145,   145,   351,   151,   145,   449,   449,   449,   150,
-   146,   146,   146,   149,   352,   146,   148,   499,   499,   499,
-   147,   147,   147,   150,   353,   147,   151,   151,   151,   354,
-   148,   151,   343,   343,   355,   149,   149,   149,   263,   263,
-   149,   356,   263,   342,   342,   150,   150,   150,   256,   256,
-   150,   357,   148,   148,   148,   213,   358,   148,   213,   213,
-   213,   213,   359,   213,   213,   213,   360,   213,   213,   213,
-   213,   255,   255,   255,   257,   257,   255,   341,   341,   177,
-   255,   255,   255,   255,   340,   340,   144,   213,   213,   213,
-   127,   339,   339,   213,   127,   216,   216,   127,   127,   127,
-   127,   365,   127,   127,   127,   127,   127,   127,   127,   127,
-   127,   127,    58,   621,   621,    58,    58,    58,   265,   265,
-    58,    58,    58,    58,    58,    58,    58,    58,   366,    58,
-   254,   254,   254,   367,   368,   254,   369,   370,   375,   254,
-   254,   254,   254,   258,   258,   258,   376,   378,   258,   379,
-   143,   141,   258,   258,   258,   258,   251,   251,   251,   140,
-   137,   251,   131,   119,   399,   251,   251,   251,   251,   236,
-   236,   236,   236,   235,   235,   235,   235,   234,   234,   234,
-   234,   232,   232,   232,   232,   264,   264,   264,   264,    90,
-    90,    90,    90,   616,   616,   616,   616,   233,   233,   233,
-   233,   631,   631,   631,   631,   203,    86,    84,   403,   404,
-   408,   409,    79,   411,   413,   416,   417,   418,   419,   204,
-    76,    71,    69,    64,    61,   432,   433,   434,   435,   448,
-   246,   450,    52,    49,   480,   481,    48,   483,    40,   487,
-   489,   490,   491,   492,   493,   494,   495,   496,   497,   498,
-   206,   500,    39,   503,   505,   507,   509,   510,   511,   512,
-   513,   514,   515,    34,   517,    31,   243,   520,   207,    28,
-    26,   536,   538,   241,   543,   548,   550,   552,   554,   556,
-   558,    20,   564,   565,   566,   568,    19,   189,   208,   239,
-   212,   579,   588,   589,   590,   595,   597,   603,   214,    11,
-   609,   610,   611,   612,     8,   615,     5,     4,   618,   619,
-   620,   230,     3,     2,   540 ]
+   477,   423,    68,   396,    91,   563,   395,   393,    60,   394,
+    40,   261,   161,   243,   401,     5,   525,   234,   234,   234,
+   234,   348,    23,   243,   468,   261,    58,   468,   477,   336,
+   468,   468,   477,   346,    58,     5,   477,   477,    40,   477,
+   477,   477,   529,    60,   421,   161,    91,    91,   525,    68,
+    23,   477,   477,   477,    58,   529,   477,   477,   477,   477,
+   423,   477,   477,   477,    53,   477,   477,   477,   477,   477,
+   529,   396,   393,   395,   529,   394,   401,   401,   529,   529,
+   348,   529,   529,   468,    53,   336,   477,   477,   477,   477,
+   563,   346,   477,   529,   529,   529,    53,   165,   529,   529,
+   529,   529,   421,   529,   529,   529,    53,   529,   529,   529,
+   529,   529,   226,    48,   260,    53,    53,   165,   404,    80,
+    53,    53,    53,   344,   246,    53,    53,    53,   529,   529,
+   529,   529,   419,    48,   529,    53,    53,   227,   417,   165,
+   172,   404,    53,   172,   172,   224,   149,   172,   226,   400,
+   172,   172,   223,   165,   165,   165,   172,    84,   165,   165,
+   165,   244,    84,   218,    80,   226,   390,    83,   165,   165,
+    83,    83,   392,   227,    83,   165,   172,    83,    83,   318,
+   344,   224,   149,   149,   149,   226,   226,   149,   223,   419,
+   227,   221,   568,   172,   417,   318,   263,   539,   224,   218,
+    94,   245,   400,    83,   149,   223,   539,   362,   172,   517,
+   227,   227,   245,   172,   172,   318,   218,    94,   224,   224,
+    83,   153,   390,   390,   390,   223,   223,   221,   364,   392,
+   392,   152,   318,   392,   259,    83,   218,   218,   242,   187,
+    83,    83,   187,   142,   221,   187,   187,   259,   568,   568,
+   568,   512,   318,   318,   362,   362,   362,   153,   153,   153,
+   517,   517,   153,   170,   221,   221,   142,   152,   152,   152,
+   516,   240,   152,    81,   238,   516,   364,   364,    81,   153,
+   364,   611,   173,   512,    13,   170,   187,   187,   187,   152,
+   151,   187,   512,   512,   425,   187,   187,   187,   187,   170,
+   170,   170,    13,   611,   170,   170,   170,    26,   168,    26,
+     0,   241,   611,   611,   170,   170,   150,   611,   611,   611,
+   241,   170,   611,   611,   611,   229,   151,   151,   151,     0,
+   168,   151,   611,   611,   156,   173,   173,   173,   173,   611,
+   157,   425,   425,   425,   168,   168,   168,   148,   151,   168,
+   168,   168,   150,   150,   150,   135,   247,   150,   147,   168,
+   168,   427,    99,   496,   496,   135,   168,   496,   247,   213,
+   156,   156,   156,    56,   150,   156,   157,   157,   157,    99,
+   272,   157,   164,   148,   148,   148,   264,   264,   148,    12,
+   264,    12,   156,    34,   147,   147,   147,   135,   157,   147,
+   612,   341,   341,    34,   164,   148,   135,   135,   273,   427,
+   427,    28,   275,   427,    56,    56,   147,   278,   164,   164,
+   164,    28,   612,   164,   164,   164,   448,   448,    79,   281,
+   448,   612,   612,   164,   164,    34,   612,   612,   612,   482,
+   164,   612,   612,   612,    34,    34,   605,   337,   337,   131,
+    79,   612,   612,    28,   482,   482,   482,   285,   612,    79,
+    79,   288,    28,    28,    79,    79,    79,   291,   605,    79,
+    79,    79,   293,   398,   617,   398,   295,   605,   605,    79,
+    79,   296,   605,   605,   605,   298,    79,   605,   605,   605,
+   131,   131,   169,   266,   239,   266,   617,   605,   605,   300,
+   217,   239,   239,   301,   605,   617,   617,   319,   340,   340,
+   617,   617,   617,   303,   169,   617,   617,   617,   167,   609,
+   609,   609,   319,   319,   319,   617,   617,   304,   169,   169,
+   169,   578,   617,   169,   169,   169,   217,   217,   217,   308,
+   167,   217,   101,   169,   169,   309,   578,   578,   578,   310,
+   169,   155,   338,   338,   167,   167,   167,   311,   217,   167,
+   167,   167,   339,   339,   101,   154,   495,   495,   495,   167,
+   167,   268,   312,   268,   268,   315,   167,   268,   101,   101,
+   101,   342,   342,   101,   101,   101,   316,   155,   155,   155,
+   515,   515,   155,   101,   101,   235,   235,   235,   235,   211,
+   101,   154,   154,   154,   249,   249,   154,   212,   205,   155,
+   212,   212,   212,   212,   204,   212,   212,   212,   202,   212,
+   212,   212,   212,   154,   258,   258,   258,   215,   215,   258,
+   447,   447,   447,   258,   258,   258,   258,   262,   262,   262,
+   212,   212,   212,   102,   251,   251,   212,   102,   252,   252,
+   102,   102,   102,   102,   201,   102,   102,   102,   102,   102,
+   102,   102,   102,   102,   102,    59,   253,   253,    59,    59,
+    59,    18,    18,    59,    59,    59,    59,    59,    59,    59,
+    59,   200,    59,   254,   254,   254,   572,   572,   254,   567,
+   567,   567,   254,   254,   254,   254,   250,   250,   250,   256,
+   256,   250,   257,   257,   198,   250,   250,   250,   250,   255,
+   255,   255,   267,   267,   255,   621,   621,   197,   255,   255,
+   255,   255,   265,   265,   265,   265,    96,    96,    96,    96,
+   233,   233,   233,   233,   232,   232,   232,   232,   231,   231,
+   231,   231,   195,   194,   189,   186,   349,   350,   351,   352,
+   353,   354,   355,   356,   357,   358,   359,   360,   185,   184,
+   365,   366,   367,   368,   369,   370,   376,   377,   380,   381,
+   182,   181,   180,   179,   178,   177,   397,   175,   399,   174,
+   146,   402,   143,   407,   408,   410,   413,   414,   415,   139,
+   138,   137,   111,   106,    92,   428,   429,   430,   431,   432,
+   433,   446,    88,    86,   449,    82,    76,   478,   480,   481,
+    71,   485,   486,   487,   488,   489,   490,   491,   492,   493,
+   494,    69,    66,   497,   499,   501,   503,   505,   506,   508,
+   509,   510,   511,    62,   514,    52,    49,    45,   518,    44,
+    38,    35,   535,   538,    33,   540,   541,   545,   547,   549,
+   551,   553,   554,   561,    27,   564,   566,    24,    22,    16,
+   574,   576,    14,   579,   580,   589,   593,   598,   599,   600,
+   601,   602,     8,   606,     6,     4,     3,   613,   614,   615,
+   616,     2,   619,   620,   534 ]
 
 racc_action_pointer = [
-     7,   nil,   884,   902,   879,   869,    13,   nil,   894,   nil,
-   214,   861,   nil,   nil,   455,   nil,   nil,   nil,   276,   846,
-   863,   nil,   327,   nil,   nil,   nil,   829,   268,   834,   nil,
-   485,   823,   473,   281,   803,   nil,   nil,   nil,   nil,   792,
-   817,   -13,   nil,   nil,   nil,   nil,   nil,   nil,   825,   815,
-   nil,   nil,   775,   159,   nil,   nil,   nil,   332,   648,   230,
-   nil,   806,   nil,   nil,   770,   nil,   nil,   330,   157,   763,
-   nil,   777,   nil,   nil,   255,   nil,   767,   351,   nil,   768,
-   146,   104,   nil,   -40,   712,   nil,   750,   nil,   nil,     6,
-   704,   224,   266,   nil,   nil,   nil,   nil,   nil,   195,   455,
+   309,   nil,   862,   876,   857,    14,   847,   nil,   872,   nil,
+   nil,   nil,   365,   283,   834,   nil,   851,   nil,   649,   nil,
+   nil,   nil,   828,    21,   832,   nil,   283,   823,   410,   nil,
+   nil,   nil,   nil,   812,   392,   791,   nil,   nil,   832,   nil,
+    -5,   nil,   nil,   nil,   789,   826,   nil,   nil,    90,   835,
+   nil,   nil,   788,    63,   nil,   nil,   362,   nil,    11,   611,
+    -7,   nil,   825,   nil,   nil,   nil,   779,   nil,     1,   772,
+   nil,   776,   nil,   nil,   nil,   nil,   763,   nil,   nil,   407,
+    85,   216,   771,   161,   100,   nil,   717,   nil,   723,   nil,
+   nil,   -17,   748,   nil,   171,   nil,   651,   nil,   nil,   333,
+   nil,   521,   593,   nil,   nil,   nil,   782,   nil,   nil,   nil,
+   nil,   741,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   702,
-   nil,   nil,   nil,   nil,   nil,   305,   nil,   630,   nil,   nil,
-   nil,   741,   nil,   nil,   nil,   nil,   185,   715,   nil,   nil,
-   714,   712,     0,   697,   664,   533,   543,   553,   585,   568,
-   578,   559,   349,   525,   399,   374,   nil,   nil,   nil,   nil,
-   nil,   206,   209,   nil,   nil,   405,   380,   355,   330,   nil,
-   nil,   305,   nil,   129,   182,   nil,   nil,   614,   518,   514,
-   481,   469,   467,   505,   179,   113,   nil,   nil,   nil,   822,
-   nil,   226,   nil,   -31,   nil,   492,   500,   nil,   506,   nil,
-   508,   512,   nil,   740,   754,   nil,   785,   803,   823,   nil,
-   nil,   nil,   844,   591,   852,   nil,   643,   nil,   500,   nil,
-    -4,    90,   nil,   108,   nil,   112,   nil,   106,    13,   nil,
-   889,   nil,   696,   712,   692,   688,   684,   nil,   nil,   813,
-   241,   796,   -40,   788,   233,   nil,   751,   235,   101,   389,
-   274,   689,   439,   480,   663,   604,   578,   604,   676,   -41,
-   491,   149,   472,   570,   719,   645,   448,   111,   164,   316,
-   264,   nil,   279,   296,   nil,   299,   nil,   nil,   302,   nil,
-   nil,   308,   nil,   nil,   nil,   343,   nil,   nil,   348,   nil,
-   nil,   339,   nil,   326,   nil,   368,   nil,   344,   nil,   387,
-   361,   nil,   369,   374,   nil,   380,   nil,   nil,   386,   nil,
-   399,   431,   461,   nil,   448,   nil,   nil,   425,   474,    38,
-   438,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   134,   nil,   139,   621,
-   614,   607,   573,   562,   425,   nil,   121,   nil,    37,   519,
-   521,   533,   544,   554,   559,   564,   571,   581,   586,   592,
-   596,   nil,   189,   nil,   114,   631,   658,   663,   664,   666,
-   667,   nil,   nil,   nil,   nil,   671,   679,   nil,   675,   677,
+   nil,   438,   nil,   nil,   nil,   354,   nil,   756,   711,   760,
+   nil,   nil,   231,   739,   nil,   nil,   768,   337,   326,   125,
+   295,   269,   210,   200,   544,   530,   313,   319,   nil,   nil,
+   nil,    11,   nil,   nil,   361,    96,   nil,   497,   287,   471,
+   242,   nil,   134,   260,   724,   722,   nil,   720,   719,   718,
+   717,   716,   715,   nil,   704,   703,   730,   229,   nil,   689,
+   nil,   nil,   nil,   nil,   688,   687,   nil,   662,   649,   nil,
+   626,   599,   563,   nil,   559,   553,   nil,   nil,   nil,   nil,
+   nil,   563,   553,   333,   nil,   585,   nil,   479,   157,   nil,
+   nil,   185,   nil,   146,   139,   nil,   106,   131,   nil,   313,
+   nil,   663,   659,   655,   -58,   520,   nil,   nil,   209,   438,
+   205,   255,   171,   -43,    93,   145,    55,   300,   nil,   544,
+   639,   584,   588,   606,   626,   652,   639,   642,   567,   178,
+    60,   -45,   580,   126,   328,   666,   439,   649,   515,   nil,
+   nil,   nil,   357,   394,   nil,   389,   nil,   nil,   394,   nil,
+   nil,   406,   nil,   nil,   nil,   434,   nil,   nil,   438,   nil,
+   nil,   388,   nil,   417,   nil,   421,   458,   nil,   430,   nil,
+   476,   448,   nil,   458,   472,   nil,   nil,   nil,   484,   490,
+   535,   523,   558,   nil,   nil,   532,   505,   nil,   173,   465,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   125,   nil,   139,     5,    10,     8,     3,   694,
-   300,     0,   115,   734,   736,   nil,   nil,   nil,   719,   767,
-   274,   742,   nil,   790,   nil,   nil,   745,   740,   747,   741,
-   nil,   124,   nil,    23,   nil,   127,   nil,    15,   nil,   204,
-   nil,   216,   755,   748,   757,   749,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   759,   539,
-   761,   338,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,    19,   387,   492,   502,
+   448,   341,   521,   nil,   113,   nil,    23,   nil,    11,   686,
+   687,   688,   689,   690,   691,   692,   693,   694,   695,   696,
+   697,   nil,   197,   nil,   218,   700,   701,   702,   703,   704,
+   705,   nil,   nil,   nil,   nil,   nil,   709,   710,   nil,   nil,
+   706,   707,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   165,   nil,   171,     6,     8,     5,     2,   716,   419,   714,
+   148,    13,   718,   nil,   106,   nil,   nil,   701,   750,   nil,
+   724,   nil,   nil,   772,   727,   722,   nil,   128,   nil,   122,
+   nil,    34,   nil,    -9,   nil,   284,   nil,   351,   735,   729,
+   737,   730,   739,   731,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   741,   573,   368,   744,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-    33,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   790,   813,    41,   791,   413,   nil,   nil,   769,   nil,   770,
-   771,   766,   773,   767,   775,   768,   777,   769,   779,   550,
-   781,   363,   nil,   783,   nil,   784,   nil,   785,   nil,   786,
-   778,   779,   780,   781,   839,   795,   293,   840,   -37,   407,
-   828,   122,   nil,   nil,   nil,   nil,   nil,   154,   nil,   nil,
-   nil,   nil,    -1,   nil,   nil,   nil,   770,   nil,   828,   nil,
-   819,   nil,   nil,   829,   nil,   nil,   nil,   nil,   805,   nil,
-   806,   nil,   807,   nil,   808,   nil,   809,   nil,   810,   nil,
-   nil,   nil,   nil,   388,   811,   859,   835,   nil,   805,     4,
-   nil,    -8,   492,    63,   nil,   nil,   nil,   314,   nil,   869,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   868,   860,
-   827,   nil,   nil,   nil,   nil,   850,   nil,   826,   nil,   nil,
-   nil,   nil,   nil,   843,   nil,   277,   nil,   nil,   430,   845,
-   868,   869,   870,   480,   nil,   849,   708,   513,   884,   815,
-   816,   621,   nil,   192,   280,   nil,   nil,   nil,   nil,   nil,
-   nil,   716 ]
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    14,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,    -1,   771,   nil,
+   774,   797,   397,   nil,   nil,   751,   752,   747,   754,   748,
+   756,   749,   758,   750,   760,   509,   305,   763,   nil,   764,
+   nil,   765,   nil,   766,   nil,   767,   768,   nil,   760,   761,
+   762,   763,   240,   nil,   820,   538,   215,   208,   809,   nil,
+   nil,   nil,   nil,   nil,   nil,    -7,   nil,   nil,   nil,    41,
+   nil,   nil,   nil,   nil,   792,   808,   nil,   nil,   757,   183,
+   833,   789,   nil,   nil,   nil,   787,   nil,   788,   nil,   789,
+   nil,   790,   nil,   791,   792,   nil,   nil,   nil,   nil,   nil,
+   nil,   814,   nil,     4,   785,   nil,   827,   632,   191,   nil,
+   nil,   nil,   595,   nil,   848,   nil,   807,   nil,   489,   802,
+   850,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   786,
+   nil,   nil,   nil,   806,   nil,   nil,   nil,   nil,   823,   854,
+   855,   847,   814,   nil,   nil,   425,   828,   nil,   nil,   436,
+   nil,   260,   379,   863,   855,   856,   857,   453,   nil,   797,
+   798,   632,   nil,   nil,   nil,   nil ]
 
 racc_action_default = [
-  -376,    -2,  -376,  -376,  -376,   -13,    -6,    -4,  -376,    -1,
-  -376,  -376,    -5,    -7,  -376,   632,   -15,   -14,  -376,   -18,
-  -376,   -12,  -376,    -9,   -17,   -16,   -21,   -87,  -376,    -8,
-  -376,  -376,   -87,  -376,  -112,   -20,   -98,   -99,  -100,  -376,
-  -376,   -88,  -146,   -89,  -147,   -90,   -19,  -108,   -94,  -376,
-   -11,   -10,   -82,  -376,   -23,   -22,  -110,  -376,  -376,  -376,
-  -104,  -376,  -101,  -109,  -376,   -91,   -95,  -376,  -376,  -376,
-  -253,  -376,   -26,  -254,   -27,   -25,  -284,  -376,  -152,  -376,
-  -376,  -376,  -273,  -376,  -305,  -274,  -376,  -286,  -283,  -376,
-  -251,   -31,  -376,  -167,  -281,  -271,  -282,  -272,  -289,  -376,
-  -248,   -24,  -111,  -191,  -125,  -204,  -126,  -217,  -127,  -230,
-  -128,  -129,  -247,  -130,  -121,  -182,  -122,  -183,  -123,  -376,
-  -187,  -148,  -124,  -102,  -105,  -376,   -92,  -112,   -93,  -113,
-   -97,  -376,   -96,   -84,   -83,    -3,   -87,  -376,  -373,  -249,
-  -285,  -289,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
-  -376,  -376,  -376,  -376,  -376,  -376,  -153,  -168,  -154,  -169,
-   -30,  -376,  -376,  -256,  -255,  -376,  -376,  -376,  -376,   -32,
-  -259,  -376,  -288,  -376,  -376,  -107,  -106,  -136,  -125,  -137,
-  -126,  -138,  -127,  -376,  -139,  -128,  -117,  -243,  -140,  -129,
-  -118,  -376,  -141,  -119,  -142,  -131,  -120,  -143,  -132,  -144,
-  -133,  -122,  -145,  -134,  -123,  -116,  -148,  -135,  -124,  -114,
-   -86,   -85,  -376,  -376,  -376,  -287,  -376,  -279,  -376,  -278,
-  -263,  -264,  -275,  -265,  -276,  -260,  -277,  -261,  -262,  -307,
-  -376,  -252,  -250,  -268,  -269,  -266,  -267,  -280,  -270,  -376,
-  -376,  -376,  -376,  -376,  -376,  -115,  -376,  -376,  -376,  -376,
+  -376,    -2,  -376,  -376,  -376,    -6,   -13,    -4,  -376,    -1,
+    -5,    -7,  -376,  -376,  -376,   626,  -376,   -12,  -376,    -9,
+   -15,   -14,   -18,  -376,  -376,    -8,  -376,   -21,   -88,   -17,
+   -16,   -11,   -10,  -376,   -88,  -113,   -91,  -109,  -376,   -20,
+  -376,   -99,  -100,  -101,  -376,  -376,  -147,  -148,   -89,   -95,
+   -90,   -19,   -83,  -376,   -23,   -22,  -376,  -111,  -376,  -376,
+  -376,  -105,  -376,  -110,  -102,   -92,  -376,   -96,  -376,  -376,
+  -249,  -376,   -24,  -254,   -26,   -25,  -284,  -255,  -153,   -27,
+  -376,  -376,  -376,  -376,  -376,  -283,  -305,  -282,  -376,  -286,
+  -281,  -376,  -376,  -168,   -31,  -271,  -252,  -279,  -272,  -289,
+  -280,  -376,  -113,   -94,  -114,   -98,  -376,   -97,  -112,  -192,
+  -125,  -376,  -205,  -126,  -218,  -127,  -122,  -231,  -128,  -129,
+  -248,  -130,  -131,  -183,  -184,  -123,  -188,  -149,  -124,  -103,
+  -106,  -376,   -93,   -85,   -84,   -88,    -3,  -376,  -285,  -289,
+  -250,  -373,  -376,  -376,  -154,  -169,  -376,  -376,  -376,  -376,
+  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -155,  -170,
+   -30,  -376,  -256,  -259,  -376,  -376,   -32,  -376,  -376,  -376,
+  -376,  -288,  -376,  -376,  -136,  -125,  -117,  -137,  -126,  -138,
+  -127,  -139,  -128,  -244,  -140,  -129,  -376,  -376,  -141,  -130,
+  -118,  -142,  -119,  -143,  -132,  -120,  -144,  -133,  -121,  -145,
+  -134,  -123,  -149,  -146,  -135,  -124,  -115,  -108,  -107,   -87,
+   -86,  -376,  -376,  -376,  -287,  -376,  -276,  -376,  -263,  -277,
+  -274,  -264,  -273,  -265,  -260,  -275,  -261,  -262,  -307,  -376,
+  -253,  -251,  -268,  -269,  -266,  -267,  -278,  -270,  -376,  -376,
+  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -116,  -376,
   -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
+  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,   -28,
+  -328,  -334,  -313,  -376,  -323,  -319,   -54,  -329,  -325,   -55,
+  -335,  -331,   -56,  -375,  -342,  -337,  -312,   -57,  -344,  -318,
+   -58,  -340,  -324,  -348,   -59,  -353,  -350,  -330,  -311,   -60,
+  -357,  -354,  -336,  -317,  -310,   -61,  -343,  -322,  -316,  -347,
+  -376,  -376,  -376,   -33,   -62,   -34,  -290,   -63,  -376,  -376,
+  -190,  -185,  -187,  -194,  -191,  -189,  -207,  -195,  -193,  -220,
+  -208,  -206,  -233,  -221,  -219,  -204,  -376,  -376,  -376,  -376,
+  -376,  -376,  -376,  -217,  -376,  -230,  -376,  -243,  -376,  -376,
   -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
-  -376,  -334,  -313,  -376,  -323,  -319,   -54,  -329,  -325,   -55,
-  -335,  -331,   -56,  -375,  -342,  -337,  -312,   -57,  -344,  -318,
-   -58,  -340,  -324,  -348,   -59,  -350,  -330,  -311,   -60,  -357,
-  -353,  -336,  -317,  -310,   -61,  -354,  -343,  -322,  -316,  -328,
-  -347,  -376,  -376,   -33,   -34,   -63,   -62,  -290,  -376,  -376,
-  -376,  -193,  -188,  -190,  -206,  -194,  -192,  -219,  -207,  -205,
-  -232,  -220,  -218,  -233,  -231,  -203,  -376,  -216,  -376,  -376,
-  -376,  -376,  -376,  -376,  -376,  -229,  -376,  -242,  -376,  -376,
-  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
-  -376,  -166,  -376,  -181,  -376,  -376,  -376,  -376,  -376,  -376,
-  -376,  -246,  -244,  -150,  -245,  -376,  -376,  -156,  -376,  -376,
-  -171,  -157,  -155,  -185,  -172,  -170,  -151,  -149,  -189,  -186,
-  -184,   -28,  -376,  -257,  -376,  -376,  -376,  -376,  -376,  -376,
-  -376,  -376,  -376,  -376,  -376,  -258,   -29,   -64,   -68,  -376,
-  -376,  -152,  -303,  -376,  -304,  -308,  -376,  -376,  -376,  -376,
-  -201,  -376,  -214,  -376,  -227,  -376,  -240,  -376,  -164,  -376,
-  -179,  -376,  -376,  -376,  -376,  -376,  -200,  -213,  -226,  -239,
-  -163,  -178,  -202,  -215,  -228,  -241,  -165,  -180,  -376,  -376,
-  -376,  -376,  -199,  -212,  -225,  -238,  -162,  -177,  -315,  -314,
-  -321,  -320,  -327,  -326,  -333,  -332,  -339,  -338,  -346,  -345,
-  -376,  -341,  -349,  -352,  -351,  -359,  -358,  -355,  -356,   -69,
-  -376,  -376,  -376,  -376,  -376,  -306,  -195,  -376,  -208,  -376,
-  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
-  -376,  -376,  -221,  -376,  -234,  -376,  -158,  -376,  -173,  -376,
-  -376,  -376,  -376,  -376,  -376,  -376,   -87,   -44,  -310,  -376,
-   -31,  -376,   -72,   -70,   -36,   -37,   -38,  -360,   -39,  -372,
-  -363,   -40,  -376,  -366,   -41,   -42,  -369,  -367,  -376,   -35,
-  -305,   -43,   -53,  -376,  -309,  -197,  -210,  -196,  -376,  -209,
-  -376,  -222,  -376,  -235,  -376,  -159,  -376,  -174,  -376,  -223,
-  -236,  -160,  -175,  -376,  -292,  -376,  -376,   -67,  -376,  -305,
-   -52,   -50,  -376,  -376,   -44,   -71,   -65,  -376,  -370,  -376,
-   -49,   -66,  -198,  -211,  -224,  -237,  -161,  -176,  -376,  -295,
-  -376,  -291,   -45,  -365,   -47,  -376,   -51,  -376,  -364,  -362,
-  -361,  -368,  -371,   -73,  -294,  -376,  -293,   -46,  -376,   -75,
-  -296,  -297,  -298,   -74,   -77,  -376,   -80,  -376,  -376,  -376,
-  -376,  -376,   -78,  -376,   -76,   -48,  -299,  -300,  -301,  -302,
-   -81,   -79 ]
+  -376,  -167,  -376,  -182,  -376,  -376,  -376,  -376,  -376,  -376,
+  -376,  -234,  -232,  -151,  -247,  -245,  -376,  -376,  -157,  -246,
+  -376,  -376,  -172,  -158,  -156,  -152,  -150,  -186,  -173,  -171,
+  -376,  -258,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
+  -376,  -376,  -376,  -257,  -376,   -29,   -64,   -69,  -376,  -308,
+  -153,  -304,  -303,  -376,  -376,  -376,  -202,  -376,  -215,  -376,
+  -228,  -376,  -241,  -376,  -165,  -376,  -180,  -376,  -376,  -376,
+  -376,  -376,  -376,  -376,  -201,  -214,  -227,  -240,  -164,  -179,
+  -203,  -216,  -229,  -242,  -166,  -181,  -376,  -376,  -376,  -376,
+  -200,  -213,  -226,  -239,  -163,  -178,  -315,  -314,  -321,  -320,
+  -327,  -326,  -333,  -332,  -339,  -338,  -346,  -345,  -376,  -341,
+  -349,  -355,  -352,  -351,  -358,  -359,  -356,  -376,  -376,   -70,
+  -376,  -376,  -376,  -306,  -196,  -376,  -376,  -376,  -376,  -376,
+  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -209,  -376,
+  -222,  -376,  -235,  -376,  -159,  -376,  -376,  -174,  -376,  -376,
+  -376,  -376,   -88,   -53,   -44,  -376,  -310,  -376,   -31,   -73,
+   -71,   -36,   -37,   -38,  -372,  -360,   -39,  -363,   -40,  -376,
+  -366,   -41,  -367,   -42,  -369,  -376,   -35,   -43,  -305,  -376,
+  -376,  -376,  -309,  -198,  -197,  -376,  -210,  -376,  -223,  -376,
+  -236,  -376,  -160,  -376,  -376,  -175,  -211,  -224,  -237,  -161,
+  -176,  -376,   -68,  -305,  -376,   -52,   -50,  -376,  -376,   -44,
+   -72,   -65,  -376,  -370,  -376,   -49,  -376,   -66,  -376,  -292,
+  -376,  -199,  -212,  -225,  -238,  -162,  -177,   -45,   -47,  -376,
+  -365,   -51,  -364,  -376,  -362,  -361,  -368,  -371,   -74,  -376,
+  -376,  -295,  -376,  -291,   -46,  -376,   -76,   -67,  -294,  -376,
+  -293,   -75,  -376,  -376,  -296,  -297,  -298,   -77,   -48,  -376,
+  -376,  -376,  -299,  -300,  -301,  -302 ]
 
 racc_goto_table = [
-    90,   116,   164,   160,   202,   313,   118,    40,    46,   413,
-   193,   104,    40,    55,   119,    63,   173,    62,   132,   128,
-    65,    90,   315,   122,   523,    60,    23,   110,    86,   111,
-   100,   613,     3,    91,   408,   532,    65,   622,    57,   273,
-   624,   618,    51,   126,   609,   124,   174,   131,   622,    86,
-   108,   139,   314,   217,   219,    59,   312,   222,   106,   224,
-   479,   226,    74,   209,   220,   221,   183,   223,   186,   225,
-   201,   227,   228,   190,   575,   204,   132,   176,    72,   196,
-   178,   474,   101,   205,    22,    13,     2,   135,    69,    52,
-    31,   195,   208,   198,   200,   203,   185,   207,   189,   177,
-   179,   181,   184,   188,   192,   131,    63,   194,    62,   232,
-   197,   199,   233,   234,   235,   236,    40,   211,   174,   182,
-   407,    26,    19,   170,   140,    11,     5,   180,   215,   565,
-   588,     4,   544,   598,   256,   319,   577,   nil,   nil,   257,
-   nil,   nil,   372,   nil,   374,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   303,   nil,   nil,   nil,
-   252,   308,   253,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   250,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   249,   nil,   322,   343,   nil,   nil,   353,   359,   344,
-   nil,   369,   354,   360,   nil,   377,   370,   382,   nil,   nil,
-   nil,   380,   327,   nil,   385,   nil,   332,   330,   nil,   334,
-   341,   388,   342,   351,   357,   352,   358,   367,   nil,   368,
-   383,   nil,   nil,   324,   390,   nil,   329,   nil,   nil,   321,
-   nil,   nil,   326,   340,   nil,   nil,   350,   356,   nil,   nil,
-   366,   339,   589,   nil,   349,   355,   nil,   nil,   365,   nil,
-   nil,   nil,   nil,   412,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   522,   nil,   nil,   nil,   nil,   471,   nil,   nil,   nil,
+    79,   140,   125,   162,    45,    51,   160,   203,   128,   313,
+    45,    55,   110,   413,   473,   121,   195,   317,   107,   103,
+   520,    63,   111,    64,    65,    61,    19,     3,   407,    94,
+   113,   119,   106,   172,    65,   173,    58,   529,   118,   273,
+    32,   130,   132,   613,   216,   201,   219,   220,   606,   222,
+    60,   205,   225,   315,   115,   175,   312,   479,   189,   206,
+   186,   190,   192,    74,   198,   176,    72,    18,    11,     2,
+   136,    69,   570,   178,   185,    52,    33,   194,   197,   200,
+   218,   182,    63,   221,    64,   223,   224,   204,   226,   227,
+   174,   177,   179,   107,   208,   181,   184,   180,   173,   231,
+   188,   232,   233,   234,   235,   191,   193,   106,   196,   199,
+    27,    45,   210,    22,   163,   138,    14,   406,     6,   214,
+   580,   600,     4,   542,   592,   572,   nil,   nil,   nil,   nil,
+   256,   nil,   nil,   nil,   nil,   nil,   257,   nil,   nil,   nil,
+   nil,   nil,   nil,   253,   nil,   nil,   nil,   nil,   nil,   318,
+   nil,   nil,   nil,   nil,   nil,   304,   nil,   nil,   nil,   252,
+   nil,   308,   nil,   nil,   nil,   nil,   251,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   375,   nil,   379,   nil,   nil,
+   nil,   nil,   249,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   599,   nil,   321,   341,   nil,   nil,   nil,   353,   359,   342,
+   nil,   369,   332,   354,   360,   378,   340,   370,   384,   320,
+   352,   358,   325,   382,   368,   372,   329,   389,   nil,   334,
+   387,   326,   339,   nil,   331,   nil,   351,   357,   nil,   338,
+   367,   nil,   nil,   350,   356,   323,   nil,   366,   328,   nil,
+   nil,   nil,   nil,   nil,   nil,   337,   nil,   nil,   nil,   349,
+   355,   nil,   nil,   365,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   412,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   519,   601,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   448,   nil,   nil,   nil,   nil,
-   nil,   nil,   450,   nil,   nil,   432,   nil,   nil,   nil,   434,
+   nil,   nil,   469,   nil,   432,   446,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   449,   nil,   nil,   nil,   nil,   430,   nil,
+   nil,   nil,   nil,   428,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   414,   nil,   457,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   459,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   467,   nil,   474,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   465,   494,   nil,
+   nil,   nil,   nil,   463,   nil,   nil,   497,   nil,   nil,   492,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   461,   503,
+   505,   nil,   nil,   490,   nil,   nil,   nil,   506,   488,   nil,
+   nil,   nil,   nil,   501,   nil,   nil,   nil,   nil,   499,   nil,
+   485,   nil,   486,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   516,   nil,   nil,   nil,   253,   412,   308,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   553,   nil,
+   nil,   nil,   nil,   nil,   nil,   554,   nil,   nil,   nil,   551,
+   nil,   nil,   nil,   518,   nil,   nil,   nil,   nil,   575,   nil,
+   nil,   nil,   nil,   549,   340,   352,   358,   368,   547,   nil,
+   nil,   nil,   516,   nil,   nil,   nil,   nil,   nil,   308,   nil,
+   nil,   nil,   545,   589,   nil,   nil,   nil,   nil,    45,   561,
+   nil,   563,   nil,   566,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   604,   518,   nil,   nil,   nil,   nil,
+   593,   595,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   412,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   140,   nil,   nil,   nil,   nil,   nil,   140,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   418,   nil,   nil,   nil,   nil,   459,   416,   nil,   nil,   nil,
-   nil,   nil,   461,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   467,   476,   nil,   469,
-   nil,   nil,   498,   nil,   nil,   nil,   nil,   nil,   nil,   500,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   465,   nil,
-   nil,   nil,   507,   nil,   494,   463,   nil,   nil,   496,   509,
-   nil,   nil,   503,   nil,   nil,   nil,   505,   nil,   nil,   nil,
-   nil,   489,   nil,   nil,   nil,   492,   nil,   487,   nil,   nil,
-   nil,   490,   nil,   nil,   nil,   518,   nil,   412,   nil,   nil,
-   308,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   253,   556,   nil,   nil,   nil,   nil,   nil,   nil,   558,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   580,
-   nil,   nil,   520,   nil,   552,   nil,   nil,   nil,   554,   nil,
-   nil,   nil,   nil,   nil,   nil,   518,   nil,   nil,   nil,   nil,
-   308,   342,   352,   358,   368,   550,   nil,   nil,   595,   nil,
-   nil,   548,   nil,   nil,   nil,   nil,    40,   566,   nil,   569,
-   nil,   571,   nil,   nil,   nil,   nil,   412,   nil,   607,   nil,
-   nil,   nil,   520,   nil,   nil,   597,   600,   nil,   nil,   nil,
+   nil,   nil,   611,   nil,   nil,   nil,   nil,   nil,   nil,   617 ]
+
+racc_goto_check = [
+    18,   104,    80,    34,    23,    15,    22,   103,    81,    24,
+    23,    15,    82,   114,    51,    87,    78,    48,    59,    62,
+    26,    72,    71,    66,    60,    69,    14,     1,    52,    23,
+    83,    86,    23,   108,    60,    57,    58,    50,    85,    39,
+    14,    69,    60,    37,   110,    80,   110,   110,    36,   110,
+    68,    81,   110,    25,    84,    82,    20,    53,    87,    74,
+    75,    76,    77,    17,    79,    71,    16,    13,    12,    11,
+    10,     9,    26,    83,    86,     8,     7,    89,    90,    91,
+   108,    85,    72,   108,    66,   108,   108,    92,   108,   108,
+    93,    94,    95,    59,    62,    96,    97,    84,    57,    57,
+    98,    57,    57,    57,    57,    99,   100,    23,   101,   102,
+     6,    23,    15,     5,   105,   107,     4,    48,     3,   111,
+   112,   113,     2,   115,   126,   128,   nil,   nil,   nil,   nil,
+    80,   nil,   nil,   nil,   nil,   nil,    81,   nil,   nil,   nil,
+   nil,   nil,   nil,    87,   nil,   nil,   nil,   nil,   nil,   108,
+   nil,   nil,   nil,   nil,   nil,    80,   nil,   nil,   nil,    86,
+   nil,    81,   nil,   nil,   nil,   nil,    85,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,    78,   nil,    78,   nil,   nil,
+   nil,   nil,    84,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+    51,   nil,    82,    80,   nil,   nil,   nil,    80,    80,    81,
+   nil,    80,    87,    81,    81,    80,    87,    81,    80,    83,
+    87,    87,    83,    81,    87,    87,    86,    81,   nil,    86,
+    82,    85,    86,   nil,    85,   nil,    86,    86,   nil,    85,
+    86,   nil,   nil,    85,    85,    84,   nil,    85,    84,   nil,
+   nil,   nil,   nil,   nil,   nil,    84,   nil,   nil,   nil,    84,
+    84,   nil,   nil,    84,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,    80,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,    24,   114,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   103,   nil,    87,    80,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,    81,   nil,   nil,   nil,   nil,    86,   nil,
+   nil,   nil,   nil,    85,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,    84,   nil,    80,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,    81,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,    87,   nil,    82,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,    86,    80,   nil,
+   nil,   nil,   nil,    85,   nil,   nil,    81,   nil,   nil,    87,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    84,    87,
+    80,   nil,   nil,    86,   nil,   nil,   nil,    81,    85,   nil,
+   nil,   nil,   nil,    86,   nil,   nil,   nil,   nil,    85,   nil,
+    84,   nil,    84,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+    80,   nil,   nil,   nil,    87,    80,    81,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    80,   nil,
+   nil,   nil,   nil,   nil,   nil,    81,   nil,   nil,   nil,    87,
+   nil,   nil,   nil,    23,   nil,   nil,   nil,   nil,    22,   nil,
+   nil,   nil,   nil,    86,    87,    87,    87,    87,    85,   nil,
+   nil,   nil,    80,   nil,   nil,   nil,   nil,   nil,    81,   nil,
+   nil,   nil,    84,    22,   nil,   nil,   nil,   nil,    23,    15,
+   nil,    23,   nil,    23,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,    34,    23,   nil,   nil,   nil,   nil,
+    80,    80,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,    80,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   104,   nil,   nil,   nil,   nil,   nil,   104,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   631 ]
-
-racc_goto_check = [
-    56,    80,    34,    22,   103,    24,    81,    23,    15,   114,
-    77,    83,    23,    15,    70,    71,   108,    65,    58,    61,
-    59,    56,    48,    82,    26,    68,    14,    86,    55,    87,
-   104,    53,     1,    23,    51,    50,    59,    54,    57,    39,
-    53,    37,    14,    59,    36,    68,    56,    23,    54,    55,
-    85,   104,    25,   109,   109,    67,    20,   109,    84,   109,
-    52,   109,    18,    73,   108,   108,    74,   108,    75,   108,
-    80,   108,   108,    76,    26,    81,    58,    61,    17,    78,
-    83,    79,    16,    70,    13,    12,    11,    10,     9,     8,
-     7,    89,    82,    90,    91,    92,    86,    93,    87,    94,
-    95,    96,    97,    98,    99,    23,    71,   100,    65,    56,
-   101,   102,    56,    56,    56,    56,    23,    15,    56,    85,
-    48,     6,     5,   105,   107,     4,     3,    84,   111,   112,
-   113,     2,   115,   126,    80,   108,   128,   nil,   nil,    81,
-   nil,   nil,    77,   nil,    77,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,    80,   nil,   nil,   nil,
-    86,    81,    87,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,    85,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,    84,   nil,    83,    80,   nil,   nil,    80,    80,    81,
-   nil,    80,    81,    81,   nil,    80,    81,    80,   nil,   nil,
-   nil,    81,    86,   nil,    81,   nil,    86,    87,   nil,    87,
-    86,    83,    87,    86,    86,    87,    87,    86,   nil,    87,
-    82,   nil,   nil,    85,    82,   nil,    85,   nil,   nil,    84,
-   nil,   nil,    84,    85,   nil,   nil,    85,    85,   nil,   nil,
-    85,    84,   114,   nil,    84,    84,   nil,   nil,    84,   nil,
-   nil,   nil,   nil,    80,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,    24,   nil,   nil,   nil,   nil,   103,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,    80,   nil,   nil,   nil,   nil,
-   nil,   nil,    81,   nil,   nil,    86,   nil,   nil,   nil,    87,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-    85,   nil,   nil,   nil,   nil,    80,    84,   nil,   nil,   nil,
-   nil,   nil,    81,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,    86,    82,   nil,    87,
-   nil,   nil,    80,   nil,   nil,   nil,   nil,   nil,   nil,    81,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    85,   nil,
-   nil,   nil,    80,   nil,    86,    84,   nil,   nil,    87,    81,
-   nil,   nil,    86,   nil,   nil,   nil,    87,   nil,   nil,   nil,
-   nil,    85,   nil,   nil,   nil,    85,   nil,    84,   nil,   nil,
-   nil,    84,   nil,   nil,   nil,    80,   nil,    80,   nil,   nil,
-    81,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,    87,    80,   nil,   nil,   nil,   nil,   nil,   nil,    81,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    22,
-   nil,   nil,    23,   nil,    86,   nil,   nil,   nil,    87,   nil,
-   nil,   nil,   nil,   nil,   nil,    80,   nil,   nil,   nil,   nil,
-    81,    87,    87,    87,    87,    85,   nil,   nil,    22,   nil,
-   nil,    84,   nil,   nil,   nil,   nil,    23,    15,   nil,    23,
-   nil,    23,   nil,   nil,   nil,   nil,    80,   nil,    34,   nil,
-   nil,   nil,    23,   nil,   nil,    80,    80,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-    56 ]
+   nil,   nil,    18,   nil,   nil,   nil,   nil,   nil,   nil,    18 ]
 
 racc_goto_pointer = [
-   nil,    32,   131,   126,   120,   111,   102,    64,    58,    36,
-    18,    86,    79,    70,    12,   -19,    29,    25,     9,   nil,
-  -160,   nil,   -81,   -20,  -211,  -164,  -458,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   -87,   nil,  -559,  -568,   nil,  -174,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -194,   nil,
-  -447,  -283,  -348,  -577,  -576,   -25,   -53,     5,   -49,   -21,
-   nil,   -48,   nil,   nil,   nil,   -23,   nil,    16,   -14,   nil,
-   -44,   -25,   nil,   -68,   -61,   -59,   -54,  -117,   -48,  -320,
-   -57,   -52,   -35,   -47,     0,    -8,   -31,   -29,   nil,   -36,
-   -34,   -33,   -32,   -30,   -28,   -27,   -26,   -25,   -24,   -23,
-   -20,   -17,   -16,  -123,   -23,    31,   nil,    48,   -83,   -92,
-   nil,   -15,  -386,  -433,  -311,  -352,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,  -439,   nil,  -400 ]
+   nil,    27,   122,   118,   110,    99,    88,    49,    42,    19,
+     1,    69,    63,    55,    14,   -23,    13,    10,   -53,   nil,
+  -159,   nil,   -80,   -24,  -206,  -162,  -457,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   -85,   nil,  -550,  -563,   nil,  -173,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -198,   nil,
+  -440,  -386,  -288,  -350,   nil,   nil,   nil,   -66,    -4,   -38,
+   -24,   nil,   -37,   nil,   nil,   nil,   -22,   nil,     6,   -19,
+   nil,   -37,   -24,   nil,   -47,   -42,   -41,   -40,   -86,   -38,
+   -57,   -51,   -47,   -29,    -5,   -21,   -28,   -44,   nil,   -25,
+   -24,   -23,   -15,   -12,   -11,   -10,    -7,    -6,    -2,     3,
+     4,     6,     7,   -95,   -78,    23,   nil,    39,   -68,   nil,
+  -103,   -24,  -421,  -457,  -306,  -359,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,  -443,   nil,  -409 ]
 
 racc_goto_default = [
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   539,   nil,    79,
-   nil,    84,   nil,   138,   nil,   nil,   nil,   524,   525,   526,
-   528,   531,   534,   535,    88,   538,   nil,   nil,   540,   542,
-   276,   279,   282,   287,   290,   294,   298,   304,   nil,   318,
-   nil,   nil,   nil,   nil,   614,   615,   616,    41,    43,    45,
-    49,   nil,   130,    36,    37,    38,    39,   nil,   nil,    61,
-   nil,    47,    33,   129,   nil,   nil,   nil,   nil,   nil,   114,
-    94,    96,   nil,   nil,   274,   277,   280,   284,   113,   293,
-   297,   302,   nil,   nil,   nil,   nil,   nil,   nil,   286,   289,
-   292,   296,   301,   306,   nil,    70,    73,    77,    80,    82,
-    85,    87,   nil,   nil,   nil,   415,   272,   275,   278,   281,
-   285,   288,   291,   295,   299,   527,   530,   533,   nil ]
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   536,   nil,    82,
+   nil,    86,   nil,   141,   nil,   nil,   nil,   521,   522,   523,
+   526,   528,   531,   533,    90,   535,   nil,   nil,   538,   513,
+   276,   279,   282,   287,   290,   294,   299,   305,   nil,   311,
+   nil,   116,   nil,   nil,   nil,   nil,    92,    96,    48,    50,
+    36,    38,   nil,   105,    41,    42,    43,    44,   nil,   nil,
+    62,   nil,    37,    40,   104,   nil,   nil,   nil,   nil,   nil,
+    97,   100,   nil,   nil,   274,   277,   280,   284,   122,   293,
+   298,   303,   nil,   nil,   nil,   nil,   nil,   nil,   286,   289,
+   292,   297,   302,   306,    70,    73,    77,    80,    83,    85,
+    87,    89,   nil,   nil,   nil,   409,   272,   275,   278,   281,
+   285,   288,   291,   296,   300,   525,   527,   530,   nil ]
 
 racc_reduce_table = [
   0, 0, :racc_error,
-  2, 94, :_reduce_1,
-  1, 94, :_reduce_none,
-  8, 95, :_reduce_3,
-  2, 96, :_reduce_4,
-  2, 96, :_reduce_5,
-  1, 104, :_reduce_6,
-  2, 104, :_reduce_7,
-  3, 105, :_reduce_8,
-  1, 106, :_reduce_9,
-  3, 106, :_reduce_10,
-  3, 107, :_reduce_11,
-  1, 107, :_reduce_12,
-  0, 97, :_reduce_none,
-  2, 97, :_reduce_14,
-  2, 97, :_reduce_none,
-  2, 98, :_reduce_16,
+  2, 95, :_reduce_1,
+  1, 95, :_reduce_none,
+  8, 96, :_reduce_3,
+  2, 97, :_reduce_4,
+  2, 97, :_reduce_5,
+  1, 105, :_reduce_6,
+  2, 105, :_reduce_7,
+  3, 106, :_reduce_8,
+  1, 107, :_reduce_9,
+  3, 107, :_reduce_10,
+  3, 108, :_reduce_11,
+  1, 108, :_reduce_12,
+  0, 98, :_reduce_none,
+  2, 98, :_reduce_14,
   2, 98, :_reduce_none,
-  0, 99, :_reduce_18,
-  2, 99, :_reduce_19,
+  2, 99, :_reduce_16,
   2, 99, :_reduce_none,
-  0, 100, :_reduce_none,
-  2, 100, :_reduce_22,
+  0, 100, :_reduce_18,
+  2, 100, :_reduce_19,
   2, 100, :_reduce_none,
-  2, 101, :_reduce_24,
+  0, 101, :_reduce_none,
+  2, 101, :_reduce_22,
   2, 101, :_reduce_none,
-  1, 109, :_reduce_26,
-  1, 109, :_reduce_27,
-  5, 110, :_reduce_28,
-  5, 110, :_reduce_29,
-  2, 112, :_reduce_30,
-  1, 114, :_reduce_31,
-  2, 114, :_reduce_32,
-  1, 113, :_reduce_none,
-  1, 113, :_reduce_34,
-  1, 119, :_reduce_35,
-  1, 119, :_reduce_36,
-  1, 119, :_reduce_37,
-  1, 119, :_reduce_38,
-  1, 119, :_reduce_39,
-  1, 119, :_reduce_40,
-  1, 119, :_reduce_41,
-  1, 119, :_reduce_42,
-  1, 119, :_reduce_none,
-  1, 119, :_reduce_none,
-  3, 126, :_reduce_45,
-  4, 120, :_reduce_46,
-  3, 120, :_reduce_none,
-  6, 121, :_reduce_48,
-  2, 128, :_reduce_49,
-  2, 131, :_reduce_50,
-  3, 131, :_reduce_none,
-  2, 131, :_reduce_none,
-  1, 125, :_reduce_53,
-  1, 132, :_reduce_54,
-  1, 132, :_reduce_55,
-  1, 132, :_reduce_56,
-  1, 132, :_reduce_57,
-  1, 132, :_reduce_58,
-  1, 132, :_reduce_59,
-  1, 132, :_reduce_60,
-  1, 132, :_reduce_61,
-  1, 117, :_reduce_none,
-  1, 118, :_reduce_63,
-  2, 118, :_reduce_64,
-  5, 141, :_reduce_65,
-  5, 141, :_reduce_66,
-  5, 141, :_reduce_67,
-  2, 142, :_reduce_68,
-  3, 142, :_reduce_69,
-  1, 143, :_reduce_70,
-  2, 143, :_reduce_71,
-  1, 143, :_reduce_72,
-  0, 129, :_reduce_none,
-  2, 129, :_reduce_74,
+  2, 102, :_reduce_24,
+  2, 102, :_reduce_none,
+  1, 110, :_reduce_26,
+  1, 110, :_reduce_27,
+  4, 111, :_reduce_28,
+  5, 111, :_reduce_29,
+  2, 113, :_reduce_30,
+  1, 115, :_reduce_31,
+  2, 115, :_reduce_32,
+  1, 114, :_reduce_none,
+  1, 114, :_reduce_34,
+  1, 120, :_reduce_35,
+  1, 120, :_reduce_36,
+  1, 120, :_reduce_37,
+  1, 120, :_reduce_38,
+  1, 120, :_reduce_39,
+  1, 120, :_reduce_40,
+  1, 120, :_reduce_41,
+  1, 120, :_reduce_42,
+  1, 120, :_reduce_none,
+  1, 120, :_reduce_none,
+  3, 127, :_reduce_45,
+  4, 121, :_reduce_46,
+  3, 121, :_reduce_none,
+  6, 122, :_reduce_48,
+  2, 129, :_reduce_49,
+  2, 132, :_reduce_50,
+  3, 132, :_reduce_none,
+  2, 132, :_reduce_none,
+  1, 126, :_reduce_53,
+  1, 133, :_reduce_54,
+  1, 133, :_reduce_55,
+  1, 133, :_reduce_56,
+  1, 133, :_reduce_57,
+  1, 133, :_reduce_58,
+  1, 133, :_reduce_59,
+  1, 133, :_reduce_60,
+  1, 133, :_reduce_61,
+  1, 118, :_reduce_none,
+  1, 119, :_reduce_63,
+  2, 119, :_reduce_64,
+  5, 142, :_reduce_65,
+  5, 142, :_reduce_66,
+  7, 142, :_reduce_67,
+  5, 142, :_reduce_68,
+  2, 143, :_reduce_69,
+  3, 143, :_reduce_70,
+  1, 144, :_reduce_71,
+  2, 144, :_reduce_72,
+  1, 144, :_reduce_73,
   0, 130, :_reduce_none,
-  2, 130, :_reduce_76,
-  1, 146, :_reduce_none,
-  2, 146, :_reduce_none,
-  3, 147, :_reduce_none,
-  1, 147, :_reduce_none,
-  3, 147, :_reduce_none,
-  0, 102, :_reduce_none,
-  2, 102, :_reduce_none,
-  2, 102, :_reduce_none,
-  2, 103, :_reduce_85,
+  2, 130, :_reduce_75,
+  0, 131, :_reduce_none,
+  2, 131, :_reduce_77,
+  1, 148, :_reduce_none,
+  2, 148, :_reduce_none,
+  3, 149, :_reduce_none,
+  1, 149, :_reduce_none,
+  3, 149, :_reduce_none,
+  0, 103, :_reduce_none,
   2, 103, :_reduce_none,
-  0, 108, :_reduce_none,
-  1, 108, :_reduce_88,
-  1, 108, :_reduce_89,
-  1, 150, :_reduce_90,
-  2, 150, :_reduce_91,
-  3, 150, :_reduce_92,
+  2, 103, :_reduce_none,
+  2, 104, :_reduce_86,
+  2, 104, :_reduce_none,
+  0, 109, :_reduce_none,
+  1, 109, :_reduce_89,
+  1, 109, :_reduce_90,
+  1, 152, :_reduce_91,
+  2, 152, :_reduce_92,
   3, 152, :_reduce_93,
-  1, 153, :_reduce_94,
-  2, 153, :_reduce_none,
-  1, 154, :_reduce_96,
-  1, 154, :_reduce_97,
-  1, 151, :_reduce_98,
-  1, 151, :_reduce_99,
-  1, 157, :_reduce_100,
-  2, 157, :_reduce_101,
-  3, 158, :_reduce_102,
-  1, 159, :_reduce_103,
-  1, 160, :_reduce_104,
-  2, 160, :_reduce_105,
-  3, 161, :_reduce_106,
-  3, 162, :_reduce_107,
-  1, 156, :_reduce_108,
-  2, 156, :_reduce_109,
-  2, 164, :_reduce_110,
-  3, 164, :_reduce_111,
-  1, 165, :_reduce_none,
-  1, 155, :_reduce_113,
-  2, 155, :_reduce_114,
-  3, 166, :_reduce_115,
-  1, 167, :_reduce_116,
-  1, 167, :_reduce_117,
-  1, 167, :_reduce_118,
-  1, 167, :_reduce_119,
-  1, 167, :_reduce_120,
-  1, 163, :_reduce_121,
-  1, 163, :_reduce_122,
-  1, 163, :_reduce_123,
-  1, 163, :_reduce_124,
-  1, 163, :_reduce_125,
-  1, 163, :_reduce_126,
-  1, 163, :_reduce_127,
-  1, 163, :_reduce_128,
-  1, 163, :_reduce_129,
-  1, 163, :_reduce_130,
-  1, 168, :_reduce_131,
-  1, 168, :_reduce_132,
-  1, 168, :_reduce_133,
-  1, 168, :_reduce_134,
-  1, 168, :_reduce_135,
-  1, 168, :_reduce_136,
-  1, 168, :_reduce_137,
-  1, 168, :_reduce_138,
-  1, 168, :_reduce_139,
-  1, 169, :_reduce_none,
-  1, 169, :_reduce_none,
-  1, 169, :_reduce_none,
-  1, 169, :_reduce_none,
-  1, 169, :_reduce_none,
-  1, 169, :_reduce_none,
-  1, 116, :_reduce_146,
-  1, 116, :_reduce_147,
-  1, 172, :_reduce_148,
-  3, 182, :_reduce_149,
-  3, 182, :_reduce_150,
-  3, 182, :_reduce_151,
-  1, 173, :_reduce_152,
-  2, 173, :_reduce_153,
-  2, 173, :_reduce_154,
-  3, 183, :_reduce_none,
-  3, 183, :_reduce_none,
-  3, 183, :_reduce_none,
-  5, 191, :_reduce_none,
-  6, 191, :_reduce_none,
-  6, 191, :_reduce_none,
-  7, 191, :_reduce_none,
-  4, 191, :_reduce_none,
-  4, 191, :_reduce_none,
-  4, 191, :_reduce_none,
-  4, 191, :_reduce_none,
-  3, 191, :_reduce_none,
-  1, 174, :_reduce_167,
-  2, 174, :_reduce_168,
-  2, 174, :_reduce_169,
+  3, 154, :_reduce_94,
+  1, 155, :_reduce_95,
+  2, 155, :_reduce_none,
+  1, 156, :_reduce_97,
+  1, 156, :_reduce_98,
+  1, 153, :_reduce_99,
+  1, 153, :_reduce_100,
+  1, 159, :_reduce_101,
+  2, 159, :_reduce_102,
+  3, 160, :_reduce_103,
+  1, 161, :_reduce_104,
+  1, 162, :_reduce_105,
+  2, 162, :_reduce_106,
+  3, 163, :_reduce_107,
+  3, 164, :_reduce_108,
+  1, 158, :_reduce_109,
+  2, 158, :_reduce_110,
+  2, 166, :_reduce_111,
+  3, 166, :_reduce_112,
+  1, 167, :_reduce_none,
+  1, 157, :_reduce_114,
+  2, 157, :_reduce_115,
+  3, 168, :_reduce_116,
+  1, 169, :_reduce_117,
+  1, 169, :_reduce_118,
+  1, 169, :_reduce_119,
+  1, 169, :_reduce_120,
+  1, 169, :_reduce_121,
+  1, 165, :_reduce_122,
+  1, 165, :_reduce_123,
+  1, 165, :_reduce_124,
+  1, 165, :_reduce_125,
+  1, 165, :_reduce_126,
+  1, 165, :_reduce_127,
+  1, 165, :_reduce_128,
+  1, 165, :_reduce_129,
+  1, 165, :_reduce_130,
+  1, 165, :_reduce_131,
+  1, 170, :_reduce_132,
+  1, 170, :_reduce_133,
+  1, 170, :_reduce_134,
+  1, 170, :_reduce_135,
+  1, 170, :_reduce_136,
+  1, 170, :_reduce_137,
+  1, 170, :_reduce_138,
+  1, 170, :_reduce_139,
+  1, 170, :_reduce_140,
+  1, 171, :_reduce_none,
+  1, 171, :_reduce_none,
+  1, 171, :_reduce_none,
+  1, 171, :_reduce_none,
+  1, 171, :_reduce_none,
+  1, 171, :_reduce_none,
+  1, 117, :_reduce_147,
+  1, 117, :_reduce_148,
+  1, 145, :_reduce_149,
+  3, 183, :_reduce_150,
+  3, 183, :_reduce_151,
+  3, 183, :_reduce_152,
+  1, 174, :_reduce_153,
+  2, 174, :_reduce_154,
+  2, 174, :_reduce_155,
   3, 184, :_reduce_none,
   3, 184, :_reduce_none,
@@ -802,17 +778,10 @@
   4, 192, :_reduce_none,
   3, 192, :_reduce_none,
-  1, 175, :_reduce_182,
-  1, 175, :_reduce_183,
+  1, 175, :_reduce_168,
+  2, 175, :_reduce_169,
+  2, 175, :_reduce_170,
   3, 185, :_reduce_none,
   3, 185, :_reduce_none,
   3, 185, :_reduce_none,
-  1, 176, :_reduce_none,
-  3, 186, :_reduce_none,
-  3, 186, :_reduce_none,
-  3, 186, :_reduce_none,
-  1, 177, :_reduce_191,
-  3, 187, :_reduce_none,
-  3, 187, :_reduce_none,
-  3, 187, :_reduce_none,
   5, 193, :_reduce_none,
   6, 193, :_reduce_none,
@@ -824,5 +793,14 @@
   4, 193, :_reduce_none,
   3, 193, :_reduce_none,
-  1, 178, :_reduce_none,
+  1, 176, :_reduce_183,
+  1, 176, :_reduce_184,
+  3, 186, :_reduce_none,
+  3, 186, :_reduce_none,
+  3, 186, :_reduce_none,
+  1, 177, :_reduce_none,
+  3, 187, :_reduce_none,
+  3, 187, :_reduce_none,
+  3, 187, :_reduce_none,
+  1, 178, :_reduce_192,
   3, 188, :_reduce_none,
   3, 188, :_reduce_none,
@@ -837,5 +815,5 @@
   4, 194, :_reduce_none,
   3, 194, :_reduce_none,
-  1, 179, :_reduce_217,
+  1, 179, :_reduce_none,
   3, 189, :_reduce_none,
   3, 189, :_reduce_none,
@@ -850,5 +828,5 @@
   4, 195, :_reduce_none,
   3, 195, :_reduce_none,
-  1, 180, :_reduce_230,
+  1, 180, :_reduce_218,
   3, 190, :_reduce_none,
   3, 190, :_reduce_none,
@@ -863,36 +841,46 @@
   4, 196, :_reduce_none,
   3, 196, :_reduce_none,
-  1, 170, :_reduce_243,
-  3, 171, :_reduce_none,
-  3, 171, :_reduce_none,
-  3, 171, :_reduce_none,
-  1, 181, :_reduce_247,
-  1, 111, :_reduce_none,
-  2, 111, :_reduce_none,
+  1, 181, :_reduce_231,
+  3, 191, :_reduce_none,
+  3, 191, :_reduce_none,
+  3, 191, :_reduce_none,
+  5, 197, :_reduce_none,
+  6, 197, :_reduce_none,
+  6, 197, :_reduce_none,
+  7, 197, :_reduce_none,
+  4, 197, :_reduce_none,
+  4, 197, :_reduce_none,
+  4, 197, :_reduce_none,
+  4, 197, :_reduce_none,
   3, 197, :_reduce_none,
-  1, 197, :_reduce_none,
-  3, 197, :_reduce_none,
-  1, 149, :_reduce_none,
-  1, 149, :_reduce_none,
-  2, 199, :_reduce_none,
-  2, 199, :_reduce_none,
-  5, 199, :_reduce_none,
-  5, 199, :_reduce_none,
-  2, 199, :_reduce_none,
-  3, 199, :_reduce_none,
-  3, 199, :_reduce_none,
-  3, 199, :_reduce_none,
-  3, 199, :_reduce_none,
-  3, 199, :_reduce_none,
-  3, 199, :_reduce_none,
-  3, 199, :_reduce_none,
-  3, 199, :_reduce_none,
-  3, 199, :_reduce_none,
-  3, 199, :_reduce_none,
+  1, 172, :_reduce_244,
+  3, 173, :_reduce_none,
+  3, 173, :_reduce_none,
+  3, 173, :_reduce_none,
+  1, 182, :_reduce_248,
+  1, 112, :_reduce_none,
+  2, 112, :_reduce_none,
   3, 198, :_reduce_none,
   1, 198, :_reduce_none,
-  1, 198, :_reduce_none,
-  1, 201, :_reduce_none,
-  1, 201, :_reduce_none,
+  3, 198, :_reduce_none,
+  1, 151, :_reduce_none,
+  1, 151, :_reduce_none,
+  2, 200, :_reduce_none,
+  5, 200, :_reduce_257,
+  5, 200, :_reduce_none,
+  2, 200, :_reduce_none,
+  3, 200, :_reduce_none,
+  3, 200, :_reduce_none,
+  3, 200, :_reduce_none,
+  3, 200, :_reduce_none,
+  3, 200, :_reduce_none,
+  3, 200, :_reduce_none,
+  3, 200, :_reduce_none,
+  3, 200, :_reduce_none,
+  3, 200, :_reduce_none,
+  3, 200, :_reduce_none,
+  3, 199, :_reduce_none,
+  1, 199, :_reduce_none,
+  1, 199, :_reduce_none,
   3, 203, :_reduce_none,
   3, 203, :_reduce_none,
@@ -900,40 +888,36 @@
   3, 203, :_reduce_none,
   3, 203, :_reduce_none,
-  3, 202, :_reduce_none,
+  3, 204, :_reduce_none,
+  1, 204, :_reduce_none,
+  1, 204, :_reduce_none,
+  1, 204, :_reduce_none,
   1, 202, :_reduce_none,
   1, 202, :_reduce_none,
-  1, 202, :_reduce_none,
-  1, 127, :_reduce_none,
-  2, 127, :_reduce_none,
-  1, 200, :_reduce_none,
-  3, 200, :_reduce_none,
-  2, 204, :_reduce_288,
-  1, 204, :_reduce_289,
-  0, 144, :_reduce_290,
-  5, 144, :_reduce_291,
-  1, 205, :_reduce_292,
-  3, 205, :_reduce_293,
-  5, 145, :_reduce_294,
-  1, 206, :_reduce_none,
-  3, 206, :_reduce_none,
-  3, 206, :_reduce_none,
-  3, 206, :_reduce_none,
-  5, 206, :_reduce_none,
-  5, 206, :_reduce_none,
-  5, 206, :_reduce_none,
-  5, 206, :_reduce_none,
-  1, 208, :_reduce_303,
-  1, 208, :_reduce_304,
-  0, 115, :_reduce_none,
-  5, 115, :_reduce_306,
-  2, 115, :_reduce_none,
-  1, 207, :_reduce_308,
-  3, 207, :_reduce_309,
-  1, 209, :_reduce_none,
-  1, 209, :_reduce_none,
-  1, 209, :_reduce_none,
-  1, 133, :_reduce_none,
-  3, 133, :_reduce_none,
-  3, 133, :_reduce_none,
+  1, 128, :_reduce_none,
+  2, 128, :_reduce_none,
+  1, 201, :_reduce_286,
+  3, 201, :_reduce_287,
+  2, 205, :_reduce_288,
+  1, 205, :_reduce_289,
+  0, 146, :_reduce_290,
+  5, 146, :_reduce_291,
+  1, 206, :_reduce_292,
+  3, 206, :_reduce_293,
+  5, 147, :_reduce_294,
+  1, 207, :_reduce_none,
+  3, 207, :_reduce_none,
+  3, 207, :_reduce_none,
+  3, 207, :_reduce_none,
+  5, 207, :_reduce_none,
+  5, 207, :_reduce_none,
+  5, 207, :_reduce_none,
+  5, 207, :_reduce_none,
+  1, 209, :_reduce_303,
+  1, 209, :_reduce_304,
+  0, 116, :_reduce_none,
+  5, 116, :_reduce_306,
+  2, 116, :_reduce_none,
+  1, 208, :_reduce_308,
+  3, 208, :_reduce_309,
   1, 210, :_reduce_none,
   1, 210, :_reduce_none,
@@ -961,5 +945,4 @@
   3, 137, :_reduce_none,
   1, 214, :_reduce_none,
-  3, 214, :_reduce_none,
   1, 214, :_reduce_none,
   1, 214, :_reduce_none,
@@ -967,37 +950,44 @@
   3, 138, :_reduce_none,
   3, 138, :_reduce_none,
-  1, 216, :_reduce_none,
-  1, 216, :_reduce_none,
-  3, 216, :_reduce_none,
+  1, 215, :_reduce_none,
+  3, 215, :_reduce_none,
+  1, 215, :_reduce_none,
+  1, 215, :_reduce_none,
   1, 139, :_reduce_none,
   3, 139, :_reduce_none,
   3, 139, :_reduce_none,
-  1, 217, :_reduce_353,
-  1, 217, :_reduce_354,
-  3, 217, :_reduce_355,
-  3, 217, :_reduce_356,
-  1, 140, :_reduce_357,
-  3, 140, :_reduce_358,
-  3, 140, :_reduce_359,
-  1, 124, :_reduce_none,
-  3, 124, :_reduce_none,
-  3, 124, :_reduce_none,
-  1, 218, :_reduce_none,
-  3, 218, :_reduce_none,
-  3, 219, :_reduce_365,
-  1, 123, :_reduce_366,
-  1, 123, :_reduce_367,
-  3, 220, :_reduce_368,
-  0, 221, :_reduce_none,
-  1, 221, :_reduce_none,
-  2, 221, :_reduce_none,
-  1, 122, :_reduce_372,
-  1, 148, :_reduce_373,
-  1, 148, :_reduce_374,
-  1, 215, :_reduce_375 ]
+  1, 217, :_reduce_none,
+  1, 217, :_reduce_none,
+  3, 217, :_reduce_none,
+  1, 140, :_reduce_none,
+  3, 140, :_reduce_none,
+  3, 140, :_reduce_none,
+  1, 218, :_reduce_353,
+  1, 218, :_reduce_354,
+  3, 218, :_reduce_355,
+  3, 218, :_reduce_356,
+  1, 141, :_reduce_357,
+  3, 141, :_reduce_358,
+  3, 141, :_reduce_359,
+  1, 125, :_reduce_none,
+  3, 125, :_reduce_none,
+  3, 125, :_reduce_none,
+  1, 219, :_reduce_none,
+  3, 219, :_reduce_none,
+  3, 220, :_reduce_365,
+  1, 124, :_reduce_366,
+  1, 124, :_reduce_367,
+  3, 221, :_reduce_368,
+  0, 222, :_reduce_none,
+  1, 222, :_reduce_none,
+  2, 222, :_reduce_none,
+  1, 123, :_reduce_372,
+  1, 150, :_reduce_373,
+  1, 150, :_reduce_374,
+  1, 216, :_reduce_375 ]
 
 racc_reduce_n = 376
 
-racc_shift_n = 632
+racc_shift_n = 626
 
 racc_token_table = {
@@ -1037,5 +1027,5 @@
   :c_complx_object_head => 33,
   :SYM_MATCHES => 34,
-  :Slash_code => 35,
+  :REGEXP_HEAD => 35,
   :REGEXP_BODY => 36,
   :ERR_C_DOMAIN_TYPE => 37,
@@ -1048,5 +1038,5 @@
   :SYM_INCLUDE => 44,
   :SYM_EXCLUDE => 45,
-  ":" => 46,
+  :Colon_code => 46,
   :SYM_INVARIANT => 47,
   :V_ASSERTION_TEXT => 48,
@@ -1076,25 +1066,26 @@
   :SYM_EXISTS => 72,
   :SYM_NOT => 73,
-  "=" => 74,
+  :Equal_code => 74,
   :SYM_AND => 75,
   :SYM_OR => 76,
   :SYM_XOR => 77,
   :SYM_IMPLIES => 78,
-  "^" => 79,
-  :SYM_EXISTENCE => 80,
-  :SYM_CARDINALITY => 81,
-  :SYM_ORDERED => 82,
-  :SYM_UNORDERED => 83,
-  :SYM_UNIQUE => 84,
-  :SYM_OCCURRENCES => 85,
-  :V_ISO8601_DATE_CONSTRAINT_PATTERN => 86,
-  :V_ISO8601_TIME_CONSTRAINT_PATTERN => 87,
-  :V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN => 88,
-  :START_TERM_CODE_CONSTRAINT => 89,
-  :END_TERM_CODE_CONSTRAINT => 90,
-  :TERM_CODE => 91,
-  :V_ISO8601_DURATION_CONSTRAINT_PATTERN => 92 }
-
-racc_nt_base = 93
+  :Slash_code => 79,
+  :Caret_code => 80,
+  :SYM_EXISTENCE => 81,
+  :SYM_CARDINALITY => 82,
+  :SYM_ORDERED => 83,
+  :SYM_UNORDERED => 84,
+  :SYM_UNIQUE => 85,
+  :SYM_OCCURRENCES => 86,
+  :V_ISO8601_DATE_CONSTRAINT_PATTERN => 87,
+  :V_ISO8601_TIME_CONSTRAINT_PATTERN => 88,
+  :V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN => 89,
+  :START_TERM_CODE_CONSTRAINT => 90,
+  :END_TERM_CODE_CONSTRAINT => 91,
+  :TERM_CODE => 92,
+  :V_ISO8601_DURATION_CONSTRAINT_PATTERN => 93 }
+
+racc_nt_base = 94
 
 racc_use_result_var = true
@@ -1152,5 +1143,5 @@
   "c_complx_object_head",
   "SYM_MATCHES",
-  "Slash_code",
+  "REGEXP_HEAD",
   "REGEXP_BODY",
   "ERR_C_DOMAIN_TYPE",
@@ -1163,5 +1154,5 @@
   "SYM_INCLUDE",
   "SYM_EXCLUDE",
-  "\":\"",
+  "Colon_code",
   "SYM_INVARIANT",
   "V_ASSERTION_TEXT",
@@ -1191,10 +1182,11 @@
   "SYM_EXISTS",
   "SYM_NOT",
-  "\"=\"",
+  "Equal_code",
   "SYM_AND",
   "SYM_OR",
   "SYM_XOR",
   "SYM_IMPLIES",
-  "\"^\"",
+  "Slash_code",
+  "Caret_code",
   "SYM_EXISTENCE",
   "SYM_CARDINALITY",
@@ -1261,4 +1253,5 @@
   "c_attr_head",
   "c_attr_values",
+  "string_value",
   "c_existence",
   "c_cardinality",
@@ -1289,5 +1282,4 @@
   "term_code",
   "term_code_list_value",
-  "string_value",
   "integer_value",
   "real_value",
@@ -1319,6 +1311,6 @@
   "relative_path",
   "arithmetic_expression",
+  "arithmetic_node",
   "arithmetic_leaf",
-  "arithmetic_node",
   "path_segment",
   "existence_spec",
@@ -1539,5 +1531,6 @@
 module_eval(<<'.,.,', 'parser.y', 169)
   def _reduce_28(val, _values, result)
-        result = OpenEhr::AM::Archetype::ConstraintModel::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
+        @@logger.debug("#{__FILE__}:#{__LINE__}:c_complx_object = \n c_complx_object_head = #{val[0].to_yaml}")
+    result = OpenEhr::AM::Archetype::ConstraintModel::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
       c_complex_object.node_id = val[0][:c_complex_object_id][:local_term_code_ref]
       c_complex_object.rm_type_name = val[0][:c_complex_object_id][:type_identifier]
@@ -1549,5 +1542,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 177)
+module_eval(<<'.,.,', 'parser.y', 179)
   def _reduce_29(val, _values, result)
         result = OpenEhr::AM::Archetype::ConstraintModel::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
@@ -1561,13 +1554,14 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 188)
+module_eval(<<'.,.,', 'parser.y', 191)
   def _reduce_30(val, _values, result)
-        result = {:c_complex_object_id => val[0], :c_occurrences => val[1]}
-  
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'parser.y', 193)
+        @@logger.debug("#{__FILE__}:#{__LINE__}: c_complex_object_head: c_complex_object_id => #{val[0]}, c_occurrences => #{val[1]}")
+    result = {:c_complex_object_id => val[0], :c_occurrences => val[1]}
+  
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'parser.y', 197)
   def _reduce_31(val, _values, result)
         result = {:type_identifier => val[0]}
@@ -1577,5 +1571,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 197)
+module_eval(<<'.,.,', 'parser.y', 201)
   def _reduce_32(val, _values, result)
         result = {:type_identifier => val[0], :local_term_code_ref => val[1]}
@@ -1587,5 +1581,5 @@
 # reduce 33 omitted
 
-module_eval(<<'.,.,', 'parser.y', 203)
+module_eval(<<'.,.,', 'parser.y', 207)
   def _reduce_34(val, _values, result)
         result = OpenEhr::AM::Archetype::ConstraintModel::C_COMPLEX_OBJECT.new(:attributes => val[0])
@@ -1595,5 +1589,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 221)
+module_eval(<<'.,.,', 'parser.y', 225)
   def _reduce_35(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: c_complex_object = #{val[0].inspect} at #{@filename}:#{@lineno}")
@@ -1604,5 +1598,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 226)
+module_eval(<<'.,.,', 'parser.y', 230)
   def _reduce_36(val, _values, result)
         result = OpenEhr::AM::Archetype::ConstraintModel::ARCHETYPE_INTERNAL_REF.create do |archetype_internal_ref|
@@ -1616,5 +1610,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 234)
+module_eval(<<'.,.,', 'parser.y', 238)
   def _reduce_37(val, _values, result)
         result = val[0]
@@ -1624,5 +1618,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 238)
+module_eval(<<'.,.,', 'parser.y', 242)
   def _reduce_38(val, _values, result)
         result = OpenEhr::AM::Archetype::ConstraintModel::CONSTRAINT_REF.create do |constraint_ref|
@@ -1634,5 +1628,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 244)
+module_eval(<<'.,.,', 'parser.y', 248)
   def _reduce_39(val, _values, result)
         result = val[0]
@@ -1642,5 +1636,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 248)
+module_eval(<<'.,.,', 'parser.y', 252)
   def _reduce_40(val, _values, result)
         result = val[0]
@@ -1650,5 +1644,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 252)
+module_eval(<<'.,.,', 'parser.y', 256)
   def _reduce_41(val, _values, result)
         result = val[0]
@@ -1658,5 +1652,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 256)
+module_eval(<<'.,.,', 'parser.y', 260)
   def _reduce_42(val, _values, result)
         result = val[0]
@@ -1670,5 +1664,5 @@
 # reduce 44 omitted
 
-module_eval(<<'.,.,', 'parser.y', 289)
+module_eval(<<'.,.,', 'parser.y', 293)
   def _reduce_45(val, _values, result)
         result = val[1]
@@ -1678,5 +1672,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 295)
+module_eval(<<'.,.,', 'parser.y', 299)
   def _reduce_46(val, _values, result)
         result = {:type_identifier => val[1], :c_occurrences => val[2], :absolute_path => val[3] }
@@ -1688,5 +1682,5 @@
 # reduce 47 omitted
 
-module_eval(<<'.,.,', 'parser.y', 302)
+module_eval(<<'.,.,', 'parser.y', 306)
   def _reduce_48(val, _values, result)
         result = OpenEhr::AM::Archetype::ConstraintModel::ARCHETYPE_SLOT.create do |archetype_slot|
@@ -1701,5 +1695,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 311)
+module_eval(<<'.,.,', 'parser.y', 315)
   def _reduce_49(val, _values, result)
         result = {:c_archetype_slot_id => val[0],:c_occurrences => val[1]}
@@ -1709,5 +1703,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 316)
+module_eval(<<'.,.,', 'parser.y', 320)
   def _reduce_50(val, _values, result)
         result = val[1]
@@ -1721,5 +1715,5 @@
 # reduce 52 omitted
 
-module_eval(<<'.,.,', 'parser.y', 324)
+module_eval(<<'.,.,', 'parser.y', 328)
   def _reduce_53(val, _values, result)
         assert_at(__FILE__,__LINE__){val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_PRIMITIVE)}
@@ -1732,5 +1726,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 332)
+module_eval(<<'.,.,', 'parser.y', 336)
   def _reduce_54(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: c_integer = #{val[0]} at #{@filename}:#{@lineno}")
@@ -1745,5 +1739,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 341)
+module_eval(<<'.,.,', 'parser.y', 345)
   def _reduce_55(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: c_real = #{val[0]} at #{@filename}:#{@lineno}")
@@ -1754,5 +1748,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 346)
+module_eval(<<'.,.,', 'parser.y', 350)
   def _reduce_56(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: c_date = #{val[0]} at #{@filename}:#{@lineno}")
@@ -1763,5 +1757,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 351)
+module_eval(<<'.,.,', 'parser.y', 355)
   def _reduce_57(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: c_time = #{val[0]} at #{@filename}:#{@lineno}")
@@ -1772,5 +1766,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 356)
+module_eval(<<'.,.,', 'parser.y', 360)
   def _reduce_58(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: c_date_time = #{val[0]} at #{@filename}:#{@lineno}")
@@ -1781,5 +1775,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 361)
+module_eval(<<'.,.,', 'parser.y', 365)
   def _reduce_59(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: c_duration = #{val[0]} at #{@filename}:#{@lineno}")
@@ -1790,5 +1784,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 366)
+module_eval(<<'.,.,', 'parser.y', 370)
   def _reduce_60(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: c_string = #{val[0]} at #{@filename}:#{@lineno}")
@@ -1799,5 +1793,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 371)
+module_eval(<<'.,.,', 'parser.y', 375)
   def _reduce_61(val, _values, result)
         assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN)}
@@ -1811,5 +1805,5 @@
 # reduce 62 omitted
 
-module_eval(<<'.,.,', 'parser.y', 383)
+module_eval(<<'.,.,', 'parser.y', 387)
   def _reduce_63(val, _values, result)
         result = [val[0]]
@@ -1819,5 +1813,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 387)
+module_eval(<<'.,.,', 'parser.y', 391)
   def _reduce_64(val, _values, result)
         result = (val[0] << val[1])
@@ -1827,7 +1821,8 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 393)
+module_eval(<<'.,.,', 'parser.y', 397)
   def _reduce_65(val, _values, result)
-        assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::C_ATTRIBUTE)}
+        @@logger.debug("#{__FILE__}:#{__LINE__}:c_attribute: #{val[0]} matches #{val[3]}")
+    assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::C_ATTRIBUTE)}
     c_attribute = val[0]
     c_attribute.children = val[3]
@@ -1838,6 +1833,26 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 401)
+module_eval(<<'.,.,', 'parser.y', 405)
   def _reduce_66(val, _values, result)
+        @@logger.debug("c_attribute: #{val[0]} matches #{val[3]}}")
+    assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::C_ATTRIBUTE)}
+    result = val[0]
+  
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'parser.y', 412)
+  def _reduce_67(val, _values, result)
+        @@logger.debug("c_attribute: #{val[0]} matches #{val[5]}}")
+    assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::C_ATTRIBUTE)}
+    result = val[0]
+  
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'parser.y', 418)
+  def _reduce_68(val, _values, result)
         assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::C_ATTRIBUTE)}
     result = val[0]
@@ -1847,15 +1862,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 406)
-  def _reduce_67(val, _values, result)
-        assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::C_ATTRIBUTE)}
-    result = val[0]
-  
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'parser.y', 413)
-  def _reduce_68(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 425)
+  def _reduce_69(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}, c_existence = #{val[1]} at #{@filename}")
     result = OpenEhr::AM::Archetype::ConstraintModel::C_SINGLE_ATTRIBUTE.new(
@@ -1869,6 +1875,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 422)
-  def _reduce_69(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 434)
+  def _reduce_70(val, _values, result)
         assert_at(__FILE__,__LINE__){ val[2].instance_of?(OpenEhr::AM::Archetype::ConstraintModel::CARDINALITY) }
     @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER: #{val[0]}, c_existence = #{val[1]}, c_cardinality = #{val[2]} at #{@filename}") 
@@ -1883,6 +1889,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 433)
-  def _reduce_70(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 445)
+  def _reduce_71(val, _values, result)
         result = Array[val[0]]
   
@@ -1891,6 +1897,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 437)
-  def _reduce_71(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 449)
+  def _reduce_72(val, _values, result)
         result = (val[0] << val[1])
   
@@ -1899,6 +1905,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 441)
-  def _reduce_72(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 453)
+  def _reduce_73(val, _values, result)
         result = Array[val[0]]
   
@@ -1907,25 +1913,25 @@
 .,.,
 
-# reduce 73 omitted
-
-module_eval(<<'.,.,', 'parser.y', 449)
-  def _reduce_74(val, _values, result)
-        result = val[1]
-
-    result
-  end
-.,.,
-
-# reduce 75 omitted
-
-module_eval(<<'.,.,', 'parser.y', 457)
-  def _reduce_76(val, _values, result)
-        result = val[1]
-
-    result
-  end
-.,.,
-
-# reduce 77 omitted
+# reduce 74 omitted
+
+module_eval(<<'.,.,', 'parser.y', 459)
+  def _reduce_75(val, _values, result)
+        @@logger.debug("#{__FILE__}:#{__LINE__}: c_includes: assertions = #{val[1]}") 
+    result = val[1]
+
+    result
+  end
+.,.,
+
+# reduce 76 omitted
+
+module_eval(<<'.,.,', 'parser.y', 468)
+  def _reduce_77(val, _values, result)
+        @@logger.debug("#{__FILE__}:#{__LINE__}: c_excludes: assertions = #{val[1]}") 
+    result = val[1]
+  
+    result
+  end
+.,.,
 
 # reduce 78 omitted
@@ -1943,6 +1949,8 @@
 # reduce 84 omitted
 
-module_eval(<<'.,.,', 'parser.y', 477)
-  def _reduce_85(val, _values, result)
+# reduce 85 omitted
+
+module_eval(<<'.,.,', 'parser.y', 491)
+  def _reduce_86(val, _values, result)
         dadl_section = val[1]
     result = OpenEhr::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY.new
@@ -1952,10 +1960,10 @@
 .,.,
 
-# reduce 86 omitted
-
 # reduce 87 omitted
 
-module_eval(<<'.,.,', 'parser.y', 487)
-  def _reduce_88(val, _values, result)
+# reduce 88 omitted
+
+module_eval(<<'.,.,', 'parser.y', 501)
+  def _reduce_89(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section attr_vals = \n#{val[0].to_yaml}")
     result = val[0]
@@ -1965,6 +1973,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 492)
-  def _reduce_89(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 506)
+  def _reduce_90(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section complex_object_block = \n#{val[0].to_yaml}")
     result = val[0]
@@ -1974,6 +1982,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 499)
-  def _reduce_90(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 513)
+  def _reduce_91(val, _values, result)
         result = Array[val[0]]
   
@@ -1982,6 +1990,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 503)
-  def _reduce_91(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 517)
+  def _reduce_92(val, _values, result)
         result = (val[0] << val[1])
   
@@ -1990,6 +1998,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 507)
-  def _reduce_92(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 521)
+  def _reduce_93(val, _values, result)
         result = (val[0] << val[2])
   
@@ -1998,6 +2006,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 512)
-  def _reduce_93(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 526)
+  def _reduce_94(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}:attr_val\n attr_id = #{val[0]}, object_block = #{val[1]}")
     result = {:attr_id => val[0], :object_block => val[2]}
@@ -2007,6 +2015,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 518)
-  def _reduce_94(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 532)
+  def _reduce_95(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}")
     result = val[0]
@@ -2016,15 +2024,7 @@
 .,.,
 
-# reduce 95 omitted
-
-module_eval(<<'.,.,', 'parser.y', 525)
-  def _reduce_96(val, _values, result)
-        result = val[0]
-  
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'parser.y', 529)
+# reduce 96 omitted
+
+module_eval(<<'.,.,', 'parser.y', 539)
   def _reduce_97(val, _values, result)
         result = val[0]
@@ -2034,5 +2034,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 534)
+module_eval(<<'.,.,', 'parser.y', 543)
   def _reduce_98(val, _values, result)
         result = val[0]
@@ -2042,5 +2042,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 538)
+module_eval(<<'.,.,', 'parser.y', 548)
   def _reduce_99(val, _values, result)
         result = val[0]
@@ -2050,6 +2050,14 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 543)
+module_eval(<<'.,.,', 'parser.y', 552)
   def _reduce_100(val, _values, result)
+        result = val[0]
+  
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'parser.y', 557)
+  def _reduce_101(val, _values, result)
         result = {:untyped_multiple_attr_object_block => val[0]}
   
@@ -2058,6 +2066,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 547)
-  def _reduce_101(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 561)
+  def _reduce_102(val, _values, result)
         result = {:type_identifier => val[0], :untyped_multiple_attr_object_block => val[1]}
   
@@ -2066,6 +2074,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 552)
-  def _reduce_102(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 566)
+  def _reduce_103(val, _values, result)
         result = {:multiple_attr_object_block_head => val[0], :keyed_objects => val[1]}
   
@@ -2074,6 +2082,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 557)
-  def _reduce_103(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 571)
+  def _reduce_104(val, _values, result)
         result = val[0]
   
@@ -2082,6 +2090,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 562)
-  def _reduce_104(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 576)
+  def _reduce_105(val, _values, result)
         result = Array[val[0]]
   
@@ -2090,6 +2098,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 566)
-  def _reduce_105(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 580)
+  def _reduce_106(val, _values, result)
         result = (val[0] << val[1])
   
@@ -2098,6 +2106,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 571)
-  def _reduce_106(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 585)
+  def _reduce_107(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: keyed_object = #{val[0]} at #{@filename}:#{@lineno}")
     result = {:object_key => val[0], :object_block => val[2]}
@@ -2107,6 +2115,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 577)
-  def _reduce_107(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 591)
+  def _reduce_108(val, _values, result)
         @@logger.debug("object_key: [#{val[1]}] at #{@filename}:#{@lineno}")
     result = val[1]
@@ -2116,6 +2124,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 583)
-  def _reduce_108(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 597)
+  def _reduce_109(val, _values, result)
         result = {:untyped_single_attr_object_block => val[0]}
   
@@ -2124,6 +2132,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 587)
-  def _reduce_109(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 601)
+  def _reduce_110(val, _values, result)
         result = {:type_identifier => val[0], :untyped_single_attr_object_block => val[1]}
   
@@ -2132,6 +2140,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 592)
-  def _reduce_110(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 606)
+  def _reduce_111(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: single_attr_object_complex_head = #{val[0]} at #{@filename}:#{@lineno}")
     result = {:single_attr_object_complex_head => val[0]}
@@ -2141,6 +2149,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 597)
-  def _reduce_111(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 611)
+  def _reduce_112(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: attr_vals = #{val[1]} at #{@filename}:#{@lineno}")
     result = {:single_attr_object_complex_head => val[0], :attr_vals => val[1]}
@@ -2150,8 +2158,8 @@
 .,.,
 
-# reduce 112 omitted
-
-module_eval(<<'.,.,', 'parser.y', 603)
-  def _reduce_113(val, _values, result)
+# reduce 113 omitted
+
+module_eval(<<'.,.,', 'parser.y', 617)
+  def _reduce_114(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: untyped_primitive_object_block = #{val[0]} at #{@filename}:#{@lineno}")
     result = {:untyped_primitive_object_block => val[0]}
@@ -2161,6 +2169,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 608)
-  def _reduce_114(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 622)
+  def _reduce_115(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: type_identifier = #{val[0]}, untyped_primitive_object_block = #{val[1]} at #{@filename}:#{@lineno}")
     result = {:type_identifier => val[0], :untyped_primitive_object_block => val[1]}
@@ -2170,6 +2178,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 613)
-  def _reduce_115(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 627)
+  def _reduce_116(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: primitive_object_block = <#{val[1]}> at #{@filename}:#{@lineno}")
     result = val[1]
@@ -2179,13 +2187,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 618)
-  def _reduce_116(val, _values, result)
-        result = val[0]
-  
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'parser.y', 622)
+module_eval(<<'.,.,', 'parser.y', 632)
   def _reduce_117(val, _values, result)
         result = val[0]
@@ -2195,5 +2195,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 626)
+module_eval(<<'.,.,', 'parser.y', 636)
   def _reduce_118(val, _values, result)
         result = val[0]
@@ -2203,5 +2203,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 630)
+module_eval(<<'.,.,', 'parser.y', 640)
   def _reduce_119(val, _values, result)
         result = val[0]
@@ -2211,5 +2211,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 634)
+module_eval(<<'.,.,', 'parser.y', 644)
   def _reduce_120(val, _values, result)
         result = val[0]
@@ -2219,6 +2219,14 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 638)
+module_eval(<<'.,.,', 'parser.y', 648)
   def _reduce_121(val, _values, result)
+        result = val[0]
+  
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'parser.y', 652)
+  def _reduce_122(val, _values, result)
         @@logger.debug("string_value: #{val[0]} at #{@filename}:#{@lineno}")
     result = val[0]
@@ -2228,6 +2236,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 643)
-  def _reduce_122(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 657)
+  def _reduce_123(val, _values, result)
         @@logger.debug("integer_value: #{val[0]} at #{@filename}:#{@lineno}")
     result = val[0]
@@ -2237,6 +2245,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 648)
-  def _reduce_123(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 662)
+  def _reduce_124(val, _values, result)
         @@logger.debug("real_value: #{val[0]} at #{@filename}:#{@lineno}")
     result = val[0]
@@ -2246,6 +2254,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 653)
-  def _reduce_124(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 667)
+  def _reduce_125(val, _values, result)
         @@logger.debug("boolean_value: #{val[0]} at #{@filename}:#{@lineno}")
     result = val[0]
@@ -2255,6 +2263,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 658)
-  def _reduce_125(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 672)
+  def _reduce_126(val, _values, result)
         @@logger.debug("character_value: #{val[0]} at #{@filename}:#{@lineno}")
     result = val[0]
@@ -2264,6 +2272,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 663)
-  def _reduce_126(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 677)
+  def _reduce_127(val, _values, result)
         @@logger.debug("date_value: #{val[0]} at #{@filename}:#{@lineno}")
     result = val[0]
@@ -2273,6 +2281,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 668)
-  def _reduce_127(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 682)
+  def _reduce_128(val, _values, result)
         @@logger.debug("time_value: #{val[0]} at #{@filename}:#{@lineno}")
     result = val[0]
@@ -2282,6 +2290,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 673)
-  def _reduce_128(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 687)
+  def _reduce_129(val, _values, result)
         @@logger.debug("date_time_value: #{val[0]} at #{@filename}:#{@lineno}")
     result = val[0]
@@ -2291,6 +2299,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 678)
-  def _reduce_129(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 692)
+  def _reduce_130(val, _values, result)
         @@logger.debug("duration_value: #{val[0]} at #{@filename}:#{@lineno}")
     result = val[0]
@@ -2300,6 +2308,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 683)
-  def _reduce_130(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 697)
+  def _reduce_131(val, _values, result)
         @@logger.debug("uri_value: #{val[0]} at #{@filename}:#{@lineno}")
     result = val[0]
@@ -2309,6 +2317,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 689)
-  def _reduce_131(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 703)
+  def _reduce_132(val, _values, result)
         @@logger.debug("string_list_value: #{val[0]} at #{@filename}:#{@lineno}")
     result = val[0]
@@ -2318,13 +2326,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 694)
-  def _reduce_132(val, _values, result)
-        result = val[0]
-  
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'parser.y', 698)
+module_eval(<<'.,.,', 'parser.y', 708)
   def _reduce_133(val, _values, result)
         result = val[0]
@@ -2334,5 +2334,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 702)
+module_eval(<<'.,.,', 'parser.y', 712)
   def _reduce_134(val, _values, result)
         result = val[0]
@@ -2342,5 +2342,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 706)
+module_eval(<<'.,.,', 'parser.y', 716)
   def _reduce_135(val, _values, result)
         result = val[0]
@@ -2350,5 +2350,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 710)
+module_eval(<<'.,.,', 'parser.y', 720)
   def _reduce_136(val, _values, result)
         result = val[0]
@@ -2358,5 +2358,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 714)
+module_eval(<<'.,.,', 'parser.y', 724)
   def _reduce_137(val, _values, result)
         result = val[0]
@@ -2366,5 +2366,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 718)
+module_eval(<<'.,.,', 'parser.y', 728)
   def _reduce_138(val, _values, result)
         result = val[0]
@@ -2374,5 +2374,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 722)
+module_eval(<<'.,.,', 'parser.y', 732)
   def _reduce_139(val, _values, result)
         result = val[0]
@@ -2382,5 +2382,11 @@
 .,.,
 
-# reduce 140 omitted
+module_eval(<<'.,.,', 'parser.y', 736)
+  def _reduce_140(val, _values, result)
+        result = val[0]
+  
+    result
+  end
+.,.,
 
 # reduce 141 omitted
@@ -2394,6 +2400,8 @@
 # reduce 145 omitted
 
-module_eval(<<'.,.,', 'parser.y', 734)
-  def _reduce_146(val, _values, result)
+# reduce 146 omitted
+
+module_eval(<<'.,.,', 'parser.y', 748)
+  def _reduce_147(val, _values, result)
         @@logger.debug("V_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
     result = val[0]
@@ -2403,6 +2411,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 739)
-  def _reduce_147(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 753)
+  def _reduce_148(val, _values, result)
         @@logger.debug("V_GENERIC_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
     result = val[0]
@@ -2412,6 +2420,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 745)
-  def _reduce_148(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 759)
+  def _reduce_149(val, _values, result)
         @@logger.debug("V_STRING: #{val[0]} at #{@filename}:#{@lineno}")
     result = val[0]
@@ -2421,6 +2429,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 751)
-  def _reduce_149(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 765)
+  def _reduce_150(val, _values, result)
         result = [val[0],val[2]]
   
@@ -2429,6 +2437,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 755)
-  def _reduce_150(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 769)
+  def _reduce_151(val, _values, result)
         result = val[0] << val[2]
   
@@ -2437,6 +2445,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 759)
-  def _reduce_151(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 773)
+  def _reduce_152(val, _values, result)
         result = val[0]
   
@@ -2445,18 +2453,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 764)
-  def _reduce_152(val, _values, result)
-        begin
-      integer = Integer(val[0])
-    rescue
-      raise
-    end
-    result = integer
-  
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'parser.y', 773)
+module_eval(<<'.,.,', 'parser.y', 778)
   def _reduce_153(val, _values, result)
         begin
@@ -2471,5 +2466,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 782)
+module_eval(<<'.,.,', 'parser.y', 787)
   def _reduce_154(val, _values, result)
         begin
@@ -2478,4 +2473,17 @@
       raise
     end
+    result = integer
+  
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'parser.y', 796)
+  def _reduce_155(val, _values, result)
+        begin
+      integer = Integer(val[0])
+    rescue
+      raise
+    end
     result = - integer
   
@@ -2484,6 +2492,4 @@
 .,.,
 
-# reduce 155 omitted
-
 # reduce 156 omitted
 
@@ -2508,6 +2514,8 @@
 # reduce 166 omitted
 
-module_eval(<<'.,.,', 'parser.y', 808)
-  def _reduce_167(val, _values, result)
+# reduce 167 omitted
+
+module_eval(<<'.,.,', 'parser.y', 822)
+  def _reduce_168(val, _values, result)
         begin
       real = Float(val[0])
@@ -2521,6 +2529,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 817)
-  def _reduce_168(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 831)
+  def _reduce_169(val, _values, result)
         begin
       real = Float(val[1])
@@ -2534,6 +2542,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 826)
-  def _reduce_169(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 840)
+  def _reduce_170(val, _values, result)
         begin
       real = Float(val[1])
@@ -2547,6 +2555,4 @@
 .,.,
 
-# reduce 170 omitted
-
 # reduce 171 omitted
 
@@ -2571,6 +2577,8 @@
 # reduce 181 omitted
 
-module_eval(<<'.,.,', 'parser.y', 851)
-  def _reduce_182(val, _values, result)
+# reduce 182 omitted
+
+module_eval(<<'.,.,', 'parser.y', 865)
+  def _reduce_183(val, _values, result)
         result = true
   
@@ -2579,6 +2587,6 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 855)
-  def _reduce_183(val, _values, result)
+module_eval(<<'.,.,', 'parser.y', 869)
+  def _reduce_184(val, _values, result)
         result = false
   
@@ -2587,6 +2595,4 @@
 .,.,
 
-# reduce 184 omitted
-
 # reduce 185 omitted
 
@@ -2601,6 +2607,8 @@
 # reduce 190 omitted
 
-module_eval(<<'.,.,', 'parser.y', 870)
-  def _reduce_191(val, _values, result)
+# reduce 191 omitted
+
+module_eval(<<'.,.,', 'parser.y', 884)
+  def _reduce_192(val, _values, result)
         result = val[0]
   
@@ -2609,6 +2617,4 @@
 .,.,
 
-# reduce 192 omitted
-
 # reduce 193 omitted
 
@@ -2659,6 +2665,8 @@
 # reduce 216 omitted
 
-module_eval(<<'.,.,', 'parser.y', 905)
-  def _reduce_217(val, _values, result)
+# reduce 217 omitted
+
+module_eval(<<'.,.,', 'parser.y', 919)
+  def _reduce_218(val, _values, result)
         @@logger.debug("V_ISO8601_EXTENDED_DATE_TIME: #{val[0]} at #{@filename}:#{@lineno}")
     result = val[0]
@@ -2668,6 +2676,4 @@
 .,.,
 
-# reduce 218 omitted
-
 # reduce 219 omitted
 
@@ -2692,6 +2698,8 @@
 # reduce 229 omitted
 
-module_eval(<<'.,.,', 'parser.y', 925)
-  def _reduce_230(val, _values, result)
+# reduce 230 omitted
+
+module_eval(<<'.,.,', 'parser.y', 939)
+  def _reduce_231(val, _values, result)
         @@logger.debug("V_ISO8601_DURATION: #{val[0]} at #{@filename}:#{@lineno}")
     result = val[0]
@@ -2701,6 +2709,4 @@
 .,.,
 
-# reduce 231 omitted
-
 # reduce 232 omitted
 
@@ -2725,6 +2731,8 @@
 # reduce 242 omitted
 
-module_eval(<<'.,.,', 'parser.y', 945)
-  def _reduce_243(val, _values, result)
+# reduce 243 omitted
+
+module_eval(<<'.,.,', 'parser.y', 959)
+  def _reduce_244(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: V_QUALIFIED_TERM_CODE_REF = #{val[0]} at #{@filename}:#{@lineno}")
     result = val[0]
@@ -2734,12 +2742,12 @@
 .,.,
 
-# reduce 244 omitted
-
 # reduce 245 omitted
 
 # reduce 246 omitted
 
-module_eval(<<'.,.,', 'parser.y', 955)
-  def _reduce_247(val, _values, result)
+# reduce 247 omitted
+
+module_eval(<<'.,.,', 'parser.y', 969)
+  def _reduce_248(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: V_URI = #{val[0]} at #{@filename}:#{@lineno}")
     result = val[0]
@@ -2749,6 +2757,4 @@
 .,.,
 
-# reduce 248 omitted
-
 # reduce 249 omitted
 
@@ -2767,5 +2773,12 @@
 # reduce 256 omitted
 
-# reduce 257 omitted
+module_eval(<<'.,.,', 'parser.y', 992)
+  def _reduce_257(val, _values, result)
+        @@logger.debug("#{__FILE__}:#{__LINE__}, boolean_node:  relative_path = #{val[0]}, regexp_body => #{val[3]} at #{@filename}") 
+    result = {:relative_path => val[0], :regexp_body => val[3]}
+  
+    result
+  end
+.,.,
 
 # reduce 258 omitted
@@ -2825,25 +2838,41 @@
 # reduce 285 omitted
 
-# reduce 286 omitted
-
-# reduce 287 omitted
-
-module_eval(<<'.,.,', 'parser.y', 1026)
+module_eval(<<'.,.,', 'parser.y', 1039)
+  def _reduce_286(val, _values, result)
+        @@logger.debug("#{__FILE__}:#{__LINE__}, relative_path = #{val[0]}") 
+    result = val[0]
+  
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'parser.y', 1044)
+  def _reduce_287(val, _values, result)
+        @@logger.debug("#{__FILE__}:#{__LINE__}, relative_path = #{val[0]}/#{val[2]}") 
+    result = [val[0],val[2]]
+  
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'parser.y', 1050)
   def _reduce_288(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}") 
-  
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'parser.y', 1030)
+    result = [val[0],val[1]]
+  
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'parser.y', 1055)
   def _reduce_289(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}") 
-  
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'parser.y', 1041)
+    result = val[0]
+  
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'parser.y', 1067)
   def _reduce_290(val, _values, result)
         result = Range.new(1,1)
@@ -2853,5 +2882,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1045)
+module_eval(<<'.,.,', 'parser.y', 1071)
   def _reduce_291(val, _values, result)
         result = val[3]
@@ -2861,5 +2890,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1050)
+module_eval(<<'.,.,', 'parser.y', 1076)
   def _reduce_292(val, _values, result)
         begin
@@ -2874,5 +2903,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1059)
+module_eval(<<'.,.,', 'parser.y', 1085)
   def _reduce_293(val, _values, result)
         begin
@@ -2888,5 +2917,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1070)
+module_eval(<<'.,.,', 'parser.y', 1096)
   def _reduce_294(val, _values, result)
         result = OpenEhr::AM::Archetype::ConstraintModel::CARDINALITY.new
@@ -2912,5 +2941,5 @@
 # reduce 302 omitted
 
-module_eval(<<'.,.,', 'parser.y', 1084)
+module_eval(<<'.,.,', 'parser.y', 1110)
   def _reduce_303(val, _values, result)
         result = val[0]
@@ -2920,5 +2949,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1088)
+module_eval(<<'.,.,', 'parser.y', 1114)
   def _reduce_304(val, _values, result)
         result = val[0]
@@ -2930,5 +2959,5 @@
 # reduce 305 omitted
 
-module_eval(<<'.,.,', 'parser.y', 1095)
+module_eval(<<'.,.,', 'parser.y', 1121)
   def _reduce_306(val, _values, result)
         case val[3]
@@ -2945,5 +2974,5 @@
 # reduce 307 omitted
 
-module_eval(<<'.,.,', 'parser.y', 1106)
+module_eval(<<'.,.,', 'parser.y', 1132)
   def _reduce_308(val, _values, result)
         result = val[0]
@@ -2953,5 +2982,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1110)
+module_eval(<<'.,.,', 'parser.y', 1136)
   def _reduce_309(val, _values, result)
         result = OpenEhr::RM::Support::AssumedTypes::Interval.new(val[0], val[2])
@@ -3047,5 +3076,5 @@
 # reduce 352 omitted
 
-module_eval(<<'.,.,', 'parser.y', 1176)
+module_eval(<<'.,.,', 'parser.y', 1202)
   def _reduce_353(val, _values, result)
         result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN.new(:true_valid => true)
@@ -3055,5 +3084,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1180)
+module_eval(<<'.,.,', 'parser.y', 1206)
   def _reduce_354(val, _values, result)
         result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN.new(:true_valid => false)
@@ -3063,5 +3092,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1184)
+module_eval(<<'.,.,', 'parser.y', 1210)
   def _reduce_355(val, _values, result)
         result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN.new(:true_valid => true,:false_valid => false)
@@ -3071,5 +3100,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1188)
+module_eval(<<'.,.,', 'parser.y', 1214)
   def _reduce_356(val, _values, result)
         result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN.new(:true_valid => false,:false_valid => true)
@@ -3079,5 +3108,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1193)
+module_eval(<<'.,.,', 'parser.y', 1219)
   def _reduce_357(val, _values, result)
         result = val[0]
@@ -3087,13 +3116,14 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1197)
+module_eval(<<'.,.,', 'parser.y', 1223)
   def _reduce_358(val, _values, result)
-        raise 'Not implemented yet'
-  
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'parser.y', 1201)
+        result = val[0]
+    #raise 'Not implemented yet'
+  
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'parser.y', 1228)
   def _reduce_359(val, _values, result)
         raise 'Not implemented yet'
@@ -3113,5 +3143,5 @@
 # reduce 364 omitted
 
-module_eval(<<'.,.,', 'parser.y', 1213)
+module_eval(<<'.,.,', 'parser.y', 1240)
   def _reduce_365(val, _values, result)
         @in_interval = false
@@ -3122,5 +3152,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1220)
+module_eval(<<'.,.,', 'parser.y', 1247)
   def _reduce_366(val, _values, result)
           result = val[0]
@@ -3130,5 +3160,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1224)
+module_eval(<<'.,.,', 'parser.y', 1251)
   def _reduce_367(val, _values, result)
           result = val[0]
@@ -3138,5 +3168,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1230)
+module_eval(<<'.,.,', 'parser.y', 1257)
   def _reduce_368(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}, START_TERM_CODE_CONSTRAINT = #{val[0]} at #{@filename}")
@@ -3155,5 +3185,5 @@
 # reduce 371 omitted
 
-module_eval(<<'.,.,', 'parser.y', 1246)
+module_eval(<<'.,.,', 'parser.y', 1273)
   def _reduce_372(val, _values, result)
           result = val[0]
@@ -3163,5 +3193,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1251)
+module_eval(<<'.,.,', 'parser.y', 1278)
   def _reduce_373(val, _values, result)
           result = val[0]
@@ -3171,5 +3201,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1255)
+module_eval(<<'.,.,', 'parser.y', 1282)
   def _reduce_374(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{word} at #{@filename}")
@@ -3180,5 +3210,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1266)
+module_eval(<<'.,.,', 'parser.y', 1293)
   def _reduce_375(val, _values, result)
         result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_DURATION.new #val[0]
Index: /ruby/trunk/lib/adl_parser/lib/parser.y
===================================================================
--- /ruby/trunk/lib/adl_parser/lib/parser.y	(revision 320)
+++ /ruby/trunk/lib/adl_parser/lib/parser.y	(revision 321)
@@ -164,8 +164,9 @@
 #  | error
 
-#c_complex_object: c_complex_object_head SYM_MATCHES SYM_START_CBLOCK c_complex_object_body SYM_END_CBLOCK
-#c_complex_object: c_complx_object_head SYM_MATCHES START_REGEXP_BLOCK REGEXP_BODY END_REGEXP_BLOCK # added by akimichi
-c_complex_object: c_complx_object_head SYM_MATCHES Slash_code REGEXP_BODY Slash_code # added by akimichi
-  { 
+### c_complex_object: c_complex_object_head SYM_MATCHES SYM_START_CBLOCK c_complex_object_body SYM_END_CBLOCK
+#  | c_complx_object_head SYM_MATCHES Slash_code REGEXP_BODY Slash_code # added by akimichi
+c_complex_object:  c_complx_object_head SYM_MATCHES REGEXP_HEAD REGEXP_BODY # added by akimichi
+  {
+    @@logger.debug("#{__FILE__}:#{__LINE__}:c_complx_object = \n c_complx_object_head = #{val[0].to_yaml}")
     result = OpenEhr::AM::Archetype::ConstraintModel::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
       c_complex_object.node_id = val[0][:c_complex_object_id][:local_term_code_ref]
@@ -174,5 +175,6 @@
     end
   }
-    | c_complex_object_head SYM_MATCHES SYM_START_CBLOCK c_complex_object_body SYM_END_CBLOCK
+#c_complex_object: c_complex_object_head SYM_MATCHES SYM_START_CBLOCK c_complex_object_body SYM_END_CBLOCK
+  | c_complex_object_head SYM_MATCHES SYM_START_CBLOCK c_complex_object_body SYM_END_CBLOCK
   { 
     result = OpenEhr::AM::Archetype::ConstraintModel::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
@@ -182,4 +184,5 @@
     end
   }
+
 #    | c_complex_object_head error SYM_END_CBLOCK
 #    | c_complex_object_head SYM_MATCHES SYM_START_CBLOCK c_complex_object_body c_invariants SYM_END_CBLOCK
@@ -187,4 +190,5 @@
 c_complex_object_head: c_complex_object_id c_occurrences
   {
+    @@logger.debug("#{__FILE__}:#{__LINE__}: c_complex_object_head: c_complex_object_id => #{val[0]}, c_occurrences => #{val[1]}")
     result = {:c_complex_object_id => val[0], :c_occurrences => val[1]}
   }
@@ -392,4 +396,5 @@
 c_attribute: c_attr_head SYM_MATCHES SYM_START_CBLOCK c_attr_values SYM_END_CBLOCK
   { 
+    @@logger.debug("#{__FILE__}:#{__LINE__}:c_attribute: #{val[0]} matches #{val[3]}")
     assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::C_ATTRIBUTE)}
     c_attribute = val[0]
@@ -397,7 +402,14 @@
     result = c_attribute
   }
-#  | c_attr_head SYM_MATCHES START_REGEXP_BLOCK REGEXP_BODY END_REGEXP_BLOCK # added by akimichi
-  | c_attr_head SYM_MATCHES Slash_code REGEXP_BODY Slash_code # added by akimichi
-  { 
+  | c_attr_head SYM_MATCHES REGEXP_HEAD REGEXP_BODY SYM_END_CBLOCK # added by akimichi
+  {
+    @@logger.debug("c_attribute: #{val[0]} matches #{val[3]}}")
+    assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::C_ATTRIBUTE)}
+    result = val[0]
+  }
+  | c_attr_head SYM_MATCHES REGEXP_HEAD REGEXP_BODY Semicolon_code string_value SYM_END_CBLOCK # added by akimichi
+
+  {
+    @@logger.debug("c_attribute: #{val[0]} matches #{val[5]}}")
     assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::C_ATTRIBUTE)}
     result = val[0]
@@ -443,26 +455,28 @@
   }
 
-### c_includes: #-- Empty
-###     | SYM_INCLUDE assertions
 c_includes: #-- Empty
-    | SYM_INCLUDE invariants
+    | SYM_INCLUDE assertions
 {
+    @@logger.debug("#{__FILE__}:#{__LINE__}: c_includes: assertions = #{val[1]}") 
     result = val[1]
 }
-
+### c_includes: #-- Empty
+###     | SYM_INCLUDE invariants
+
+c_excludes: #-- Empty
+    | SYM_EXCLUDE assertions
+  {
+    @@logger.debug("#{__FILE__}:#{__LINE__}: c_excludes: assertions = #{val[1]}") 
+    result = val[1]
+  }
 ### c_excludes: #-- Empty
-###     | SYM_EXCLUDE assertions
-c_excludes: #-- Empty
-    | SYM_EXCLUDE invariants
-{
-    result = val[1]
-}
+###     | SYM_EXCLUDE invariants
 
 invariants: invariant
   | invariants invariant
 
-invariant: any_identifier ':' boolean_expression
+invariant: any_identifier Colon_code boolean_expression
   | boolean_expression
-  | any_identifier ':' error
+  | any_identifier Colon_code error
 
 arch_invariant: #-- no invariant ok
@@ -964,7 +978,7 @@
   | assertions assertion
 
-assertion: any_identifier ':' boolean_expression
+assertion: any_identifier Colon_code boolean_expression
   | boolean_expression
-  | any_identifier ':' error
+  | any_identifier Colon_code error
 
 #---------------------- expressions ---------------------
@@ -974,11 +988,14 @@
 
 boolean_node: SYM_EXISTS absolute_path
-#  | absolute_path
-  | SYM_EXISTS error
+#  | SYM_EXISTS error
+  | relative_path SYM_MATCHES REGEXP_HEAD REGEXP_BODY SYM_END_CBLOCK# added by akimichi
+  {
+    @@logger.debug("#{__FILE__}:#{__LINE__}, boolean_node:  relative_path = #{val[0]}, regexp_body => #{val[3]} at #{@filename}") 
+    result = {:relative_path => val[0], :regexp_body => val[3]}
+  }
   | relative_path SYM_MATCHES SYM_START_CBLOCK c_primitive SYM_END_CBLOCK
-#  | relative_path SYM_MATCHES START_REGEXP_BLOCK REGEXP_BODY END_REGEXP_BLOCK # added by akimichi
-  | relative_path SYM_MATCHES Slash_code REGEXP_BODY Slash_code # added by akimichi
+#  | relative_path SYM_MATCHES SYM_START_CBLOCK Slash_code REGEXP_BODY Slash_code SYM_END_CBLOCK# added by akimichi
   | SYM_NOT boolean_leaf
-  | arithmetic_expression '=' arithmetic_expression
+  | arithmetic_expression Equal_code arithmetic_expression
   | arithmetic_expression SYM_NE arithmetic_expression
   | arithmetic_expression SYM_LT arithmetic_expression
@@ -995,12 +1012,9 @@
   | SYM_FALSE
 
-arithmetic_expression: arithmetic_leaf
-  | arithmetic_node
-
 arithmetic_node: arithmetic_expression '+' arithmetic_leaf
-  | arithmetic_expression '-' arithmetic_leaf
+  | arithmetic_expression Minus_code arithmetic_leaf
   | arithmetic_expression Star_code arithmetic_leaf
   | arithmetic_expression Slash_code arithmetic_leaf
-  | arithmetic_expression '^' arithmetic_leaf
+  | arithmetic_expression Caret_code arithmetic_leaf
 
 arithmetic_leaf:  Left_parenthesis_code arithmetic_expression Right_parenthesis_code
@@ -1009,4 +1023,6 @@
   | absolute_path
 
+arithmetic_expression: arithmetic_leaf
+  | arithmetic_node
 
 #--------------- THE FOLLOWING SOURCE TAKEN FROM OG_PATH_VALIDATOR.Y -------------
@@ -1021,13 +1037,23 @@
 
 relative_path: path_segment
+  {
+    @@logger.debug("#{__FILE__}:#{__LINE__}, relative_path = #{val[0]}") 
+    result = val[0]
+  }
   | relative_path Slash_code path_segment
+  {
+    @@logger.debug("#{__FILE__}:#{__LINE__}, relative_path = #{val[0]}/#{val[2]}") 
+    result = [val[0],val[2]]
+  }
 
 path_segment: V_ATTRIBUTE_IDENTIFIER V_LOCAL_TERM_CODE_REF
   {
     @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}") 
+    result = [val[0],val[1]]
   }
   | V_ATTRIBUTE_IDENTIFIER
   {
     @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}") 
+    result = val[0]
   }
 
@@ -1196,5 +1222,6 @@
   | c_boolean_spec Semicolon_code boolean_value
   {
-    raise 'Not implemented yet'
+    result = val[0]
+    #raise 'Not implemented yet'
   }
   | c_boolean_spec Semicolon_code error
Index: /ruby/trunk/lib/adl_parser/test/parser_test.rb
===================================================================
--- /ruby/trunk/lib/adl_parser/test/parser_test.rb	(revision 320)
+++ /ruby/trunk/lib/adl_parser/test/parser_test.rb	(revision 321)
@@ -6,254 +6,264 @@
   end
 
-#   must "assert parser instance" do
-#     assert_instance_of ::OpenEhr::ADL::Parser,@parser
-#   end
-
-#   must "openEHR-EHR-CLUSTER.exam-uterus.v1.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-uterus.v1.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-uterus.v11')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
-#   must "openEHR-EHR-SECTION.summary.v1.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-SECTION.summary.v1.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-SECTION.summary.v1')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
-
-#   must "openEHR-EHR-ACTION.referral.v1.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-ACTION.referral.v1.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-ACTION.referral.v1')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
-#   must "openEHR-EHR-CLUSTER.auscultation-chest.v1.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.auscultation-chest.v1.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.auscultation-chest.v1')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
-#   must "openEHR-EHR-CLUSTER.auscultation.v1.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.auscultation.v1.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.auscultation.v1')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
-
-#   must "openEHR-EHR-CLUSTER.exam-abdomen.v1.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-abdomen.v1.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-abdomen.v1')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
-#   must "openEHR-EHR-CLUSTER.exam-chest.v1.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-chest.v1.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-chest.v1')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
-#   must "openEHR-EHR-CLUSTER.exam-generic-joint.v1.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-generic-joint.v1.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-generic-joint.v1')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
-#   must "openEHR-EHR-CLUSTER.exam-generic-lymphnode.v1.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-generic-lymphnode.v1.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-generic-lymphnode.v1')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
-#   must "openEHR-EHR-CLUSTER.exam-generic-mass.v1.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-generic-mass.v1.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-generic-mass.v1')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
-#   must "openEHR-EHR-CLUSTER.exam-generic.v1.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-generic.v1.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-generic.v1')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
-#   must "openEHR-EHR-CLUSTER.exam-nervous_system.v1.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-nervous_system.v1.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-nervous_system.v1')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
-#   must "openEHR-EHR-COMPOSITION.discharge.v1draft.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-COMPOSITION.discharge.v1draft.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-COMPOSITION.discharge.v1draft')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
-
-#   must "openEHR-EHR-INSTRUCTION.medication.v1.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-INSTRUCTION.medication.v1.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-INSTRUCTION.medication.v1')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
-#   must "openEHR-EHR-INSTRUCTION.referral.v1.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-INSTRUCTION.referral.v1.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-INSTRUCTION.referral.v1')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
-#   must "openEHR-EHR-ITEM_TREE.Laboratory_request.v1.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-ITEM_TREE.Laboratory_request.v1.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-ITEM_TREE.Laboratory_request.v1')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
-
-#   must "openEHR-EHR-OBSERVATION.apgar.v1.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-OBSERVATION.apgar.v1.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-OBSERVATION.apgar.v1')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
-#   must "openEHR-EHR-SECTION.findings.v1.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-SECTION.findings.v1.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-SECTION.findings.v1')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
-#   must "openEHR-EHR-SECTION.reason_for_encounter.v1.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-SECTION.reason_for_encounter.v1.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-SECTION.reason_for_encounter.v1')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
-
-#   must "openEHR-EHR-SECTION.vital_signs.v1.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-SECTION.vital_signs.v1.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-SECTION.vital_signs.v1')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
-
-# # C_DV_QUANTITY parse error
-#   must "openEHR-EHR-EVALUATION.adverse.v1.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-EVALUATION.adverse.v1.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-EVALUATION.adverse.v1')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
-#   must "openEHR-EHR-CLUSTER.dimensions-circumference.v1.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.dimensions-circumference.v1.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.dimensions-circumference.v1')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
-#   must "openEHR-EHR-CLUSTER.dimensions.v1.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.dimensions.v1.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.dimensions.v1')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
-#   must "openEHR-EHR-CLUSTER.exam-fetus.v1.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-fetus.v1.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-fetus.v1')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
-#   must "openEHR-EHR-CLUSTER.exam-uterine_cervix.v1.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-uterine_cervix.v1.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-uterine_cervix.v1')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
-#   must "openEHR-EHR-OBSERVATION.body_mass_index.v1.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-OBSERVATION.body_mass_index.v1.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-OBSERVATION.body_mass_index.v1')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
-#   must "openEHR-EHR-ACTION.imaging.v1.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-ACTION.imaging.v1.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-ACTION.imaging.v1')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
-#   must "openEHR-EHR-COMPOSITION.encounter.v1draft.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-COMPOSITION.encounter.v1draft.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-COMPOSITION.encounter.v1draft')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
-#   must "openEHR-EHR-ITEM_TREE.follow_up.v1draft.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-ITEM_TREE.follow_up.v1draft.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-ITEM_TREE.follow_up.v1draft')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
-#   must "openEHR-EHR-ITEM_TREE.medication-formulation.v1.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-ITEM_TREE.medication-formulation.v1.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'openEHR-EHR-ITEM_TREE.medication-formulation.v1')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
+  must "assert parser instance" do
+    assert_instance_of ::OpenEhr::ADL::Parser,@parser
+  end
+
+  must "openEHR-EHR-CLUSTER.exam-uterus.v1.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-uterus.v1.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-uterus.v11')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+  must "openEHR-EHR-SECTION.summary.v1.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-SECTION.summary.v1.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-SECTION.summary.v1')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+
+  must "openEHR-EHR-ACTION.referral.v1.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-ACTION.referral.v1.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-ACTION.referral.v1')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+  must "openEHR-EHR-CLUSTER.auscultation-chest.v1.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.auscultation-chest.v1.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.auscultation-chest.v1')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+  must "openEHR-EHR-CLUSTER.auscultation.v1.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.auscultation.v1.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.auscultation.v1')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+
+  must "openEHR-EHR-CLUSTER.exam-abdomen.v1.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-abdomen.v1.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-abdomen.v1')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+  must "openEHR-EHR-CLUSTER.exam-chest.v1.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-chest.v1.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-chest.v1')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+  must "openEHR-EHR-CLUSTER.exam-generic-joint.v1.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-generic-joint.v1.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-generic-joint.v1')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+  must "openEHR-EHR-CLUSTER.exam-generic-lymphnode.v1.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-generic-lymphnode.v1.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-generic-lymphnode.v1')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+  must "openEHR-EHR-CLUSTER.exam-generic-mass.v1.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-generic-mass.v1.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-generic-mass.v1')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+  must "openEHR-EHR-CLUSTER.exam-generic.v1.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-generic.v1.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-generic.v1')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+  must "openEHR-EHR-CLUSTER.exam-nervous_system.v1.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-nervous_system.v1.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-nervous_system.v1')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+  must "openEHR-EHR-COMPOSITION.discharge.v1draft.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-COMPOSITION.discharge.v1draft.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-COMPOSITION.discharge.v1draft')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+
+  must "openEHR-EHR-INSTRUCTION.medication.v1.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-INSTRUCTION.medication.v1.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-INSTRUCTION.medication.v1')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+  must "openEHR-EHR-INSTRUCTION.referral.v1.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-INSTRUCTION.referral.v1.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-INSTRUCTION.referral.v1')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+  must "openEHR-EHR-ITEM_TREE.Laboratory_request.v1.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-ITEM_TREE.Laboratory_request.v1.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-ITEM_TREE.Laboratory_request.v1')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+
+  must "openEHR-EHR-OBSERVATION.apgar.v1.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-OBSERVATION.apgar.v1.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-OBSERVATION.apgar.v1')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+  must "openEHR-EHR-SECTION.findings.v1.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-SECTION.findings.v1.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-SECTION.findings.v1')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+  must "openEHR-EHR-SECTION.reason_for_encounter.v1.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-SECTION.reason_for_encounter.v1.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-SECTION.reason_for_encounter.v1')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+
+
+
+# C_DV_QUANTITY parse error
+  must "openEHR-EHR-EVALUATION.adverse.v1.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-EVALUATION.adverse.v1.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-EVALUATION.adverse.v1')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+  must "openEHR-EHR-CLUSTER.dimensions-circumference.v1.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.dimensions-circumference.v1.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.dimensions-circumference.v1')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+  must "openEHR-EHR-CLUSTER.dimensions.v1.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.dimensions.v1.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.dimensions.v1')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+  must "openEHR-EHR-CLUSTER.exam-fetus.v1.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-fetus.v1.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-fetus.v1')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+  must "openEHR-EHR-CLUSTER.exam-uterine_cervix.v1.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-CLUSTER.exam-uterine_cervix.v1.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-CLUSTER.exam-uterine_cervix.v1')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+  must "openEHR-EHR-OBSERVATION.body_mass_index.v1.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-OBSERVATION.body_mass_index.v1.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-OBSERVATION.body_mass_index.v1')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+  must "openEHR-EHR-ACTION.imaging.v1.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-ACTION.imaging.v1.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-ACTION.imaging.v1')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+  must "openEHR-EHR-COMPOSITION.encounter.v1draft.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-COMPOSITION.encounter.v1draft.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-COMPOSITION.encounter.v1draft')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+  must "openEHR-EHR-ITEM_TREE.follow_up.v1draft.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-ITEM_TREE.follow_up.v1draft.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-ITEM_TREE.follow_up.v1draft')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+  must "openEHR-EHR-SECTION.vital_signs.v1.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-SECTION.vital_signs.v1.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-SECTION.vital_signs.v1')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+  must "openEHR-EHR-ITEM_TREE.medication-formulation.v1.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/openEHR-EHR-ITEM_TREE.medication-formulation.v1.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'openEHR-EHR-ITEM_TREE.medication-formulation.v1')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
+  must "adl-test-ENTRY.basic_types.v1.adl be properly parsed" do
+    file =  File.read("#{TEST_ROOT_DIR}/adl/adl-test-ENTRY.basic_types.v1.adl")
+    assert_nothing_raised do
+      ast = @parser.parse(file, 'adl-test-ENTRY.basic_types.v1')
+      assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
+    end
+  end
+
 
   must "adl-test-ENTRY.assumed_types.v1.adl be properly parsed" do
@@ -265,11 +275,3 @@
   end
 
-#   must "adl-test-ENTRY.basic_types.v1.adl be properly parsed" do
-#     file =  File.read("#{TEST_ROOT_DIR}/adl/adl-test-ENTRY.basic_types.v1.adl")
-#     assert_nothing_raised do
-#       ast = @parser.parse(file, 'adl-test-ENTRY.basic_types.v1')
-#       assert_instance_of OpenEhr::RM::Support::Identification::ArchetypeID, ast.archetype_id
-#     end
-#   end
-
 end
Index: /ruby/trunk/lib/adl_parser/test/scanner_test.rb
===================================================================
--- /ruby/trunk/lib/adl_parser/test/scanner_test.rb	(revision 320)
+++ /ruby/trunk/lib/adl_parser/test/scanner_test.rb	(revision 321)
@@ -128,4 +128,16 @@
   end
 
+  must "assert CADLScanner scanner scan V_ISO8601_EXTENDED_TIME" do
+    @scanner.scan("01:00:00") do |sym, val|
+      assert_equal :V_ISO8601_EXTENDED_TIME,sym
+      assert_equal "01:00:00",val
+    end
+    @scanner.scan("12:01") do |sym, val|
+      assert_equal :V_ISO8601_EXTENDED_TIME,sym
+      assert_equal "12:01",val
+    end
+
+  end
+
 end
 
