Index: ruby/trunk/adl_parser/Rakefile
===================================================================
--- ruby/trunk/adl_parser/Rakefile	(revision 18)
+++ ruby/trunk/adl_parser/Rakefile	(revision 19)
@@ -11,5 +11,6 @@
 
 RACC_SRC = FileList["lib/*.y"]
-RACC_PARSER = FileList['lib/parser.rb', 'lib/adl_parser.rb', 'lib/cparser.rb', 'lib/dparser.rb']
+#RACC_PARSER = FileList['lib/parser.rb', 'lib/adl_parser.rb', 'lib/cparser.rb', 'lib/dparser.rb']
+RACC_PARSER = FileList['lib/parser.rb']
 
 task :default => [:racc]
Index: ruby/trunk/adl_parser/lib/adl_parser.rb
===================================================================
--- ruby/trunk/adl_parser/lib/adl_parser.rb	(revision 18)
+++ 	(revision )
@@ -1,465 +1,0 @@
-#
-# DO NOT MODIFY!!!!
-# This file is automatically generated by racc 1.4.5
-# from racc grammer file "lib/adl_parser.y".
-#
-
-require 'racc/parser'
-
-
-
-$:.unshift File.join(File.dirname(__FILE__))
-$DEBUG = false
-
-
-
-module OpenEHR
-
-  class ADLParser < Racc::Parser
-
-module_eval <<'..end lib/adl_parser.y modeval..id1ff841bfe3', 'lib/adl_parser.y', 93
-###----------/* keywords */ --------------------------------------------- 
-@@reserved = {
-    'archetype' => :SYM_ARCHETYPE,
-    'adl_version' => :SYM_ADL_VERSION,
-    'controlled' => :SYM_IS_CONTROLLED,
-    'specialize' => :SYM_SPECIALIZE,
-    'concept' => :SYM_CONCEPT,
-    'language' => :SYM_LANGUAGE,
-    'description' => :SYM_DESCRIPTION,
-    'definition' => :SYM_DEFINITION,
-    'invariant' => :SYM_INVARIANT,
-    'ontology' => :SYM_ONTOLOGY,
-    'true' => :SYM_TRUE, #[Tt][Rr][Uu][Ee] -- -> SYM_TRUE 
-    'false' => :SYM_FALSE, # [Ff][Aa][Ll][Ss][Ee] -- -> SYM_FALSE 
-    'infinity' => :SYM_INFINITY # [Ii][Nn][Ff][Ii][Nn][Ii][Tt][Yy] -- -> SYM_INFINITY 
-}
-
-###----------/* Scanner */ ----------------------------------------------- 
-
-def scan
-  until @data.nil?  do
-    case @data
-    when /\A\n/ # carriage return
-      @lineno += 1
-      ;
-    when /\A[ \t\r\f]+/ #just drop it
-      ;
-    when /\A--.*\n/ # single line comment
-      @lineno += 1
-      ;
-    ###----------/* symbols */ ------------------------------------------------- 
-    when /\A[a-zA-Z][a-zA-Z0-9_-]+\.[a-zA-Z][a-zA-Z0-9_-]+\.[a-zA-Z0-9]+/   #V_ARCHETYPE_ID
-      yield :V_ARCHETYPE_ID, $&
-    when /\A[a-z][a-zA-Z0-9_]*/
-      word = $&.downcase
-      if @@reserved[word]
-        yield @@reserved[word], @@reserved[word]
-      end
-    when /\A\=/   # =
-      yield :SYM_EQ, :SYM_EQ
-    when /\A\>=/   # >=
-      yield :SYM_GE, :SYM_GE
-    when /\A\<=/   # <=
-      yield :SYM_LE, :SYM_LE
-    when /\A\</   # <
-      if @in_interval
-        @start_block_received = false
-        yield :SYM_LT, :SYM_LT
-      else
-        @start_block_received = true
-        yield :SYM_START_DBLOCK, :SYM_START_DBLOCK
-      end
-    when /\A\>/   # >
-      if @in_interval
-        yield :SYM_GT, :SYM_GT
-      else
-        yield :SYM_END_DBLOCK, :SYM_END_DBLOCK
-      end
-    when /\A\-/   # -
-      yield :Minus_code, :Minus_code
-    when /\A\+/   # +
-      yield :Plus_code, :Plus_code
-    when /\A\*/   # *
-      yield :Star_code, :Star_code
-    when /\A\//   # /
-      yield :Slash_code, :Slash_code
-    when /\A\^/   # ^
-      yield :Caret_code, :Caret_code
-    when /\A\=/   # =
-      yield :Equal_code, :Equal_code
-    when /\A\./   # .
-      yield :Dot_code, :Dot_code
-    when /\A\;/   # ;
-      yield :Semicolon_code, :Semicolon_code
-    when /\A\,/   # ,
-      yield :Comma_code, :Comma_code
-    when /\A\:/   # :
-      yield :Colon_code, :Colon_code
-    when /\A\!/   # !
-      yield :Exclamation_code, :Exclamation_code
-    when /\A\(/   # (
-      yield :Left_parenthesis_code, :Left_parenthesis_code
-    when /\A\)/   # )
-      yield :Right_parenthesis_code, :Right_parenthesis_code
-    when /\A\$/   # $
-      yield :Dollar_code, :Dollar_code
-    when /\A\?\?/   # ??
-      yield :SYM_DT_UNKNOWN, :SYM_DT_UNKNOWN
-    when /\A\?/   # ?
-      yield :Question_mark_code, :Question_mark_code
-    when /\A[0-9]+\.[0-9]+(\.[0-9]+)*/   # ?
-      yield :V_VERSION_STRING, :V_VERSION_STRING
-    when /\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/   #V_LOCAL_TERM_CODE_REF
-      yield :V_LOCAL_TERM_CODE_REF, $&
-    when /\A[a-zA-Z][a-zA-Z0-9_]*/
-      yield :V_IDENTIFIER, $&
-    when /\A\|/   # |
-      if @in_interval
-        @in_interval = false
-      elsif @start_block_received
-        @in_interval = true
-        @start_block_received = false
-      end
-      yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
-    when /\A\[/   # [
-      yield :Left_bracket_code, :Left_bracket_code
-    when /\A\]/   # ]
-      yield :Right_bracket_code, :Right_bracket_code
-    when /\A\../   # ..
-      yield :SYM_ELLIPSIS, :SYM_ELLIPSIS
-    when /\A\.../   # ...
-      yield :SYM_LIST_CONTINUE, :SYM_LIST_CONTINUE
-
-    when /\A\[[a-zA-Z0-9._\-]+::[a-zA-Z0-9._\-]+\]/   #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
-      yield :V_QUALIFIED_TERM_CODE_REF, $&
-    when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
-      yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
-    when /\Aa[ct][0-9.]+/   #V_LOCAL_CODE
-      yield :V_LOCAL_CODE, $&
-    when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9](Z|[+-][0-9]{4})?/   #V_ISO8601_EXTENDED_DATE_TIME YYYY-MM-DDThh:mm:ss[,sss][Z|+/- -n-n-n-n-]-
-      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]
-      yield :V_ISO8601_EXTENDED_TIME, $&
-    when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]|[0-9]{4}-[0-1][0-9]/   #V_ISO8601_EXTENDED_DATE YYYY-MM-DD
-      yield :V_ISO8601_EXTENDED_DATE, $&
-    when /\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?|P([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/   #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
-      yield :V_ISO8601_DURATION, $&
-    when /\A[A-Z][a-zA-Z0-9_]*/   #V_TYPE_IDENTIFIER
-      yield :V_ISO8601_DURATION, $&
-    when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
-      yield :V_GENERIC_TYPE_IDENTIFIER, $&
-    when /\A[0-9]+|[0-9]+[eE][+-]?[0-9]+/   #V_INTEGER
-      yield :V_INTEGER, $&
-    when /\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+ /   #V_REAL
-      yield :V_REAL, $&
-#    when /\A"((?:[^"\\]+|\\.)*)"/ #V_STRING
-    when /\A"([^"]*)"/m #V_STRING
-      yield :V_STRING, $1
-# \"[^\\\n"]*\" 
-# \"[^\\\n"]*{ -- beginning of a multi-line string 
-# <IN_STR> { 
-# \\\\ -- match escaped backslash, i.e. \\ -> \ 
-# \\\" -- match escaped double quote, i.e. \” -> “ 
-# {UTF8CHAR}+ -- match UTF8 chars 
-# [^\\\n"]+ -- match any other characters 
-# \\\n[ \t\r]* -- match LF in line 
-# [^\\\n"]*\" -- match final end of string 
-# .|\n | 
-# <<EOF>> -- unclosed String -> ERR_STRING 
-# }
-# ###----------/* V_CHARACTER */ -------------------------------------------- 
-# \'[^\\\n']\' -- normal character in 0-127 
-# \'\\n\ -- \n 
-# \'\\r\ -- \r 
-# \'\\t\ -- \t 
-# \'\\'\ -- \’ 
-# \'\\\\ -- \\ 
-# \'{UTF8CHAR}\' -- UTF8 char 
-# \'.{1,2} | 
-# \'\\[0-9]+(\/)? -- invalid character -> ERR_CHARACTER 
-    when /\A[a-z]+:\/\/[^<>|\\{}^~"\[\] ]*/ #V_URI
-      yield :V_URI, $&
-    when /\A\S/ #UTF8CHAR
-      yield :UTF8CHAR, $&
-    end
-    @data = $' # variable $' receives the string after the match
-  end
-  yield :EOF, nil
-  yield false, '$'
-end # of scan
-
-
-def parse(data, filename, lineno = 1, debug = false)
-  @yydebug = true
-  @parsestring = data
-  @data = data
-  @lineno = lineno
-  @filename = filename
-  @in_interval = false
-  @start_block_received = false
-  @start_block_received = false
-  yyparse self, :scan
-end
-
-def on_error( t, v, values)
-  raise Racc::ParseError, "#{@filename}:#{@lineno}: Inline syntax error on #{v.inspect}"
-end
-
-# ###----------/* CADL Blocks */ -------------------------------------------
-# \{[^{}]* -- beginning of CADL block 
-# <IN_CADL_BLOCK>\{[^{}]* -- got an open brace 
-# <IN_CADL_BLOCK>[^{}]*\} -- got a close brace 
-
-
-
-
-
-
-### Local Variables:
-### mode:ruby
-### mode:font-lock
-### comment-column:0
-### comment-start: "### "
-### comment-end:"" 
-### End:
-
-
-
-
-..end lib/adl_parser.y modeval..id1ff841bfe3
-
-##### racc 1.4.5 generates ###
-
-racc_reduce_table = [
- 0, 0, :racc_error,
- 1, 36, :_reduce_none,
- 8, 37, :_reduce_none,
- 2, 38, :_reduce_none,
- 1, 46, :_reduce_none,
- 2, 46, :_reduce_none,
- 3, 47, :_reduce_none,
- 1, 48, :_reduce_none,
- 3, 48, :_reduce_none,
- 3, 49, :_reduce_none,
- 1, 49, :_reduce_none,
- 0, 39, :_reduce_none,
- 2, 39, :_reduce_none,
- 2, 40, :_reduce_none,
- 0, 41, :_reduce_none,
- 2, 41, :_reduce_none,
- 0, 42, :_reduce_none,
- 2, 42, :_reduce_none,
- 2, 43, :_reduce_none,
- 0, 44, :_reduce_none,
- 2, 44, :_reduce_none,
- 2, 45, :_reduce_none ]
-
-racc_reduce_n = 22
-
-racc_shift_n = 41
-
-racc_action_table = [
-    19,    19,    16,    16,    23,    24,    25,    11,    12,    13,
-    14,     5,    20,    21,     7,     8,    26,    27,     6,    30,
-    31,    32,    34,    36,    37,    39,    40 ]
-
-racc_action_check = [
-    11,    24,    11,    24,    17,    17,    19,     5,     7,     8,
-     9,     0,    14,    15,     2,     4,    21,    22,     1,    25,
-    27,    28,    32,    33,    35,    36,    37 ]
-
-racc_action_pointer = [
-    -6,     2,    14,   nil,    -9,   -11,   nil,     8,    -7,   -15,
-   nil,   -21,   nil,   nil,   -14,   -14,   nil,   -15,   nil,    -2,
-   nil,   -12,   -12,   nil,   -20,    -3,   nil,    -8,    -9,   nil,
-   nil,   nil,    -9,    -9,   nil,   -10,    -8,    -2,   nil,   nil,
-   nil ]
-
-racc_action_default = [
-   -22,   -22,   -22,    -1,   -11,    -4,    -3,   -22,   -22,   -22,
-    -5,   -22,    41,   -12,   -22,   -14,   -10,   -22,    -7,   -22,
-   -13,   -22,   -16,    -6,   -22,   -22,   -15,   -22,   -22,    -8,
-    -9,   -17,   -22,   -19,   -18,   -22,   -22,   -22,    -2,   -20,
-   -21 ]
-
-racc_goto_table = [
-    18,    33,     4,     9,    15,    22,    28,     3,    35,    38,
-     1,    10,    17,    29,     2 ]
-
-racc_goto_check = [
-    14,     8,     3,     4,     5,     6,     7,     2,     9,    10,
-    11,    12,    13,    14,     1 ]
-
-racc_goto_pointer = [
-   nil,    14,     7,     2,    -1,    -5,   -10,   -16,   -27,   -25,
-   -26,    10,     6,     1,   -11 ]
-
-racc_goto_default = [
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil ]
-
-racc_token_table = {
- false => 0,
- Object.new => 1,
- :UMINUS => 2,
- :UPLUS => 3,
- "*" => 4,
- "/" => 5,
- "+" => 6,
- "-" => 7,
- :SYM_EQ => 8,
- :SYM_NE => 9,
- :SYM_LT => 10,
- :SYM_START_DBLOCK => 11,
- :SYM_GT => 12,
- :SYM_END_DBLOCK => 13,
- :SYM_LE => 14,
- :SYM_GE => 15,
- :V_ARCHETYPE_ID => 16,
- :SYM_ARCHETYPE => 17,
- :Left_parenthesis_code => 18,
- :Right_parenthesis_code => 19,
- ";" => 20,
- :SYM_ADL_VERSION => 21,
- :V_VERSION_STRING => 22,
- :SYM_IS_CONTROLLED => 23,
- :SYM_SPECIALIZE => 24,
- :SYM_CONCEPT => 25,
- :V_LOCAL_TERM_CODE_REF => 26,
- :SYM_LANGUAGE => 27,
- :V_DADL_TEXT => 28,
- :SYM_DESCRIPTION => 29,
- :SYM_DEFINITION => 30,
- :V_CADL_TEXT => 31,
- :SYM_INVARIANT => 32,
- :V_ASSERTION_TEXT => 33,
- :SYM_ONTOLOGY => 34 }
-
-racc_use_result_var = true
-
-racc_nt_base = 35
-
-Racc_arg = [
- racc_action_table,
- racc_action_check,
- racc_action_default,
- racc_action_pointer,
- racc_goto_table,
- racc_goto_check,
- racc_goto_default,
- racc_goto_pointer,
- racc_nt_base,
- racc_reduce_table,
- racc_token_table,
- racc_shift_n,
- racc_reduce_n,
- racc_use_result_var ]
-
-Racc_token_to_s_table = [
-'$end',
-'error',
-'UMINUS',
-'UPLUS',
-'"*"',
-'"/"',
-'"+"',
-'"-"',
-'SYM_EQ',
-'SYM_NE',
-'SYM_LT',
-'SYM_START_DBLOCK',
-'SYM_GT',
-'SYM_END_DBLOCK',
-'SYM_LE',
-'SYM_GE',
-'V_ARCHETYPE_ID',
-'SYM_ARCHETYPE',
-'Left_parenthesis_code',
-'Right_parenthesis_code',
-'";"',
-'SYM_ADL_VERSION',
-'V_VERSION_STRING',
-'SYM_IS_CONTROLLED',
-'SYM_SPECIALIZE',
-'SYM_CONCEPT',
-'V_LOCAL_TERM_CODE_REF',
-'SYM_LANGUAGE',
-'V_DADL_TEXT',
-'SYM_DESCRIPTION',
-'SYM_DEFINITION',
-'V_CADL_TEXT',
-'SYM_INVARIANT',
-'V_ASSERTION_TEXT',
-'SYM_ONTOLOGY',
-'$start',
-'input',
-'archetype',
-'arch_identification',
-'arch_specialisation',
-'arch_concept',
-'arch_language',
-'arch_description',
-'arch_definition',
-'arch_invariant',
-'arch_ontology',
-'arch_head',
-'arch_meta_data',
-'arch_meta_data_items',
-'arch_meta_data_item']
-
-Racc_debug_parser = true
-
-##### racc system variables end #####
-
- # reduce 0 omitted
-
- # reduce 1 omitted
-
- # reduce 2 omitted
-
- # reduce 3 omitted
-
- # reduce 4 omitted
-
- # reduce 5 omitted
-
- # reduce 6 omitted
-
- # reduce 7 omitted
-
- # reduce 8 omitted
-
- # reduce 9 omitted
-
- # reduce 10 omitted
-
- # reduce 11 omitted
-
- # reduce 12 omitted
-
- # reduce 13 omitted
-
- # reduce 14 omitted
-
- # reduce 15 omitted
-
- # reduce 16 omitted
-
- # reduce 17 omitted
-
- # reduce 18 omitted
-
- # reduce 19 omitted
-
- # reduce 20 omitted
-
- # reduce 21 omitted
-
- def _reduce_none( val, _values, result )
-  result
- end
-
-  end   # class ADLParser
-
-end   # module OpenEHR
Index: ruby/trunk/adl_parser/lib/cparser.rb
===================================================================
--- ruby/trunk/adl_parser/lib/cparser.rb	(revision 18)
+++ 	(revision )
@@ -1,1671 +1,0 @@
-#
-# DO NOT MODIFY!!!!
-# This file is automatically generated by racc 1.4.5
-# from racc grammer file "lib/cparser.y".
-#
-
-require 'racc/parser'
-
-
-
-$:.unshift File.join(File.dirname(__FILE__))
-$DEBUG = false
-
-
-
-module OpenEHR
-
-  class CADLParser < Racc::Parser
-
-module_eval <<'..end lib/cparser.y modeval..id58c48b332c', 'lib/cparser.y', 440
-###----------/* keywords */ --------------------------------------------- 
-@@reserved = {
-  'then' => :SYM_THEN,
-  'else' => :SYM_ELSE,
-  'and' => :SYM_AND,
-  'or' => :SYM_OR,
-  'xor' => :SYM_XOR,
-  'not' => :SYM_NOT,
-  'implies' => :SYM_IMPLIES,
-  'true' => :SYM_TRUE, #[Tt][Rr][Uu][Ee] -- -> SYM_TRUE 
-  'false' => :SYM_FALSE, # [Ff][Aa][Ll][Ss][Ee] -- -> SYM_FALSE 
-  'forall' => :SYM_FORALL,
-  'exists' => :SYM_EXISTS,
-  'existence' => :SYM_EXISTENCE,
-  'occurrences' => :SYM_OCCURRENCES,
-  'cardinality' => :SYM_CARDINALITY,
-  'ordered' => :SYM_ORDERED,
-  'unordered' => :SYM_UNORDERED,
-  'unique' => :SYM_UNIQUE,
-  'matches' => :SYM_MATCHES,
-  'is_in' => :SYM_MATCHES,
-  'invariant' => :SYM_INVARIANT,
-  'infinity' => :SYM_INFINITY, # [Ii][Nn][Ff][Ii][Nn][Ii][Tt][Yy] -- -> SYM_INFINITY 
-  'use_archetype' => :SYM_ALLOW_ARCHETYPE,
-  'allow_archetype' => :SYM_ALLOW_ARCHETYPE,
-  'include' => :SYM_INCLUDE,
-  'exclude' => :SYM_EXCLUDE
-}
-
-###----------/* Scanner */ ----------------------------------------------- 
-
-def scan
-  until @data.nil?  do
-    case @data
-    when /\A\n/ # carriage return
-      @lineno += 1
-      ;
-    when /\A[ \t\r\f]+/ #just drop it
-      ;
-    when /\A--.*\n/ # single line comment
-      @lineno += 1
-      ;
-    ###----------/* symbols */ ------------------------------------------------- 
-    when /\A\=/   # =
-      yield :SYM_EQ, :SYM_EQ
-    when /\A\>=/   # >=
-      yield :SYM_GE, :SYM_GE
-    when /\A\<=/   # <=
-      yield :SYM_LE, :SYM_LE
-    when /\A\</   # <
-      yield :SYM_LT, :SYM_LT
-    when /\A\>/   # >
-      yield :SYM_GT, :SYM_GT
-    when /\A\-/   # -
-      yield :Minus_code, :Minus_code
-    when /\A\+/   # +
-      yield :Plus_code, :Plus_code
-    when /\A\*/   # *
-      yield :Star_code, :Star_code
-    when /\A\//   # /
-      yield :Slash_code, :Slash_code
-    when /\A\^/   # ^
-      yield :Caret_code, :Caret_code
-    when /\A\.\./   # ..
-      yield :SYM_ELLIPSIS, :SYM_ELLIPSIS
-    when /\A\./   # .
-      yield :Dot_code, :Dot_code
-    when /\A\;/   # ;
-      yield :Semicolon_code, :Semicolon_code
-    when /\A\,/   # ,
-      yield :Comma_code, :Comma_code
-    when /\A\:/   # :
-      yield :Colon_code, :Colon_code
-    when /\A\!/   # !
-      yield :Exclamation_code, :Exclamation_code
-    when /\A\(/   # (
-      yield :Left_parenthesis_code, :Left_parenthesis_code
-    when /\A\)/   # )
-      yield :Right_parenthesis_code, :Right_parenthesis_code
-    when /\A\{/   # {
-      yield :SYM_START_CBLOCK, :SYM_START_CBLOCK
-    when /\A\}/   # {
-      yield :SYM_END_CBLOCK, :SYM_END_CBLOCK
-    when /\A\$/   # $
-      yield :Dollar_code, :Dollar_code
-    when /\A\?\?/   # ??
-      yield :SYM_DT_UNKNOWN, :SYM_DT_UNKNOWN
-    when /\A\?/   # ?
-      yield :Question_mark_code, :Question_mark_code
-    when /\A\|/   # |
-      if @in_interval
-        @in_interval = false
-      elsif @start_block_received
-        @in_interval = true
-        @start_block_received = false
-      end
-      yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
-    when /\A\[[a-zA-Z0-9._\-]+::[a-zA-Z0-9._\-]+\]/   #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
-      yield :V_QUALIFIED_TERM_CODE_REF, $&
-    when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
-      yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
-    when /\A\[([a-zA-Z0-9()._\-]+::[a-zA-Z0-9._\_-]+)\]/
-      yield :V_TERM_CODE_CONSTRAINT, :V_TERM_CODE_CONSTRAINT
-    when /\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/   #V_LOCAL_TERM_CODE_REF
-      yield :V_LOCAL_TERM_CODE_REF, $&
-    when /\A\[/   # [
-      yield :Left_bracket_code, :Left_bracket_code
-    when /\A\]/   # ]
-      yield :Right_bracket_code, :Right_bracket_code
-    when /\A\.../   # ...
-      yield :SYM_LIST_CONTINUE, :SYM_LIST_CONTINUE
-    when /\A[a-z][a-zA-Z0-9_]*/
-      word = $&.downcase
-      if @@reserved[word]
-        yield @@reserved[word], @@reserved[word]
-      else #V_ATTRIBUTE_IDENTIFIER /\A[a-z][a-zA-Z0-9_]*/ 
-        yield :V_ATTRIBUTE_IDENTIFIER, $&
-      end
-    when /\Aa[ct][0-9.]+/   #V_LOCAL_CODE
-      yield :V_LOCAL_CODE, $&
-    when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9](Z|[+-][0-9]{4})?/   #V_ISO8601_EXTENDED_DATE_TIME YYYY-MM-DDThh:mm:ss[,sss][Z|+/- -n-n-n-n-]-
-      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]
-      yield :V_ISO8601_EXTENDED_TIME, $&
-    when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]|[0-9]{4}-[0-1][0-9]/   #V_ISO8601_EXTENDED_DATE YYYY-MM-DD
-      yield :V_ISO8601_EXTENDED_DATE, $&
-    when /\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?|P([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/   #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
-      yield :V_ISO8601_DURATION, $&
-    when /\A[yY][yY][yY][yY]-[mM?X][mM?X]-[dD?X][dD?X]/
-      yield :V_ISO8601_DATE_CONSTRAINT_PATTERN, $&
-    when /\A[hH][hH]:[mM?X][mM?X]:[sS?X][sS?X]/
-      yield :V_ISO8601_TIME_CONSTRAINT_PATTERN, $&
-    when /\A[yY][yY][yY][yY]-[mM?X][mM?X]-[dD?X][dD?X][\t][hH?X][hH?X]:[mM?X][mM?X]:[sS?X][sS?X]/
-      yield :V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN, $&
-    when /\A[A-Z][a-zA-Z0-9_]*/
-      yield :V_TYPE_IDENTIFIER, $&
-    when /\A[a-z][a-zA-Z0-9_]*/
-      yield :V_ATTRIBUTE_IDENTIFIER, $&
-    when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
-      yield :V_GENERIC_TYPE_IDENTIFIER, $&
-    when /\A[0-9]+|[0-9]+[eE][+-]?[0-9]+/   #V_INTEGER
-      yield :V_INTEGER, $&
-    when /\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+ /   #V_REAL
-      yield :V_REAL, $&
-#    when /\A"((?:[^"\\]+|\\.)*)"/ #V_STRING
-    when /\A"([^"]*)"/m #V_STRING
-      yield :V_STRING, $1
-###     when /\A{\// #V_REGEXP
-###       if @in_regexp
-###         @in_regexp = false
-###       elsif @start_block_received
-###         @in_interval = true
-###         @start_block_received = false
-###       end
-###       yield :V_REGEXP, :V_REGEXP
-    when /\A[a-z]+:\/\/[^<>|\\{}^~"\[\] ]*/ #V_URI
-      yield :V_URI, $&
-    when /\A\S/ #UTF8CHAR
-      yield :UTF8CHAR, $&
-    end
-    @data = $' # variable $' receives the string after the match
-  end
-  yield :EOF, nil
-  yield false, '$'
-end # of scan
-
-
-def parse(data, filename, lineno = 1, debug = false)
-  @yydebug = true
-  @parsestring = data
-  @data = data
-  @lineno = lineno
-  @filename = filename
-  @in_interval = false
-  @start_block_received = false
-  @start_block_received = false
-  yyparse self, :scan
-end
-
-def on_error( t, v, values)
-  raise Racc::ParseError, "#{@filename}:#{@lineno}: Inline syntax error on #{v.inspect}"
-end
-
-# ###----------/* CADL Blocks */ -------------------------------------------
-# \{[^{}]* -- beginning of CADL block 
-# <IN_CADL_BLOCK>\{[^{}]* -- got an open brace 
-# <IN_CADL_BLOCK>[^{}]*\} -- got a close brace 
-
-
-
-
-
-
-### Local Variables:
-### mode:ruby
-### mode:font-lock
-### comment-column:0
-### comment-start: "### "
-### comment-end:"" 
-### End:
-
-
-
-
-..end lib/cparser.y modeval..id58c48b332c
-
-##### racc 1.4.5 generates ###
-
-racc_reduce_table = [
- 0, 0, :racc_error,
- 2, 72, :_reduce_none,
- 1, 73, :_reduce_none,
- 1, 73, :_reduce_none,
- 5, 74, :_reduce_none,
- 2, 76, :_reduce_none,
- 1, 78, :_reduce_none,
- 2, 78, :_reduce_none,
- 1, 77, :_reduce_none,
- 1, 77, :_reduce_none,
- 1, 83, :_reduce_none,
- 1, 83, :_reduce_none,
- 1, 83, :_reduce_none,
- 1, 83, :_reduce_none,
- 1, 83, :_reduce_none,
- 1, 83, :_reduce_none,
- 1, 83, :_reduce_none,
- 1, 83, :_reduce_none,
- 1, 83, :_reduce_none,
- 1, 83, :_reduce_none,
- 4, 84, :_reduce_none,
- 3, 84, :_reduce_none,
- 6, 85, :_reduce_none,
- 2, 91, :_reduce_none,
- 2, 94, :_reduce_none,
- 3, 94, :_reduce_none,
- 2, 94, :_reduce_none,
- 1, 89, :_reduce_none,
- 1, 95, :_reduce_none,
- 1, 95, :_reduce_none,
- 1, 95, :_reduce_none,
- 1, 95, :_reduce_none,
- 1, 95, :_reduce_none,
- 1, 95, :_reduce_none,
- 1, 95, :_reduce_none,
- 1, 95, :_reduce_none,
- 1, 81, :_reduce_none,
- 1, 82, :_reduce_none,
- 2, 82, :_reduce_none,
- 5, 104, :_reduce_none,
- 5, 104, :_reduce_none,
- 2, 105, :_reduce_none,
- 3, 105, :_reduce_none,
- 1, 106, :_reduce_none,
- 2, 106, :_reduce_none,
- 1, 106, :_reduce_none,
- 0, 92, :_reduce_none,
- 2, 92, :_reduce_none,
- 0, 93, :_reduce_none,
- 2, 93, :_reduce_none,
- 1, 75, :_reduce_none,
- 2, 75, :_reduce_none,
- 3, 109, :_reduce_none,
- 1, 109, :_reduce_none,
- 1, 111, :_reduce_none,
- 1, 111, :_reduce_none,
- 2, 113, :_reduce_none,
- 5, 113, :_reduce_none,
- 2, 113, :_reduce_none,
- 3, 113, :_reduce_none,
- 3, 113, :_reduce_none,
- 3, 113, :_reduce_none,
- 3, 113, :_reduce_none,
- 3, 113, :_reduce_none,
- 3, 113, :_reduce_none,
- 3, 113, :_reduce_none,
- 3, 113, :_reduce_none,
- 3, 113, :_reduce_none,
- 3, 113, :_reduce_none,
- 3, 112, :_reduce_none,
- 1, 112, :_reduce_none,
- 1, 112, :_reduce_none,
- 1, 115, :_reduce_none,
- 1, 115, :_reduce_none,
- 3, 117, :_reduce_none,
- 3, 117, :_reduce_none,
- 3, 117, :_reduce_none,
- 3, 117, :_reduce_none,
- 3, 117, :_reduce_none,
- 3, 116, :_reduce_none,
- 1, 116, :_reduce_none,
- 1, 116, :_reduce_none,
- 1, 116, :_reduce_none,
- 1, 90, :_reduce_none,
- 2, 90, :_reduce_none,
- 3, 90, :_reduce_none,
- 1, 114, :_reduce_none,
- 3, 114, :_reduce_none,
- 2, 120, :_reduce_none,
- 1, 120, :_reduce_none,
- 0, 107, :_reduce_none,
- 5, 107, :_reduce_none,
- 1, 121, :_reduce_none,
- 3, 121, :_reduce_none,
- 5, 108, :_reduce_none,
- 1, 122, :_reduce_none,
- 3, 122, :_reduce_none,
- 3, 122, :_reduce_none,
- 3, 122, :_reduce_none,
- 5, 122, :_reduce_none,
- 5, 122, :_reduce_none,
- 5, 122, :_reduce_none,
- 5, 122, :_reduce_none,
- 1, 124, :_reduce_none,
- 1, 124, :_reduce_none,
- 0, 79, :_reduce_none,
- 5, 79, :_reduce_none,
- 1, 123, :_reduce_none,
- 3, 123, :_reduce_none,
- 1, 125, :_reduce_none,
- 1, 125, :_reduce_none,
- 1, 125, :_reduce_none,
- 1, 96, :_reduce_none,
- 3, 96, :_reduce_none,
- 3, 96, :_reduce_none,
- 1, 128, :_reduce_none,
- 1, 128, :_reduce_none,
- 1, 128, :_reduce_none,
- 1, 97, :_reduce_none,
- 3, 97, :_reduce_none,
- 3, 97, :_reduce_none,
- 1, 131, :_reduce_none,
- 1, 131, :_reduce_none,
- 1, 131, :_reduce_none,
- 1, 98, :_reduce_none,
- 3, 98, :_reduce_none,
- 3, 98, :_reduce_none,
- 1, 134, :_reduce_none,
- 1, 134, :_reduce_none,
- 1, 134, :_reduce_none,
- 1, 99, :_reduce_none,
- 3, 99, :_reduce_none,
- 3, 99, :_reduce_none,
- 1, 137, :_reduce_none,
- 1, 137, :_reduce_none,
- 1, 137, :_reduce_none,
- 1, 100, :_reduce_none,
- 3, 100, :_reduce_none,
- 3, 100, :_reduce_none,
- 1, 140, :_reduce_none,
- 3, 140, :_reduce_none,
- 1, 140, :_reduce_none,
- 1, 140, :_reduce_none,
- 1, 101, :_reduce_none,
- 3, 101, :_reduce_none,
- 3, 101, :_reduce_none,
- 1, 144, :_reduce_none,
- 1, 144, :_reduce_none,
- 3, 144, :_reduce_none,
- 1, 144, :_reduce_none,
- 1, 102, :_reduce_none,
- 3, 102, :_reduce_none,
- 1, 147, :_reduce_none,
- 1, 147, :_reduce_none,
- 3, 147, :_reduce_none,
- 3, 147, :_reduce_none,
- 1, 103, :_reduce_none,
- 3, 103, :_reduce_none,
- 1, 88, :_reduce_none,
- 3, 88, :_reduce_none,
- 1, 149, :_reduce_none,
- 3, 149, :_reduce_none,
- 3, 150, :_reduce_none,
- 1, 87, :_reduce_none,
- 1, 87, :_reduce_none,
- 1, 86, :_reduce_none,
- 1, 110, :_reduce_none,
- 1, 110, :_reduce_none,
- 1, 80, :_reduce_none,
- 1, 80, :_reduce_none,
- 1, 146, :_reduce_none,
- 3, 145, :_reduce_none,
- 3, 145, :_reduce_none,
- 3, 145, :_reduce_none,
- 1, 118, :_reduce_none,
- 2, 118, :_reduce_none,
- 2, 118, :_reduce_none,
- 3, 126, :_reduce_none,
- 3, 126, :_reduce_none,
- 3, 126, :_reduce_none,
- 5, 127, :_reduce_none,
- 6, 127, :_reduce_none,
- 6, 127, :_reduce_none,
- 7, 127, :_reduce_none,
- 4, 127, :_reduce_none,
- 4, 127, :_reduce_none,
- 4, 127, :_reduce_none,
- 4, 127, :_reduce_none,
- 3, 127, :_reduce_none,
- 1, 119, :_reduce_none,
- 2, 119, :_reduce_none,
- 2, 119, :_reduce_none,
- 3, 129, :_reduce_none,
- 3, 129, :_reduce_none,
- 3, 129, :_reduce_none,
- 5, 130, :_reduce_none,
- 6, 130, :_reduce_none,
- 6, 130, :_reduce_none,
- 7, 130, :_reduce_none,
- 4, 130, :_reduce_none,
- 4, 130, :_reduce_none,
- 4, 130, :_reduce_none,
- 4, 130, :_reduce_none,
- 3, 130, :_reduce_none,
- 1, 148, :_reduce_none,
- 1, 148, :_reduce_none,
- 3, 151, :_reduce_none,
- 3, 151, :_reduce_none,
- 3, 151, :_reduce_none,
- 1, 152, :_reduce_none,
- 3, 153, :_reduce_none,
- 3, 153, :_reduce_none,
- 3, 153, :_reduce_none,
- 1, 132, :_reduce_none,
- 3, 154, :_reduce_none,
- 3, 154, :_reduce_none,
- 3, 154, :_reduce_none,
- 5, 133, :_reduce_none,
- 6, 133, :_reduce_none,
- 6, 133, :_reduce_none,
- 7, 133, :_reduce_none,
- 4, 133, :_reduce_none,
- 4, 133, :_reduce_none,
- 4, 133, :_reduce_none,
- 4, 133, :_reduce_none,
- 3, 133, :_reduce_none,
- 1, 135, :_reduce_none,
- 3, 155, :_reduce_none,
- 3, 155, :_reduce_none,
- 3, 155, :_reduce_none,
- 5, 136, :_reduce_none,
- 6, 136, :_reduce_none,
- 6, 136, :_reduce_none,
- 7, 136, :_reduce_none,
- 4, 136, :_reduce_none,
- 4, 136, :_reduce_none,
- 4, 136, :_reduce_none,
- 4, 136, :_reduce_none,
- 3, 136, :_reduce_none,
- 1, 138, :_reduce_none,
- 3, 156, :_reduce_none,
- 3, 156, :_reduce_none,
- 3, 156, :_reduce_none,
- 5, 139, :_reduce_none,
- 6, 139, :_reduce_none,
- 6, 139, :_reduce_none,
- 7, 139, :_reduce_none,
- 4, 139, :_reduce_none,
- 4, 139, :_reduce_none,
- 4, 139, :_reduce_none,
- 4, 139, :_reduce_none,
- 3, 139, :_reduce_none,
- 1, 141, :_reduce_none,
- 1, 143, :_reduce_none,
- 3, 157, :_reduce_none,
- 3, 157, :_reduce_none,
- 3, 157, :_reduce_none,
- 5, 142, :_reduce_none,
- 6, 142, :_reduce_none,
- 6, 142, :_reduce_none,
- 7, 142, :_reduce_none,
- 4, 142, :_reduce_none,
- 4, 142, :_reduce_none,
- 4, 142, :_reduce_none,
- 4, 142, :_reduce_none,
- 3, 142, :_reduce_none,
- 1, 158, :_reduce_none,
- 1, 158, :_reduce_none,
- 3, 159, :_reduce_none,
- 3, 159, :_reduce_none,
- 3, 159, :_reduce_none,
- 1, 160, :_reduce_none ]
-
-racc_reduce_n = 272
-
-racc_shift_n = 438
-
-racc_action_table = [
-   375,   411,   252,   208,   270,    15,    21,   243,   246,   247,
-    62,   235,   148,   263,   248,   249,    65,   207,   374,   318,
-   321,   323,   326,   328,   372,   248,   249,   314,   347,   311,
-    61,   312,   313,   147,    47,    67,    64,   119,   122,   226,
-   242,    28,    15,    21,   286,   258,    48,   248,   249,   124,
-   127,   131,   136,   225,   300,   105,   109,   319,   322,    11,
-    16,    20,   108,   135,   141,    99,   103,   108,   320,   108,
-    20,   148,    99,    15,    21,   141,   135,   183,    28,    72,
-   370,    20,   353,    11,    16,   108,   108,   318,   321,   323,
-   326,   328,   248,   249,    15,    21,   304,   349,    20,   141,
-   135,   141,    99,    20,   108,   119,   122,    15,    21,    28,
-    99,   170,   404,   163,   272,   165,   166,   124,   127,   131,
-   136,    15,    21,   105,   109,   319,   322,    11,    16,    20,
-    28,   135,   141,    99,   103,   108,   248,   249,    99,    63,
-    15,    21,   351,    28,    11,    16,   156,   157,    20,   264,
-    20,   135,   135,   141,    99,   378,   108,    28,    15,    21,
-    40,   436,   437,    20,   379,   135,   141,    99,   135,   108,
-   156,   157,   119,   122,   248,   249,    28,    20,   357,   135,
-   141,    99,    28,   108,   124,   127,   131,   136,   237,   239,
-   105,   109,    20,   265,    28,   254,    20,   141,   135,   141,
-    99,   103,   108,    12,    15,    21,    28,   248,   249,   267,
-    69,    42,    13,    18,    20,   224,   135,   141,    99,  -167,
-   108,   222,    78,    44,    12,    15,    21,    23,    26,   223,
-    20,    44,   196,   240,     7,   221,    13,    18,   156,   157,
-    28,   156,   157,    46,    44,    12,    15,    21,    23,    26,
-   155,  -166,   156,   157,   194,     7,   260,    13,    18,   200,
-    20,    28,   234,    20,   233,    44,    12,    15,    21,    23,
-    26,   156,   157,   199,    28,   302,     7,    28,    13,    18,
-    65,    20,    28,    12,    15,    21,     6,   284,   159,    62,
-    23,    26,   282,    12,    15,    21,   257,     7,   256,    13,
-    18,   283,    20,    28,   193,   280,   281,    28,    12,    15,
-    21,   156,   157,    44,    84,   278,   192,    23,    26,   279,
-    28,    11,    16,    20,     7,   147,    13,    18,    44,   277,
-    28,   189,    23,    26,   276,    12,    15,    21,   287,     7,
-    20,    13,    18,   274,   198,    28,   288,    28,   275,   289,
-    20,    12,    15,    21,   290,    44,   291,   273,   197,    23,
-    26,   155,   292,   156,   157,    20,     7,   293,    13,    18,
-   294,     6,    28,   295,   296,    23,    26,   297,    12,    15,
-    21,   298,     7,   188,    13,    18,   187,   155,    28,   156,
-   157,   186,    20,    12,    15,    21,   156,   157,     6,    28,
-   305,   306,    23,    26,   156,   157,    11,    16,    20,     7,
-   307,    13,    18,     6,   308,    28,   309,    23,    26,   310,
-    12,    15,    21,    61,     7,   159,    13,    18,    64,   185,
-    28,   315,    28,    11,    16,    20,    12,    15,    21,   316,
-    28,    12,    15,    21,    12,    15,    21,    44,    11,    16,
-    20,    84,   342,    12,    15,    21,     6,    28,   108,   344,
-    23,    26,   135,    12,    15,    21,   184,     7,   183,    13,
-    18,   182,    84,    28,   181,    84,   180,    20,    28,   179,
-   358,    28,   141,    44,    84,   156,   157,    23,    26,   355,
-    28,    11,    16,    20,     7,   360,    13,    18,    20,    99,
-    28,    20,    12,    15,    21,    12,    15,    21,   362,   178,
-    20,   364,    12,    15,    21,    12,    15,    21,   177,   108,
-    20,    28,   108,    12,    15,    21,    12,    15,    21,   108,
-    12,    15,    21,    84,   108,   367,    84,   368,   369,    28,
-   176,    46,    28,    84,   175,   174,    84,   173,   377,    28,
-   172,    40,    28,   381,    84,   382,   383,    84,   108,    20,
-    28,    84,    20,    28,    12,    15,    21,    28,   385,    20,
-   135,   387,    20,    52,    54,    55,    57,   423,   424,   425,
-    20,   141,   389,    20,     6,    99,   391,    20,    23,    26,
-    52,    54,    55,    57,   171,     7,   393,    13,    18,    42,
-   395,    28,    52,    54,    55,    57,   396,    58,    60,    56,
-    50,   397,    51,    53,    52,    54,    55,    57,   398,    11,
-    16,    20,    52,    54,    55,    57,    56,   399,   400,    59,
-    52,    54,    55,    57,    52,    54,    55,    57,    56,    58,
-    60,   160,    50,    41,    51,    53,    52,    54,    55,    57,
-    56,    52,    54,    55,    57,    44,   406,   407,    56,    98,
-    96,    59,    12,    81,   412,   413,    56,    81,   414,   415,
-    56,    38,    35,    36,    37,   416,    80,    38,    35,    36,
-    37,   417,    56,    38,    35,    36,    37,    56,    38,    35,
-    36,    37,    38,    35,    36,    37,    38,    35,    36,    37,
-    38,    35,    36,    37,   418,   419,    12,   421,   370,    97,
-    41,    40,   427,   429,   430,   431,    83,    34,   433,   434,
-   435,    41,   403 ]
-
-racc_action_check = [
-   334,   384,   181,   164,   198,   334,   334,   176,   178,   179,
-    15,   172,    97,   187,   179,   179,    21,   164,   334,   334,
-   334,   334,   334,   334,   328,   182,   182,   258,   274,   258,
-    15,   258,   258,    97,    10,    24,    21,   334,   334,   169,
-   175,   334,   165,   165,   208,   185,    10,   304,   304,   334,
-   334,   334,   334,   169,   222,   334,   334,   334,   334,   334,
-   334,   334,   198,   334,   334,   334,   334,   334,   267,   181,
-   179,   267,   176,   267,   267,   172,   187,   324,   165,    33,
-   324,   182,   280,   328,   328,   258,   274,   267,   267,   267,
-   267,   267,   226,   226,   170,   170,   226,   276,   165,   208,
-   165,   165,   165,   304,   165,   267,   267,   109,   109,   267,
-   222,   109,   371,   109,   200,   109,   109,   267,   267,   267,
-   267,   166,   166,   267,   267,   267,   267,   267,   267,   267,
-   170,   267,   267,   267,   267,   267,   357,   357,   280,    19,
-    83,    83,   278,   109,   326,   326,   183,   183,   226,   189,
-   170,   276,   170,   170,   170,   338,   170,   166,   163,   163,
-   371,   431,   431,   109,   338,   109,   109,   109,   200,   109,
-   355,   355,    83,    83,   284,   284,    83,   166,   284,   166,
-   166,   166,   183,   166,    83,    83,    83,    83,   173,   173,
-    83,    83,   357,   190,   163,   183,    83,   278,    83,    83,
-    83,    83,    83,    35,    35,    35,   355,   186,   186,   192,
-    26,     6,    26,    26,   163,   168,   163,   163,   163,     6,
-   163,   167,    40,    35,     7,     7,     7,    35,    35,   168,
-   284,    41,   160,   174,    35,   167,    35,    35,   174,   174,
-    35,   379,   379,     9,     7,    34,    34,    34,     7,     7,
-    98,     9,    98,    98,   159,     7,   186,     7,     7,   162,
-    35,     7,   171,   186,   171,    34,    30,    30,    30,    34,
-    34,   224,   224,   162,   174,   224,    34,   379,    34,    34,
-   157,     7,    34,    60,    60,    60,    30,   206,    98,   156,
-    30,    30,   205,    36,    36,    36,   184,    30,   184,    30,
-    30,   206,    34,    30,   153,   204,   205,   224,    37,    37,
-    37,   378,   378,    36,    60,   203,   152,    36,    36,   204,
-    60,    30,    30,    30,    36,   151,    36,    36,    37,   203,
-    36,   147,    37,    37,   202,    38,    38,    38,   209,    37,
-    60,    37,    37,   201,   161,    37,   210,   378,   202,   211,
-    36,     0,     0,     0,   212,    38,   213,   201,   161,    38,
-    38,   194,   214,   194,   194,    37,    38,   215,    38,    38,
-   216,     0,    38,   217,   218,     0,     0,   219,   421,   421,
-   421,   220,     0,   146,     0,     0,   143,   368,     0,   368,
-   368,   139,    38,   426,   426,   426,   302,   302,   421,   194,
-   227,   228,   421,   421,   177,   177,     0,     0,     0,   421,
-   229,   421,   421,   426,   230,   421,   231,   426,   426,   232,
-    84,    84,    84,   248,   426,   368,   426,   426,   249,   137,
-   426,   264,   302,   421,   421,   421,   427,   427,   427,   265,
-   177,    50,    50,    50,    51,    51,    51,    12,   426,   426,
-   426,    84,   269,    52,    52,    52,   427,    84,   270,   271,
-   427,   427,   272,    69,    69,    69,   136,   427,   133,   427,
-   427,   132,    50,   427,   130,    51,   129,    84,    50,   128,
-   285,    51,   286,    69,    52,   282,   282,    69,    69,   282,
-    52,   427,   427,   427,    69,   299,    69,    69,    50,   300,
-    69,    51,    53,    53,    53,    54,    54,    54,   301,   122,
-    52,   303,    55,    55,    55,    56,    56,    56,   121,   311,
-    69,   282,   312,    57,    57,    57,    58,    58,    58,   313,
-    59,    59,    59,    53,   314,   315,    54,   316,   320,    53,
-   120,   325,    54,    55,   119,   117,    56,   115,   337,    55,
-   111,   341,    56,   343,    57,   345,   346,    58,   347,    53,
-    57,    59,    54,    58,   432,   432,   432,    59,   348,    55,
-   349,   350,    56,    93,    93,    93,    93,   419,   419,   419,
-    57,   351,   352,    58,   432,   353,   354,    59,   432,   432,
-    88,    88,    88,    88,   110,   432,   356,   432,   432,    44,
-   359,   432,    14,    14,    14,    14,   361,    14,    14,    93,
-    14,   363,    14,    14,    86,    86,    86,    86,   365,   432,
-   432,   432,    85,    85,    85,    85,    88,   366,   367,    14,
-   145,   145,   145,   145,    45,    45,    45,    45,    14,    45,
-    45,   104,    45,     4,    45,    45,    94,    94,    94,    94,
-    86,    95,    95,    95,    95,    47,   373,   377,    85,    78,
-    63,    45,    23,   145,   386,   388,   145,    45,   390,   392,
-    45,    43,    43,    43,    43,   394,    43,    77,    77,    77,
-    77,   400,    94,     2,     2,     2,     2,    95,    76,    76,
-    76,    76,    75,    75,    75,    75,    74,    74,    74,    74,
-    73,    73,    73,    73,   401,   402,   405,   407,   410,    72,
-   420,     3,   422,   423,   424,   425,    48,     1,   428,   429,
-   430,    66,   370 ]
-
-racc_action_pointer = [
-   346,   689,   651,   662,   638,   nil,   191,   219,   nil,   223,
-    29,   nil,   422,   nil,   598,   -32,   nil,   nil,   nil,   139,
-   nil,   -26,   nil,   657,    19,   nil,   174,   nil,   nil,   nil,
-   261,   nil,   nil,    62,   240,   198,   288,   303,   330,   nil,
-   205,   206,   nil,   639,   579,   630,   nil,   630,   698,   nil,
-   436,   439,   448,   497,   500,   507,   510,   518,   521,   525,
-   278,   nil,   nil,   660,   nil,   nil,   716,   nil,   nil,   458,
-   nil,   nil,   691,   668,   664,   660,   656,   645,   641,   nil,
-   nil,   nil,   nil,   134,   415,   618,   610,   nil,   586,   nil,
-   nil,   nil,   nil,   569,   642,   647,   nil,     8,   246,   nil,
-   nil,   nil,   nil,   nil,   596,   nil,   nil,   nil,   nil,   101,
-   540,   505,   nil,   nil,   nil,   502,   nil,   500,   nil,   490,
-   495,   464,   455,   nil,   nil,   nil,   nil,   nil,   434,   457,
-   429,   nil,   417,   414,   nil,   nil,   412,   424,   nil,   337,
-   nil,   nil,   nil,   341,   nil,   626,   364,   290,   nil,   nil,
-   nil,   300,   299,   285,   nil,   nil,   247,   238,   nil,   211,
-   179,   301,   216,   152,   -40,    36,   115,   178,   172,    -4,
-    88,   209,    10,   150,   232,     1,     6,   398,   -30,     8,
-   nil,     1,    19,   140,   243,   -12,   201,    12,   nil,   132,
-   149,   nil,   191,   nil,   357,   nil,   nil,   nil,    -6,   nil,
-   104,   300,   291,   272,   262,   249,   244,   nil,    34,   281,
-   289,   292,   297,   299,   305,   310,   313,   316,   317,   320,
-   324,   nil,    44,   nil,   265,   nil,    86,   343,   344,   353,
-   357,   359,   362,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   361,   366,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    17,   nil,
-   nil,   nil,   nil,   nil,   413,   422,   nil,    67,   nil,   395,
-   390,   402,   398,   nil,    18,   nil,    87,   nil,   132,   nil,
-    72,   nil,   479,   nil,   168,   423,   417,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   438,
-   433,   451,   390,   454,    41,   nil,   nil,   nil,   nil,   nil,
-   nil,   451,   454,   461,   466,   493,   519,   nil,   nil,   nil,
-   519,   nil,   nil,   nil,    23,   521,    84,   nil,    23,   nil,
-   nil,   nil,   nil,   nil,    -1,   nil,   nil,   531,   110,   nil,
-   nil,   502,   nil,   496,   nil,   498,   499,   490,   511,   506,
-   514,   516,   525,   519,   529,   164,   539,   130,   nil,   543,
-   nil,   549,   nil,   554,   nil,   561,   608,   585,   383,   nil,
-   664,   111,   nil,   636,   nil,   nil,   nil,   639,   305,   235,
-   nil,   nil,   nil,   nil,   -56,   nil,   607,   nil,   608,   nil,
-   611,   nil,   612,   nil,   618,   nil,   nil,   nil,   nil,   nil,
-   639,   685,   660,   nil,   nil,   701,   nil,   681,   nil,   nil,
-   651,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   531,
-   705,   373,   685,   668,   669,   670,   388,   431,   699,   671,
-   672,   115,   559,   nil,   nil,   nil,   nil,   nil ]
-
-racc_action_default = [
-  -272,  -272,   -53,  -105,   -82,   -54,   -89,  -272,   -55,    -6,
-  -272,  -168,   -83,   -70,  -272,  -272,  -169,   -72,   -71,  -272,
-  -189,  -272,   -73,  -272,  -272,   -80,  -272,    -2,  -174,   -81,
-    -3,   -86,   -50,  -272,  -272,  -272,  -272,  -272,  -272,    -5,
-  -272,  -272,   -88,  -272,   -89,  -272,    -7,  -272,  -272,   -84,
-  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,
-  -272,  -190,  -175,  -272,  -191,  -176,   -56,    -1,   -58,  -272,
-  -166,   -51,  -272,   -52,   -66,   -67,   -68,   -65,  -272,   -85,
-   -69,   -79,   -87,  -272,  -272,   -62,   -63,   -76,   -64,   -77,
-   -74,   -78,   -75,   -60,   -59,   -61,   438,  -272,  -272,  -239,
-  -141,  -122,   -31,  -252,  -150,  -149,  -123,   -32,  -253,  -272,
-  -147,  -130,   -33,  -128,   -34,  -156,  -129,  -112,   -35,  -152,
-  -136,  -110,  -153,  -134,  -121,  -111,  -135,  -127,  -118,  -272,
-  -143,  -133,  -116,  -109,   -28,  -213,  -146,  -139,  -117,  -115,
-   -29,  -226,  -142,  -124,   -30,  -272,  -272,   -90,   -36,    -8,
-   -37,    -9,  -272,  -272,  -107,  -104,  -272,  -272,  -103,  -174,
-  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,
-  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,
-   -57,  -272,  -272,  -272,  -272,  -272,  -272,  -272,    -4,  -272,
-   -41,   -38,  -272,  -106,  -272,  -151,  -170,  -265,  -272,  -225,
-  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -238,  -272,  -272,
-  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,
-  -272,  -251,  -272,  -188,  -272,  -203,  -272,  -272,  -272,  -272,
-  -272,  -272,  -272,  -148,  -172,  -132,  -131,  -204,  -157,  -205,
-  -114,  -113,  -154,  -138,  -137,  -178,  -155,  -120,  -272,  -272,
-  -119,  -144,  -145,  -193,  -179,  -177,  -173,  -171,  -272,  -140,
-  -194,  -192,  -125,  -126,  -272,  -272,   -42,  -272,  -108,  -272,
-  -272,  -272,  -272,  -263,  -272,  -223,  -272,  -236,  -272,  -249,
-  -272,  -186,  -272,  -201,  -272,  -272,  -272,  -262,  -222,  -235,
-  -248,  -185,  -200,  -264,  -224,  -237,  -250,  -187,  -202,  -272,
-  -272,  -272,  -272,  -272,  -272,  -261,  -221,  -234,  -247,  -184,
-  -199,  -272,  -272,  -272,  -272,  -272,  -272,   -27,  -165,  -164,
-   -19,   -17,  -163,   -18,  -109,    -6,  -272,   -45,  -272,   -43,
-   -11,   -12,   -13,   -14,  -272,   -15,   -16,  -272,  -158,   -10,
-  -160,  -105,  -257,  -272,  -217,  -272,  -272,  -272,  -272,  -272,
-  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -230,  -272,
-  -243,  -272,  -180,  -272,  -195,  -272,  -272,   -92,  -272,   -40,
-  -272,  -105,   -26,   -24,   -39,   -19,   -44,  -272,  -272,  -272,
-   -23,  -259,  -219,  -258,  -272,  -218,  -272,  -231,  -272,  -244,
-  -272,  -181,  -272,  -196,  -272,  -232,  -245,  -182,  -197,   -91,
-  -272,  -272,   -95,  -162,   -21,  -272,   -25,   -46,  -159,  -161,
-  -272,  -260,  -220,  -233,  -246,  -183,  -198,   -93,   -94,  -272,
-   -20,  -272,   -48,   -96,   -97,   -98,   -47,  -272,  -272,  -272,
-  -272,  -272,   -49,   -22,   -99,  -100,  -101,  -102 ]
-
-racc_goto_table = [
-    30,    71,    66,    39,     9,   133,   153,   167,   150,   149,
-    49,   139,    19,   329,    68,   266,   164,   190,   334,   129,
-   158,    43,    87,   428,    89,    90,    91,    92,    82,   366,
-   401,   168,   422,   268,   151,   146,    27,   169,   259,    79,
-    24,   195,   238,   409,   nil,   nil,   nil,   162,    73,    74,
-    75,    76,    77,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   204,   191,   212,   218,   nil,   nil,   nil,   230,   nil,
-   203,   nil,   211,   217,   244,    45,   161,   229,   nil,   236,
-   376,   nil,   nil,    43,   nil,   205,   nil,   213,   219,   nil,
-   nil,   206,   231,   214,   220,   nil,   241,   nil,   232,   245,
-   nil,   202,   nil,   210,   216,   255,   nil,   250,   228,   nil,
-   253,   nil,   nil,   nil,   261,   285,   158,   nil,    85,    86,
-   299,    88,   nil,   nil,   nil,   262,    93,    94,    95,   nil,
-   201,   nil,   209,   215,   nil,   nil,   nil,   227,   271,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   301,   nil,   251,   nil,
-   nil,   nil,   145,   nil,   303,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   269,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   352,   327,
-   nil,   nil,   nil,   nil,   nil,   350,   nil,   nil,   nil,   324,
-   nil,   nil,   nil,   359,   nil,   139,   nil,   nil,   361,   nil,
-   nil,   nil,   nil,   nil,   354,   nil,   nil,   nil,   nil,   nil,
-   345,   nil,   356,   nil,   348,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   363,   161,   nil,   nil,   nil,   nil,
-   nil,   nil,   365,   nil,   nil,   nil,   nil,   343,   nil,   nil,
-   nil,   346,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   390,   nil,   nil,   nil,   nil,   324,   nil,   388,   nil,
-   nil,   nil,   139,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   325,   nil,   nil,   nil,   nil,   402,   392,   201,   209,
-   215,   227,   nil,   nil,   nil,   394,   nil,   386,   nil,   nil,
-   158,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   408,   410,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   384,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   371,   nil,   373,   nil,   nil,   nil,   nil,   nil,   325,   nil,
-   nil,   380,   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,   405,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   420,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,    71,   nil,   nil,
-   nil,   nil,   nil,    71,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   426,   nil,   nil,   nil,   nil,   nil,   432 ]
-
-racc_goto_check = [
-     4,    38,    19,     8,     9,    47,    52,    67,    33,    10,
-    43,    48,     1,    12,    41,    37,    64,    36,    35,    24,
-    47,    40,    45,    22,    45,    45,    45,    45,    49,    50,
-    51,    47,    21,    53,    11,     6,     3,    48,    71,    43,
-     2,    75,    77,    79,   nil,   nil,   nil,    61,    40,    40,
-    40,    40,    40,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,    67,    33,    67,    67,   nil,   nil,   nil,    67,   nil,
-    64,   nil,    64,    64,    67,    44,    72,    64,   nil,    64,
-    12,   nil,   nil,    40,   nil,    47,   nil,    47,    47,   nil,
-   nil,    48,    47,    48,    48,   nil,    47,   nil,    48,    47,
-   nil,    61,   nil,    61,    61,    47,   nil,    48,    61,   nil,
-    48,   nil,   nil,   nil,    48,    64,    47,   nil,    44,    44,
-    67,    44,   nil,   nil,   nil,    61,    44,    44,    44,   nil,
-    72,   nil,    72,    72,   nil,   nil,   nil,    72,    61,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,    47,   nil,    72,   nil,
-   nil,   nil,    44,   nil,    48,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,    72,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    67,    10,
-   nil,   nil,   nil,   nil,   nil,    64,   nil,   nil,   nil,    47,
-   nil,   nil,   nil,    64,   nil,    48,   nil,   nil,    67,   nil,
-   nil,   nil,   nil,   nil,    47,   nil,   nil,   nil,   nil,   nil,
-    61,   nil,    48,   nil,    61,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,    47,    72,   nil,   nil,   nil,   nil,
-   nil,   nil,    48,   nil,   nil,   nil,   nil,    72,   nil,   nil,
-   nil,    72,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,    67,   nil,   nil,   nil,   nil,    47,   nil,    64,   nil,
-   nil,   nil,    48,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,     9,   nil,   nil,   nil,   nil,    52,    47,    72,    72,
-    72,    72,   nil,   nil,   nil,    48,   nil,    61,   nil,   nil,
-    47,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-    47,    47,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,    72,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-     9,   nil,     9,   nil,   nil,   nil,   nil,   nil,     9,   nil,
-   nil,     8,   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,     8,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,    19,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,    38,   nil,   nil,
-   nil,   nil,   nil,    38,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,     4,   nil,   nil,   nil,   nil,   nil,     4 ]
-
-racc_goto_pointer = [
-   nil,    12,    40,    36,     0,   nil,   -62,   nil,     0,     4,
-   -88,   -63,  -254,   nil,   nil,   nil,   nil,   nil,   nil,   -21,
-   nil,  -375,  -399,   nil,   -64,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   -89,   nil,  -249,  -130,  -175,   -29,   nil,
-    14,   -12,   nil,    -2,    68,   -30,   nil,   -78,   -72,   -19,
-  -286,  -338,   -92,  -161,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   -62,   nil,   nil,   -93,   nil,   nil,  -102,   nil,   nil,
-   nil,  -147,   -33,   nil,   nil,  -119,   nil,  -131,   nil,  -336,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil ]
-
-racc_goto_default = [
-   nil,   nil,   nil,   339,   nil,    33,   nil,     3,   nil,    70,
-   nil,   nil,   nil,   330,   331,   332,   333,   335,   336,     4,
-   337,   nil,   nil,   341,   317,   134,   140,   144,   102,   107,
-   112,   114,   118,   nil,   152,   nil,   nil,   nil,    32,     1,
-     2,     5,     8,    10,    14,    17,    22,    25,    29,    31,
-   nil,   nil,   nil,   154,   117,   121,   125,   128,   132,   138,
-   143,   101,   106,   111,   113,   116,   120,   123,   126,   130,
-   137,   142,   100,   104,   110,   nil,   115,   nil,   338,   340,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil ]
-
-racc_token_table = {
- false => 0,
- Object.new => 1,
- :UMINUS => 2,
- :UPLUS => 3,
- :Star_code => 4,
- :Slash_code => 5,
- "+" => 6,
- "-" => 7,
- :SYM_EQ => 8,
- :SYM_NE => 9,
- :SYM_LT => 10,
- :SYM_START_DBLOCK => 11,
- :SYM_GT => 12,
- :SYM_END_DBLOCK => 13,
- :SYM_LE => 14,
- :SYM_GE => 15,
- :EOF => 16,
- :SYM_MATCHES => 17,
- :SYM_START_CBLOCK => 18,
- :SYM_END_CBLOCK => 19,
- :V_LOCAL_TERM_CODE_REF => 20,
- :v_c_domain_type => 21,
- :ERR_C_DOMAIN_TYPE => 22,
- :SYM_USE_NODE => 23,
- :SYM_ALLOW_ARCHETYPE => 24,
- :V_ATTRIBUTE_IDENTIFIER => 25,
- :SYM_INCLUDE => 26,
- :SYM_EXCLUDE => 27,
- ":" => 28,
- :SYM_EXISTS => 29,
- :SYM_NOT => 30,
- "=" => 31,
- :SYM_AND => 32,
- :SYM_OR => 33,
- :SYM_XOR => 34,
- :SYM_IMPLIES => 35,
- :Left_parenthesis_code => 36,
- :Right_parenthesis_code => 37,
- :SYM_TRUE => 38,
- :SYM_FALSE => 39,
- "^" => 40,
- :SYM_EXISTENCE => 41,
- :V_INTEGER => 42,
- :SYM_ELLIPSIS => 43,
- :SYM_CARDINALITY => 44,
- :Semicolon_code => 45,
- :SYM_ORDERED => 46,
- :SYM_UNORDERED => 47,
- :SYM_UNIQUE => 48,
- :SYM_OCCURRENCES => 49,
- :V_ISO8601_DATE_CONSTRAINT_PATTERN => 50,
- :V_ISO8601_TIME_CONSTRAINT_PATTERN => 51,
- :V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN => 52,
- :V_STRING => 53,
- "," => 54,
- :SYM_LIST_CONTINUE => 55,
- :V_REGEXP => 56,
- :SYM_INTERVAL_DELIM => 57,
- :V_QUALIFIED_TERM_CODE_REF => 58,
- :V_TERM_CODE_CONSTRAINT => 59,
- :V_TYPE_IDENTIFIER => 60,
- :V_GENERIC_TYPE_IDENTIFIER => 61,
- :V_REAL => 62,
- :V_CHARACTER => 63,
- :V_ISO8601_EXTENDED_DATE => 64,
- :V_ISO8601_EXTENDED_TIME => 65,
- :V_ISO8601_EXTENDED_DATE_TIME => 66,
- :V_ISO8601_DURATION_CONSTRAINT_PATTERN => 67,
- :V_ISO8601_DURATION => 68,
- :ERR_V_QUALIFIED_TERM_CODE_REF => 69,
- :V_URI => 70 }
-
-racc_use_result_var = true
-
-racc_nt_base = 71
-
-Racc_arg = [
- racc_action_table,
- racc_action_check,
- racc_action_default,
- racc_action_pointer,
- racc_goto_table,
- racc_goto_check,
- racc_goto_default,
- racc_goto_pointer,
- racc_nt_base,
- racc_reduce_table,
- racc_token_table,
- racc_shift_n,
- racc_reduce_n,
- racc_use_result_var ]
-
-Racc_token_to_s_table = [
-'$end',
-'error',
-'UMINUS',
-'UPLUS',
-'Star_code',
-'Slash_code',
-'"+"',
-'"-"',
-'SYM_EQ',
-'SYM_NE',
-'SYM_LT',
-'SYM_START_DBLOCK',
-'SYM_GT',
-'SYM_END_DBLOCK',
-'SYM_LE',
-'SYM_GE',
-'EOF',
-'SYM_MATCHES',
-'SYM_START_CBLOCK',
-'SYM_END_CBLOCK',
-'V_LOCAL_TERM_CODE_REF',
-'v_c_domain_type',
-'ERR_C_DOMAIN_TYPE',
-'SYM_USE_NODE',
-'SYM_ALLOW_ARCHETYPE',
-'V_ATTRIBUTE_IDENTIFIER',
-'SYM_INCLUDE',
-'SYM_EXCLUDE',
-'":"',
-'SYM_EXISTS',
-'SYM_NOT',
-'"="',
-'SYM_AND',
-'SYM_OR',
-'SYM_XOR',
-'SYM_IMPLIES',
-'Left_parenthesis_code',
-'Right_parenthesis_code',
-'SYM_TRUE',
-'SYM_FALSE',
-'"^"',
-'SYM_EXISTENCE',
-'V_INTEGER',
-'SYM_ELLIPSIS',
-'SYM_CARDINALITY',
-'Semicolon_code',
-'SYM_ORDERED',
-'SYM_UNORDERED',
-'SYM_UNIQUE',
-'SYM_OCCURRENCES',
-'V_ISO8601_DATE_CONSTRAINT_PATTERN',
-'V_ISO8601_TIME_CONSTRAINT_PATTERN',
-'V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN',
-'V_STRING',
-'","',
-'SYM_LIST_CONTINUE',
-'V_REGEXP',
-'SYM_INTERVAL_DELIM',
-'V_QUALIFIED_TERM_CODE_REF',
-'V_TERM_CODE_CONSTRAINT',
-'V_TYPE_IDENTIFIER',
-'V_GENERIC_TYPE_IDENTIFIER',
-'V_REAL',
-'V_CHARACTER',
-'V_ISO8601_EXTENDED_DATE',
-'V_ISO8601_EXTENDED_TIME',
-'V_ISO8601_EXTENDED_DATE_TIME',
-'V_ISO8601_DURATION_CONSTRAINT_PATTERN',
-'V_ISO8601_DURATION',
-'ERR_V_QUALIFIED_TERM_CODE_REF',
-'V_URI',
-'$start',
-'cadl',
-'input',
-'c_complex_object',
-'assertions',
-'c_complex_object_head',
-'c_complex_object_body',
-'c_complex_object_id',
-'c_occurrences',
-'type_identifier',
-'c_any',
-'c_attributes',
-'c_object',
-'archetype_internal_ref',
-'archetype_slot',
-'constraint_ref',
-'c_code_phrase',
-'c_ordinal',
-'c_primitive_object',
-'absolute_path',
-'c_archetype_slot_head',
-'c_includes',
-'c_excludes',
-'c_archetype_slot_id',
-'c_primitive',
-'c_integer',
-'c_real',
-'c_date',
-'c_time',
-'c_date_time',
-'c_duration',
-'c_string',
-'c_boolean',
-'c_attribute',
-'c_attr_head',
-'c_attr_values',
-'c_existence',
-'c_cardinality',
-'assertion',
-'any_identifier',
-'boolean_expression',
-'boolean_leaf',
-'boolean_node',
-'relative_path',
-'arithmetic_expression',
-'arithmetic_leaf',
-'arithmetic_node',
-'integer_value',
-'real_value',
-'path_segment',
-'existence_spec',
-'cardinality_spec',
-'occurrence_spec',
-'cardinality_limit_value',
-'c_integer_spec',
-'integer_list_value',
-'integer_interval_value',
-'c_real_spec',
-'real_list_value',
-'real_interval_value',
-'c_date_constraint',
-'date_value',
-'date_interval_value',
-'c_time_constraint',
-'time_value',
-'time_interval_value',
-'c_date_time_constraint',
-'date_time_value',
-'date_time_interval_value',
-'c_duration_constraint',
-'duration_pattern',
-'duration_interval_value',
-'duration_value',
-'c_string_spec',
-'string_list_value',
-'string_value',
-'c_boolean_spec',
-'boolean_value',
-'c_ordinal_spec',
-'ordinal',
-'boolean_list_value',
-'character_value',
-'character_list_value',
-'date_list_value',
-'time_list_value',
-'date_time_list_value',
-'duration_list_value',
-'term_code',
-'term_code_list_value',
-'uri_value']
-
-Racc_debug_parser = false
-
-##### racc system variables end #####
-
- # reduce 0 omitted
-
- # reduce 1 omitted
-
- # reduce 2 omitted
-
- # reduce 3 omitted
-
- # reduce 4 omitted
-
- # reduce 5 omitted
-
- # reduce 6 omitted
-
- # reduce 7 omitted
-
- # reduce 8 omitted
-
- # reduce 9 omitted
-
- # reduce 10 omitted
-
- # reduce 11 omitted
-
- # reduce 12 omitted
-
- # reduce 13 omitted
-
- # reduce 14 omitted
-
- # reduce 15 omitted
-
- # reduce 16 omitted
-
- # reduce 17 omitted
-
- # reduce 18 omitted
-
- # reduce 19 omitted
-
- # reduce 20 omitted
-
- # reduce 21 omitted
-
- # reduce 22 omitted
-
- # reduce 23 omitted
-
- # reduce 24 omitted
-
- # reduce 25 omitted
-
- # reduce 26 omitted
-
- # reduce 27 omitted
-
- # reduce 28 omitted
-
- # reduce 29 omitted
-
- # reduce 30 omitted
-
- # reduce 31 omitted
-
- # reduce 32 omitted
-
- # reduce 33 omitted
-
- # reduce 34 omitted
-
- # reduce 35 omitted
-
- # reduce 36 omitted
-
- # reduce 37 omitted
-
- # reduce 38 omitted
-
- # reduce 39 omitted
-
- # reduce 40 omitted
-
- # reduce 41 omitted
-
- # reduce 42 omitted
-
- # reduce 43 omitted
-
- # reduce 44 omitted
-
- # reduce 45 omitted
-
- # reduce 46 omitted
-
- # reduce 47 omitted
-
- # reduce 48 omitted
-
- # reduce 49 omitted
-
- # reduce 50 omitted
-
- # reduce 51 omitted
-
- # reduce 52 omitted
-
- # reduce 53 omitted
-
- # reduce 54 omitted
-
- # reduce 55 omitted
-
- # reduce 56 omitted
-
- # reduce 57 omitted
-
- # reduce 58 omitted
-
- # reduce 59 omitted
-
- # reduce 60 omitted
-
- # reduce 61 omitted
-
- # reduce 62 omitted
-
- # reduce 63 omitted
-
- # reduce 64 omitted
-
- # reduce 65 omitted
-
- # reduce 66 omitted
-
- # reduce 67 omitted
-
- # reduce 68 omitted
-
- # reduce 69 omitted
-
- # reduce 70 omitted
-
- # reduce 71 omitted
-
- # reduce 72 omitted
-
- # reduce 73 omitted
-
- # reduce 74 omitted
-
- # reduce 75 omitted
-
- # reduce 76 omitted
-
- # reduce 77 omitted
-
- # reduce 78 omitted
-
- # reduce 79 omitted
-
- # reduce 80 omitted
-
- # reduce 81 omitted
-
- # reduce 82 omitted
-
- # reduce 83 omitted
-
- # reduce 84 omitted
-
- # reduce 85 omitted
-
- # reduce 86 omitted
-
- # reduce 87 omitted
-
- # reduce 88 omitted
-
- # reduce 89 omitted
-
- # reduce 90 omitted
-
- # reduce 91 omitted
-
- # reduce 92 omitted
-
- # reduce 93 omitted
-
- # reduce 94 omitted
-
- # reduce 95 omitted
-
- # reduce 96 omitted
-
- # reduce 97 omitted
-
- # reduce 98 omitted
-
- # reduce 99 omitted
-
- # reduce 100 omitted
-
- # reduce 101 omitted
-
- # reduce 102 omitted
-
- # reduce 103 omitted
-
- # reduce 104 omitted
-
- # reduce 105 omitted
-
- # reduce 106 omitted
-
- # reduce 107 omitted
-
- # reduce 108 omitted
-
- # reduce 109 omitted
-
- # reduce 110 omitted
-
- # reduce 111 omitted
-
- # reduce 112 omitted
-
- # reduce 113 omitted
-
- # reduce 114 omitted
-
- # reduce 115 omitted
-
- # reduce 116 omitted
-
- # reduce 117 omitted
-
- # reduce 118 omitted
-
- # reduce 119 omitted
-
- # reduce 120 omitted
-
- # reduce 121 omitted
-
- # reduce 122 omitted
-
- # reduce 123 omitted
-
- # reduce 124 omitted
-
- # reduce 125 omitted
-
- # reduce 126 omitted
-
- # reduce 127 omitted
-
- # reduce 128 omitted
-
- # reduce 129 omitted
-
- # reduce 130 omitted
-
- # reduce 131 omitted
-
- # reduce 132 omitted
-
- # reduce 133 omitted
-
- # reduce 134 omitted
-
- # reduce 135 omitted
-
- # reduce 136 omitted
-
- # reduce 137 omitted
-
- # reduce 138 omitted
-
- # reduce 139 omitted
-
- # reduce 140 omitted
-
- # reduce 141 omitted
-
- # reduce 142 omitted
-
- # reduce 143 omitted
-
- # reduce 144 omitted
-
- # reduce 145 omitted
-
- # reduce 146 omitted
-
- # reduce 147 omitted
-
- # reduce 148 omitted
-
- # reduce 149 omitted
-
- # reduce 150 omitted
-
- # reduce 151 omitted
-
- # reduce 152 omitted
-
- # reduce 153 omitted
-
- # reduce 154 omitted
-
- # reduce 155 omitted
-
- # reduce 156 omitted
-
- # reduce 157 omitted
-
- # reduce 158 omitted
-
- # reduce 159 omitted
-
- # reduce 160 omitted
-
- # reduce 161 omitted
-
- # reduce 162 omitted
-
- # reduce 163 omitted
-
- # reduce 164 omitted
-
- # reduce 165 omitted
-
- # reduce 166 omitted
-
- # reduce 167 omitted
-
- # reduce 168 omitted
-
- # reduce 169 omitted
-
- # reduce 170 omitted
-
- # reduce 171 omitted
-
- # reduce 172 omitted
-
- # reduce 173 omitted
-
- # reduce 174 omitted
-
- # reduce 175 omitted
-
- # reduce 176 omitted
-
- # reduce 177 omitted
-
- # reduce 178 omitted
-
- # reduce 179 omitted
-
- # reduce 180 omitted
-
- # reduce 181 omitted
-
- # reduce 182 omitted
-
- # reduce 183 omitted
-
- # reduce 184 omitted
-
- # reduce 185 omitted
-
- # reduce 186 omitted
-
- # reduce 187 omitted
-
- # reduce 188 omitted
-
- # reduce 189 omitted
-
- # reduce 190 omitted
-
- # reduce 191 omitted
-
- # reduce 192 omitted
-
- # reduce 193 omitted
-
- # reduce 194 omitted
-
- # reduce 195 omitted
-
- # reduce 196 omitted
-
- # reduce 197 omitted
-
- # reduce 198 omitted
-
- # reduce 199 omitted
-
- # reduce 200 omitted
-
- # reduce 201 omitted
-
- # reduce 202 omitted
-
- # reduce 203 omitted
-
- # reduce 204 omitted
-
- # reduce 205 omitted
-
- # reduce 206 omitted
-
- # reduce 207 omitted
-
- # reduce 208 omitted
-
- # reduce 209 omitted
-
- # reduce 210 omitted
-
- # reduce 211 omitted
-
- # reduce 212 omitted
-
- # reduce 213 omitted
-
- # reduce 214 omitted
-
- # reduce 215 omitted
-
- # reduce 216 omitted
-
- # reduce 217 omitted
-
- # reduce 218 omitted
-
- # reduce 219 omitted
-
- # reduce 220 omitted
-
- # reduce 221 omitted
-
- # reduce 222 omitted
-
- # reduce 223 omitted
-
- # reduce 224 omitted
-
- # reduce 225 omitted
-
- # reduce 226 omitted
-
- # reduce 227 omitted
-
- # reduce 228 omitted
-
- # reduce 229 omitted
-
- # reduce 230 omitted
-
- # reduce 231 omitted
-
- # reduce 232 omitted
-
- # reduce 233 omitted
-
- # reduce 234 omitted
-
- # reduce 235 omitted
-
- # reduce 236 omitted
-
- # reduce 237 omitted
-
- # reduce 238 omitted
-
- # reduce 239 omitted
-
- # reduce 240 omitted
-
- # reduce 241 omitted
-
- # reduce 242 omitted
-
- # reduce 243 omitted
-
- # reduce 244 omitted
-
- # reduce 245 omitted
-
- # reduce 246 omitted
-
- # reduce 247 omitted
-
- # reduce 248 omitted
-
- # reduce 249 omitted
-
- # reduce 250 omitted
-
- # reduce 251 omitted
-
- # reduce 252 omitted
-
- # reduce 253 omitted
-
- # reduce 254 omitted
-
- # reduce 255 omitted
-
- # reduce 256 omitted
-
- # reduce 257 omitted
-
- # reduce 258 omitted
-
- # reduce 259 omitted
-
- # reduce 260 omitted
-
- # reduce 261 omitted
-
- # reduce 262 omitted
-
- # reduce 263 omitted
-
- # reduce 264 omitted
-
- # reduce 265 omitted
-
- # reduce 266 omitted
-
- # reduce 267 omitted
-
- # reduce 268 omitted
-
- # reduce 269 omitted
-
- # reduce 270 omitted
-
- # reduce 271 omitted
-
- def _reduce_none( val, _values, result )
-  result
- end
-
-  end   # class CADLParser
-
-end   # module OpenEHR
Index: ruby/trunk/adl_parser/lib/dparser.rb
===================================================================
--- ruby/trunk/adl_parser/lib/dparser.rb	(revision 18)
+++ 	(revision )
@@ -1,1067 +1,0 @@
-#
-# DO NOT MODIFY!!!!
-# This file is automatically generated by racc 1.4.5
-# from racc grammer file "lib/dparser.y".
-#
-
-require 'racc/parser'
-
-
-
-$:.unshift File.join(File.dirname(__FILE__))
-$DEBUG = false
-
-
-
-module OpenEHR
-
-  class DADLParser < Racc::Parser
-
-module_eval <<'..end lib/dparser.y modeval..id28190ce3f8', 'lib/dparser.y', 228
-###----------/* keywords */ --------------------------------------------- 
-@@reserved = {
-  'true' => :SYM_TRUE, #[Tt][Rr][Uu][Ee] -- -> SYM_TRUE 
-  'false' => :SYM_FALSE, # [Ff][Aa][Ll][Ss][Ee] -- -> SYM_FALSE 
-  'infinity' => :SYM_INFINITY # [Ii][Nn][Ff][Ii][Nn][Ii][Tt][Yy] -- -> SYM_INFINITY 
-}
-
-###----------/* Scanner */ ----------------------------------------------- 
-
-def scan
-  until @data.nil?  do
-    case @data
-    when /\A\n/ # carriage return
-      @lineno += 1
-      ;
-    when /\A[ \t\r\f]+/ #just drop it
-      ;
-    when /\A--.*\n/ # single line comment
-      @lineno += 1
-      ;
-    ###----------/* symbols */ ------------------------------------------------- 
-    when /\A\=/   # =
-      yield :SYM_EQ, :SYM_EQ
-    when /\A\>\=/   # >=
-      yield :SYM_GE, :SYM_GE
-    when /\A\<\=/   # <=
-      yield :SYM_LE, :SYM_LE
-    when /\A\</   # <
-      if @in_interval
-        @start_block_received = false
-        yield :SYM_LT, :SYM_LT
-      else
-        @start_block_received = true
-        yield :SYM_START_DBLOCK, :SYM_START_DBLOCK
-      end
-    when /\A\>/   # >
-      if @in_interval
-        yield :SYM_GT, :SYM_GT
-      else
-        yield :SYM_END_DBLOCK, :SYM_END_DBLOCK
-      end
-    when /\A\-/   # -
-      yield :Minus_code, :Minus_code
-    when /\A\+/   # +
-      yield :Plus_code, :Plus_code
-    when /\A\*/   # *
-      yield :Star_code, :Star_code
-    when /\A\//   # /
-      yield :Slash_code, :Slash_code
-    when /\A\^/   # ^
-      yield :Caret_code, :Caret_code
-    when /\A\./   # .
-      yield :Dot_code, :Dot_code
-    when /\A\;/   # ;
-      yield :Semicolon_code, :Semicolon_code
-    when /\A\,/   # ,
-      yield :Comma_code, :Comma_code
-    when /\A\:/   # :
-      yield :Colon_code, :Colon_code
-    when /\A\!/   # !
-      yield :Exclamation_code, :Exclamation_code
-    when /\A\(/   # (
-      yield :Left_parenthesis_code, :Left_parenthesis_code
-    when /\A\)/   # )
-      yield :Right_parenthesis_code, :Right_parenthesis_code
-    when /\A\$/   # $
-      yield :Dollar_code, :Dollar_code
-    when /\A\?\?/   # ??
-      yield :SYM_DT_UNKNOWN, :SYM_DT_UNKNOWN
-    when /\A\?/   # ?
-      yield :Question_mark_code, :Question_mark_code
-    when /\A\|/   # |
-      if @in_interval
-        @in_interval = false
-      elsif @start_block_received
-        @in_interval = true
-        @start_block_received = false
-      end
-      yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
-    when /\A\[/   # [
-      yield :Left_bracket_code, :Left_bracket_code
-    when /\A\]/   # ]
-      yield :Right_bracket_code, :Right_bracket_code
-    when /\A\../   # ..
-      yield :SYM_ELLIPSIS, :SYM_ELLIPSIS
-    when /\A\.../   # ...
-      yield :SYM_LIST_CONTINUE, :SYM_LIST_CONTINUE
-    when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
-      yield :V_GENERIC_TYPE_IDENTIFIER, $&
-    when /\A[a-z][a-zA-Z0-9_]*/
-      word = $&.downcase
-      if @@reserved[word]
-        yield @@reserved[word], @@reserved[word]
-      else
-        yield :V_ATTRIBUTE_IDENTIFIER, $&
-      end
-    when /\A\[[a-zA-Z0-9._\-]+::[a-zA-Z0-9._\-]+\]/   #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
-      yield :V_QUALIFIED_TERM_CODE_REF, $&
-    when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
-      yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
-    when /\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/   #V_LOCAL_TERM_CODE_REF
-      yield :V_LOCAL_TERM_CODE_REF, $&
-    when /\Aa[ct][0-9.]+/   #V_LOCAL_CODE
-      yield :V_LOCAL_CODE, $&
-    when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9](Z|[+-][0-9]{4})?/   #V_ISO8601_EXTENDED_DATE_TIME YYYY-MM-DDThh:mm:ss[,sss][Z|+/- -n-n-n-n-]-
-      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]
-      yield :V_ISO8601_EXTENDED_TIME, $&
-    when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]|[0-9]{4}-[0-1][0-9]/   #V_ISO8601_EXTENDED_DATE YYYY-MM-DD
-      yield :V_ISO8601_EXTENDED_DATE, $&
-    when /\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?|P([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/   #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
-      yield :V_ISO8601_DURATION, $&
-    when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
-      yield :V_GENERIC_TYPE_IDENTIFIER, $&
-    when /\A[0-9]+|[0-9]+[eE][+-]?[0-9]+/   #V_INTEGER
-      yield :V_INTEGER, $&
-    when /\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+ /   #V_REAL
-      yield :V_REAL, $&
-#    when /\A"((?:[^"\\]+|\\.)*)"/ #V_STRING
-    when /\A"([^"]*)"/m #V_STRING
-      yield :V_STRING, $1
-# \"[^\\\n"]*\" 
-# \"[^\\\n"]*{ -- beginning of a multi-line string 
-# <IN_STR> { 
-# \\\\ -- match escaped backslash, i.e. \\ -> \ 
-# \\\" -- match escaped double quote, i.e. \” -> “ 
-# {UTF8CHAR}+ -- match UTF8 chars 
-# [^\\\n"]+ -- match any other characters 
-# \\\n[ \t\r]* -- match LF in line 
-# [^\\\n"]*\" -- match final end of string 
-# .|\n | 
-# <<EOF>> -- unclosed String -> ERR_STRING 
-# }
-# ###----------/* V_CHARACTER */ -------------------------------------------- 
-# \'{UTF8CHAR}\' -- UTF8 char 
-# \'.{1,2} | 
-# \'\\[0-9]+(\/)? -- invalid character -> ERR_CHARACTER 
-    when /\A[a-z]+:\/\/[^<>|\\{}^~"\[\] ]*/ #V_URI
-      yield :V_URI, $&
-    when /\A\S/ #UTF8CHAR
-      yield :UTF8CHAR, $&
-    end
-    @data = $' # variable $' receives the string after the match
-  end
-  yield :EOF, nil
-  yield false, '$'
-end # of scan
-
-
-def parse(data, filename, lineno = 1, debug = false)
-  @yydebug = true
-  @parsestring = data
-  @data = data
-  @lineno = lineno
-  @filename = filename
-  @in_interval = false
-  @start_block_received = false
-  @start_block_received = false
-  yyparse self, :scan
-end
-
-def on_error( t, v, values)
-  raise Racc::ParseError, "#{@filename}:#{@lineno}: Inline syntax error on #{v.inspect}"
-end
-
-# ###----------/* CADL Blocks */ -------------------------------------------
-# \{[^{}]* -- beginning of CADL block 
-# <IN_CADL_BLOCK>\{[^{}]* -- got an open brace 
-# <IN_CADL_BLOCK>[^{}]*\} -- got a close brace 
-
-
-
-
-
-
-### Local Variables:
-### mode:ruby
-### mode:font-lock
-### comment-column:0
-### comment-start: "### "
-### comment-end:"" 
-### End:
-
-
-
-
-..end lib/dparser.y modeval..id28190ce3f8
-
-##### racc 1.4.5 generates ###
-
-racc_reduce_table = [
- 0, 0, :racc_error,
- 2, 40, :_reduce_none,
- 1, 41, :_reduce_none,
- 1, 41, :_reduce_none,
- 1, 42, :_reduce_none,
- 2, 42, :_reduce_none,
- 3, 42, :_reduce_none,
- 3, 44, :_reduce_none,
- 1, 45, :_reduce_none,
- 1, 46, :_reduce_none,
- 1, 46, :_reduce_none,
- 1, 43, :_reduce_none,
- 1, 43, :_reduce_none,
- 1, 49, :_reduce_none,
- 2, 49, :_reduce_none,
- 3, 50, :_reduce_none,
- 1, 52, :_reduce_none,
- 1, 53, :_reduce_none,
- 2, 53, :_reduce_none,
- 3, 54, :_reduce_none,
- 3, 55, :_reduce_none,
- 1, 48, :_reduce_none,
- 2, 48, :_reduce_none,
- 2, 57, :_reduce_none,
- 3, 57, :_reduce_none,
- 1, 58, :_reduce_none,
- 1, 47, :_reduce_none,
- 2, 47, :_reduce_none,
- 3, 59, :_reduce_none,
- 1, 60, :_reduce_none,
- 1, 60, :_reduce_none,
- 1, 60, :_reduce_none,
- 1, 60, :_reduce_none,
- 1, 60, :_reduce_none,
- 1, 56, :_reduce_none,
- 1, 56, :_reduce_none,
- 1, 56, :_reduce_none,
- 1, 56, :_reduce_none,
- 1, 56, :_reduce_none,
- 1, 56, :_reduce_none,
- 1, 56, :_reduce_none,
- 1, 56, :_reduce_none,
- 1, 56, :_reduce_none,
- 1, 56, :_reduce_none,
- 1, 61, :_reduce_none,
- 1, 61, :_reduce_none,
- 1, 61, :_reduce_none,
- 1, 61, :_reduce_none,
- 1, 61, :_reduce_none,
- 1, 61, :_reduce_none,
- 1, 61, :_reduce_none,
- 1, 61, :_reduce_none,
- 1, 61, :_reduce_none,
- 1, 62, :_reduce_none,
- 1, 62, :_reduce_none,
- 1, 62, :_reduce_none,
- 1, 62, :_reduce_none,
- 1, 62, :_reduce_none,
- 1, 62, :_reduce_none,
- 1, 51, :_reduce_none,
- 1, 51, :_reduce_none,
- 1, 65, :_reduce_none,
- 3, 75, :_reduce_none,
- 3, 75, :_reduce_none,
- 3, 75, :_reduce_none,
- 1, 66, :_reduce_none,
- 2, 66, :_reduce_none,
- 2, 66, :_reduce_none,
- 3, 76, :_reduce_none,
- 3, 76, :_reduce_none,
- 3, 76, :_reduce_none,
- 5, 84, :_reduce_none,
- 6, 84, :_reduce_none,
- 6, 84, :_reduce_none,
- 7, 84, :_reduce_none,
- 4, 84, :_reduce_none,
- 4, 84, :_reduce_none,
- 4, 84, :_reduce_none,
- 4, 84, :_reduce_none,
- 3, 84, :_reduce_none,
- 1, 67, :_reduce_none,
- 2, 67, :_reduce_none,
- 2, 67, :_reduce_none,
- 3, 77, :_reduce_none,
- 3, 77, :_reduce_none,
- 3, 77, :_reduce_none,
- 5, 85, :_reduce_none,
- 6, 85, :_reduce_none,
- 6, 85, :_reduce_none,
- 7, 85, :_reduce_none,
- 4, 85, :_reduce_none,
- 4, 85, :_reduce_none,
- 4, 85, :_reduce_none,
- 4, 85, :_reduce_none,
- 3, 85, :_reduce_none,
- 1, 68, :_reduce_none,
- 1, 68, :_reduce_none,
- 3, 78, :_reduce_none,
- 3, 78, :_reduce_none,
- 3, 78, :_reduce_none,
- 1, 69, :_reduce_none,
- 3, 79, :_reduce_none,
- 3, 79, :_reduce_none,
- 3, 79, :_reduce_none,
- 1, 70, :_reduce_none,
- 3, 80, :_reduce_none,
- 3, 80, :_reduce_none,
- 3, 80, :_reduce_none,
- 5, 86, :_reduce_none,
- 6, 86, :_reduce_none,
- 6, 86, :_reduce_none,
- 7, 86, :_reduce_none,
- 4, 86, :_reduce_none,
- 4, 86, :_reduce_none,
- 4, 86, :_reduce_none,
- 4, 86, :_reduce_none,
- 3, 86, :_reduce_none,
- 1, 71, :_reduce_none,
- 3, 81, :_reduce_none,
- 3, 81, :_reduce_none,
- 3, 81, :_reduce_none,
- 5, 87, :_reduce_none,
- 6, 87, :_reduce_none,
- 6, 87, :_reduce_none,
- 7, 87, :_reduce_none,
- 4, 87, :_reduce_none,
- 4, 87, :_reduce_none,
- 4, 87, :_reduce_none,
- 4, 87, :_reduce_none,
- 3, 87, :_reduce_none,
- 1, 72, :_reduce_none,
- 3, 82, :_reduce_none,
- 3, 82, :_reduce_none,
- 3, 82, :_reduce_none,
- 5, 88, :_reduce_none,
- 6, 88, :_reduce_none,
- 6, 88, :_reduce_none,
- 7, 88, :_reduce_none,
- 4, 88, :_reduce_none,
- 4, 88, :_reduce_none,
- 4, 88, :_reduce_none,
- 4, 88, :_reduce_none,
- 3, 88, :_reduce_none,
- 1, 73, :_reduce_none,
- 3, 83, :_reduce_none,
- 3, 83, :_reduce_none,
- 3, 83, :_reduce_none,
- 5, 89, :_reduce_none,
- 6, 89, :_reduce_none,
- 6, 89, :_reduce_none,
- 7, 89, :_reduce_none,
- 4, 89, :_reduce_none,
- 4, 89, :_reduce_none,
- 4, 89, :_reduce_none,
- 4, 89, :_reduce_none,
- 3, 89, :_reduce_none,
- 1, 63, :_reduce_none,
- 3, 64, :_reduce_none,
- 3, 64, :_reduce_none,
- 3, 64, :_reduce_none,
- 1, 74, :_reduce_none ]
-
-racc_reduce_n = 161
-
-racc_shift_n = 297
-
-racc_action_table = [
-    54,    57,   142,   143,   202,   153,   208,   144,   105,   145,
-   242,   264,    62,   -16,   262,   240,    79,    70,    54,    57,
-    50,    82,    50,    56,    59,    61,    62,    40,    42,    46,
-    48,    79,    52,    54,    57,    43,    48,    48,    50,    46,
-    46,    56,    59,    61,    62,    40,    42,    46,    48,   156,
-    52,    54,    57,    50,   230,   200,    56,    40,   260,   238,
-    40,    42,    46,    48,    54,    57,    48,   258,   126,    40,
-   119,    50,   120,   122,    56,    54,    57,    40,    40,    42,
-    46,    48,    42,    42,    50,    62,    31,    56,    54,    57,
-    40,    40,    42,    46,    48,    50,    16,     1,    56,   198,
-   138,   139,    40,    42,    46,    48,   138,   139,    50,    46,
-   210,    56,   138,   139,   136,    40,    42,    46,    48,   148,
-   138,   139,   135,    56,   138,   139,   138,   139,   256,    56,
-   142,   143,   142,   143,    31,    56,   142,   143,   142,   143,
-   142,   143,   254,    56,    16,     1,    19,    56,   195,    56,
-    50,    11,    50,    64,     2,   141,    50,    42,    50,    25,
-    50,    11,   151,   134,    16,     1,    37,    59,    61,   102,
-    30,    11,   103,   104,   215,   216,   105,   184,   185,   186,
-   187,   211,   212,    59,    61,   213,   214,   174,   175,   182,
-   183,   217,   218,   219,   220,   221,   222,    30,    11,   158,
-   159,   160,   161,   133,   132,    46,   131,    48,   130,   129,
-   128,   204,    79,   127,   103,    42,   102,   104,   116,   115,
-   114,   113,   112,   111,   110,   109,   223,   224,   225,   226,
-   227,   228,   108,   231,   232,   233,   234,   235,   236,   107,
-   106,   101,   243,   244,   245,   246,   247,   248,   249,    31,
-   251,    11,    39,    38,    28,    25,    23,     2,   265,    40,
-   267,    42,   269,    46,   271,    48,   273,   274,   275,    18,
-   277,   -16,   279,    40,   281,    42,   283,    46,   285,    48,
-   287,   288,   289,   290,   291,   292,   293,   294,   295,   296 ]
-
-racc_action_check = [
-    31,    31,   159,   159,   133,   114,   159,   108,   139,   108,
-   187,   222,   114,    31,   220,   185,   133,    31,    25,    25,
-    31,    31,   159,    31,    31,    31,    31,    31,    31,    31,
-    31,    31,    31,   119,   119,    25,   187,   222,    25,   220,
-   185,    25,    25,    25,    25,    25,    25,    25,    25,   116,
-    25,   122,   122,   119,   175,   132,   119,   116,   218,   183,
-   119,   119,   119,   119,    82,    82,   132,   216,    82,   113,
-    82,   122,    82,    82,   122,   120,   120,   175,   122,   122,
-   122,   122,   218,   183,    82,   111,    39,    82,   126,   126,
-   216,    82,    82,    82,    82,   120,    39,    39,   120,   131,
-   110,   110,   120,   120,   120,   120,   161,   161,   126,   131,
-   161,   126,   256,   256,    98,   126,   126,   126,   126,   110,
-   106,   106,    96,   110,   214,   214,   210,   210,   214,   161,
-   254,   254,   208,   208,    18,   256,   107,   107,   212,   212,
-   136,   136,   212,   106,    18,    18,     6,   214,   128,   210,
-   254,     6,   208,    26,     0,   107,   107,   128,   212,    26,
-   136,     0,   112,    95,     0,     0,    20,   112,   112,    54,
-    20,    20,    54,    57,   164,   164,    57,   124,   124,   125,
-   125,   162,   162,   109,   109,   163,   163,   121,   121,   123,
-   123,   165,   165,   166,   166,   167,   167,    15,    15,   117,
-   117,   118,   118,    93,    90,   127,    87,   130,    86,    85,
-    84,   134,   135,    83,   138,   115,   142,   143,    81,    80,
-    78,    77,    76,    75,    73,    72,   168,   169,   170,   171,
-   172,   173,    70,   176,   177,   178,   179,   180,   181,    69,
-    68,    45,   188,   189,   190,   191,   192,   193,   207,    35,
-   209,    30,    24,    23,    14,    13,    12,    10,   229,   230,
-   237,   238,   239,   240,   241,   242,   250,   252,   253,     4,
-   255,     2,   257,   258,   259,   260,   261,   262,   263,   264,
-   266,   268,   270,   272,   276,   278,   280,   282,   284,   286 ]
-
-racc_action_pointer = [
-   143,   nil,   252,   nil,   261,   nil,   133,   nil,   nil,   nil,
-   246,   nil,   256,   236,   238,   180,   nil,   nil,   123,   nil,
-   153,   nil,   nil,   253,   244,    12,   140,   nil,   nil,   nil,
-   233,    -6,   nil,   nil,   nil,   238,   nil,   nil,   nil,    75,
-   nil,   nil,   nil,   nil,   nil,   221,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   143,   nil,   nil,   147,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   216,   215,
-   208,   nil,   201,   200,   nil,   199,   198,   197,   196,   nil,
-   195,   194,    58,   189,   186,   196,   184,   182,   nil,   nil,
-   180,   nil,   nil,   179,   nil,   139,    98,   nil,    90,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   114,   130,   -16,   153,
-    94,    53,   137,    36,   -20,   181,    24,   172,   174,    27,
-    69,   160,    45,   162,   150,   152,    82,   170,   123,   nil,
-   171,    74,    30,   -21,   188,   175,   134,   nil,   185,   -21,
-   nil,   nil,   190,   191,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    -4,
-   nil,   100,   154,   158,   147,   164,   166,   168,   199,   200,
-   201,   202,   203,   204,   nil,    44,   206,   207,   208,   209,
-   210,   211,   nil,    49,   nil,     5,   nil,     0,   215,   216,
-   217,   218,   219,   220,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   221,   126,   223,
-   120,   nil,   132,   nil,   118,   nil,    57,   nil,    48,   nil,
-     4,   nil,     1,   nil,   nil,   nil,   nil,   nil,   nil,   231,
-   226,   nil,   nil,   nil,   nil,   nil,   nil,   233,   227,   235,
-   228,   237,   229,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   239,   nil,   240,   241,   124,   243,   106,   245,   240,   247,
-   241,   249,   242,   251,   243,   nil,   253,   nil,   254,   nil,
-   255,   nil,   256,   nil,   nil,   nil,   257,   nil,   258,   nil,
-   259,   nil,   260,   nil,   261,   nil,   262,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil ]
-
-racc_action_default = [
-  -161,   -60,   -25,    -4,  -161,   -21,  -161,   -11,   -12,   -13,
-  -161,    -8,  -161,  -161,  -161,    -2,   -59,    -3,  -161,   -23,
-  -161,   -22,   -14,  -161,  -161,  -161,  -161,   -17,    -1,    -5,
-  -161,   -25,    -7,   -10,   -26,  -161,    -9,   -24,   297,  -161,
-  -104,   -35,  -117,   -61,   -36,  -161,  -130,   -37,  -143,   -38,
-   -65,   -39,  -160,   -40,  -161,   -41,   -80,  -161,   -42,   -95,
-   -43,   -96,  -100,   -34,   -15,   -18,    -6,   -57,   -46,   -35,
-   -61,   -58,   -47,   -36,   -29,   -48,   -37,   -49,   -38,  -156,
-   -50,   -39,  -161,   -51,   -40,  -161,   -52,   -41,   -30,   -53,
-   -42,   -31,   -54,   -32,   -55,   -44,   -33,   -56,   -45,   -27,
-   -19,   -20,   -66,   -81,   -67,   -82,  -161,  -161,  -161,  -161,
-  -161,  -161,  -161,  -161,  -161,  -161,  -161,  -161,  -161,  -161,
-  -161,  -161,  -161,  -161,  -161,  -161,  -161,  -161,  -161,   -28,
-  -161,  -161,  -161,  -161,  -161,  -161,  -161,   -84,  -161,  -161,
-   -68,   -70,  -161,  -161,   -62,   -64,   -98,   -83,   -85,  -102,
-   -97,   -99,  -106,  -103,  -101,  -119,  -107,  -105,   -79,  -161,
-   -94,  -161,  -161,  -161,  -161,  -161,  -161,  -161,  -161,  -161,
-  -161,  -161,  -161,  -161,  -116,  -161,  -161,  -161,  -161,  -161,
-  -161,  -161,  -129,  -161,  -142,  -161,  -155,  -161,  -161,  -161,
-  -161,  -161,  -161,  -161,  -132,  -120,  -118,  -145,  -133,  -131,
-  -146,  -144,  -159,  -157,   -63,  -158,   -69,  -161,  -161,  -161,
-  -161,   -77,  -161,   -92,  -161,  -114,  -161,  -127,  -161,  -140,
-  -161,  -153,  -161,   -76,   -91,  -113,  -126,  -139,  -152,  -161,
-  -161,   -78,   -93,  -115,  -128,  -141,  -154,  -161,  -161,  -161,
-  -161,  -161,  -161,   -75,   -90,  -112,  -125,  -138,  -151,   -71,
-  -161,   -86,  -161,  -161,  -161,  -161,  -161,  -161,  -161,  -161,
-  -161,  -161,  -161,  -161,  -161,  -108,  -161,  -121,  -161,  -134,
-  -161,  -147,  -161,   -73,   -88,   -72,  -161,   -87,  -161,  -109,
-  -161,  -122,  -161,  -135,  -161,  -148,  -161,  -110,  -123,  -136,
-  -149,   -74,   -89,  -111,  -124,  -137,  -150 ]
-
-racc_goto_table = [
-    58,    21,    49,    22,    15,    47,    90,    27,    78,    55,
-    20,    76,    32,    12,    96,    87,    88,    29,    45,    53,
-    65,    85,    29,    91,    74,    84,    21,    99,    22,    26,
-    51,    93,    66,   100,    10,    17,    81,    14,    95,    98,
-    68,    72,    75,    77,    80,    44,    83,    86,    89,    92,
-    94,    73,    97,    67,    71,    41,   nil,   125,   nil,   nil,
-   nil,    69,   nil,   nil,   nil,   nil,   124,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   123,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   121,   149,   146,
-   nil,   154,   150,   nil,   167,   173,   nil,   181,   nil,   nil,
-   nil,   193,   118,   166,   172,   197,   180,   201,   nil,   155,
-   192,   194,   117,   165,   171,   199,   179,   nil,   152,   nil,
-   191,   157,   196,   nil,   164,   170,   137,   178,   nil,   nil,
-   147,   190,   nil,   203,   nil,   205,   nil,   140,   nil,   163,
-   169,   nil,   177,   nil,   nil,   nil,   189,   nil,   nil,   162,
-   168,   nil,   176,   nil,   nil,   nil,   188,   nil,   nil,   nil,
-   nil,   nil,   241,   nil,   nil,   nil,   206,   nil,   nil,   239,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   237,   nil,   nil,
-   229,   209,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   207,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   263,   nil,   nil,
-   nil,   nil,   nil,   nil,   261,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   259,   nil,   nil,   nil,   nil,   272,   nil,   nil,
-   nil,   257,   nil,   nil,   270,   nil,   nil,   nil,   nil,   nil,
-   252,   nil,   268,   nil,   255,   266,   nil,   nil,   250,   286,
-   nil,   nil,   253,   nil,   nil,   nil,   284,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   282,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   280,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   278,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   276 ]
-
-racc_goto_check = [
-    34,    18,    30,    11,     3,    29,    34,    15,    30,    33,
-     3,    29,     7,     1,    25,    33,    22,     5,    17,    32,
-    15,    21,     5,    23,    17,    32,    18,    20,    11,    14,
-    31,    24,     5,     7,    12,     4,    31,     2,    36,    37,
-    38,    39,    40,    41,    42,    28,    43,    44,    45,    46,
-    47,    28,    48,    49,    50,    27,   nil,    34,   nil,   nil,
-   nil,    27,   nil,   nil,   nil,   nil,    33,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,    32,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,    31,    30,    29,
-   nil,    30,    29,   nil,    34,    34,   nil,    34,   nil,   nil,
-   nil,    34,    28,    33,    33,    34,    33,    34,   nil,    32,
-    33,    33,    27,    32,    32,    33,    32,   nil,    31,   nil,
-    32,    31,    32,   nil,    31,    31,    28,    31,   nil,   nil,
-    28,    31,   nil,    24,   nil,    24,   nil,    27,   nil,    28,
-    28,   nil,    28,   nil,   nil,   nil,    28,   nil,   nil,    27,
-    27,   nil,    27,   nil,   nil,   nil,    27,   nil,   nil,   nil,
-   nil,   nil,    34,   nil,   nil,   nil,    27,   nil,   nil,    33,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,    32,   nil,   nil,
-    31,    28,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    27,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,    34,   nil,   nil,
-   nil,   nil,   nil,   nil,    33,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,    32,   nil,   nil,   nil,   nil,    34,   nil,   nil,
-   nil,    31,   nil,   nil,    33,   nil,   nil,   nil,   nil,   nil,
-    28,   nil,    32,   nil,    28,    31,   nil,   nil,    27,    34,
-   nil,   nil,    27,   nil,   nil,   nil,    33,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,    32,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,    31,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,    28,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,    27 ]
-
-racc_goto_pointer = [
-   nil,    13,    37,     4,    35,     2,   nil,    -6,   nil,   nil,
-   nil,    -7,    34,   nil,    16,    -6,   nil,    -7,    -9,   nil,
-    -8,   -10,   -15,    -8,     0,   -17,   nil,    30,    20,   -20,
-   -23,     5,    -6,   -16,   -25,   nil,     7,     8,     9,    10,
-    11,    12,    13,    15,    16,    17,    18,    19,    21,    22,
-    23 ]
-
-racc_goto_default = [
-   nil,   nil,   nil,   nil,    36,     3,     4,   nil,    33,     7,
-     8,     9,    35,    13,   nil,   nil,    24,   nil,     5,     6,
-    34,   nil,   nil,   nil,   nil,   nil,    63,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,    60,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil ]
-
-racc_token_table = {
- false => 0,
- Object.new => 1,
- :UMINUS => 2,
- :UPLUS => 3,
- "*" => 4,
- "/" => 5,
- "+" => 6,
- "-" => 7,
- :SYM_EQ => 8,
- :SYM_NE => 9,
- :SYM_LT => 10,
- :SYM_START_DBLOCK => 11,
- :SYM_GT => 12,
- :SYM_END_DBLOCK => 13,
- :SYM_LE => 14,
- :SYM_GE => 15,
- :EOF => 16,
- ";" => 17,
- :V_ATTRIBUTE_IDENTIFIER => 18,
- :Left_bracket_code => 19,
- :Right_bracket_code => 20,
- :V_TYPE_IDENTIFIER => 21,
- :V_GENERIC_TYPE_IDENTIFIER => 22,
- :V_STRING => 23,
- :Comma_code => 24,
- :SYM_LIST_CONTINUE => 25,
- :V_INTEGER => 26,
- :SYM_INTERVAL_DELIM => 27,
- :SYM_ELLIPSIS => 28,
- :V_REAL => 29,
- :SYM_TRUE => 30,
- :SYM_FALSE => 31,
- :V_CHARACTER => 32,
- :V_ISO8601_EXTENDED_DATE => 33,
- :V_ISO8601_EXTENDED_TIME => 34,
- :V_ISO8601_EXTENDED_DATE_TIME => 35,
- :V_ISO8601_DURATION => 36,
- :V_QUALIFIED_TERM_CODE_REF => 37,
- :V_URI => 38 }
-
-racc_use_result_var = true
-
-racc_nt_base = 39
-
-Racc_arg = [
- racc_action_table,
- racc_action_check,
- racc_action_default,
- racc_action_pointer,
- racc_goto_table,
- racc_goto_check,
- racc_goto_default,
- racc_goto_pointer,
- racc_nt_base,
- racc_reduce_table,
- racc_token_table,
- racc_shift_n,
- racc_reduce_n,
- racc_use_result_var ]
-
-Racc_token_to_s_table = [
-'$end',
-'error',
-'UMINUS',
-'UPLUS',
-'"*"',
-'"/"',
-'"+"',
-'"-"',
-'SYM_EQ',
-'SYM_NE',
-'SYM_LT',
-'SYM_START_DBLOCK',
-'SYM_GT',
-'SYM_END_DBLOCK',
-'SYM_LE',
-'SYM_GE',
-'EOF',
-'";"',
-'V_ATTRIBUTE_IDENTIFIER',
-'Left_bracket_code',
-'Right_bracket_code',
-'V_TYPE_IDENTIFIER',
-'V_GENERIC_TYPE_IDENTIFIER',
-'V_STRING',
-'Comma_code',
-'SYM_LIST_CONTINUE',
-'V_INTEGER',
-'SYM_INTERVAL_DELIM',
-'SYM_ELLIPSIS',
-'V_REAL',
-'SYM_TRUE',
-'SYM_FALSE',
-'V_CHARACTER',
-'V_ISO8601_EXTENDED_DATE',
-'V_ISO8601_EXTENDED_TIME',
-'V_ISO8601_EXTENDED_DATE_TIME',
-'V_ISO8601_DURATION',
-'V_QUALIFIED_TERM_CODE_REF',
-'V_URI',
-'$start',
-'dadl',
-'input',
-'attr_vals',
-'complex_object_block',
-'attr_val',
-'attr_id',
-'object_block',
-'primitive_object_block',
-'single_attr_object_block',
-'multiple_attr_object_block',
-'untyped_multiple_attr_object_block',
-'type_identifier',
-'multiple_attr_object_block_head',
-'keyed_objects',
-'keyed_object',
-'object_key',
-'simple_value',
-'untyped_single_attr_object_block',
-'single_attr_object_complex_head',
-'untyped_primitive_object_block',
-'primitive_object_value',
-'simple_list_value',
-'simple_interval_value',
-'term_code',
-'term_code_list_value',
-'string_value',
-'integer_value',
-'real_value',
-'boolean_value',
-'character_value',
-'date_value',
-'time_value',
-'date_time_value',
-'duration_value',
-'uri_value',
-'string_list_value',
-'integer_list_value',
-'real_list_value',
-'boolean_list_value',
-'character_list_value',
-'date_list_value',
-'time_list_value',
-'date_time_list_value',
-'duration_list_value',
-'integer_interval_value',
-'real_interval_value',
-'date_interval_value',
-'time_interval_value',
-'date_time_interval_value',
-'duration_interval_value']
-
-Racc_debug_parser = true
-
-##### racc system variables end #####
-
- # reduce 0 omitted
-
- # reduce 1 omitted
-
- # reduce 2 omitted
-
- # reduce 3 omitted
-
- # reduce 4 omitted
-
- # reduce 5 omitted
-
- # reduce 6 omitted
-
- # reduce 7 omitted
-
- # reduce 8 omitted
-
- # reduce 9 omitted
-
- # reduce 10 omitted
-
- # reduce 11 omitted
-
- # reduce 12 omitted
-
- # reduce 13 omitted
-
- # reduce 14 omitted
-
- # reduce 15 omitted
-
- # reduce 16 omitted
-
- # reduce 17 omitted
-
- # reduce 18 omitted
-
- # reduce 19 omitted
-
- # reduce 20 omitted
-
- # reduce 21 omitted
-
- # reduce 22 omitted
-
- # reduce 23 omitted
-
- # reduce 24 omitted
-
- # reduce 25 omitted
-
- # reduce 26 omitted
-
- # reduce 27 omitted
-
- # reduce 28 omitted
-
- # reduce 29 omitted
-
- # reduce 30 omitted
-
- # reduce 31 omitted
-
- # reduce 32 omitted
-
- # reduce 33 omitted
-
- # reduce 34 omitted
-
- # reduce 35 omitted
-
- # reduce 36 omitted
-
- # reduce 37 omitted
-
- # reduce 38 omitted
-
- # reduce 39 omitted
-
- # reduce 40 omitted
-
- # reduce 41 omitted
-
- # reduce 42 omitted
-
- # reduce 43 omitted
-
- # reduce 44 omitted
-
- # reduce 45 omitted
-
- # reduce 46 omitted
-
- # reduce 47 omitted
-
- # reduce 48 omitted
-
- # reduce 49 omitted
-
- # reduce 50 omitted
-
- # reduce 51 omitted
-
- # reduce 52 omitted
-
- # reduce 53 omitted
-
- # reduce 54 omitted
-
- # reduce 55 omitted
-
- # reduce 56 omitted
-
- # reduce 57 omitted
-
- # reduce 58 omitted
-
- # reduce 59 omitted
-
- # reduce 60 omitted
-
- # reduce 61 omitted
-
- # reduce 62 omitted
-
- # reduce 63 omitted
-
- # reduce 64 omitted
-
- # reduce 65 omitted
-
- # reduce 66 omitted
-
- # reduce 67 omitted
-
- # reduce 68 omitted
-
- # reduce 69 omitted
-
- # reduce 70 omitted
-
- # reduce 71 omitted
-
- # reduce 72 omitted
-
- # reduce 73 omitted
-
- # reduce 74 omitted
-
- # reduce 75 omitted
-
- # reduce 76 omitted
-
- # reduce 77 omitted
-
- # reduce 78 omitted
-
- # reduce 79 omitted
-
- # reduce 80 omitted
-
- # reduce 81 omitted
-
- # reduce 82 omitted
-
- # reduce 83 omitted
-
- # reduce 84 omitted
-
- # reduce 85 omitted
-
- # reduce 86 omitted
-
- # reduce 87 omitted
-
- # reduce 88 omitted
-
- # reduce 89 omitted
-
- # reduce 90 omitted
-
- # reduce 91 omitted
-
- # reduce 92 omitted
-
- # reduce 93 omitted
-
- # reduce 94 omitted
-
- # reduce 95 omitted
-
- # reduce 96 omitted
-
- # reduce 97 omitted
-
- # reduce 98 omitted
-
- # reduce 99 omitted
-
- # reduce 100 omitted
-
- # reduce 101 omitted
-
- # reduce 102 omitted
-
- # reduce 103 omitted
-
- # reduce 104 omitted
-
- # reduce 105 omitted
-
- # reduce 106 omitted
-
- # reduce 107 omitted
-
- # reduce 108 omitted
-
- # reduce 109 omitted
-
- # reduce 110 omitted
-
- # reduce 111 omitted
-
- # reduce 112 omitted
-
- # reduce 113 omitted
-
- # reduce 114 omitted
-
- # reduce 115 omitted
-
- # reduce 116 omitted
-
- # reduce 117 omitted
-
- # reduce 118 omitted
-
- # reduce 119 omitted
-
- # reduce 120 omitted
-
- # reduce 121 omitted
-
- # reduce 122 omitted
-
- # reduce 123 omitted
-
- # reduce 124 omitted
-
- # reduce 125 omitted
-
- # reduce 126 omitted
-
- # reduce 127 omitted
-
- # reduce 128 omitted
-
- # reduce 129 omitted
-
- # reduce 130 omitted
-
- # reduce 131 omitted
-
- # reduce 132 omitted
-
- # reduce 133 omitted
-
- # reduce 134 omitted
-
- # reduce 135 omitted
-
- # reduce 136 omitted
-
- # reduce 137 omitted
-
- # reduce 138 omitted
-
- # reduce 139 omitted
-
- # reduce 140 omitted
-
- # reduce 141 omitted
-
- # reduce 142 omitted
-
- # reduce 143 omitted
-
- # reduce 144 omitted
-
- # reduce 145 omitted
-
- # reduce 146 omitted
-
- # reduce 147 omitted
-
- # reduce 148 omitted
-
- # reduce 149 omitted
-
- # reduce 150 omitted
-
- # reduce 151 omitted
-
- # reduce 152 omitted
-
- # reduce 153 omitted
-
- # reduce 154 omitted
-
- # reduce 155 omitted
-
- # reduce 156 omitted
-
- # reduce 157 omitted
-
- # reduce 158 omitted
-
- # reduce 159 omitted
-
- # reduce 160 omitted
-
- def _reduce_none( val, _values, result )
-  result
- end
-
-  end   # class DADLParser
-
-end   # module OpenEHR
Index: ruby/trunk/adl_parser/lib/model.rb
===================================================================
--- ruby/trunk/adl_parser/lib/model.rb	(revision 19)
+++ ruby/trunk/adl_parser/lib/model.rb	(revision 19)
@@ -0,0 +1,102 @@
+require 'logger'
+
+
+module OpenEHR
+  module ADL
+    module Model
+      module Archetype
+        class ARCHETYPE
+          attr_accessor :adl_version, :archetype_id, :uid, :concept, :parent_archetype_id, :definition, :ontology, :invariants
+
+          def version
+          end
+          
+          def previous_version
+          end
+
+          def short_concept_name
+          end
+
+          def concept_name
+          end
+          
+          def physical_path
+          end
+
+          def logiacl_path
+          end
+
+          def is_specialized
+          end
+
+          def specilisation_depth
+          end
+
+          def node_ids_valid
+          end
+
+          def internal_references_valid
+          end
+
+          def constraint_references_valid
+          end
+
+          def is_valid
+          end
+        end
+
+        
+        class ConstraintModel
+
+          class ArchetypeConstraint
+            def is_valid
+            end
+
+            def has_path
+            end
+
+            def path
+            end
+
+            def is_subset_of
+            end
+          end
+
+          class CObject
+          end
+
+          class CAttribute
+          end
+
+          class CSingleAttribute < CAttribute
+          end
+
+          class CMultipleAttribute < CAttribute
+          end
+
+          class CDefinedObject
+          end
+
+          class CComplexObject < CDefinedObject
+          end
+
+
+          class CPrimitiveObject < CDefinedObject
+          end
+
+          class CDomainType < CDefinedObject
+          end
+
+          class CReferenceObject < CObject
+          end
+        end
+
+        class Assertion
+        end
+
+        class Ontology
+        end
+      end
+    end
+  end
+end
Index: ruby/trunk/adl_parser/lib/parser.rb
===================================================================
--- ruby/trunk/adl_parser/lib/parser.rb	(revision 18)
+++ ruby/trunk/adl_parser/lib/parser.rb	(revision 19)
@@ -13,4 +13,5 @@
 require 'lib/util.rb'
 require 'lib/scanner.rb'
+require 'lib/model.rb'
 $DEBUG = true
 
@@ -24,8 +25,9 @@
     class Parser < Racc::Parser
 
-module_eval <<'..end lib/parser.y modeval..idd4a3e5c962', 'lib/parser.y', 654
+module_eval <<'..end lib/parser.y modeval..ide0b42f72dd', 'lib/parser.y', 720
 
 @@log = Logger.new('log/parser.log','daily')
 @@dadl_scanner = OpenEHR::ADL::Scanner::DADL::RootScanner.new
+@@cadl_scanner = OpenEHR::ADL::Scanner::CADL::RootScanner.new
 
 ###----------/* keywords */ --------------------------------------------- 
@@ -128,4 +130,5 @@
       when /\A--.*\n/ # single line comment
         @lineno += 1
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_adl: COMMENT = #{$&} at #{@filename}:#{@lineno}")
         ;
       when /\Adescription/   # description
@@ -143,7 +146,8 @@
         word = $&
         if @@adl_reserved[word]
-          @@log.info("@@adl_reserved: #{@@adl_reserved[word]} at #{@filename}")
+          @@log.info("#{__FILE__}:#{__LINE__}: scan_adl: @@adl_reserved = #{@@adl_reserved[word]} at #{@filename}:#{@lineno}")
           yield @@adl_reserved[word], @@adl_reserved[word]
         elsif #/\A[A-Z][a-zA-Z0-9_]*/
+          @@log.info("#{__FILE__}:#{__LINE__}: scan_adl: V_ATTRIBUTE_IDENTIFIER = #{$&} at #{@filename}:#{@lineno}")
           yield :V_ATTRIBUTE_IDENTIFIER, $&
         end
@@ -174,4 +178,5 @@
       when /\A\{/   # {
         @adl_type.push(:cadl)
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: entering cADL at #{@filename}:#{@lineno}")
         yield :SYM_START_CBLOCK, :SYM_START_CBLOCK
       when /\A\}/   # }
@@ -179,4 +184,5 @@
 #        puts "Escaping #{adl_type}"
         assert_at(__FILE__,__LINE__){adl_type == :cadl}
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: exiting cADL at #{@filename}:#{@lineno}")
         yield :SYM_END_CBLOCK, $&
       when /\A\-/   # -
@@ -296,4 +302,16 @@
     when :cadl
 #      puts "Entering scan_cadl"
+      case scanned = @@cadl_scanner.parse(data)
+      when Yaparc::Result::OK
+        if scanned.value[0] == :START_V_C_DOMAIN_TYPE_BLOCK
+          @in_c_domain_type = true
+          @adl_type.push(:dadl)
+          yield scanned.value
+        else
+          yield scanned.value
+        end
+        data = scanned.input
+      end
+
       case data
       when /\A\n/ # carriage return
@@ -304,4 +322,5 @@
       when /\A--.*\n/ # single line comment
         @lineno += 1
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: COMMENT = #{$&} at #{@filename}:#{@lineno}")
         ;
         ###----------/* symbols */ ------------------------------------------------- 
@@ -312,11 +331,8 @@
       when /\A\<=/   # <=
         yield :SYM_LE, :SYM_LE
-      when /\A[A-Z][a-zA-Z0-9_]*[ \n]*\</   # V_C_DOMAIN_TYPE
-        @in_c_domain_type = true
-        @adl_type.push(:dadl)
-          yield :START_V_C_DOMAIN_TYPE_BLOCK, $&
-###         else
-###           raise
-###         end
+###       when /\A[A-Z][a-zA-Z0-9_]*[ \n]*\</   # V_C_DOMAIN_TYPE
+###         @in_c_domain_type = true
+###         @adl_type.push(:dadl)
+###         yield :START_V_C_DOMAIN_TYPE_BLOCK, $&
       when /\A\</   # <
         if @in_interval
@@ -374,4 +390,5 @@
       when /\A\{/   # {
         @adl_type.push(:cadl)
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: entering cADL at #{@filename}:#{@lineno}")
         yield :SYM_START_CBLOCK, :SYM_START_CBLOCK
       when /\A\}/   # }
@@ -379,4 +396,5 @@
 #        puts "Escaping #{adl_type}"
         assert_at(__FILE__,__LINE__){adl_type == :cadl}
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: exiting cADL at #{@filename}:#{@lineno}")
         yield :SYM_END_CBLOCK, :SYM_END_CBLOCK
       when /\A\$/   # $
@@ -394,10 +412,11 @@
         end
         yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
+
       when /\A\[[a-zA-Z0-9._\-]+::[a-zA-Z0-9._\-]+\]/   #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
         yield :V_QUALIFIED_TERM_CODE_REF, $&
       when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
         yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
-#      when /\A\[([a-zA-Z0-9()._\-]+::[a-zA-Z0-9._\_-]+)\]/
-#        yield :V_TERM_CODE_CONSTRAINT, :V_TERM_CODE_CONSTRAINT
+      when /\A\[([a-zA-Z0-9()._\-]+::[a-zA-Z0-9._\_-]+)\]/
+        yield :V_TERM_CODE_CONSTRAINT, :V_TERM_CODE_CONSTRAINT
       when /\A\[[a-zA-Z0-9\(\)\._\-]+::[ \t\n]*/
         @adl_type.push(:term_constraint)
@@ -422,4 +441,5 @@
           yield @@cadl_reserved[word.downcase], @@cadl_reserved[word.downcase]
         else
+          @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: V_ATTRIBUTE_IDENTIFIER = #{word} at #{@filename}:#{@lineno}")
           yield :V_ATTRIBUTE_IDENTIFIER, word #V_ATTRIBUTE_IDENTIFIER /\A[a-z][a-zA-Z0-9_]*/
         end
@@ -443,11 +463,11 @@
       when /\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+ /   #V_REAL
         yield :V_REAL, $&
-        #    when /\A"((?:[^"\\]+|\\.)*)"/ #V_STRING
+           when /\A"((?:[^"\\]+|\\.)*)"/ #V_STRING
       when /\A"([^"]*)"/m #V_STRING
         yield :V_STRING, $1
       when /\A[a-z]+:\/\/[^<>|\\{}^~"\[\] ]*/ #V_URI
         yield :V_URI, $&
-      when /\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?|P([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/   #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
-        yield :V_ISO8601_DURATION, $&
+###       when /\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?|P([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/   #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
+###         yield :V_ISO8601_DURATION, $&
       when /\A\S/ #UTF8CHAR
         yield :UTF8CHAR, $&
@@ -491,10 +511,5 @@
         yield scanned.value
         data = scanned.input
-###       when Yaparc::Result::Fail
-###         raise "Scan Failed: #{scanned}"
-###       when Yaparc::Result::Error
-###         raise "Scan Error: #{scanned}"
       else
-        
       end
 
@@ -507,4 +522,5 @@
       when /\A--.*\n/ # single line comment
         @lineno += 1
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_dadl: COMMENT = #{$&} at #{@filename}:#{@lineno}")
         ;
         ###----------/* symbols */ ------------------------------------------------- 
@@ -626,6 +642,6 @@
       when /\A[a-z]+:\/\/[^<>|\\{}^~"\[\] ]*/ #V_URI
         yield :V_URI, $&
-      when /\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?|P([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/   #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
-        yield :V_ISO8601_DURATION, $&
+###       when /\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?|P([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/   #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
+###         yield :V_ISO8601_DURATION, $&
       when /\A\S/ #UTF8CHAR
         yield :UTF8CHAR, $&
@@ -724,4 +740,5 @@
       when /\A--.*$/ # single line comment
         @lineno += 1
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_term_constraint: COMMENT = #{$&} at #{@filename}:#{@lineno}")
         ;
       when /\A[a-zA-Z0-9\._\-]+[ \t]*,/ # match any line, with ',' termination
@@ -794,5 +811,5 @@
 
 
-..end lib/parser.y modeval..idd4a3e5c962
+..end lib/parser.y modeval..ide0b42f72dd
 
 ##### racc 1.4.5 generates ###
@@ -800,119 +817,134 @@
 racc_reduce_table = [
  0, 0, :racc_error,
- 2, 96, :_reduce_none,
- 1, 96, :_reduce_none,
- 8, 97, :_reduce_none,
+ 2, 95, :_reduce_none,
+ 1, 95, :_reduce_none,
+ 8, 96, :_reduce_none,
+ 2, 97, :_reduce_none,
+ 2, 97, :_reduce_none,
+ 1, 105, :_reduce_none,
+ 2, 105, :_reduce_none,
+ 3, 106, :_reduce_none,
+ 1, 107, :_reduce_none,
+ 3, 107, :_reduce_none,
+ 3, 108, :_reduce_none,
+ 1, 108, :_reduce_none,
+ 0, 98, :_reduce_none,
  2, 98, :_reduce_none,
  2, 98, :_reduce_none,
- 1, 106, :_reduce_none,
- 2, 106, :_reduce_none,
- 3, 107, :_reduce_none,
- 1, 108, :_reduce_none,
- 3, 108, :_reduce_none,
- 3, 109, :_reduce_none,
- 1, 109, :_reduce_none,
- 0, 99, :_reduce_none,
  2, 99, :_reduce_none,
  2, 99, :_reduce_none,
- 2, 100, :_reduce_none,
+ 0, 100, :_reduce_none,
+ 2, 100, :_reduce_19,
  2, 100, :_reduce_none,
  0, 101, :_reduce_none,
- 2, 101, :_reduce_19,
  2, 101, :_reduce_none,
- 0, 102, :_reduce_none,
+ 2, 101, :_reduce_none,
  2, 102, :_reduce_none,
  2, 102, :_reduce_none,
- 2, 103, :_reduce_none,
- 2, 103, :_reduce_none,
- 1, 111, :_reduce_none,
- 1, 111, :_reduce_none,
- 5, 112, :_reduce_none,
- 5, 112, :_reduce_none,
- 2, 114, :_reduce_none,
- 1, 116, :_reduce_31,
- 2, 116, :_reduce_32,
- 1, 115, :_reduce_none,
- 1, 115, :_reduce_none,
- 1, 121, :_reduce_none,
- 1, 121, :_reduce_none,
- 1, 121, :_reduce_none,
- 1, 121, :_reduce_none,
- 1, 121, :_reduce_none,
- 1, 121, :_reduce_none,
- 1, 121, :_reduce_none,
- 1, 121, :_reduce_none,
- 1, 121, :_reduce_none,
- 1, 121, :_reduce_none,
- 3, 128, :_reduce_none,
+ 1, 110, :_reduce_none,
+ 1, 110, :_reduce_none,
+ 5, 111, :_reduce_none,
+ 5, 111, :_reduce_none,
+ 2, 113, :_reduce_none,
+ 1, 115, :_reduce_31,
+ 2, 115, :_reduce_32,
+ 1, 114, :_reduce_none,
+ 1, 114, :_reduce_none,
+ 1, 120, :_reduce_none,
+ 1, 120, :_reduce_none,
+ 1, 120, :_reduce_none,
+ 1, 120, :_reduce_none,
+ 1, 120, :_reduce_none,
+ 1, 120, :_reduce_none,
+ 1, 120, :_reduce_none,
+ 1, 120, :_reduce_none,
+ 1, 120, :_reduce_none,
+ 1, 120, :_reduce_none,
+ 3, 121, :_reduce_none,
  4, 122, :_reduce_none,
  3, 122, :_reduce_none,
  6, 123, :_reduce_none,
+ 2, 129, :_reduce_none,
+ 2, 132, :_reduce_none,
+ 3, 132, :_reduce_none,
+ 2, 132, :_reduce_none,
+ 1, 127, :_reduce_none,
+ 1, 133, :_reduce_none,
+ 1, 133, :_reduce_none,
+ 1, 133, :_reduce_none,
+ 1, 133, :_reduce_none,
+ 1, 133, :_reduce_none,
+ 1, 133, :_reduce_none,
+ 1, 133, :_reduce_none,
+ 1, 133, :_reduce_none,
+ 1, 118, :_reduce_none,
+ 1, 119, :_reduce_none,
+ 2, 119, :_reduce_none,
+ 5, 142, :_reduce_none,
+ 5, 142, :_reduce_none,
+ 5, 142, :_reduce_none,
+ 2, 143, :_reduce_68,
+ 3, 143, :_reduce_69,
+ 1, 144, :_reduce_none,
+ 2, 144, :_reduce_none,
+ 1, 144, :_reduce_none,
+ 0, 130, :_reduce_none,
  2, 130, :_reduce_none,
- 2, 133, :_reduce_none,
- 3, 133, :_reduce_none,
- 2, 133, :_reduce_none,
- 1, 127, :_reduce_none,
- 1, 134, :_reduce_none,
- 1, 134, :_reduce_none,
- 1, 134, :_reduce_none,
- 1, 134, :_reduce_none,
- 1, 134, :_reduce_none,
- 1, 134, :_reduce_none,
- 1, 134, :_reduce_none,
- 1, 134, :_reduce_none,
- 1, 119, :_reduce_none,
- 1, 120, :_reduce_none,
- 2, 120, :_reduce_none,
- 5, 143, :_reduce_none,
- 5, 143, :_reduce_none,
- 5, 143, :_reduce_none,
- 2, 144, :_reduce_none,
- 3, 144, :_reduce_none,
- 1, 145, :_reduce_none,
- 2, 145, :_reduce_none,
- 1, 145, :_reduce_none,
  0, 131, :_reduce_none,
  2, 131, :_reduce_none,
- 0, 132, :_reduce_none,
- 2, 132, :_reduce_none,
+ 1, 147, :_reduce_none,
+ 2, 147, :_reduce_none,
+ 3, 148, :_reduce_none,
  1, 148, :_reduce_none,
- 2, 148, :_reduce_none,
- 3, 149, :_reduce_none,
- 1, 149, :_reduce_none,
- 3, 149, :_reduce_none,
- 0, 104, :_reduce_none,
+ 3, 148, :_reduce_none,
+ 0, 103, :_reduce_none,
+ 2, 103, :_reduce_none,
+ 2, 103, :_reduce_none,
  2, 104, :_reduce_none,
  2, 104, :_reduce_none,
- 2, 105, :_reduce_none,
- 2, 105, :_reduce_none,
- 1, 110, :_reduce_none,
+ 1, 109, :_reduce_none,
+ 1, 151, :_reduce_none,
+ 1, 151, :_reduce_none,
  1, 152, :_reduce_none,
- 1, 152, :_reduce_none,
+ 2, 152, :_reduce_none,
+ 3, 152, :_reduce_none,
+ 3, 154, :_reduce_93,
+ 1, 155, :_reduce_94,
+ 2, 155, :_reduce_none,
+ 1, 156, :_reduce_none,
+ 1, 156, :_reduce_none,
  1, 153, :_reduce_none,
- 2, 153, :_reduce_none,
- 3, 153, :_reduce_none,
- 3, 155, :_reduce_none,
- 1, 156, :_reduce_94,
- 2, 156, :_reduce_none,
- 1, 157, :_reduce_none,
- 1, 157, :_reduce_none,
- 1, 154, :_reduce_none,
- 1, 154, :_reduce_none,
- 1, 160, :_reduce_none,
- 2, 160, :_reduce_none,
- 3, 161, :_reduce_none,
- 1, 162, :_reduce_none,
- 1, 163, :_reduce_none,
- 2, 163, :_reduce_none,
- 3, 164, :_reduce_none,
- 3, 165, :_reduce_none,
+ 1, 153, :_reduce_none,
  1, 159, :_reduce_none,
  2, 159, :_reduce_none,
- 2, 167, :_reduce_none,
- 3, 167, :_reduce_none,
- 1, 168, :_reduce_none,
+ 3, 160, :_reduce_none,
+ 1, 161, :_reduce_none,
+ 1, 162, :_reduce_none,
+ 2, 162, :_reduce_none,
+ 3, 163, :_reduce_none,
+ 3, 164, :_reduce_107,
  1, 158, :_reduce_none,
  2, 158, :_reduce_none,
- 3, 169, :_reduce_none,
+ 2, 166, :_reduce_none,
+ 3, 166, :_reduce_none,
+ 1, 167, :_reduce_none,
+ 1, 157, :_reduce_none,
+ 2, 157, :_reduce_none,
+ 3, 168, :_reduce_none,
+ 1, 169, :_reduce_none,
+ 1, 169, :_reduce_none,
+ 1, 169, :_reduce_none,
+ 1, 169, :_reduce_none,
+ 1, 169, :_reduce_none,
+ 1, 165, :_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, 170, :_reduce_none,
  1, 170, :_reduce_none,
@@ -920,14 +952,8 @@
  1, 170, :_reduce_none,
  1, 170, :_reduce_none,
- 1, 166, :_reduce_none,
- 1, 166, :_reduce_none,
- 1, 166, :_reduce_none,
- 1, 166, :_reduce_none,
- 1, 166, :_reduce_none,
- 1, 166, :_reduce_none,
- 1, 166, :_reduce_none,
- 1, 166, :_reduce_none,
- 1, 166, :_reduce_none,
- 1, 166, :_reduce_none,
+ 1, 170, :_reduce_none,
+ 1, 170, :_reduce_none,
+ 1, 170, :_reduce_none,
+ 1, 170, :_reduce_none,
  1, 171, :_reduce_none,
  1, 171, :_reduce_none,
@@ -936,19 +962,25 @@
  1, 171, :_reduce_none,
  1, 171, :_reduce_none,
- 1, 171, :_reduce_none,
- 1, 171, :_reduce_none,
- 1, 171, :_reduce_none,
- 1, 172, :_reduce_none,
- 1, 172, :_reduce_none,
- 1, 172, :_reduce_none,
- 1, 172, :_reduce_none,
- 1, 172, :_reduce_none,
- 1, 172, :_reduce_none,
- 1, 118, :_reduce_none,
- 1, 118, :_reduce_none,
- 1, 175, :_reduce_148,
+ 1, 117, :_reduce_146,
+ 1, 117, :_reduce_147,
+ 1, 174, :_reduce_148,
+ 3, 184, :_reduce_none,
+ 3, 184, :_reduce_none,
+ 3, 184, :_reduce_none,
+ 1, 175, :_reduce_none,
+ 2, 175, :_reduce_none,
+ 2, 175, :_reduce_none,
  3, 185, :_reduce_none,
  3, 185, :_reduce_none,
  3, 185, :_reduce_none,
+ 5, 193, :_reduce_none,
+ 6, 193, :_reduce_none,
+ 6, 193, :_reduce_none,
+ 7, 193, :_reduce_none,
+ 4, 193, :_reduce_none,
+ 4, 193, :_reduce_none,
+ 4, 193, :_reduce_none,
+ 4, 193, :_reduce_none,
+ 3, 193, :_reduce_none,
  1, 176, :_reduce_none,
  2, 176, :_reduce_none,
@@ -967,9 +999,16 @@
  3, 194, :_reduce_none,
  1, 177, :_reduce_none,
- 2, 177, :_reduce_none,
- 2, 177, :_reduce_none,
+ 1, 177, :_reduce_none,
  3, 187, :_reduce_none,
  3, 187, :_reduce_none,
  3, 187, :_reduce_none,
+ 1, 178, :_reduce_none,
+ 3, 188, :_reduce_none,
+ 3, 188, :_reduce_none,
+ 3, 188, :_reduce_none,
+ 1, 179, :_reduce_none,
+ 3, 189, :_reduce_none,
+ 3, 189, :_reduce_none,
+ 3, 189, :_reduce_none,
  5, 195, :_reduce_none,
  6, 195, :_reduce_none,
@@ -981,13 +1020,4 @@
  4, 195, :_reduce_none,
  3, 195, :_reduce_none,
- 1, 178, :_reduce_none,
- 1, 178, :_reduce_none,
- 3, 188, :_reduce_none,
- 3, 188, :_reduce_none,
- 3, 188, :_reduce_none,
- 1, 179, :_reduce_none,
- 3, 189, :_reduce_none,
- 3, 189, :_reduce_none,
- 3, 189, :_reduce_none,
  1, 180, :_reduce_none,
  3, 190, :_reduce_none,
@@ -1016,5 +1046,5 @@
  4, 197, :_reduce_none,
  3, 197, :_reduce_none,
- 1, 182, :_reduce_none,
+ 1, 182, :_reduce_230,
  3, 192, :_reduce_none,
  3, 192, :_reduce_none,
@@ -1029,84 +1059,77 @@
  4, 198, :_reduce_none,
  3, 198, :_reduce_none,
+ 1, 172, :_reduce_none,
+ 3, 173, :_reduce_none,
+ 3, 173, :_reduce_none,
+ 3, 173, :_reduce_none,
  1, 183, :_reduce_none,
- 3, 193, :_reduce_none,
- 3, 193, :_reduce_none,
- 3, 193, :_reduce_none,
- 5, 199, :_reduce_none,
- 6, 199, :_reduce_none,
- 6, 199, :_reduce_none,
- 7, 199, :_reduce_none,
- 4, 199, :_reduce_none,
- 4, 199, :_reduce_none,
- 4, 199, :_reduce_none,
- 4, 199, :_reduce_none,
+ 1, 112, :_reduce_none,
+ 2, 112, :_reduce_none,
  3, 199, :_reduce_none,
- 1, 173, :_reduce_none,
- 3, 174, :_reduce_none,
- 3, 174, :_reduce_none,
- 3, 174, :_reduce_none,
- 1, 184, :_reduce_none,
- 1, 113, :_reduce_none,
- 2, 113, :_reduce_none,
+ 1, 199, :_reduce_none,
+ 3, 199, :_reduce_none,
+ 1, 150, :_reduce_none,
+ 1, 150, :_reduce_none,
+ 2, 201, :_reduce_none,
+ 2, 201, :_reduce_none,
+ 5, 201, :_reduce_none,
+ 5, 201, :_reduce_none,
+ 2, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
  3, 200, :_reduce_none,
  1, 200, :_reduce_none,
- 3, 200, :_reduce_none,
- 1, 151, :_reduce_none,
- 1, 151, :_reduce_none,
- 2, 202, :_reduce_none,
- 2, 202, :_reduce_none,
- 5, 202, :_reduce_none,
- 5, 202, :_reduce_none,
- 2, 202, :_reduce_none,
- 3, 202, :_reduce_none,
- 3, 202, :_reduce_none,
- 3, 202, :_reduce_none,
- 3, 202, :_reduce_none,
- 3, 202, :_reduce_none,
- 3, 202, :_reduce_none,
- 3, 202, :_reduce_none,
- 3, 202, :_reduce_none,
- 3, 202, :_reduce_none,
- 3, 202, :_reduce_none,
- 3, 201, :_reduce_none,
- 1, 201, :_reduce_none,
- 1, 201, :_reduce_none,
+ 1, 200, :_reduce_none,
+ 1, 203, :_reduce_none,
+ 1, 203, :_reduce_none,
+ 3, 205, :_reduce_none,
+ 3, 205, :_reduce_none,
+ 3, 205, :_reduce_none,
+ 3, 205, :_reduce_none,
+ 3, 205, :_reduce_none,
+ 3, 204, :_reduce_none,
  1, 204, :_reduce_none,
  1, 204, :_reduce_none,
- 3, 206, :_reduce_none,
- 3, 206, :_reduce_none,
- 3, 206, :_reduce_none,
- 3, 206, :_reduce_none,
- 3, 206, :_reduce_none,
- 3, 205, :_reduce_none,
- 1, 205, :_reduce_none,
- 1, 205, :_reduce_none,
- 1, 205, :_reduce_none,
- 1, 129, :_reduce_none,
- 2, 129, :_reduce_none,
- 1, 203, :_reduce_none,
- 3, 203, :_reduce_none,
- 2, 207, :_reduce_none,
+ 1, 204, :_reduce_none,
+ 1, 128, :_reduce_none,
+ 2, 128, :_reduce_none,
+ 1, 202, :_reduce_none,
+ 3, 202, :_reduce_none,
+ 2, 206, :_reduce_288,
+ 1, 206, :_reduce_289,
+ 0, 145, :_reduce_none,
+ 5, 145, :_reduce_none,
  1, 207, :_reduce_none,
- 0, 146, :_reduce_none,
+ 3, 207, :_reduce_none,
  5, 146, :_reduce_none,
  1, 208, :_reduce_none,
  3, 208, :_reduce_none,
- 5, 147, :_reduce_none,
+ 3, 208, :_reduce_none,
+ 3, 208, :_reduce_none,
+ 5, 208, :_reduce_none,
+ 5, 208, :_reduce_none,
+ 5, 208, :_reduce_none,
+ 5, 208, :_reduce_none,
+ 1, 210, :_reduce_none,
+ 1, 210, :_reduce_none,
+ 0, 116, :_reduce_none,
+ 5, 116, :_reduce_none,
+ 2, 116, :_reduce_none,
  1, 209, :_reduce_none,
  3, 209, :_reduce_none,
- 3, 209, :_reduce_none,
- 3, 209, :_reduce_none,
- 5, 209, :_reduce_none,
- 5, 209, :_reduce_none,
- 5, 209, :_reduce_none,
- 5, 209, :_reduce_none,
  1, 211, :_reduce_none,
  1, 211, :_reduce_none,
- 0, 117, :_reduce_none,
- 5, 117, :_reduce_none,
- 2, 117, :_reduce_none,
- 1, 210, :_reduce_none,
- 3, 210, :_reduce_none,
+ 1, 211, :_reduce_none,
+ 1, 134, :_reduce_none,
+ 3, 134, :_reduce_none,
+ 3, 134, :_reduce_none,
  1, 212, :_reduce_none,
  1, 212, :_reduce_none,
@@ -1134,4 +1157,5 @@
  3, 138, :_reduce_none,
  1, 216, :_reduce_none,
+ 3, 216, :_reduce_none,
  1, 216, :_reduce_none,
  1, 216, :_reduce_none,
@@ -1139,8 +1163,7 @@
  3, 139, :_reduce_none,
  3, 139, :_reduce_none,
- 1, 217, :_reduce_none,
- 3, 217, :_reduce_none,
- 1, 217, :_reduce_none,
- 1, 217, :_reduce_none,
+ 1, 218, :_reduce_none,
+ 1, 218, :_reduce_none,
+ 3, 218, :_reduce_none,
  1, 140, :_reduce_none,
  3, 140, :_reduce_none,
@@ -1149,500 +1172,494 @@
  1, 219, :_reduce_none,
  3, 219, :_reduce_none,
+ 3, 219, :_reduce_none,
  1, 141, :_reduce_none,
  3, 141, :_reduce_none,
  3, 141, :_reduce_none,
- 1, 220, :_reduce_none,
- 1, 220, :_reduce_none,
- 3, 220, :_reduce_none,
- 3, 220, :_reduce_none,
- 1, 142, :_reduce_none,
- 3, 142, :_reduce_none,
- 3, 142, :_reduce_none,
  1, 126, :_reduce_none,
  3, 126, :_reduce_none,
  3, 126, :_reduce_none,
- 1, 221, :_reduce_none,
+ 1, 220, :_reduce_none,
+ 3, 220, :_reduce_none,
  3, 221, :_reduce_none,
- 3, 222, :_reduce_none,
  1, 125, :_reduce_none,
  1, 125, :_reduce_none,
- 3, 223, :_reduce_none,
- 0, 224, :_reduce_none,
- 1, 224, :_reduce_none,
- 2, 224, :_reduce_none,
+ 3, 222, :_reduce_none,
+ 0, 223, :_reduce_none,
+ 1, 223, :_reduce_none,
+ 2, 223, :_reduce_none,
  1, 124, :_reduce_none,
- 1, 150, :_reduce_none,
- 1, 150, :_reduce_none,
- 1, 218, :_reduce_none ]
+ 1, 149, :_reduce_none,
+ 1, 149, :_reduce_374,
+ 1, 217, :_reduce_none ]
 
 racc_reduce_n = 376
 
-racc_shift_n = 633
+racc_shift_n = 631
 
 racc_action_table = [
-   574,   501,   476,   159,   397,   590,   473,   469,   471,   146,
-   229,   130,     9,   576,     1,   572,    58,   543,    67,   379,
-   540,   383,   600,   541,   542,   385,    29,   451,   523,   390,
-    22,   115,    11,     4,   499,   185,   537,   511,    51,   515,
-   516,   497,   228,   514,    51,   443,    61,   571,    23,   152,
-   154,    46,    49,   316,    30,   147,    77,    80,    83,   188,
-   117,    92,   304,   308,   398,   110,   112,   115,   117,   529,
-   117,   523,   110,   115,   112,   573,   117,   152,   154,   537,
-   511,    75,   515,   516,   272,   156,   117,   280,   284,   286,
-   534,   162,   115,   296,    46,    49,   316,   230,   112,    77,
-    80,    83,   188,   115,    92,   304,   308,   435,   110,   112,
-   115,   117,   529,   156,   495,   627,   214,   101,   433,   108,
-   211,   381,   148,   150,   459,   466,   482,    67,   391,   376,
-   280,   284,   286,   534,   117,   101,   296,   133,   213,   138,
-   112,   331,   212,    73,   152,   154,   458,    51,   124,   126,
-   148,   150,   393,    77,    80,    83,   274,   138,    92,    95,
-    99,   152,   154,   101,   112,   467,   152,   154,    87,    90,
-   110,    77,    80,    83,   110,    75,    92,    95,    99,   128,
-   156,    77,   325,   326,   134,   100,    87,    90,   152,   154,
-   568,   152,   154,    75,    46,    49,   395,   156,   337,    77,
-    80,    83,   156,   396,    92,    95,    99,   236,   110,   152,
-   154,   419,   157,   158,    87,    90,   149,   148,   150,   151,
-   153,    75,   321,   322,   156,   236,    92,   156,   334,   247,
-   388,   170,   387,   217,   148,   150,   238,   127,   164,   148,
-   150,    46,    49,   152,   154,   156,   157,   158,  -373,   257,
-   149,   101,   250,   151,   153,   253,   255,   239,   171,   321,
-   322,   148,   150,    92,   148,   150,   493,   139,   241,    77,
-    80,    83,   140,   138,    92,  -374,    16,   155,    17,   156,
-    95,    99,   148,   150,   217,   349,   350,    77,    80,    83,
-   217,    75,    92,    95,    99,   399,    77,    80,    83,   239,
-   217,    92,    87,    90,   570,   110,   112,   115,   117,    75,
-   400,   155,   491,   101,   321,   322,   148,   150,    92,   143,
-    77,    80,    83,   401,   144,    92,    77,    80,    83,   321,
-   322,    92,   217,    92,   402,   138,    77,    80,    83,   217,
-   417,    92,    75,   321,   322,   217,   403,    92,    75,    77,
-    80,    83,   339,   340,    92,    95,    99,   217,    75,    77,
-   325,   326,   404,   237,    87,    90,   341,   342,    77,    80,
-    83,    75,   217,    92,   405,    77,    80,    83,    25,    26,
-    92,    77,    80,    83,   101,   406,    92,    77,   325,   326,
-    75,    46,    49,    77,    80,    83,   407,    75,    92,   408,
-   321,   322,   101,    75,    92,   385,   138,   481,    77,    80,
-    83,   351,   352,    92,   102,    75,   168,   169,   166,   167,
-    77,    80,    83,   409,   100,    92,    95,    99,   101,    16,
-    75,    17,   410,    46,    49,    87,    90,   217,    77,    80,
-    83,   268,    75,    92,    95,    99,   101,   598,   599,   210,
-   138,    39,   267,    87,    90,    46,    49,   359,   360,    35,
-    75,    35,   272,   274,    77,    80,    83,   246,   138,    92,
-    95,    99,   245,    77,    80,    83,   140,   101,    92,    87,
-    90,   144,    77,    80,    83,   217,    75,    92,    95,    99,
-   139,    51,   143,    51,   244,    75,   102,    87,    90,   100,
-    46,    49,    46,    49,    75,   367,   368,    56,    46,    49,
-   101,   124,   126,    77,    80,    83,   243,    35,    92,    95,
-    99,    77,    80,    83,   258,    35,    92,   259,    87,    90,
-   430,   431,   100,   101,   260,    75,   117,    46,    49,   428,
-   429,    46,    49,    75,   261,   217,    77,    80,    83,    51,
-   115,    92,    95,    99,   242,   100,   101,    51,    46,    49,
-   241,    87,    90,   436,    46,    49,    46,    49,    75,    77,
-    80,    83,   426,   427,    92,    95,    99,   437,   100,   101,
-   438,    77,    80,    83,    87,    90,    92,    46,    49,   415,
-   439,    75,    77,    80,    83,   415,   440,    92,    95,    99,
-   441,   138,   240,    75,   414,   325,   326,    87,    90,   415,
-   414,   325,   326,   444,    75,    77,    80,    83,   424,   425,
-    92,    95,    99,   445,    77,   325,   326,    77,   325,   326,
-    87,    90,   617,   618,   619,   316,   446,    75,    77,    80,
-    83,   188,   447,    92,   304,   308,   448,   110,   112,   115,
-   117,   128,   422,   423,    77,    80,    83,   420,   421,    92,
-   124,   126,   127,   110,   112,   115,   117,   449,   120,   280,
-   284,   286,  -103,   631,   632,   296,   203,   124,   126,    77,
-    80,    83,   188,   239,    92,   124,   126,   127,   110,   112,
-   115,   117,   185,   120,    77,    80,    83,   452,   453,    92,
-    77,   325,   326,   110,   112,   115,   117,    77,    80,    83,
-   454,   455,    92,    77,   325,   326,   110,   112,   115,   117,
-    77,    80,    83,   456,   457,    92,    77,   325,   326,   110,
-   112,   115,   117,    77,    80,    83,   238,   461,    92,    77,
-   325,   326,   110,   112,   115,   117,   328,   462,   321,   322,
-   463,   262,    92,   168,   169,   166,   167,   324,    77,   325,
-   326,   168,   169,   166,   167,   168,   169,   166,   167,   168,
+   571,   442,   161,   472,   144,   588,   470,   466,   468,   129,
+   214,   570,   165,   573,   229,    10,   542,   170,   376,   539,
+    29,    58,   540,   541,   171,   458,   496,   386,   522,   385,
+    24,   116,   213,   494,  -373,    12,   535,   510,   434,   513,
+   514,  -374,   512,   569,    60,   492,   228,   457,    30,    50,
+   145,    46,    48,   317,    97,    98,    78,    81,    84,   188,
+   116,    94,   302,   307,    75,   109,   112,   114,   116,   529,
+   522,   116,   109,   114,   112,   116,   152,   154,   535,   510,
+    76,   513,   514,   272,   101,   116,   314,   279,   281,   532,
+   160,   114,   291,    46,    48,   317,   114,   625,    78,    81,
+    84,   188,   112,    94,   302,   307,    99,   109,   112,   114,
+   116,   529,   156,   432,     1,    46,    48,   101,   347,   348,
+    78,    81,    84,   230,   479,    94,    97,    98,   314,   279,
+   281,   532,   490,     5,   291,    88,    92,   152,   154,   138,
+   152,   154,    76,   101,   260,   374,   152,   154,   430,   148,
+   150,   133,   259,    78,    81,    84,   236,   114,    94,    97,
+    98,   152,   154,    67,   481,   138,   152,   154,    88,    92,
+   112,   152,   154,   156,   462,    76,   156,   127,   329,    78,
+    81,    84,   156,    50,    94,    97,    98,   126,   109,   152,
+   154,   465,   157,   158,    88,    92,   149,   156,   134,   151,
+   153,    76,   156,   594,   109,   152,   154,   156,   157,   158,
+   148,   150,   149,   148,   150,   151,   153,   566,   332,   148,
+   150,   236,   337,   338,   378,   156,   123,   124,   109,   101,
+    78,   382,   383,    55,   148,   150,   211,    20,   184,   148,
+   150,   156,   497,    35,   148,   150,   209,   257,   323,   324,
+   250,   138,    94,   254,   256,    21,    35,   155,   212,    78,
+   382,   383,   148,   150,   390,    78,    81,    84,    46,    48,
+    94,    97,    98,   155,   217,    50,   391,   455,   148,   150,
+    88,    92,   217,   274,    46,    48,   394,    76,    50,    78,
+   382,   383,   101,   237,    78,    81,    84,    46,    48,    94,
+   102,   395,   335,   109,   112,   114,   116,   272,   274,   108,
+    78,    81,    84,   112,   138,    94,   101,    67,    78,    81,
+    84,   396,   141,    94,    78,   382,   383,   142,    78,    81,
+    84,   268,    76,    94,    97,    98,   568,    50,   138,   101,
+    76,    46,    48,    88,    92,   239,   168,   169,   166,   167,
+    76,   101,    78,    81,    84,   146,   397,    94,    97,    98,
+   147,   138,   398,   217,   326,   345,   346,    88,    92,   217,
+   102,   123,   124,   138,    76,    78,    81,    84,   217,   399,
+    94,    97,    98,   168,   169,   166,   167,    78,    81,    84,
+    88,    92,    94,    97,    98,   400,   217,    76,   401,    78,
+    81,    84,    88,    92,    94,    78,    81,    84,   101,    76,
+    94,    46,    48,   402,    78,    81,    84,   403,    16,    94,
+    17,    76,   322,   404,   323,   324,   101,    76,    94,   405,
+    99,   488,    78,    81,    84,   217,    76,    94,   406,    46,
+    48,    78,   382,   383,    78,    81,    84,   407,    99,    94,
+    97,    98,   416,   217,    76,    46,    48,    46,    48,    88,
+    92,   217,    78,    81,    84,   408,    76,    94,    97,    98,
+   265,    78,    81,    84,   349,   350,    94,    88,    92,   323,
+   324,    25,    26,    94,    76,   101,   357,   358,    35,    78,
+    81,    84,   409,    76,    94,   596,   597,    78,    81,    84,
+   323,   324,    94,   217,    94,   267,   380,    99,   477,   217,
+   268,    76,   615,   616,   617,   217,    46,    48,   266,    76,
+    50,    78,    81,    84,   427,   428,    94,    97,    98,    46,
+    48,   323,   324,   101,   248,    94,    88,    92,   247,    78,
+    81,    84,   142,    76,    94,    78,    81,    84,   371,   372,
+    94,    78,    81,    84,   147,    99,    94,   101,   246,   323,
+   324,    76,    39,    94,    46,    48,   413,    76,   380,    78,
+    81,    84,    35,    76,    94,    97,    98,   425,   426,    99,
+   101,    78,   382,   383,    88,    92,   423,   424,    46,    48,
+   413,    76,   261,    78,    81,    84,   421,   422,    94,    97,
+    98,    16,   138,    17,    50,   412,   382,   383,    88,    92,
+   413,   419,   420,    46,    48,    76,    78,    81,    84,   417,
+   418,    94,    97,    98,   262,   412,   382,   383,   263,   323,
+   324,    88,    92,    94,   629,   630,   317,   116,    76,    78,
+    81,    84,   188,   264,    94,   302,   307,   245,   109,   112,
+   114,   116,    78,    81,    84,   123,   124,    94,    78,   382,
+   383,   109,   112,   114,   116,   168,   169,   166,   167,   314,
+   279,   281,  -103,   244,   243,   291,   202,   435,   436,    78,
+    81,    84,   188,   437,    94,   123,   124,   126,   109,   112,
+   114,   116,   184,   119,   127,   438,   439,    78,    81,    84,
+   440,   242,    94,   123,   124,   126,   109,   112,   114,   116,
+   443,   119,    78,    81,    84,   444,   445,    94,    78,   382,
+   383,   109,   112,   114,   116,    78,    81,    84,   446,   447,
+    94,    78,   382,   383,   109,   112,   114,   116,    78,    81,
+    84,   448,   449,    94,   450,   451,   452,   109,   112,   114,
+   116,   168,   169,   166,   167,   388,    78,   382,   383,   168,
    169,   166,   167,   168,   169,   166,   167,   168,   169,   166,
-   167,   168,   169,   166,   167,   168,   169,   166,   167,   138,
-   171,   147,   208,   102,   475,   165,   478,   480,   263,   162,
-   484,   485,   486,   264,   488,   145,   138,   135,    51,   109,
-    69,    66,   502,   110,   504,   112,   506,   115,   508,   117,
-   510,    35,   538,   539,    61,    57,   545,   546,   547,   265,
-   549,  -103,   551,   110,   553,   112,   555,   115,   557,   117,
-   559,   560,   561,   562,   563,    54,   162,   566,   266,    34,
-   170,   112,    31,    28,   578,   579,   580,   581,   117,   117,
-   117,   267,   583,   584,   585,   586,   587,   588,   589,    24,
-   592,   593,   110,   596,   268,   127,   185,    21,   603,   604,
-    75,   570,   606,   608,   609,   610,   319,   616,   276,    15,
-   621,    14,   622,    12,   624,   625,   626,     8,     7,   629,
-   630,   277,   117 ]
+   167,   168,   169,   166,   167,   168,   169,   166,   167,   453,
+   454,   241,   141,   146,   240,   460,   461,   239,   238,   138,
+   171,   145,   207,   474,   476,   265,   478,   102,   163,   483,
+   484,   485,   160,   143,   138,   135,    50,   131,    69,   499,
+   109,   501,   112,   503,   114,   505,   116,   266,   508,   509,
+    68,   537,   538,    35,    60,   544,   545,    57,   547,   109,
+   549,   112,   551,   114,   553,   116,   267,   556,   557,   558,
+   559,   560,   561,   562,  -103,   564,   268,    54,   170,    34,
+   114,    31,   575,   576,   160,   578,   579,   116,   116,   116,
+    28,   581,   582,   583,   584,   585,   586,   587,   112,   590,
+   591,   276,   184,   109,   598,    23,   601,   602,    76,   568,
+   604,   606,   607,   608,   277,   613,   126,    15,   619,    13,
+     9,   621,   622,   623,   624,     8,     7,   627,   628,   319,
+   116 ]
 
 racc_action_check = [
-   528,   431,   406,    87,   278,   567,   404,   402,   403,    85,
-   162,    62,     4,   528,     0,   526,    42,   480,    52,   262,
-   480,   264,   579,   480,   480,   265,    21,   368,   528,   270,
-    14,   262,     4,     0,   429,   264,   528,   528,    52,   528,
-   528,   427,   162,   459,    42,   360,    62,   526,    14,   226,
-   226,   528,   528,   528,    21,    85,   528,   528,   528,   528,
-   431,   528,   528,   528,   278,   528,   528,   528,   528,   528,
-   406,   459,   402,   404,   403,   526,   480,   224,   224,   459,
-   459,    87,   459,   459,   459,   226,   368,   528,   528,   528,
-   528,   567,   429,   528,   459,   459,   459,   165,   427,   459,
-   459,   459,   459,   360,   459,   459,   459,   352,   459,   459,
-   459,   459,   459,   224,   425,   621,   146,   165,   350,    59,
-   145,   263,   226,   226,   390,   400,   410,    59,   271,   259,
-   459,   459,   459,   459,   263,   621,   459,    69,   146,   165,
-   259,   243,   145,    54,   227,   227,   390,    59,   243,   243,
-   224,   224,   274,   165,   165,   165,   275,   621,   165,   165,
-   165,   222,   222,    54,   352,   401,   218,   218,   165,   165,
-   425,   621,   621,   621,   350,   165,   621,   621,   621,   410,
-   227,   400,   400,   400,    69,    54,   621,   621,   220,   220,
-   516,   318,   318,   621,    54,    54,   276,   222,   247,    54,
-    54,    54,   218,   277,    54,    54,    54,   318,   247,   172,
-   172,   342,   172,   172,    54,    54,   172,   227,   227,   172,
-   172,    54,   401,   401,   220,   172,   401,   318,   245,   187,
-   267,    97,   267,   158,   222,   222,   281,   245,    90,   218,
-   218,   516,   516,    86,    86,   172,    86,    86,    97,   188,
-    86,   164,   188,    86,    86,   188,   188,   282,   100,   342,
-   342,   220,   220,   342,   318,   318,   423,    80,   285,   158,
-   158,   158,    80,   164,   158,   100,    11,   172,    11,    86,
-    90,    90,   172,   172,   157,   251,   251,   164,   164,   164,
-   156,   158,   164,   164,   164,   287,   188,   188,   188,   519,
-   155,   188,   164,   164,   519,   188,   188,   188,   188,   164,
-   288,    86,   421,   166,   423,   423,    86,    86,   423,    83,
-   157,   157,   157,   291,    83,   157,   156,   156,   156,   419,
-   419,   156,   154,   419,   294,   166,   155,   155,   155,   153,
-   340,   155,   157,   493,   493,   152,   298,   493,   156,   166,
-   166,   166,   248,   248,   166,   166,   166,   151,   155,   421,
-   421,   421,   301,   173,   166,   166,   249,   249,   154,   154,
-   154,   166,   150,   154,   304,   153,   153,   153,    18,    18,
-   153,   152,   152,   152,   167,   305,   152,   340,   340,   340,
-   154,   515,   515,   151,   151,   151,   308,   153,   151,   309,
-   238,   238,    81,   152,   238,   409,   167,   409,   150,   150,
-   150,   252,   252,   150,    57,   151,   173,   173,   173,   173,
-   167,   167,   167,   311,    81,   167,   167,   167,   168,    26,
-   150,    26,   313,    81,    81,   167,   167,   149,    81,    81,
-    81,   315,   167,    81,    81,    81,   169,   577,   577,   135,
-   168,    28,   316,    81,    81,    57,    57,   254,   254,   135,
-    81,    28,   211,   211,   168,   168,   168,   186,   169,   168,
-   168,   168,   184,   149,   149,   149,   321,   606,   149,   168,
-   168,   322,   169,   169,   169,   148,   168,   169,   169,   169,
-   325,   135,   326,    28,   183,   149,   109,   169,   169,   606,
-   135,   135,    28,    28,   169,   256,   256,    34,   606,   606,
-   611,   398,   398,   606,   606,   606,   182,    34,   606,   606,
-   606,   148,   148,   148,   189,   511,   148,   190,   606,   606,
-   348,   348,   611,   616,   191,   606,   261,   109,   109,   347,
-   347,   611,   611,   148,   192,   217,   611,   611,   611,    34,
-   258,   611,   611,   611,   181,   616,   623,   511,    34,    34,
-   179,   611,   611,   353,   616,   616,   511,   511,   611,   616,
-   616,   616,   346,   346,   616,   616,   616,   354,   623,   101,
-   355,   217,   217,   217,   616,   616,   217,   623,   623,   319,
-   356,   616,   623,   623,   623,   580,   357,   623,   623,   623,
-   358,   101,   178,   217,   319,   319,   319,   623,   623,   485,
-   580,   580,   580,   361,   623,   101,   101,   101,   345,   345,
-   101,   101,   101,   362,   485,   485,   485,   268,   268,   268,
-   101,   101,   609,   609,   609,   214,   363,   101,   214,   214,
-   214,   214,   364,   214,   214,   214,   365,   214,   214,   214,
-   214,    61,   344,   344,    61,    61,    61,   343,   343,    61,
-    61,    61,    61,    61,    61,    61,    61,   366,    61,   214,
-   214,   214,   102,   626,   626,   214,   102,   240,   240,   102,
-   102,   102,   102,   176,   102,   102,   102,   102,   102,   102,
-   102,   102,   102,   102,   250,   250,   250,   369,   370,   250,
-   417,   417,   417,   250,   250,   250,   250,   257,   257,   257,
-   371,   372,   257,   573,   573,   573,   257,   257,   257,   257,
-   253,   253,   253,   373,   374,   253,   571,   571,   571,   253,
-   253,   253,   253,   255,   255,   255,   175,   392,   255,   491,
-   491,   491,   255,   255,   255,   255,   241,   393,   241,   241,
-   397,   193,   241,   234,   234,   234,   234,   239,   239,   239,
-   239,    96,    96,    96,    96,   614,   614,   614,   614,   235,
-   235,   235,   235,   231,   231,   231,   231,   232,   232,   232,
-   232,   233,   233,   233,   233,   628,   628,   628,   628,   147,
-   138,   137,   114,   107,   405,    91,   407,   408,   196,    88,
-   412,   414,   416,   199,   418,    84,    75,    70,    67,    60,
-    53,    51,   432,   433,   434,   435,   442,   443,   450,   451,
-   458,    48,   461,   462,    47,    41,   487,   489,   490,   201,
-   492,    35,   494,   495,   496,   497,   498,   499,   500,   501,
-   503,   505,   507,   509,   510,    33,   512,   514,   202,    27,
-   517,   246,    24,    20,   534,   535,   538,   539,   540,   541,
-   542,   203,   548,   550,   552,   554,   556,   558,   564,    16,
-   569,   570,   244,   572,   205,   242,   266,    13,   581,   582,
-   591,   594,   600,   601,   602,   603,   228,   607,   212,     8,
-   613,     6,   615,     5,   617,   618,   619,     3,     2,   624,
-   625,   213,   543 ]
+   526,   358,    88,   403,    83,   565,   402,   400,   401,    61,
+   144,   524,    92,   526,   160,     5,   476,    95,   261,   476,
+    23,    40,   476,   476,    99,   390,   426,   266,   526,   266,
+    16,   261,   144,   424,    95,     5,   526,   526,   350,   526,
+   526,    99,   458,   524,    61,   422,   160,   390,    23,    40,
+    83,   526,   526,   526,    92,    92,   526,   526,   526,   526,
+   358,   526,   526,   526,    54,   526,   526,   526,   526,   526,
+   458,   403,   400,   402,   401,   476,   226,   226,   458,   458,
+    88,   458,   458,   458,    54,   426,   526,   526,   526,   526,
+   565,   424,   526,   458,   458,   458,   350,   619,   458,   458,
+   458,   458,   422,   458,   458,   458,    54,   458,   458,   458,
+   458,   458,   226,   348,     0,    54,    54,   619,   252,   252,
+    54,    54,    54,   163,   408,    54,    54,    54,   458,   458,
+   458,   458,   420,     0,   458,    54,    54,   224,   224,   619,
+   318,   318,    54,   163,   190,   260,   227,   227,   346,   226,
+   226,    69,   189,   619,   619,   619,   318,   260,   619,   619,
+   619,   220,   220,    49,   409,   163,   218,   218,   619,   619,
+   348,   222,   222,   224,   398,   619,   318,   408,   243,   163,
+   163,   163,   227,    49,   163,   163,   163,   243,   420,    85,
+    85,   399,    85,    85,   163,   163,    85,   220,    69,    85,
+    85,   163,   218,   570,   346,   172,   172,   222,   172,   172,
+   224,   224,   172,   318,   318,   172,   172,   514,   245,   227,
+   227,   172,   249,   249,   262,    85,   409,   409,   245,   168,
+   398,   398,   398,    34,   220,   220,   143,    13,   262,   218,
+   218,   172,   428,    34,   222,   222,   135,   188,   399,   399,
+   188,   168,   399,   188,   188,    13,   135,    85,   143,   570,
+   570,   570,    85,    85,   269,   168,   168,   168,   514,   514,
+   168,   168,   168,   172,   151,    34,   270,   372,   172,   172,
+   168,   168,   217,   273,    34,    34,   274,   168,   135,   428,
+   428,   428,   167,   173,   188,   188,   188,   135,   135,   188,
+   131,   276,   247,   188,   188,   188,   188,   211,   211,    59,
+   151,   151,   151,   247,   167,   151,   166,    59,   217,   217,
+   217,   277,    81,   217,   372,   372,   372,    81,   167,   167,
+   167,   516,   151,   167,   167,   167,   516,    59,   166,   169,
+   217,   131,   131,   167,   167,   280,   173,   173,   173,   173,
+   167,   165,   166,   166,   166,    84,   282,   166,   166,   166,
+    84,   169,   283,   152,   241,   251,   251,   166,   166,   150,
+    57,   241,   241,   165,   166,   169,   169,   169,   149,   286,
+   169,   169,   169,   235,   235,   235,   235,   165,   165,   165,
+   169,   169,   165,   165,   165,   289,   148,   169,   293,   152,
+   152,   152,   165,   165,   152,   150,   150,   150,    79,   165,
+   150,    57,    57,   296,   149,   149,   149,   299,    12,   149,
+    12,   152,   239,   302,   239,   239,   620,   150,   239,   303,
+    79,   418,   148,   148,   148,   153,   149,   148,   305,    79,
+    79,   265,   265,   265,    79,    79,    79,   307,   620,    79,
+    79,    79,   338,   158,   148,   513,   513,   620,   620,    79,
+    79,   154,   620,   620,   620,   308,    79,   620,   620,   620,
+   310,   153,   153,   153,   253,   253,   153,   620,   620,   418,
+   418,    18,    18,   418,   620,   613,   255,   255,   510,   158,
+   158,   158,   312,   153,   158,   574,   574,   154,   154,   154,
+   338,   338,   154,   155,   338,   315,   406,   613,   406,   156,
+   316,   158,   606,   606,   606,   157,   613,   613,   317,   154,
+   510,   613,   613,   613,   344,   344,   613,   613,   613,   510,
+   510,   267,   267,   609,   187,   267,   613,   613,   186,   155,
+   155,   155,   323,   613,   155,   156,   156,   156,   258,   258,
+   156,   157,   157,   157,   324,   609,   157,   604,   185,   488,
+   488,   155,    28,   488,   609,   609,   484,   156,   263,   609,
+   609,   609,    28,   157,   609,   609,   609,   343,   343,   604,
+   101,   484,   484,   484,   609,   609,   342,   342,   604,   604,
+   578,   609,   193,   604,   604,   604,   341,   341,   604,   604,
+   604,    26,   101,    26,    28,   578,   578,   578,   604,   604,
+   319,   340,   340,    28,    28,   604,   101,   101,   101,   339,
+   339,   101,   101,   101,   196,   319,   319,   319,   198,   416,
+   416,   101,   101,   416,   624,   624,   214,   259,   101,   214,
+   214,   214,   214,   199,   214,   214,   214,   183,   214,   214,
+   214,   214,   254,   254,   254,   238,   238,   254,   569,   569,
+   569,   254,   254,   254,   254,    93,    93,    93,    93,   214,
+   214,   214,   102,   182,   181,   214,   102,   351,   352,   102,
+   102,   102,   102,   353,   102,   102,   102,   102,   102,   102,
+   102,   102,   102,   102,    60,   354,   355,    60,    60,    60,
+   356,   180,    60,    60,    60,    60,    60,    60,    60,    60,
+   359,    60,   250,   250,   250,   360,   361,   250,   455,   455,
+   455,   250,   250,   250,   250,   257,   257,   257,   362,   363,
+   257,   497,   497,   497,   257,   257,   257,   257,   256,   256,
+   256,   364,   365,   256,   366,   367,   368,   256,   256,   256,
+   256,   612,   612,   612,   612,   268,   268,   268,   268,   231,
+   231,   231,   231,   232,   232,   232,   232,   233,   233,   233,
+   233,   234,   234,   234,   234,   626,   626,   626,   626,   369,
+   370,   179,   382,   383,   178,   393,   394,   176,   175,   145,
+   138,   137,   111,   404,   405,   201,   407,   106,    89,   410,
+   412,   415,    86,    82,    76,    70,    67,    63,    53,   429,
+   430,   431,   432,   433,   434,   441,   442,   202,   456,   457,
+    50,   460,   461,    45,    44,   486,   487,    38,   489,   490,
+   491,   492,   493,   494,   495,   496,   204,   498,   500,   502,
+   504,   506,   507,   509,    35,   512,   205,    33,   515,    27,
+   246,    24,   532,   533,   536,   537,   538,   539,   540,   541,
+    22,   546,   548,   550,   552,   554,   555,   563,   244,   567,
+   568,   212,   264,   242,   576,    14,   579,   580,   589,   593,
+   598,   599,   600,   601,   213,   605,   240,     8,   611,     6,
+     4,   614,   615,   616,   617,     3,     2,   622,   623,   228,
+   542 ]
 
 racc_action_pointer = [
-    13,   nil,   879,   897,    11,   875,   864,   nil,   889,   nil,
-   nil,   252,   nil,   849,    29,   nil,   861,   nil,   356,   nil,
-   823,    25,   nil,   nil,   827,   nil,   405,   818,   450,   nil,
-   nil,   nil,   nil,   813,   506,   781,   nil,   nil,   nil,   nil,
-   nil,   817,     1,   nil,   nil,   nil,   nil,   774,   810,   nil,
-   nil,   810,    -5,   763,   142,   nil,   nil,   403,   nil,   104,
-   801,   597,    -4,   nil,   nil,   nil,   nil,   765,   nil,   136,
-   758,   nil,   nil,   nil,   nil,   763,   nil,   nil,   nil,   nil,
-   210,   381,   nil,   262,   772,   -24,   237,     2,   712,   nil,
-   217,   749,   nil,   nil,   nil,   nil,   686,   202,   nil,   nil,
-   229,   558,   622,   nil,   nil,   nil,   nil,   782,   nil,   485,
-   nil,   nil,   nil,   nil,   741,   nil,   nil,   nil,   nil,   nil,
+   113,   nil,   877,   895,   872,    14,   862,   nil,   887,   nil,
+   nil,   nil,   394,   236,   847,   nil,    22,   nil,   459,   nil,
+   nil,   nil,   830,    19,   826,   nil,   577,   818,   561,   nil,
+   nil,   nil,   nil,   815,   232,   794,   nil,   nil,   819,   nil,
+     6,   nil,   nil,   nil,   774,   812,   nil,   nil,   nil,   140,
+   819,   nil,   nil,   761,    63,   nil,   nil,   359,   nil,   294,
+   640,    -6,   nil,   799,   nil,   nil,   nil,   763,   nil,   150,
+   756,   nil,   nil,   nil,   nil,   nil,   761,   nil,   nil,   387,
+   nil,   265,   770,   -29,   298,   183,   716,   nil,     1,   752,
+   nil,   nil,    -9,   590,   nil,   -12,   nil,   nil,   nil,    -5,
+   nil,   559,   622,   nil,   nil,   nil,   786,   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,   448,   nil,   712,   761,   nil,
-   nil,   nil,   nil,   nil,   nil,   108,   104,   746,   464,   416,
-   351,   336,   324,   318,   311,   279,   269,   263,   212,   nil,
-   nil,   nil,     9,   nil,   230,    96,   292,   363,   407,   425,
-   nil,   nil,   203,   341,   nil,   681,   628,   nil,   547,   505,
-   nil,   499,   461,   439,   417,   nil,   412,   174,   239,   469,
-   472,   519,   489,   696,   nil,   nil,   743,   nil,   nil,   748,
-   nil,   774,   793,   806,   nil,   819,   nil,   nil,   nil,   nil,
-   nil,   420,   853,   866,   581,   nil,   nil,   524,   160,   nil,
-   182,   nil,   155,   nil,    71,   nil,    43,   138,   874,   nil,
-   nil,   698,   702,   706,   678,   694,   nil,   nil,   342,   701,
-   614,   690,   810,    85,   806,   172,   784,   142,   292,   306,
-   637,   225,   351,   663,   397,   676,   445,   650,   482,    73,
-   nil,   467,   -37,    65,   -35,   -29,   806,   176,   570,   nil,
-    -4,   114,   nil,   nil,    71,   113,   160,   167,   -19,   nil,
-   nil,   181,   202,   nil,   nil,   213,   nil,   281,   227,   nil,
-   nil,   240,   nil,   nil,   251,   nil,   nil,   nil,   263,   nil,
-   nil,   279,   nil,   nil,   319,   302,   nil,   nil,   341,   320,
-   nil,   368,   nil,   349,   nil,   386,   397,   nil,   185,   547,
-   nil,   414,   419,   nil,   nil,   433,   435,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   330,   nil,   201,   597,   592,   558,   512,   479,   470,   nil,
-   108,   nil,    97,   503,   517,   520,   530,   536,   540,   nil,
-    35,   553,   563,   576,   582,   586,   607,   nil,    17,   637,
-   638,   650,   651,   663,   664,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   112,   nil,   655,   714,   nil,   nil,   nil,   749,   448,   nil,
-   124,   164,     6,     7,     5,   730,     1,   733,   737,   351,
-   125,   nil,   786,   nil,   740,   nil,   742,   643,   744,   271,
-   nil,   302,   nil,   256,   nil,   104,   nil,    31,   nil,    24,
-   nil,    -9,   752,   747,   754,   748,   nil,   nil,   nil,   nil,
-   nil,   nil,   756,   749,   nil,   nil,   nil,   nil,   nil,   nil,
-   758,   750,   nil,   nil,   nil,   nil,   nil,   nil,   785,    42,
-   nil,   789,   811,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-     7,   nil,   nil,   nil,   nil,   567,   nil,   766,   nil,   767,
-   768,   682,   770,   285,   772,   767,   774,   768,   776,   769,
-   778,   770,   nil,   780,   nil,   781,   nil,   782,   nil,   783,
-   808,   514,   759,   nil,   833,   339,   189,   821,   nil,   244,
-   nil,   nil,   nil,   nil,   nil,   nil,    -8,   nil,    -1,   nil,
-   nil,   nil,   nil,   nil,   761,   822,   nil,   nil,   844,   800,
-   789,   790,   791,   833,   nil,   nil,   nil,   nil,   802,   nil,
-   803,   nil,   804,   nil,   805,   nil,   806,   nil,   807,   nil,
-   nil,   nil,   nil,   nil,   829,   nil,   nil,     4,   nil,   841,
-   801,   669,   872,   656,   nil,   nil,   nil,   355,   nil,    10,
-   553,   817,   865,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   801,   nil,   nil,   821,   nil,   nil,   nil,   nil,   nil,
-   838,   869,   801,   828,   nil,   nil,   456,   842,   nil,   548,
-   nil,   489,   nil,   844,   690,   878,   512,   811,   812,   813,
-   nil,   114,   nil,   535,   813,   814,   589,   nil,   710,   nil,
-   nil,   nil,   nil ]
+   nil,   289,   nil,   nil,   nil,   245,   nil,   712,   761,   nil,
+   nil,   nil,   nil,   224,    -2,   746,   nil,   nil,   375,   357,
+   348,   253,   342,   414,   440,   482,   488,   494,   432,   nil,
+    13,   nil,   nil,   122,   nil,   330,   295,   271,   208,   318,
+   nil,   nil,   199,   271,   nil,   733,   732,   nil,   729,   726,
+   646,   619,   618,   592,   nil,   503,   483,   519,   237,    97,
+    89,   nil,   nil,   537,   nil,   nil,   569,   nil,   573,   588,
+   nil,   740,   762,   nil,   781,   791,   nil,   nil,   nil,   nil,
+   nil,   265,   836,   849,   582,   nil,   nil,   261,   160,   nil,
+   155,   nil,   165,   nil,   131,   nil,    70,   140,   887,   nil,
+   nil,   684,   688,   692,   696,   308,   nil,   nil,   592,   366,
+   821,   308,   807,   122,   801,   162,   782,   246,   nil,   162,
+   655,   305,    58,   414,   595,   426,   681,   668,   488,   568,
+    89,   -38,   168,   514,   802,   384,   -27,   473,   699,   231,
+   262,   nil,   nil,   240,   205,   nil,   265,   285,   nil,   nil,
+   290,   nil,   342,   339,   nil,   nil,   356,   nil,   nil,   372,
+   nil,   nil,   nil,   375,   nil,   nil,   390,   nil,   nil,   394,
+   nil,   nil,   368,   350,   nil,   383,   nil,   392,   442,   nil,
+   415,   nil,   469,   nil,   nil,   450,   455,   463,   134,   568,
+   nil,   nil,   nil,   480,   492,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   442,   559,
+   551,   536,   526,   517,   464,   nil,   138,   nil,   103,   nil,
+    28,   617,   618,   623,   635,   636,   640,   nil,    -9,   650,
+   655,   656,   668,   669,   681,   682,   684,   685,   686,   719,
+   720,   nil,   267,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   725,   726,   nil,   nil,   nil,   nil,   nil,   nil,
+    13,   nil,   nil,   703,   753,   nil,   nil,   nil,   173,   190,
+     6,     7,     5,     2,   729,   734,   452,   733,   123,   163,
+   785,   nil,   739,   nil,   nil,   741,   571,   nil,   421,   nil,
+   122,   nil,    35,   nil,    23,   nil,    16,   nil,   232,   749,
+   744,   751,   745,   753,   746,   nil,   nil,   nil,   nil,   nil,
+   nil,   755,   747,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   661,   758,   784,    41,   nil,
+   788,   810,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,     6,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   524,   nil,   765,   766,   501,   768,
+   763,   770,   764,   772,   765,   774,   766,   674,   777,   nil,
+   778,   nil,   779,   nil,   780,   nil,   781,   782,   nil,   807,
+   477,   nil,   831,   403,   216,   819,   276,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   -12,   nil,    -1,   nil,   nil,   nil,
+   nil,   nil,   760,   820,   nil,   nil,   768,   843,   799,   788,
+   789,   790,   831,   nil,   nil,   nil,   801,   nil,   802,   nil,
+   803,   nil,   804,   nil,   805,   806,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   828,   nil,     4,   nil,   840,   800,   601,
+   202,   nil,   nil,   nil,   404,   nil,   862,   nil,   548,   815,
+   863,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   799,
+   nil,   nil,   nil,   819,   nil,   nil,   nil,   nil,   836,   858,
+   868,   826,   nil,   nil,   536,   840,   429,   nil,   nil,   512,
+   nil,   842,   676,   464,   877,   869,   870,   871,   nil,    96,
+   405,   nil,   812,   813,   551,   nil,   700,   nil,   nil,   nil,
+   nil ]
 
 racc_action_default = [
-  -376,    -2,  -376,  -376,    -6,  -376,   -13,    -4,  -376,    -5,
-    -7,  -376,    -1,  -376,  -376,   633,  -376,   -12,  -376,    -9,
-   -18,  -376,   -15,   -14,  -376,    -8,  -376,   -21,  -376,   -17,
-   -16,   -11,   -10,  -376,  -376,  -112,   -89,   -19,   -90,   -20,
-  -108,  -376,  -376,   -98,   -99,  -100,  -146,  -376,  -376,  -147,
-   -87,   -94,   -88,   -82,  -376,   -22,   -23,  -376,  -110,  -376,
-  -376,  -376,  -376,  -104,  -109,  -101,   -95,  -376,   -91,  -376,
-  -376,  -281,  -282,   -25,   -24,  -284,  -248,  -152,   -26,  -253,
-  -376,   -27,  -254,  -376,  -376,  -376,  -376,  -376,  -305,  -273,
-  -376,  -376,  -167,  -283,  -274,  -271,  -251,   -31,  -286,  -272,
-  -289,  -376,  -112,   -96,   -93,  -113,   -97,  -376,  -111,  -376,
-  -191,  -122,  -204,  -123,  -376,  -217,  -124,  -230,  -125,  -126,
-  -247,  -127,  -128,  -129,  -182,  -130,  -183,  -187,  -148,  -121,
-  -102,  -105,   -92,   -84,   -83,  -376,    -3,  -285,  -289,  -153,
-  -168,  -249,  -373,  -154,  -169,  -376,  -376,  -376,  -376,  -376,
-  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -256,
-  -255,   -30,  -376,  -259,  -376,  -376,  -376,  -376,  -376,  -376,
-   -32,  -288,  -376,  -376,  -144,  -133,  -122,  -145,  -134,  -123,
-  -116,  -135,  -124,  -136,  -125,  -243,  -137,  -126,  -376,  -138,
-  -127,  -376,  -139,  -128,  -117,  -140,  -129,  -118,  -141,  -119,
-  -142,  -131,  -120,  -148,  -143,  -132,  -114,  -106,  -107,   -85,
-   -86,  -376,  -376,  -376,  -376,  -287,  -278,  -376,  -263,  -279,
+  -376,    -2,  -376,  -376,  -376,    -6,   -13,    -4,  -376,    -1,
+    -5,    -7,  -376,  -376,  -376,   631,  -376,   -12,  -376,    -9,
+   -15,   -14,   -18,  -376,  -376,    -8,  -376,   -21,  -376,   -17,
+   -16,   -11,   -10,  -376,  -376,  -112,   -90,  -108,  -376,   -20,
+  -376,   -98,   -99,  -100,  -376,  -376,  -146,   -87,  -147,   -88,
+   -94,   -89,   -19,   -82,  -376,   -23,   -22,  -376,  -110,  -376,
+  -376,  -376,  -104,  -376,  -109,  -101,   -91,  -376,   -95,  -376,
+  -376,  -282,   -24,  -248,   -26,   -25,  -284,  -253,  -152,   -27,
+  -254,  -376,  -376,  -376,  -376,  -376,  -305,  -273,  -376,  -376,
+  -283,  -274,  -376,  -251,  -167,   -31,  -286,  -271,  -272,  -289,
+  -281,  -376,  -112,   -93,  -113,   -97,  -376,   -96,  -111,  -191,
+  -123,  -376,  -204,  -124,  -217,  -125,  -230,  -126,  -127,  -247,
+  -128,  -129,  -130,  -182,  -183,  -121,  -187,  -148,  -122,  -102,
+  -105,  -376,   -92,   -84,   -83,  -376,    -3,  -285,  -289,  -249,
+  -373,  -153,  -168,  -376,  -376,  -376,  -154,  -169,  -376,  -376,
+  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,   -30,
+  -376,  -256,  -255,  -376,  -259,  -376,  -376,  -376,  -376,  -376,
+   -32,  -288,  -376,  -376,  -145,  -134,  -123,  -116,  -135,  -124,
+  -136,  -125,  -137,  -126,  -243,  -138,  -127,  -376,  -376,  -139,
+  -128,  -117,  -140,  -129,  -118,  -141,  -119,  -142,  -131,  -120,
+  -143,  -132,  -148,  -144,  -133,  -122,  -114,  -107,  -106,   -86,
+   -85,  -376,  -376,  -376,  -376,  -287,  -278,  -376,  -263,  -279,
   -264,  -275,  -265,  -276,  -260,  -277,  -261,  -262,  -376,  -307,
   -252,  -250,  -268,  -269,  -266,  -267,  -280,  -270,  -376,  -376,
+  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -115,  -376,
   -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
   -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
-  -115,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,   -63,
-  -376,  -376,   -62,   -33,  -290,   -34,  -376,  -376,  -357,  -336,
-  -322,  -317,  -310,  -343,  -328,  -316,  -334,  -376,  -313,   -54,
-  -323,  -319,   -55,  -329,  -325,   -56,  -375,  -335,  -331,   -57,
-  -342,  -337,  -312,   -58,  -353,  -344,  -318,   -59,  -354,  -340,
-  -324,  -348,   -60,  -350,  -330,  -311,  -347,   -61,  -376,  -376,
-  -171,  -376,  -376,  -155,  -157,  -376,  -376,  -185,  -172,  -170,
-  -189,  -186,  -184,  -193,  -190,  -188,  -206,  -194,  -192,  -166,
-  -376,  -181,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -203,
-  -376,  -216,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -229,
+  -376,   -33,   -62,   -34,  -290,   -63,  -376,  -376,  -343,  -328,
+  -316,  -334,  -376,  -313,   -54,  -323,  -319,   -55,  -329,  -325,
+   -56,  -375,  -335,  -331,   -57,  -342,  -337,  -312,   -58,  -344,
+  -318,   -59,  -353,  -340,  -324,  -348,   -60,  -354,  -350,  -330,
+  -311,   -61,  -357,  -336,  -322,  -317,  -310,  -347,  -376,  -376,
+  -185,  -170,  -172,  -376,  -376,  -189,  -186,  -184,  -193,  -190,
+  -188,  -206,  -194,  -192,  -219,  -207,  -205,  -181,  -376,  -376,
+  -376,  -376,  -376,  -376,  -376,  -203,  -376,  -216,  -376,  -229,
   -376,  -376,  -376,  -376,  -376,  -376,  -376,  -242,  -376,  -376,
-  -376,  -376,  -376,  -376,  -376,  -219,  -207,  -205,  -232,  -220,
-  -218,  -233,  -231,  -246,  -244,  -150,  -245,  -151,  -149,  -156,
-  -376,   -29,   -68,  -376,   -64,   -28,  -258,  -376,  -376,  -257,
   -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
-  -376,  -303,  -376,  -308,  -152,  -304,  -376,  -376,  -376,  -376,
-  -164,  -376,  -179,  -376,  -201,  -376,  -214,  -376,  -227,  -376,
-  -240,  -376,  -376,  -376,  -376,  -376,  -163,  -178,  -200,  -213,
-  -226,  -239,  -376,  -376,  -165,  -180,  -202,  -215,  -228,  -241,
-  -376,  -376,  -162,  -177,  -199,  -212,  -225,  -238,  -376,  -376,
-   -69,  -376,  -376,  -359,  -358,  -314,  -315,  -321,  -320,  -327,
-  -326,  -333,  -332,  -339,  -338,  -355,  -346,  -345,  -356,  -341,
-  -376,  -349,  -352,  -351,  -306,  -376,  -158,  -376,  -173,  -376,
+  -376,  -166,  -376,  -232,  -220,  -218,  -233,  -231,  -246,  -244,
+  -150,  -245,  -376,  -376,  -156,  -151,  -149,  -171,  -157,  -155,
+  -376,   -29,   -64,   -68,  -376,   -28,  -258,  -257,  -376,  -376,
   -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
-  -376,  -376,  -195,  -376,  -208,  -376,  -221,  -376,  -234,  -376,
-  -376,  -376,  -305,   -53,   -44,  -376,  -376,   -31,   -72,  -310,
-   -70,   -36,   -37,  -372,   -38,   -39,  -360,   -40,  -376,  -367,
-  -363,   -41,  -366,   -42,  -369,  -376,   -35,   -43,  -376,  -376,
-  -376,  -376,  -376,  -376,  -309,  -160,  -175,  -159,  -376,  -174,
-  -376,  -196,  -376,  -209,  -376,  -222,  -376,  -235,  -376,  -197,
-  -210,  -223,  -236,   -66,  -376,   -49,   -67,  -305,   -52,   -50,
-  -376,  -376,  -376,  -376,   -44,   -71,   -65,  -376,  -370,  -376,
-  -376,  -292,  -376,  -161,  -176,  -198,  -211,  -224,  -237,   -45,
-   -47,  -376,   -51,  -365,  -376,  -364,  -362,  -361,  -368,  -371,
-   -73,  -376,  -295,  -376,  -291,   -46,  -376,   -75,  -294,  -376,
-  -293,   -74,   -77,  -376,   -80,  -376,  -376,  -296,  -297,  -298,
-   -78,  -376,   -48,   -76,  -376,  -376,  -376,   -81,   -79,  -299,
-  -300,  -301,  -302 ]
+  -376,  -308,  -152,  -304,  -303,  -376,  -376,  -179,  -376,  -201,
+  -376,  -214,  -376,  -227,  -376,  -240,  -376,  -164,  -376,  -376,
+  -376,  -376,  -376,  -376,  -376,  -178,  -200,  -213,  -226,  -239,
+  -163,  -376,  -376,  -180,  -202,  -215,  -228,  -241,  -165,  -177,
+  -199,  -212,  -225,  -238,  -162,  -376,  -376,  -376,  -376,   -69,
+  -376,  -376,  -315,  -314,  -320,  -321,  -327,  -326,  -333,  -332,
+  -339,  -338,  -346,  -345,  -355,  -341,  -376,  -349,  -356,  -352,
+  -351,  -359,  -358,  -306,  -376,  -173,  -376,  -376,  -376,  -376,
+  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -195,
+  -376,  -208,  -376,  -221,  -376,  -234,  -376,  -376,  -158,  -376,
+  -376,   -53,   -44,  -376,  -376,   -31,  -310,   -72,   -70,   -35,
+   -37,   -38,  -372,   -39,  -360,   -40,  -376,  -363,   -41,  -367,
+  -366,   -42,  -369,  -376,   -36,   -43,  -305,  -376,  -376,  -376,
+  -376,  -376,  -376,  -309,  -175,  -174,  -376,  -196,  -376,  -209,
+  -376,  -222,  -376,  -235,  -376,  -376,  -159,  -197,  -210,  -223,
+  -236,  -160,   -66,  -376,   -67,  -305,   -52,   -50,  -376,  -376,
+  -376,   -44,   -71,   -65,  -376,  -370,  -376,   -49,  -376,  -292,
+  -376,  -176,  -198,  -211,  -224,  -237,  -161,   -45,   -47,  -376,
+   -51,  -365,  -364,  -376,  -362,  -361,  -368,  -371,   -73,  -295,
+  -376,  -376,  -291,   -46,  -376,   -75,  -376,  -294,  -293,   -74,
+   -77,  -376,   -80,  -376,  -376,  -296,  -297,  -298,   -78,  -376,
+   -76,   -48,  -376,  -376,  -376,   -81,   -79,  -299,  -300,  -301,
+  -302 ]
 
 racc_goto_table = [
-    96,   111,   160,   161,   116,   177,   412,   123,   273,    48,
-    37,   199,   269,   172,   520,    48,    55,   114,    64,    65,
-   103,   122,   104,    91,    76,   620,    19,    96,     3,    68,
-   392,    63,   528,    59,   113,    97,    68,   620,   107,   611,
-   121,    32,   176,   118,   132,   182,   131,   173,   196,   623,
-    91,   141,   287,   615,   607,   275,    62,   119,   180,   271,
-   460,   218,   193,   220,    81,   222,   206,   224,   191,   226,
-   227,   194,   103,   197,   207,   179,   394,    64,    65,    78,
-   202,   190,   483,   575,   184,   216,    74,   219,    18,   221,
-   107,   223,    10,   225,     2,   136,    70,    53,   187,    33,
-   201,   205,   175,   178,   181,   183,   186,   189,   192,   195,
-   173,   231,   232,   233,   234,   235,    48,   209,   198,   200,
-   204,   174,    27,    20,   163,   137,    13,     6,   248,   318,
-   215,   582,   601,     5,   256,   544,   595,   577,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   254,   nil,
-   nil,   nil,   nil,   nil,   282,   nil,   nil,   nil,   nil,   nil,
-   nil,   249,   nil,   nil,   nil,   nil,   nil,   252,   nil,   nil,
-   nil,   nil,   nil,   384,   nil,   386,   nil,   nil,   nil,   323,
-   nil,   nil,   nil,   327,   251,   nil,   332,   285,   nil,   nil,
-   343,   nil,   nil,   353,   nil,   361,   348,   369,   nil,   358,
-   nil,   366,   nil,   374,   nil,   nil,   nil,   378,   389,   382,
-   347,   320,   nil,   357,   329,   365,   nil,   373,   375,   nil,
-   nil,   nil,   380,   344,   330,   336,   354,   335,   362,   346,
-   370,   nil,   356,   nil,   364,   nil,   372,   nil,   377,   nil,
-   333,   nil,   nil,   338,   nil,   nil,   345,   nil,   nil,   355,
-   nil,   363,   nil,   371,   nil,   nil,   518,   nil,   nil,   411,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   602,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   416,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+    93,   128,   162,    45,   174,   159,   113,   410,   271,    45,
+    52,   196,   107,   115,   172,   103,    56,   518,   121,   275,
+    89,    65,    64,   111,    73,    93,    66,    19,   618,    95,
+     3,   609,   106,    62,   393,   526,    66,   120,    59,   618,
+   620,    32,   282,   205,   132,    89,   110,   173,   179,   139,
+   130,   614,   605,   273,   118,   181,    61,   270,   459,    79,
+   193,   206,   218,   187,   220,   177,   222,   191,   224,   194,
+   226,   227,   216,    74,   219,   199,   221,   117,   223,   190,
+   225,   392,    65,    64,   480,   572,   107,    72,   176,   208,
+    18,    11,     2,   136,    70,    53,   186,    33,   198,   201,
+   204,   175,   178,   180,   182,   185,   106,   189,   192,   231,
+    45,   173,   232,   233,   234,   235,   195,   210,   197,   183,
+   200,   203,    27,    22,   164,   137,    14,     6,   215,   258,
+   318,   580,   600,     4,   543,   592,   574,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   255,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   316,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   253,   nil,   nil,   nil,   nil,
+   nil,   379,   nil,   381,   249,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   252,   nil,   320,   nil,   nil,   327,   nil,   nil,
+   nil,   344,   nil,   325,   nil,   356,   330,   364,   370,   nil,
+   280,   nil,   nil,   nil,   nil,   251,   384,   nil,   343,   389,
+   nil,   nil,   355,   nil,   363,   369,   nil,   373,   nil,   377,
+   nil,   nil,   nil,   334,   nil,   321,   nil,   342,   nil,   nil,
+   nil,   354,   nil,   362,   368,   nil,   339,   375,   331,   nil,
+   351,   336,   359,   365,   341,   nil,   nil,   nil,   353,   nil,
+   361,   367,   nil,   387,   nil,   517,   nil,   nil,   nil,   328,
+   414,   nil,   333,   nil,   nil,   nil,   599,   340,   nil,   nil,
+   nil,   352,   nil,   360,   366,   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,   479,   nil,   nil,   450,   418,   nil,   nil,   nil,   nil,
-   442,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   434,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   465,   464,   nil,   nil,   nil,   nil,   432,   nil,   nil,   nil,
-   nil,   nil,   477,   nil,   nil,   nil,   nil,   487,   nil,   nil,
-   nil,   490,   nil,   nil,   474,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   468,   nil,   nil,   500,   nil,   nil,
-   nil,   nil,   472,   nil,   nil,   nil,   nil,   nil,   nil,   498,
-   nil,   nil,   489,   nil,   nil,   nil,   492,   509,   470,   519,
-   nil,   nil,   nil,   507,   nil,   nil,   496,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   505,   nil,   nil,   nil,   nil,   nil,
-   nil,   494,   nil,   nil,   nil,   411,   256,   565,   nil,   503,
-   nil,   548,   285,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   517,   nil,   nil,   nil,   nil,   nil,   nil,   558,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   556,
-   nil,   nil,   nil,   nil,   nil,   nil,   550,   nil,   519,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   554,   nil,   nil,   nil,
-   nil,   nil,   591,   nil,   nil,   nil,   348,   358,   366,   374,
-   nil,   552,    48,   564,   nil,   nil,   567,   569,   nil,   nil,
-   nil,   285,   nil,   nil,   nil,   nil,   605,   nil,   nil,   517,
-   nil,   594,   nil,   597,   nil,   nil,   nil,   nil,   nil,   nil,
-   411,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   475,   nil,   nil,
+   nil,   nil,   nil,   456,   nil,   nil,   441,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   415,   nil,   nil,   433,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   463,
+   nil,   nil,   431,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   482,   nil,   nil,   nil,   nil,
+   nil,   473,   nil,   429,   nil,   nil,   nil,   nil,   nil,   498,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   471,
+   nil,   nil,   nil,   nil,   495,   464,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   469,   507,   nil,   nil,   516,
+   506,   493,   486,   nil,   487,   nil,   nil,   nil,   nil,   nil,
+   nil,   504,   nil,   nil,   nil,   nil,   491,   467,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   414,   502,   nil,   nil,   nil,
+   nil,   nil,   nil,   515,   255,   nil,   nil,   489,   555,   nil,
+   nil,   nil,   nil,   nil,   280,   nil,   nil,   500,   nil,   nil,
+   nil,   nil,   nil,   nil,   554,   577,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   516,   nil,   nil,
+   nil,   552,   nil,   nil,   546,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   589,    45,   550,   nil,   565,   567,
+   nil,   nil,   563,   nil,   nil,   nil,   nil,   343,   355,   363,
+   369,   515,   nil,   603,   nil,   nil,   nil,   548,   nil,   nil,
+   593,   595,   280,   nil,   nil,   nil,   nil,   nil,   nil,   414,
    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,   628 ]
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   626 ]
 
 racc_goto_check = [
-    56,    81,    34,    22,    83,   104,   115,    88,    24,    23,
-    15,    78,    48,   109,    26,    23,    15,    71,    72,    66,
-    59,    87,    62,    55,   105,    54,    14,    56,     1,    60,
-    51,    69,    50,    58,    82,    23,    60,    54,    23,    53,
-    86,    14,    81,    84,    60,    83,    69,    56,    88,    53,
-    55,   105,    39,    37,    36,    25,    68,    85,    71,    20,
-    52,   109,    87,   109,    18,   109,    74,   109,    75,   109,
-   109,    76,    59,    77,    62,    82,    48,    72,    66,    17,
-    79,    86,    80,    26,    84,   110,    16,   110,    13,   110,
-    23,   110,    12,   110,    11,    10,     9,     8,    85,     7,
-    90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
-    56,    56,    56,    56,    56,    56,    23,    15,   100,   101,
-   102,   103,     6,     5,   106,   108,     4,     3,    81,   109,
-   112,   113,   114,     2,    88,   116,   127,   129,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    87,   nil,
-   nil,   nil,   nil,   nil,    81,   nil,   nil,   nil,   nil,   nil,
-   nil,    82,   nil,   nil,   nil,   nil,   nil,    86,   nil,   nil,
-   nil,   nil,   nil,    78,   nil,    78,   nil,   nil,   nil,    81,
-   nil,   nil,   nil,    83,    85,   nil,    83,    82,   nil,   nil,
-    81,   nil,   nil,    81,   nil,    81,    88,    81,   nil,    88,
-   nil,    88,   nil,    88,   nil,   nil,   nil,    88,    81,    88,
-    87,    82,   nil,    87,    82,    87,   nil,    87,    87,   nil,
-   nil,   nil,    87,    82,    84,    86,    82,    84,    82,    86,
-    82,   nil,    86,   nil,    86,   nil,    86,   nil,    86,   nil,
-    85,   nil,   nil,    85,   nil,   nil,    85,   nil,   nil,    85,
-   nil,    85,   nil,    85,   nil,   nil,    24,   nil,   nil,    81,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   115,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-    81,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+    56,    81,    34,    23,   104,    22,    83,   115,    24,    23,
+    15,    78,    59,    84,   109,    62,    15,    26,    88,    48,
+    55,    66,    72,    71,   105,    56,    60,    14,    54,    23,
+     1,    53,    23,    69,    51,    50,    60,    87,    58,    54,
+    53,    14,    39,    81,    60,    55,    82,    56,    83,   105,
+    69,    37,    36,    25,    86,    84,    68,    20,    52,    18,
+    88,    74,   109,    75,   109,    71,   109,    76,   109,    77,
+   109,   109,   110,    17,   110,    79,   110,    85,   110,    87,
+   110,    48,    66,    72,    80,    26,    59,    16,    82,    62,
+    13,    12,    11,    10,     9,     8,    86,     7,    90,    91,
+    92,    93,    94,    95,    96,    97,    23,    98,    99,    56,
+    23,    56,    56,    56,    56,    56,   100,    15,   101,    85,
+   102,   103,     6,     5,   106,   108,     4,     3,   112,    81,
+   109,   113,   114,     2,   116,   127,   129,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,    88,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,    81,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,    87,   nil,   nil,   nil,   nil,
+   nil,    78,   nil,    78,    82,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,    86,   nil,    83,   nil,   nil,    83,   nil,   nil,
+   nil,    81,   nil,    84,   nil,    81,    84,    81,    81,   nil,
+    82,   nil,   nil,   nil,   nil,    85,    81,   nil,    88,    81,
+   nil,   nil,    88,   nil,    88,    88,   nil,    88,   nil,    88,
+   nil,   nil,   nil,    87,   nil,    82,   nil,    87,   nil,   nil,
+   nil,    87,   nil,    87,    87,   nil,    82,    87,    86,   nil,
+    82,    86,    82,    82,    86,   nil,   nil,   nil,    86,   nil,
+    86,    86,   nil,    82,   nil,    24,   nil,   nil,   nil,    85,
+    81,   nil,    85,   nil,   nil,   nil,   115,    85,   nil,   nil,
+   nil,    85,   nil,    85,    85,   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,   104,   nil,   nil,    88,    82,   nil,   nil,   nil,   nil,
-    87,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,    86,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-    81,    83,   nil,   nil,   nil,   nil,    85,   nil,   nil,   nil,
-   nil,   nil,    88,   nil,   nil,   nil,   nil,    81,   nil,   nil,
-   nil,    81,   nil,   nil,    87,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,    82,   nil,   nil,    88,   nil,   nil,
-   nil,   nil,    86,   nil,   nil,   nil,   nil,   nil,   nil,    87,
-   nil,   nil,    82,   nil,   nil,   nil,    82,    88,    85,    81,
-   nil,   nil,   nil,    87,   nil,   nil,    86,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,    86,   nil,   nil,   nil,   nil,   nil,
-   nil,    85,   nil,   nil,   nil,    81,    88,    22,   nil,    85,
-   nil,    81,    82,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-    23,   nil,   nil,   nil,   nil,   nil,   nil,    88,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   104,   nil,   nil,
+   nil,   nil,   nil,    81,   nil,   nil,    88,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,    82,   nil,   nil,    87,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    81,
+   nil,   nil,    86,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,    83,   nil,   nil,   nil,   nil,
+   nil,    88,   nil,    85,   nil,   nil,   nil,   nil,   nil,    81,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    87,
-   nil,   nil,   nil,   nil,   nil,   nil,    82,   nil,    81,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,    86,   nil,   nil,   nil,
-   nil,   nil,    22,   nil,   nil,   nil,    88,    88,    88,    88,
-   nil,    85,    23,    15,   nil,   nil,    23,    23,   nil,   nil,
-   nil,    82,   nil,   nil,   nil,   nil,    34,   nil,   nil,    23,
-   nil,    81,   nil,    81,   nil,   nil,   nil,   nil,   nil,   nil,
-    81,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,    88,    82,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,    86,    81,   nil,   nil,    81,
+    88,    87,    82,   nil,    82,   nil,   nil,   nil,   nil,   nil,
+   nil,    87,   nil,   nil,   nil,   nil,    86,    85,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,    81,    86,   nil,   nil,   nil,
+   nil,   nil,   nil,    23,    88,   nil,   nil,    85,    81,   nil,
+   nil,   nil,   nil,   nil,    82,   nil,   nil,    85,   nil,   nil,
+   nil,   nil,   nil,   nil,    88,    22,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,    81,   nil,   nil,
+   nil,    87,   nil,   nil,    82,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,    22,    23,    86,   nil,    23,    23,
+   nil,   nil,    15,   nil,   nil,   nil,   nil,    88,    88,    88,
+    88,    23,   nil,    34,   nil,   nil,   nil,    85,   nil,   nil,
+    81,    81,    82,   nil,   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,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,    56 ]
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,    56 ]
 
 racc_goto_pointer = [
-   nil,    28,   133,   127,   120,   110,   102,    72,    64,    43,
-    25,    94,    88,    77,    15,   -18,    32,    25,    10,   nil,
-  -152,   nil,   -85,   -19,  -203,  -156,  -445,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   -85,   nil,  -546,  -554,   nil,  -162,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -199,   nil,
-  -427,  -244,  -332,  -567,  -586,   -31,   -54,   nil,    -9,   -37,
-   -23,   nil,   -35,   nil,   nil,   nil,   -29,   nil,     9,   -16,
-   nil,   -44,   -30,   nil,   -41,   -34,   -31,   -29,   -91,   -22,
-  -328,   -60,   -27,   -57,   -18,    -4,   -21,   -40,   -54,   nil,
-    -2,    -1,     0,     1,     2,     3,     4,     5,     6,     7,
-    16,    17,    18,    19,   -97,   -30,    34,   nil,    50,   -88,
-   -63,   nil,   -17,  -408,  -448,  -313,  -350,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -435,   nil,  -397 ]
+   nil,    30,   133,   127,   120,   109,   100,    70,    62,    41,
+    23,    92,    86,    78,    15,   -18,    33,    19,     5,   nil,
+  -154,   nil,   -81,   -25,  -203,  -158,  -441,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   -86,   nil,  -546,  -554,   nil,  -172,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -192,   nil,
+  -423,  -240,  -335,  -573,  -581,   -34,   -54,   nil,    -2,   -45,
+   -23,   nil,   -42,   nil,   nil,   nil,   -24,   nil,    12,   -11,
+   nil,   -37,   -23,   nil,   -45,   -39,   -35,   -33,   -91,   -27,
+  -324,   -59,   -14,   -54,   -47,    17,    -6,   -23,   -42,   nil,
+    -4,    -3,    -2,    -1,     0,     1,     2,     3,     5,     6,
+    14,    16,    18,    19,   -98,   -30,    32,   nil,    49,   -87,
+   -76,   nil,   -17,  -407,  -446,  -312,  -350,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -434,   nil,  -396 ]
 
 racc_goto_default = [
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   536,   nil,    84,
-   nil,    88,   nil,   142,   nil,   nil,   nil,   521,   522,   524,
-   525,   527,   531,   533,    93,   535,   nil,   nil,   512,   513,
-   289,   292,   295,   299,   303,   307,   312,   317,   nil,   270,
-   nil,   nil,   nil,   nil,   612,   613,   614,    50,    52,    36,
-    38,    41,   nil,   106,    43,    44,    45,    47,   nil,   nil,
-    60,   nil,    40,    42,   105,   nil,   nil,   nil,   nil,   nil,
-   129,    71,    72,   nil,   nil,   290,   293,   297,   300,   125,
-   311,   315,   281,   nil,   nil,   nil,   nil,   nil,   nil,   302,
-   306,   310,   314,   279,   283,   nil,    79,    82,    85,    86,
-    89,    94,    98,   nil,   nil,   nil,   413,   288,   291,   294,
-   298,   301,   305,   309,   313,   278,   526,   530,   532,   nil ]
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   534,   nil,    82,
+   nil,    86,   nil,   140,   nil,   nil,   nil,   519,   520,   521,
+   523,   525,   528,   531,    90,   533,   nil,   nil,   536,   511,
+   284,   287,   290,   294,   298,   301,   306,   311,   nil,   269,
+   nil,   nil,   nil,   nil,   610,   611,   612,    47,    49,    51,
+    36,    38,   nil,   105,    41,    42,    43,    44,   nil,   nil,
+    63,   nil,    37,    40,   104,   nil,   nil,   nil,   nil,   nil,
+   125,   100,    71,   nil,   nil,   285,   288,   292,   295,   122,
+   305,   310,   315,   nil,   nil,   nil,   nil,   nil,   nil,   297,
+   300,   304,   309,   313,   278,   nil,    77,    80,    83,    85,
+    87,    91,    96,   nil,   nil,   nil,   411,   283,   286,   289,
+   293,   296,   299,   303,   308,   312,   524,   527,   530,   nil ]
 
 racc_token_table = {
@@ -1670,5 +1687,5 @@
  :Left_parenthesis_code => 21,
  :Right_parenthesis_code => 22,
- ";" => 23,
+ :Semicolon_code => 23,
  :SYM_ADL_VERSION => 24,
  :V_VERSION_STRING => 25,
@@ -1730,20 +1747,19 @@
  :SYM_EXISTENCE => 81,
  :SYM_CARDINALITY => 82,
- :Semicolon_code => 83,
- :SYM_ORDERED => 84,
- :SYM_UNORDERED => 85,
- :SYM_UNIQUE => 86,
- :SYM_OCCURRENCES => 87,
- :V_ISO8601_DATE_CONSTRAINT_PATTERN => 88,
- :V_ISO8601_TIME_CONSTRAINT_PATTERN => 89,
- :V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN => 90,
- :START_TERM_CODE_CONSTRAINT => 91,
- :END_TERM_CODE_CONSTRAINT => 92,
- :TERM_CODE => 93,
- :V_ISO8601_DURATION_CONSTRAINT_PATTERN => 94 }
+ :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_use_result_var = true
 
-racc_nt_base = 95
+racc_nt_base = 94
 
 Racc_arg = [
@@ -1787,5 +1803,5 @@
 'Left_parenthesis_code',
 'Right_parenthesis_code',
-'";"',
+'Semicolon_code',
 'SYM_ADL_VERSION',
 'V_VERSION_STRING',
@@ -1847,5 +1863,4 @@
 'SYM_EXISTENCE',
 'SYM_CARDINALITY',
-'Semicolon_code',
 'SYM_ORDERED',
 'SYM_UNORDERED',
@@ -1886,4 +1901,5 @@
 'c_attributes',
 'c_object',
+'v_c_domain_type',
 'archetype_internal_ref',
 'archetype_slot',
@@ -1892,5 +1908,4 @@
 'c_ordinal',
 'c_primitive_object',
-'v_c_domain_type',
 'absolute_path',
 'c_archetype_slot_head',
@@ -2032,5 +2047,5 @@
  # reduce 18 omitted
 
-module_eval <<'.,.,', 'lib/parser.y', 73
+module_eval <<'.,.,', 'lib/parser.y', 74
   def _reduce_19( val, _values, result )
     result = {:language => val[1]}
@@ -2061,5 +2076,5 @@
  # reduce 30 omitted
 
-module_eval <<'.,.,', 'lib/parser.y', 110
+module_eval <<'.,.,', 'lib/parser.y', 111
   def _reduce_31( val, _values, result )
     result = {:c_complex_object_id => {:type_identifier => val[0]}}
@@ -2068,5 +2083,5 @@
 .,.,
 
-module_eval <<'.,.,', 'lib/parser.y', 114
+module_eval <<'.,.,', 'lib/parser.y', 115
   def _reduce_32( val, _values, result )
     result = {:c_complex_object_id => {:type_identifier => val[0], :V_LOCAL_TERM_CODE_REF => val[1]}}
@@ -2145,7 +2160,17 @@
  # reduce 67 omitted
 
- # reduce 68 omitted
-
- # reduce 69 omitted
+module_eval <<'.,.,', 'lib/parser.y', 186
+  def _reduce_68( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}, c_existence = #{val[1]} at #{@filename}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 190
+  def _reduce_69( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER: #{val[0]}, c_existence = #{val[1]}, c_cardinality = #{val[2]} at #{@filename}")
+   result
+  end
+.,.,
 
  # reduce 70 omitted
@@ -2195,9 +2220,14 @@
  # reduce 92 omitted
 
- # reduce 93 omitted
-
-module_eval <<'.,.,', 'lib/parser.y', 233
+module_eval <<'.,.,', 'lib/parser.y', 240
+  def _reduce_93( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}: attr_id = #{val[0]}, object_block = #{val[1]} at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 245
   def _reduce_94( val, _values, result )
-    @@log.info("dADL::V_ATTRIBUTE_IDENTIFIER: #{val[0]} at #{@filename}")
+    @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}:#{@lineno}")
    result
   end
@@ -2228,5 +2258,10 @@
  # reduce 106 omitted
 
- # reduce 107 omitted
+module_eval <<'.,.,', 'lib/parser.y', 269
+  def _reduce_107( val, _values, result )
+    @@log.info("object_key: [#{val[1]}] at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
 
  # reduce 108 omitted
@@ -2256,23 +2291,73 @@
  # reduce 120 omitted
 
- # reduce 121 omitted
-
- # reduce 122 omitted
-
- # reduce 123 omitted
-
- # reduce 124 omitted
-
- # reduce 125 omitted
-
- # reduce 126 omitted
-
- # reduce 127 omitted
-
- # reduce 128 omitted
-
- # reduce 129 omitted
-
- # reduce 130 omitted
+module_eval <<'.,.,', 'lib/parser.y', 287
+  def _reduce_121( val, _values, result )
+    @@log.info("string_value: #{val[0]} at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 291
+  def _reduce_122( val, _values, result )
+    @@log.info("integer_value: #{val[0]} at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 295
+  def _reduce_123( val, _values, result )
+    @@log.info("real_value: #{val[0]} at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 299
+  def _reduce_124( val, _values, result )
+    @@log.info("boolean_value: #{val[0]} at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 303
+  def _reduce_125( val, _values, result )
+    @@log.info("character_value: #{val[0]} at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 307
+  def _reduce_126( val, _values, result )
+    @@log.info("date_value: #{val[0]} at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 311
+  def _reduce_127( val, _values, result )
+    @@log.info("time_value: #{val[0]} at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 315
+  def _reduce_128( val, _values, result )
+    @@log.info("date_time_value: #{val[0]} at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 319
+  def _reduce_129( val, _values, result )
+    @@log.info("duration_value: #{val[0]} at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 323
+  def _reduce_130( val, _values, result )
+    @@log.info("uri_value: #{val[0]} at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
 
  # reduce 131 omitted
@@ -2306,11 +2391,21 @@
  # reduce 145 omitted
 
- # reduce 146 omitted
-
- # reduce 147 omitted
-
-module_eval <<'.,.,', 'lib/parser.y', 302
+module_eval <<'.,.,', 'lib/parser.y', 344
+  def _reduce_146( val, _values, result )
+    @@log.info("V_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 348
+  def _reduce_147( val, _values, result )
+    @@log.info("V_GENERIC_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 353
   def _reduce_148( val, _values, result )
-    @@log.info("V_STRING: #{val[0]} at #{@filename}")
+    @@log.info("V_STRING: #{val[0]} at #{@filename}:#{@lineno}")
    result
   end
@@ -2479,5 +2574,10 @@
  # reduce 229 omitted
 
- # reduce 230 omitted
+module_eval <<'.,.,', 'lib/parser.y', 464
+  def _reduce_230( val, _values, result )
+    @@log.info("V_ISO8601_DURATION: #{val[0]} at #{@filename}:#{@lineno}")
+   result
+  end
+.,.,
 
  # reduce 231 omitted
@@ -2595,7 +2695,17 @@
  # reduce 287 omitted
 
- # reduce 288 omitted
-
- # reduce 289 omitted
+module_eval <<'.,.,', 'lib/parser.y', 555
+  def _reduce_288( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 559
+  def _reduce_289( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}")
+   result
+  end
+.,.,
 
  # reduce 290 omitted
@@ -2767,5 +2877,10 @@
  # reduce 373 omitted
 
- # reduce 374 omitted
+module_eval <<'.,.,', 'lib/parser.y', 697
+  def _reduce_374( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{word} at #{@filename}")
+   result
+  end
+.,.,
 
  # reduce 375 omitted
Index: ruby/trunk/adl_parser/lib/parser.y
===================================================================
--- ruby/trunk/adl_parser/lib/parser.y	(revision 18)
+++ ruby/trunk/adl_parser/lib/parser.y	(revision 19)
@@ -49,5 +49,6 @@
 
 arch_meta_data_items: arch_meta_data_item
-  | arch_meta_data_items ';' arch_meta_data_item
+  | arch_meta_data_items Semicolon_code arch_meta_data_item
+#  | arch_meta_data_items ';' arch_meta_data_item
 
 arch_meta_data_item: SYM_ADL_VERSION SYM_EQ V_VERSION_STRING
@@ -120,5 +121,6 @@
 #------------------------- node types -----------------------
 
-c_object: c_complex_object
+c_object: v_c_domain_type
+  | c_complex_object
   | archetype_internal_ref
   | archetype_slot
@@ -127,5 +129,5 @@
   | c_ordinal
   | c_primitive_object
-  | v_c_domain_type
+#  | v_c_domain_type
 #  | V_C_DOMAIN_TYPE
   #   this is an attempt to match a dADL section inside cADL. It will
@@ -180,5 +182,11 @@
 
 c_attr_head: V_ATTRIBUTE_IDENTIFIER c_existence
+  {
+    @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}, c_existence = #{val[1]} at #{@filename}")
+  }
   | V_ATTRIBUTE_IDENTIFIER c_existence c_cardinality
+  {
+    @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER: #{val[0]}, c_existence = #{val[1]}, c_cardinality = #{val[2]} at #{@filename}") 
+  }
 
 c_attr_values: c_object
@@ -224,11 +232,15 @@
 attr_vals: attr_val
   | attr_vals attr_val
-  | attr_vals ';' attr_val
+  | attr_vals Semicolon_code attr_val
+#  | attr_vals ';' attr_val
 
 attr_val: attr_id SYM_EQ object_block
+  {
+    @@log.info("#{__FILE__}:#{__LINE__}: attr_id = #{val[0]}, object_block = #{val[1]} at #{@filename}:#{@lineno}")
+  }
 
 attr_id: V_ATTRIBUTE_IDENTIFIER
   {
-    @@log.info("dADL::V_ATTRIBUTE_IDENTIFIER: #{val[0]} at #{@filename}")
+    @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}:#{@lineno}")
   }
   | V_ATTRIBUTE_IDENTIFIER error
@@ -253,4 +265,7 @@
 
 object_key: Left_bracket_code simple_value Right_bracket_code
+  {
+    @@log.info("object_key: [#{val[1]}] at #{@filename}:#{@lineno}")
+  }
 
 single_attr_object_block: untyped_single_attr_object_block
@@ -268,13 +283,43 @@
   | term_code_list_value
 simple_value: string_value
+  {
+    @@log.info("string_value: #{val[0]} at #{@filename}:#{@lineno}")
+  }
   | integer_value
+  {
+    @@log.info("integer_value: #{val[0]} at #{@filename}:#{@lineno}")
+  }
   | real_value
+  {
+    @@log.info("real_value: #{val[0]} at #{@filename}:#{@lineno}")
+  }
   | boolean_value
+  {
+    @@log.info("boolean_value: #{val[0]} at #{@filename}:#{@lineno}")
+  }
   | character_value
+  {
+    @@log.info("character_value: #{val[0]} at #{@filename}:#{@lineno}")
+  }
   | date_value
+  {
+    @@log.info("date_value: #{val[0]} at #{@filename}:#{@lineno}")
+  }
   | time_value
+  {
+    @@log.info("time_value: #{val[0]} at #{@filename}:#{@lineno}")
+  }
   | date_time_value
+  {
+    @@log.info("date_time_value: #{val[0]} at #{@filename}:#{@lineno}")
+  }
   | duration_value
+  {
+    @@log.info("duration_value: #{val[0]} at #{@filename}:#{@lineno}")
+  }
   | uri_value
+  {
+    @@log.info("uri_value: #{val[0]} at #{@filename}:#{@lineno}")
+  }
 simple_list_value: string_list_value
   | integer_list_value
@@ -295,9 +340,15 @@
 
 type_identifier: V_TYPE_IDENTIFIER
+  {
+    @@log.info("V_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
+  }
   | V_GENERIC_TYPE_IDENTIFIER
+  {
+    @@log.info("V_GENERIC_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
+  }
 
 string_value: V_STRING
   {
-    @@log.info("V_STRING: #{val[0]} at #{@filename}")
+    @@log.info("V_STRING: #{val[0]} at #{@filename}:#{@lineno}")
   }
 
@@ -409,4 +460,7 @@
 
 duration_value: V_ISO8601_DURATION
+  {
+    @@log.info("V_ISO8601_DURATION: #{val[0]} at #{@filename}:#{@lineno}")
+  }
 
 duration_list_value: duration_value Comma_code duration_value
@@ -497,5 +551,11 @@
 
 path_segment: V_ATTRIBUTE_IDENTIFIER V_LOCAL_TERM_CODE_REF
+  {
+    @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}") 
+  }
   | V_ATTRIBUTE_IDENTIFIER
+  {
+    @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}") 
+  }
 
 
@@ -601,9 +661,11 @@
 c_boolean: c_boolean_spec
   | c_boolean_spec Semicolon_code boolean_value
-  | c_boolean_spec ';' error
+  | c_boolean_spec Semicolon_code error
+#  | c_boolean_spec ';' error
 
 c_ordinal: c_ordinal_spec
   | c_ordinal_spec Semicolon_code integer_value
-  | c_ordinal_spec ';' error
+  | c_ordinal_spec Semicolon_code error
+#  | c_ordinal_spec ';' error
 
 c_ordinal_spec: ordinal
@@ -631,4 +693,7 @@
 any_identifier: type_identifier
   | V_ATTRIBUTE_IDENTIFIER
+  {
+    @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{word} at #{@filename}")
+  }
 
 
@@ -647,4 +712,5 @@
 require 'lib/util.rb'
 require 'lib/scanner.rb'
+require 'lib/model.rb'
 $DEBUG = true
 
@@ -655,4 +721,5 @@
 @@log = Logger.new('log/parser.log','daily')
 @@dadl_scanner = OpenEHR::ADL::Scanner::DADL::RootScanner.new
+@@cadl_scanner = OpenEHR::ADL::Scanner::CADL::RootScanner.new
 
 ###----------/* keywords */ --------------------------------------------- 
@@ -755,4 +822,5 @@
       when /\A--.*\n/ # single line comment
         @lineno += 1
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_adl: COMMENT = #{$&} at #{@filename}:#{@lineno}")
         ;
       when /\Adescription/   # description
@@ -770,7 +838,8 @@
         word = $&
         if @@adl_reserved[word]
-          @@log.info("@@adl_reserved: #{@@adl_reserved[word]} at #{@filename}")
+          @@log.info("#{__FILE__}:#{__LINE__}: scan_adl: @@adl_reserved = #{@@adl_reserved[word]} at #{@filename}:#{@lineno}")
           yield @@adl_reserved[word], @@adl_reserved[word]
         elsif #/\A[A-Z][a-zA-Z0-9_]*/
+          @@log.info("#{__FILE__}:#{__LINE__}: scan_adl: V_ATTRIBUTE_IDENTIFIER = #{$&} at #{@filename}:#{@lineno}")
           yield :V_ATTRIBUTE_IDENTIFIER, $&
         end
@@ -801,4 +870,5 @@
       when /\A\{/   # {
         @adl_type.push(:cadl)
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: entering cADL at #{@filename}:#{@lineno}")
         yield :SYM_START_CBLOCK, :SYM_START_CBLOCK
       when /\A\}/   # }
@@ -806,4 +876,5 @@
 #        puts "Escaping #{adl_type}"
         assert_at(__FILE__,__LINE__){adl_type == :cadl}
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: exiting cADL at #{@filename}:#{@lineno}")
         yield :SYM_END_CBLOCK, $&
       when /\A\-/   # -
@@ -923,4 +994,16 @@
     when :cadl
 #      puts "Entering scan_cadl"
+      case scanned = @@cadl_scanner.parse(data)
+      when Yaparc::Result::OK
+        if scanned.value[0] == :START_V_C_DOMAIN_TYPE_BLOCK
+          @in_c_domain_type = true
+          @adl_type.push(:dadl)
+          yield scanned.value
+        else
+          yield scanned.value
+        end
+        data = scanned.input
+      end
+
       case data
       when /\A\n/ # carriage return
@@ -931,4 +1014,5 @@
       when /\A--.*\n/ # single line comment
         @lineno += 1
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: COMMENT = #{$&} at #{@filename}:#{@lineno}")
         ;
         ###----------/* symbols */ ------------------------------------------------- 
@@ -939,11 +1023,8 @@
       when /\A\<=/   # <=
         yield :SYM_LE, :SYM_LE
-      when /\A[A-Z][a-zA-Z0-9_]*[ \n]*\</   # V_C_DOMAIN_TYPE
-        @in_c_domain_type = true
-        @adl_type.push(:dadl)
-          yield :START_V_C_DOMAIN_TYPE_BLOCK, $&
-###         else
-###           raise
-###         end
+###       when /\A[A-Z][a-zA-Z0-9_]*[ \n]*\</   # V_C_DOMAIN_TYPE
+###         @in_c_domain_type = true
+###         @adl_type.push(:dadl)
+###         yield :START_V_C_DOMAIN_TYPE_BLOCK, $&
       when /\A\</   # <
         if @in_interval
@@ -1001,4 +1082,5 @@
       when /\A\{/   # {
         @adl_type.push(:cadl)
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: entering cADL at #{@filename}:#{@lineno}")
         yield :SYM_START_CBLOCK, :SYM_START_CBLOCK
       when /\A\}/   # }
@@ -1006,4 +1088,5 @@
 #        puts "Escaping #{adl_type}"
         assert_at(__FILE__,__LINE__){adl_type == :cadl}
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: exiting cADL at #{@filename}:#{@lineno}")
         yield :SYM_END_CBLOCK, :SYM_END_CBLOCK
       when /\A\$/   # $
@@ -1021,10 +1104,11 @@
         end
         yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
+
       when /\A\[[a-zA-Z0-9._\-]+::[a-zA-Z0-9._\-]+\]/   #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
         yield :V_QUALIFIED_TERM_CODE_REF, $&
       when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
         yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
-#      when /\A\[([a-zA-Z0-9()._\-]+::[a-zA-Z0-9._\_-]+)\]/
-#        yield :V_TERM_CODE_CONSTRAINT, :V_TERM_CODE_CONSTRAINT
+      when /\A\[([a-zA-Z0-9()._\-]+::[a-zA-Z0-9._\_-]+)\]/
+        yield :V_TERM_CODE_CONSTRAINT, :V_TERM_CODE_CONSTRAINT
       when /\A\[[a-zA-Z0-9\(\)\._\-]+::[ \t\n]*/
         @adl_type.push(:term_constraint)
@@ -1049,4 +1133,5 @@
           yield @@cadl_reserved[word.downcase], @@cadl_reserved[word.downcase]
         else
+          @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: V_ATTRIBUTE_IDENTIFIER = #{word} at #{@filename}:#{@lineno}")
           yield :V_ATTRIBUTE_IDENTIFIER, word #V_ATTRIBUTE_IDENTIFIER /\A[a-z][a-zA-Z0-9_]*/
         end
@@ -1070,11 +1155,11 @@
       when /\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+ /   #V_REAL
         yield :V_REAL, $&
-        #    when /\A"((?:[^"\\]+|\\.)*)"/ #V_STRING
+           when /\A"((?:[^"\\]+|\\.)*)"/ #V_STRING
       when /\A"([^"]*)"/m #V_STRING
         yield :V_STRING, $1
       when /\A[a-z]+:\/\/[^<>|\\{}^~"\[\] ]*/ #V_URI
         yield :V_URI, $&
-      when /\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?|P([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/   #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
-        yield :V_ISO8601_DURATION, $&
+###       when /\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?|P([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/   #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
+###         yield :V_ISO8601_DURATION, $&
       when /\A\S/ #UTF8CHAR
         yield :UTF8CHAR, $&
@@ -1118,10 +1203,5 @@
         yield scanned.value
         data = scanned.input
-###       when Yaparc::Result::Fail
-###         raise "Scan Failed: #{scanned}"
-###       when Yaparc::Result::Error
-###         raise "Scan Error: #{scanned}"
       else
-        
       end
 
@@ -1134,4 +1214,5 @@
       when /\A--.*\n/ # single line comment
         @lineno += 1
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_dadl: COMMENT = #{$&} at #{@filename}:#{@lineno}")
         ;
         ###----------/* symbols */ ------------------------------------------------- 
@@ -1253,6 +1334,6 @@
       when /\A[a-z]+:\/\/[^<>|\\{}^~"\[\] ]*/ #V_URI
         yield :V_URI, $&
-      when /\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?|P([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/   #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
-        yield :V_ISO8601_DURATION, $&
+###       when /\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?|P([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/   #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
+###         yield :V_ISO8601_DURATION, $&
       when /\A\S/ #UTF8CHAR
         yield :UTF8CHAR, $&
@@ -1351,4 +1432,5 @@
       when /\A--.*$/ # single line comment
         @lineno += 1
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_term_constraint: COMMENT = #{$&} at #{@filename}:#{@lineno}")
         ;
       when /\A[a-zA-Z0-9\._\-]+[ \t]*,/ # match any line, with ',' termination
Index: ruby/trunk/adl_parser/lib/scanner.rb
===================================================================
--- ruby/trunk/adl_parser/lib/scanner.rb	(revision 18)
+++ ruby/trunk/adl_parser/lib/scanner.rb	(revision 19)
@@ -8,4 +8,121 @@
   module ADL
     module Scanner
+      module Common
+        LOG = Logger.new('log/scanner.log','daily')
+
+        class V_QUALIFIED_TERM_CODE_REF
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Apply.new(Yaparc::Regex.new(/\A\[[a-zA-Z0-9()\._-]+::[a-zA-Z0-9\._-]+\]/)) do |match|
+                LOG.info("V_QUALIFIED_TERM_CODE_REF: #{match}")
+                [:V_QUALIFIED_TERM_CODE_REF, match]
+              end
+            end
+          end
+        end
+        
+        class V_LOCAL_TERM_CODE_REF
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Apply.new(Yaparc::Regex.new(/\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/)) do |match|
+                LOG.info("V_TERM_CODE_REF: #{match}")
+                [:V_LOCAL_TERM_CODE_REF, match]
+              end
+            end
+          end
+        end
+
+        class ERR_V_QUALIFIED_TERM_CODE_REF
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Apply.new(Yaparc::Regex.new(/\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/)) do |match|
+                LOG.info("ERR_V_QUALIFIED_TERM_CODE_REF: #{match}")
+                [:ERR_V_QUALIFIED_TERM_CODE_REF, match]
+              end
+            end
+          end
+        end
+
+        class V_TYPE_IDENTIFIER
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Apply.new(Yaparc::Regex.new(/\A[A-Z][a-zA-Z0-9_]*/)) do |match|
+                LOG.info("V_TYPE_IDENTIFIER: #{match}")
+                [:V_TYPE_IDENTIFIER, match]
+              end
+            end
+          end
+        end
+
+        class V_GENERIC_TYPE_IDENTIFIER
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Apply.new(Yaparc::Regex.new(/\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/)) do |match|
+                LOG.info("V_GENERIC_TYPE_IDENTIFIER: #{match}")
+                [:V_GENERIC_TYPE_IDENTIFIER, match]
+              end
+            end
+          end
+        end
+
+
+        class V_LOCAL_CODE
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Apply.new(Yaparc::Regex.new(/\Aa[ct][0-9.]+/)) do |match|
+                LOG.info("V_LOCAL_CODE: #{match}")
+                [:V_LOCAL_CODE, match]
+              end
+            end
+          end
+        end
+
+        class V_STRING
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Apply.new(Yaparc::Regex.new(/\A"([^"]*)"/m)) do |match|
+                LOG.info("V_STRING: #{match}")
+                [:V_STRING, match]
+              end
+            end
+          end
+        end
+
+        class V_REAL
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Apply.new(Yaparc::Regex.new(/\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+/)) do |match|
+                LOG.info("V_REAL: #{match}")
+                [:V_REAL, match]
+              end
+            end
+          end
+        end
+
+        #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
+        class V_ISO8601_DURATION
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Apply.new(
+                                Yaparc::Alt.new(Yaparc::Regex.new(/\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?/),
+                                                Yaparc::Regex.new(/AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/))) do |match|
+                LOG.info("V_ISO8601_DURATION: #{match}")
+                [:V_ISO8601_DURATION, match]
+              end
+            end
+          end
+        end
+
+      end # of Common
+
       module DADL
         # c.f. http://www.openehr.org/svn/ref_impl_eiffel/TRUNK/components/adl_parser/src/syntax/adl/parser/adl_scanner.l
@@ -16,6 +133,4 @@
         }
 
-        LOG = Logger.new('log/scanner.log','daily')
-
         class RootScanner
           include Yaparc::Parsable
@@ -23,12 +138,13 @@
             @parser = lambda do |input|
               Yaparc::Alt.new(Reserved.new,
-                              V_QUALIFIED_TERM_CODE_REF.new,
-                              V_LOCAL_TERM_CODE_REF.new,
-                              ERR_V_QUALIFIED_TERM_CODE_REF.new,
-                              V_TYPE_IDENTIFIER.new,
-                              V_GENERIC_TYPE_IDENTIFIER.new,
-                              V_STRING.new,
-                              V_LOCAL_CODE.new,
-                              V_REAL.new
+                              OpenEHR::ADL::Scanner::Common::V_QUALIFIED_TERM_CODE_REF.new,
+                              OpenEHR::ADL::Scanner::Common::V_LOCAL_TERM_CODE_REF.new,
+                              OpenEHR::ADL::Scanner::Common::ERR_V_QUALIFIED_TERM_CODE_REF.new,
+                              OpenEHR::ADL::Scanner::Common::V_TYPE_IDENTIFIER.new,
+                              OpenEHR::ADL::Scanner::Common::V_GENERIC_TYPE_IDENTIFIER.new,
+                              OpenEHR::ADL::Scanner::Common::V_STRING.new,
+                              OpenEHR::ADL::Scanner::Common::V_LOCAL_CODE.new,
+                              OpenEHR::ADL::Scanner::Common::V_REAL.new,
+                              OpenEHR::ADL::Scanner::Common::V_ISO8601_DURATION.new
                               )
             end
@@ -42,12 +158,12 @@
             @parser = lambda do |input|
               reserved_parsers = OpenEHR::ADL::Scanner::DADL::RESERVED.map do |keyword| 
-                Yaparc::Tokenize.new(Yaparc::Literal.new(keyword))
+                Yaparc::Tokenize.new(Yaparc::Literal.new(keyword[0], false))
               end
               Yaparc::Alt.new(Yaparc::Apply.new(Yaparc::Alt.new(*reserved_parsers)) do |match|
-                                LOG.info("Reserved: #{match}")
+                                OpenEHR::ADL::Scanner::Common::LOG.info("Reserved: #{match}")
                                 [OpenEHR::ADL::Scanner::DADL::RESERVED[match], OpenEHR::ADL::Scanner::DADL::RESERVED[match]]
                               end,
                               Yaparc::Apply.new(Yaparc::Regex.new(/\A[a-z][a-zA-Z0-9_]*/)) do |match|
-                                LOG.info("V_ATTRIBUTE_IDENTIFIER: #{match}")
+                                OpenEHR::ADL::Scanner::Common::LOG.info("V_ATTRIBUTE_IDENTIFIER: #{match}")
                                 [:V_ATTRIBUTE_IDENTIFIER, match]
                               end)
@@ -56,100 +172,5 @@
         end
 
-        class V_QUALIFIED_TERM_CODE_REF
-          include Yaparc::Parsable
-          def initialize
-            @parser = lambda do |input|
-              Yaparc::Apply.new(Yaparc::Regex.new(/\A\[[a-zA-Z0-9()\._-]+::[a-zA-Z0-9\._-]+\]/)) do |match|
-                LOG.info("V_QUALIFIED_TERM_CODE_REF: #{match}")
-                [:V_QUALIFIED_TERM_CODE_REF, match]
-              end
-            end
-          end
-        end
-
-        class V_LOCAL_TERM_CODE_REF
-          include Yaparc::Parsable
-          def initialize
-            @parser = lambda do |input|
-              Yaparc::Apply.new(Yaparc::Regex.new(/\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/)) do |match|
-                LOG.info("V_TERM_CODE_REF: #{match}")
-                [:V_LOCAL_TERM_CODE_REF, match]
-              end
-            end
-          end
-        end
-
-        class ERR_V_QUALIFIED_TERM_CODE_REF
-          include Yaparc::Parsable
-          def initialize
-            @parser = lambda do |input|
-              Yaparc::Apply.new(Yaparc::Regex.new(/\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/)) do |match|
-                LOG.info("ERR_V_QUALIFIED_TERM_CODE_REF: #{match}")
-                [:ERR_V_QUALIFIED_TERM_CODE_REF, match]
-              end
-            end
-          end
-        end
-
-        class V_TYPE_IDENTIFIER
-          include Yaparc::Parsable
-          def initialize
-            @parser = lambda do |input|
-              Yaparc::Apply.new(Yaparc::Regex.new(/\A[A-Z][a-zA-Z0-9_]*/)) do |match|
-                LOG.info("V_TYPE_IDENTIFIER: #{match}")
-                [:V_TYPE_IDENTIFIER, match]
-              end
-            end
-          end
-        end
-
-        class V_GENERIC_TYPE_IDENTIFIER
-          include Yaparc::Parsable
-          def initialize
-            @parser = lambda do |input|
-              Yaparc::Apply.new(Yaparc::Regex.new(/\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/)) do |match|
-                LOG.info("V_GENERIC_TYPE_IDENTIFIER: #{match}")
-                [:V_GENERIC_TYPE_IDENTIFIER, match]
-              end
-            end
-          end
-        end
-
-
-        class V_LOCAL_CODE
-          include Yaparc::Parsable
-          def initialize
-            @parser = lambda do |input|
-              Yaparc::Apply.new(Yaparc::Regex.new(/\Aa[ct][0-9.]+/)) do |match|
-                LOG.info("V_LOCAL_CODE: #{match}")
-                [:V_LOCAL_CODE, match]
-              end
-            end
-          end
-        end
-
-        class V_STRING
-          include Yaparc::Parsable
-          def initialize
-            @parser = lambda do |input|
-              Yaparc::Apply.new(Yaparc::Regex.new(/\A"([^"]*)"/m)) do |match|
-                LOG.info("V_STRING: #{match}")
-                [:V_STRING, match]
-              end
-            end
-          end
-        end
-
-        class V_REAL
-          include Yaparc::Parsable
-          def initialize
-            @parser = lambda do |input|
-              Yaparc::Apply.new(Yaparc::Regex.new(/\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+/)) do |match|
-                LOG.info("V_REAL: #{match}")
-                [:V_REAL, match]
-              end
-            end
-          end
-        end
+
 
       end # of DADL
@@ -157,4 +178,138 @@
       module CADL
         # c.f. http://www.openehr.org/svn/ref_impl_eiffel/TRUNK/components/adl_parser/src/syntax/cadl/parser/cadl_scanner.l
+        RESERVED = {
+          'ordered' => :SYM_ORDERED, # [Oo][Rr][Dd][Ee][Rr][Ee][Dd]
+          'unordered' => :SYM_UNORDERED, # [Uu][Nn][Oo][Rr][Dd][Ee][Rr][Ee][Dd]
+          'then' => :SYM_THEN, # [Tt][Hh][Ee][Nn]
+          'else' => :SYM_ELSE, # [Ee][Ll][Ss][Ee]
+          'and' => :SYM_AND, # [Aa][Nn][Dd]
+          'or' => :SYM_OR, # [Oo][Rr]
+          'xor' => :SYM_XOR, # [Xx][Oo][Rr]
+          'not' => :SYM_NOT, # [Nn][Oo][Tt]
+          'implies' => :SYM_IMPLIES, # [Ii][Mm][Pp][Ll][Ii][Ee][Ss]
+          'true' => :SYM_TRUE, #[Tt][Rr][Uu][Ee] -- -> SYM_TRUE 
+          'false' => :SYM_FALSE, # [Ff][Aa][Ll][Ss][Ee] -- -> SYM_FALSE 
+          'forall' => :SYM_FORALL, # [Ff][Oo][Rr][_][Aa][Ll][Ll]
+          'exists' => :SYM_EXISTS, # [Ee][Xx][Ii][Ss][Tt][Ss]
+          'existence' => :SYM_EXISTENCE, # [Ee][Xx][Iu][Ss][Tt][Ee][Nn][Cc][Ee]
+          'occurrences' => :SYM_OCCURRENCES, # [Oo][Cc][Cc][Uu][Rr][Rr][Ee][Nn][Cc][Ee][Ss]
+          'cardinality' => :SYM_CARDINALITY, # [Cc][Aa][Rr][Dd][Ii][Nn][Aa][Ll][Ii][Tt][Yy]
+          'unique' => :SYM_UNIQUE, # [Uu][Nn][Ii][Qq][Uu][Ee]
+          'matches' => :SYM_MATCHES, # [Mm][Aa][Tt][Cc][Hh][Ee][Ss]
+          'is_in' => :SYM_MATCHES, # [Ii][Ss][_][Ii][Nn]
+          'invariant' => :SYM_INVARIANT, # [Ii][Nn][Vv][Aa][Rr][Ii][Aa][Nn][Tt]
+          'infinity' => :SYM_INFINITY, # [Ii][Nn][Ff][Ii][Nn][Ii][Tt][Yy] -- -> SYM_INFINITY 
+          'use_node' => :SYM_USE_NODE, # [Uu][Ss][Ee][_][Nn][Oo][Dd][Ee]
+          'use_archetype' => :SYM_ALLOW_ARCHETYPE, # [Uu][Ss][Ee][_][Aa][Rr][Cc][Hh][Ee][Tt][Yy][Pp][Ee]
+          'allow_archetype' => :SYM_ALLOW_ARCHETYPE, # [Aa][Ll][Ll][Oo][Ww][_][Aa][Rr][Cc][Hh][Ee][Tt][Yy][Pp][Ee]
+          'include' => :SYM_INCLUDE, # [Ii][Nn][Cc][Ll][Uu][Dd][Ee]
+          'exclude' => :SYM_EXCLUDE # [Ee][Xx][Cc][Ll][Uu][Dd][Ee]
+        }
+
+        #V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN, /\A[yY][yY][yY][yY]-[mM?X][mM?X]-[dD?X][dD?X][T\t][hH?X][hH?X]:[mM?X][mM?X]:[sS?X][sS?X]/
+        class V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Apply.new(Yaparc::Regex.new(/\A[yY][yY][yY][yY]-[mM?X][mM?X]-[dD?X][dD?X][T\t][hH?X][hH?X]:[mM?X][mM?X]:[sS?X][sS?X]/)) do |match|
+                OpenEHR::ADL::Scanner::Common::LOG.info("V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN: #{match}")
+                [:V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN, match]
+              end
+            end
+          end
+        end
+
+        #V_ISO8601_DATE_CONSTRAINT_PATTERN  /\A[yY][yY][yY][yY]-[mM?X][mM?X]-[dD?X][dD?X]/
+        class V_ISO8601_DATE_CONSTRAINT_PATTERN
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Apply.new(Yaparc::Regex.new(/\A[yY][yY][yY][yY]-[mM?X][mM?X]-[dD?X][dD?X]/)) do |match|
+                OpenEHR::ADL::Scanner::Common::LOG.info("V_ISO8601_DATE_CONSTRAINT_PATTERN: #{match}")
+                [:V_ISO8601_DATE_CONSTRAINT_PATTERN, match]
+              end
+            end
+          end
+        end
+
+        #V_ISO8601_TIME_CONSTRAINT_PATTERN /\A[hH][hH]:[mM?X][mM?X]:[sS?X][sS?X]/
+        class V_ISO8601_TIME_CONSTRAINT_PATTERN
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Apply.new(Yaparc::Regex.new(/\A[hH][hH]:[mM?X][mM?X]:[sS?X][sS?X]/)) do |match|
+                OpenEHR::ADL::Scanner::Common::LOG.info("V_ISO8601_TIME_CONSTRAINT_PATTERN: #{match}")
+                [:V_ISO8601_TIME_CONSTRAINT_PATTERN, match]
+              end
+            end
+          end
+        end
+
+        #V_C_DOMAIN_TYPE /\A[A-Z][a-zA-Z0-9_]*[ \n]*\</
+        class V_C_DOMAIN_TYPE
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Apply.new(Yaparc::Regex.new(/\A[A-Z][a-zA-Z0-9_]*[ \n]*\</)) do |match|
+                OpenEHR::ADL::Scanner::Common::LOG.info("V_C_DOMAIN_TYPE: #{match}")
+                [:START_V_C_DOMAIN_TYPE_BLOCK, match]
+              end
+#               parser = Yaparc::Regex.new(/\A[A-Z][a-zA-Z0-9_]*[ \n]*\</)
+#               case result = parser.parse(input)
+#               when Yaparc::Result::OK
+#                 OpenEHR::ADL::Scanner::Common::LOG.info("V_C_DOMAIN_TYPE: #{result.value}")
+#                 Yaparc::Result::Fail.new
+#               else
+#                 Yaparc::Result::Fail.new
+#               end
+            end
+          end
+        end
+
+        class RootScanner
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Alt.new(V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN.new,
+                              V_ISO8601_DATE_CONSTRAINT_PATTERN.new,
+                              V_ISO8601_TIME_CONSTRAINT_PATTERN.new,
+                              OpenEHR::ADL::Scanner::Common::V_ISO8601_DURATION.new,
+                              V_C_DOMAIN_TYPE.new,
+                              Reserved.new,
+                              OpenEHR::ADL::Scanner::Common::V_QUALIFIED_TERM_CODE_REF.new,
+                              OpenEHR::ADL::Scanner::Common::V_LOCAL_TERM_CODE_REF.new,
+                              OpenEHR::ADL::Scanner::Common::ERR_V_QUALIFIED_TERM_CODE_REF.new,
+                              OpenEHR::ADL::Scanner::Common::V_TYPE_IDENTIFIER.new,
+                              OpenEHR::ADL::Scanner::Common::V_GENERIC_TYPE_IDENTIFIER.new,
+                              OpenEHR::ADL::Scanner::Common::V_STRING.new,
+                              OpenEHR::ADL::Scanner::Common::V_LOCAL_CODE.new,
+                              OpenEHR::ADL::Scanner::Common::V_REAL.new,
+                              OpenEHR::ADL::Scanner::Common::V_ISO8601_DURATION.new
+                              )
+            end
+          end
+        end
+
+        class Reserved
+          include Yaparc::Parsable
+          
+          def initialize
+            @parser = lambda do |input|
+              orderd_reserved = RESERVED.keys.sort{|x,y| y.length <=> x.length  }
+              reserved_parsers = orderd_reserved.map do |keyword| 
+                Yaparc::Literal.new(keyword, false)
+              end
+              Yaparc::Alt.new(Yaparc::Apply.new(Yaparc::Alt.new(*reserved_parsers)) do |match|
+                                OpenEHR::ADL::Scanner::Common::LOG.info("Reserved: #{match}")
+                                [OpenEHR::ADL::Scanner::CADL::RESERVED[match], OpenEHR::ADL::Scanner::CADL::RESERVED[match]]
+                              end,
+                              Yaparc::Apply.new(Yaparc::Regex.new(/\A[a-z][a-zA-Z0-9_]*/)) do |match|
+                                OpenEHR::ADL::Scanner::Common::LOG.info("V_ATTRIBUTE_IDENTIFIER: #{match}")
+                                [:V_ATTRIBUTE_IDENTIFIER, match]
+                              end)
+            end
+          end
+        end
+
       end
     end
Index: ruby/trunk/adl_parser/tests/parser_test.rb
===================================================================
--- ruby/trunk/adl_parser/tests/parser_test.rb	(revision 18)
+++ ruby/trunk/adl_parser/tests/parser_test.rb	(revision 19)
@@ -14,4 +14,8 @@
 
   def test_parse
+    imaging = File.read('tests/openEHR-EHR-ACTION.imaging.v1.adl')
+    assert_nothing_raised do
+      @parser.parse(imaging, 'openEHR-EHR-ACTION.imaging.v1.adl')
+    end
 
     exam_nervous_system = File.read('tests/openEHR-EHR-CLUSTER.exam-nervous_system.v1.adl')
@@ -92,8 +96,4 @@
       @parser.parse(discharge, 'openEHR-EHR-COMPOSITION.discharge.v1draft.adl')
     end
-    imaging = File.read('tests/openEHR-EHR-ACTION.imaging.v1.adl')
-    assert_nothing_raised do
-      @parser.parse(imaging, 'openEHR-EHR-ACTION.imaging.v1.adl')
-    end
      laboratory_request = File.read('tests/openEHR-EHR-ITEM_TREE.Laboratory_request.v1.adl')
      assert_nothing_raised do
@@ -103,5 +103,5 @@
      assert_nothing_raised do
        result = @parser.parse(apgar, 'openEHR-EHR-OBSERVATION.apgar.v1.adl')
-       assert_equal "", result
+#       assert_equal "", result
      end
 #     evaluation = File.read('tests/openEHR-EHR-EVALUATION.adverse.v1.adl')
Index: ruby/trunk/adl_parser/tests/scanner_test.rb
===================================================================
--- ruby/trunk/adl_parser/tests/scanner_test.rb	(revision 18)
+++ ruby/trunk/adl_parser/tests/scanner_test.rb	(revision 19)
@@ -10,6 +10,6 @@
 
   def test_V_LOCAL_TERM_CODE_REF
-    parser = OpenEHR::ADL::Scanner::DADL::V_LOCAL_TERM_CODE_REF.new
-    assert_instance_of OpenEHR::ADL::Scanner::DADL::V_LOCAL_TERM_CODE_REF,parser
+    parser = OpenEHR::ADL::Scanner::Common::V_LOCAL_TERM_CODE_REF.new
+    assert_instance_of OpenEHR::ADL::Scanner::Common::V_LOCAL_TERM_CODE_REF,parser
     result = parser.parse('[en-us]')
     assert_instance_of Yaparc::Result::OK, result
@@ -17,6 +17,6 @@
 
   def test_V_QUALIFIED_TERM_CODE_REF
-    parser = OpenEHR::ADL::Scanner::DADL::V_QUALIFIED_TERM_CODE_REF.new
-    assert_instance_of OpenEHR::ADL::Scanner::DADL::V_QUALIFIED_TERM_CODE_REF,parser
+    parser = OpenEHR::ADL::Scanner::Common::V_QUALIFIED_TERM_CODE_REF.new
+    assert_instance_of OpenEHR::ADL::Scanner::Common::V_QUALIFIED_TERM_CODE_REF,parser
     result = parser.parse('[ISO_639::en]')
     assert_instance_of Yaparc::Result::OK, result
@@ -26,6 +26,6 @@
 
   def test_V_STRING
-    parser = OpenEHR::ADL::Scanner::DADL::V_STRING.new
-    assert_instance_of OpenEHR::ADL::Scanner::DADL::V_STRING,parser
+    parser = OpenEHR::ADL::Scanner::Common::V_STRING.new
+    assert_instance_of OpenEHR::ADL::Scanner::Common::V_STRING,parser
     result = parser.parse('"this is a string"')
     assert_instance_of Yaparc::Result::OK, result
@@ -35,6 +35,6 @@
 
   def test_V_REAL
-    parser = OpenEHR::ADL::Scanner::DADL::V_REAL.new
-    assert_instance_of OpenEHR::ADL::Scanner::DADL::V_REAL,parser
+    parser = OpenEHR::ADL::Scanner::Common::V_REAL.new
+    assert_instance_of OpenEHR::ADL::Scanner::Common::V_REAL,parser
     result = parser.parse('0.1')
     assert_instance_of Yaparc::Result::OK, result
@@ -43,5 +43,64 @@
     assert_equal [:V_REAL, "0.0"], result.value
     assert_equal "..20000.0", result.input
+  end
 
+  def test_V_ISO8601_DURATION
+    parser = OpenEHR::ADL::Scanner::Common::V_ISO8601_DURATION.new
+    assert_instance_of OpenEHR::ADL::Scanner::Common::V_ISO8601_DURATION,parser
+    result = parser.parse('PT1M')
+    assert_instance_of Yaparc::Result::OK, result
   end
+
+  def test_V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN
+    parser = OpenEHR::ADL::Scanner::CADL::V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN.new
+    assert_instance_of OpenEHR::ADL::Scanner::CADL::V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN,parser
+    result = parser.parse('yyyy-??-??T??:??:??')
+    assert_instance_of Yaparc::Result::OK, result
+  end
+
+  def test_V_ISO8601_DATE_CONSTRAINT_PATTERN
+    parser = OpenEHR::ADL::Scanner::CADL::V_ISO8601_DATE_CONSTRAINT_PATTERN.new
+    assert_instance_of OpenEHR::ADL::Scanner::CADL::V_ISO8601_DATE_CONSTRAINT_PATTERN,parser
+    result = parser.parse('yyyy-mm-XX-dd')
+    assert_instance_of Yaparc::Result::OK, result
+  end
+
+  def test_V_ISO8601_TIME_CONSTRAINT_PATTERN
+    parser = OpenEHR::ADL::Scanner::CADL::V_ISO8601_TIME_CONSTRAINT_PATTERN.new
+    assert_instance_of OpenEHR::ADL::Scanner::CADL::V_ISO8601_TIME_CONSTRAINT_PATTERN,parser
+    result = parser.parse('hh:mm:ss:??')
+    assert_instance_of Yaparc::Result::OK, result
+  end
+
+  def test_dadl_reserved
+    parser = OpenEHR::ADL::Scanner::DADL::RootScanner.new
+    result = parser.parse('then')
+    assert_instance_of Yaparc::Result::OK, result
+    result = parser.parse('infinity')
+    assert_instance_of Yaparc::Result::OK, result
+    assert_equal [:SYM_INFINITY, :SYM_INFINITY], result.value
+  end
+
+  def test_cadl
+    parser = OpenEHR::ADL::Scanner::CADL::RootScanner.new
+    assert_instance_of OpenEHR::ADL::Scanner::CADL::RootScanner,parser
+    result = parser.parse('PT1M')
+    assert_instance_of Yaparc::Result::OK, result
+    assert_equal [:V_ISO8601_DURATION, "PT1M"], result.value
+  end
+
+  def test_cadl_reserved
+    parser = OpenEHR::ADL::Scanner::CADL::RootScanner.new
+    result = parser.parse('then')
+    assert_instance_of Yaparc::Result::OK, result
+    result = parser.parse('cardinality')
+    assert_instance_of Yaparc::Result::OK, result
+    assert_equal [:SYM_CARDINALITY, :SYM_CARDINALITY], result.value
+    result = parser.parse('ordered')
+    assert_instance_of Yaparc::Result::OK, result
+    assert_equal "", result.input
+    assert_equal [:SYM_ORDERED, :SYM_ORDERED], result.value
+  end
+
+  
 end
