# # DO NOT MODIFY!!!! # This file is automatically generated by racc 1.4.5 # from racc grammer file "lib/parser.y". # require 'racc/parser' $:.unshift File.join(File.dirname(__FILE__)) require 'lib/util.rb' $DEBUG = true module OpenEHR module ADL class Parser < Racc::Parser module_eval <<'..end lib/parser.y modeval..id7c96f38efa', 'lib/parser.y', 634 ###----------/* keywords */ --------------------------------------------- @@adl_reserved = { 'archetype' => :SYM_ARCHETYPE, 'adl_version' => :SYM_ADL_VERSION, 'controlled' => :SYM_IS_CONTROLLED, 'specialize' => :SYM_SPECIALIZE, 'concept' => :SYM_CONCEPT, 'language' => :SYM_LANGUAGE, 'description' => :SYM_DESCRIPTION, 'definition' => :SYM_DEFINITION, 'invariant' => :SYM_INVARIANT, 'ontology' => :SYM_ONTOLOGY, 'matches' => :SYM_MATCHES, 'is_in' => :SYM_MATCHES, 'occurrences' => :SYM_OCCURRENCES, 'true' => :SYM_TRUE, #[Tt][Rr][Uu][Ee] -- -> SYM_TRUE 'false' => :SYM_FALSE, # [Ff][Aa][Ll][Ss][Ee] -- -> SYM_FALSE 'infinity' => :SYM_INFINITY # [Ii][Nn][Ff][Ii][Nn][Ii][Tt][Yy] -- -> SYM_INFINITY } @@dadl_reserved = { 'true' => :SYM_TRUE, #[Tt][Rr][Uu][Ee] -- -> SYM_TRUE 'false' => :SYM_FALSE, # [Ff][Aa][Ll][Ss][Ee] -- -> SYM_FALSE 'infinity' => :SYM_INFINITY # [Ii][Nn][Ff][Ii][Nn][Ii][Tt][Yy] -- -> SYM_INFINITY } @@cadl_reserved = { 'then' => :SYM_THEN, # [Tt][Hh][Ee][Nn] 'else' => :SYM_ELSE, # [Ee][Ll][Ss][Ee] 'and' => :SYM_AND, # [Aa][Nn][Dd] 'or' => :SYM_OR, # [Oo][Rr] 'xor' => :SYM_XOR, # [Xx][Oo][Rr] 'not' => :SYM_NOT, # [Nn][Oo][Tt] 'implies' => :SYM_IMPLIES, # [Ii][Mm][Pp][Ll][Ii][Ee][Ss] 'true' => :SYM_TRUE, #[Tt][Rr][Uu][Ee] -- -> SYM_TRUE 'false' => :SYM_FALSE, # [Ff][Aa][Ll][Ss][Ee] -- -> SYM_FALSE 'forall' => :SYM_FORALL, # [Ff][Oo][Rr][_][Aa][Ll][Ll] 'exists' => :SYM_EXISTS, # [Ee][Xx][Ii][Ss][Tt][Ss] 'existence' => :SYM_EXISTENCE, # [Ee][Xx][Iu][Ss][Tt][Ee][Nn][Cc][Ee] 'occurrences' => :SYM_OCCURRENCES, # [Oo][Cc][Cc][Uu][Rr][Rr][Ee][Nn][Cc][Ee][Ss] 'cardinality' => :SYM_CARDINALITY, # [Cc][Aa][Rr][Dd][Ii][Nn][Aa][Ll][Ii][Tt][Yy] 'ordered' => :SYM_ORDERED, # [Oo][Rr][Dd][Ee][Rr][Ee][Dd] 'unordered' => :SYM_UNORDERED, # [Uu][Nn][Oo][Rr][Dd][Ee][Rr][Ee][Dd] 'unique' => :SYM_UNIQUE, # [Uu][Nn][Ii][Qq][Uu][Ee] 'matches' => :SYM_MATCHES, # [Mm][Aa][Tt][Cc][Hh][Ee][Ss] 'is_in' => :SYM_MATCHES, # [Ii][Ss][_][Ii][Nn] 'invariant' => :SYM_INVARIANT, # [Ii][Nn][Vv][Aa][Rr][Ii][Aa][Nn][Tt] 'infinity' => :SYM_INFINITY, # [Ii][Nn][Ff][Ii][Nn][Ii][Tt][Yy] -- -> SYM_INFINITY 'use_node' => :SYM_USE_NODE, # [Uu][Ss][Ee][_][Nn][Oo][Dd][Ee] 'use_archetype' => :SYM_ALLOW_ARCHETYPE, # [Uu][Ss][Ee][_][Aa][Rr][Cc][Hh][Ee][Tt][Yy][Pp][Ee] 'allow_archetype' => :SYM_ALLOW_ARCHETYPE, # [Aa][Ll][Ll][Oo][Ww][_][Aa][Rr][Cc][Hh][Ee][Tt][Yy][Pp][Ee] 'include' => :SYM_INCLUDE, # [Ii][Nn][Cc][Ll][Uu][Dd][Ee] 'exclude' => :SYM_EXCLUDE # [Ee][Xx][Cc][Ll][Uu][Dd][Ee] } ###----------/* Scanner */ ----------------------------------------------- def scan until @data.nil? do case @adl_type.last when :adl @data = scan_adl(@data) do |sym, val| yield sym, val end when :dadl @data = scan_dadl(@data) do |sym, val| yield sym, val end when :cadl @data = scan_cadl(@data) do |sym, val| yield sym, val end when :regexp @data = scan_regexp(@data) do |sym, val| yield sym, val end else raise end @data = $' # variable $' receives the string after the match end yield :EOF, nil yield false, '$' end # of scan def scan_adl(data) until data.nil? do case @adl_type.last when :adl # puts "Entering scan_adl" 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 ; when /\Adescription/ # description yield :SYM_DESCRIPTION, :SYM_DESCRIPTION when /\Adefinition/ # definition yield :SYM_DEFINITION, :SYM_DEFINITION # @adl_type.push(:cadl) ###----------/* symbols */ ------------------------------------------------- when /\A[A-Z][a-zA-Z0-9_]*/ yield :V_TYPE_IDENTIFIER, $& 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 word = $& if @@adl_reserved[word] yield @@adl_reserved[word], @@adl_reserved[word] elsif #/\A[A-Z][a-zA-Z0-9_]*/ yield :V_ATTRIBUTE_IDENTIFIER, $& 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 yield :SYM_GT, :SYM_GT else adl_type = @adl_type.pop # puts "Escaping #{adl_type}" assert_at(__FILE__,__LINE__){adl_type == :dadl} yield :SYM_END_DBLOCK, :SYM_END_DBLOCK end when /\A\{/ # { @adl_type.push(:cadl) yield :SYM_START_CBLOCK, :SYM_START_CBLOCK when /\A\}/ # } adl_type = @adl_type.pop # puts "Escaping #{adl_type}" assert_at(__FILE__,__LINE__){adl_type == :cadl} yield :SYM_END_CBLOCK, :SYM_END_CBLOCK 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 :SYM_LIST_CONTINUE, :SYM_LIST_CONTINUE 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 :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\|/ # | if @in_interval @in_interval = false # elsif @start_block_received else @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\._-]+\]/ # 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._\-]*\]/ #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\[[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 /\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[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 /\A\S/ #UTF8CHAR yield :UTF8CHAR, $& end data = $' # variable $' receives the string after the match when :dadl # puts "Entering scan_dadl" data = scan_dadl(data) do |sym, val| yield sym, val end when :cadl # puts "Entering scan_cadl" data = scan_cadl(data) do |sym, val| yield sym, val end when :regexp # puts "Entering scan_regexp" data = scan_regexp(data) do |sym, val| yield sym, val end when :term_constraint # puts "Entering scan_term_constraint" data = scan_term_constraint(data) do |sym, val| yield sym, val end else raise end end end # scan_adl def scan_cadl(data) until data.nil? do case @adl_type.last when :cadl # puts "Entering scan_cadl" 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[A-Z][a-zA-Z0-9_]*[ \n]*\/ # > if @in_interval yield :SYM_GT, :SYM_GT else adl_type = @adl_type.pop # puts "Escaping #{adl_type}" assert_at(__FILE__,__LINE__){adl_type == :dadl} 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 :SYM_LIST_CONTINUE, :SYM_LIST_CONTINUE 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\{\// #V_REGEXP if @adl_type.last != :regexp @in_regexp = true @adl_type.push(:regexp) yield :START_REGEXP_BLOCK, :START_REGEXP_BLOCK else raise end # yield :V_REGEXP, :V_REGEXP when /\A\{/ # { @adl_type.push(:cadl) yield :SYM_START_CBLOCK, :SYM_START_CBLOCK when /\A\}/ # } adl_type = @adl_type.pop # puts "Escaping #{adl_type}" assert_at(__FILE__,__LINE__){adl_type == :cadl} 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 else @in_interval = 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\(\)\._\-]+::[ \t\n]*/ @adl_type.push(:term_constraint) yield :START_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[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/ #V_GENERIC_TYPE_IDENTIFIER yield :V_GENERIC_TYPE_IDENTIFIER, $& when /\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]/ yield :V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN, $& 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[a-z][a-zA-Z0-9_]*/ word = $&.dup if @@cadl_reserved[word.downcase] yield @@cadl_reserved[word.downcase], @@cadl_reserved[word.downcase] else yield :V_ATTRIBUTE_IDENTIFIER, word #V_ATTRIBUTE_IDENTIFIER /\A[a-z][a-zA-Z0-9_]*/ end when /\A[A-Z][a-zA-Z0-9_]*/ word = $&.dup if @@cadl_reserved[word.downcase] yield @@cadl_reserved[word.downcase], @@cadl_reserved[word.downcase] else yield :V_TYPE_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 /\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[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 /\A\S/ #UTF8CHAR yield :UTF8CHAR, $& else raise end data = $' # variable $' receives the string after the match when :adl # puts "Entering scan_adl" data = scan_adl(data) do |sym, val| yield sym, val end when :dadl # puts "Entering scan_dadl" data = scan_dadl(data) do |sym, val| yield sym, val end when :regexp # puts "Entering scan_regexp" data = scan_regexp(data) do |sym, val| yield sym, val end when :term_constraint # puts "Entering scan_term_constraint" data = scan_term_constraint(data) do |sym, val| yield sym, val end else raise end end # of until end # of scan_cadl def scan_dadl(data) until data.nil? do case @adl_type.last when :dadl # puts "Entering scan_dadl" 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 @in_interval = false yield :SYM_GT, :SYM_GT elsif @in_c_domain_type @in_c_domain_type = false adl_type = @adl_type.pop assert_at(__FILE__,__LINE__){adl_type == :dadl} yield :END_V_C_DOMAIN_TYPE_BLOCK, :END_V_C_DOMAIN_TYPE_BLOCK else adl_type = @adl_type.pop # puts "Escaping #{adl_type}" assert_at(__FILE__,__LINE__){adl_type == :dadl} 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 :SYM_LIST_CONTINUE, :SYM_LIST_CONTINUE 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 :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 # @start_block_received = false else @in_interval = false end yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM when /\A\[[a-zA-Z0-9()\._-]+::[a-zA-Z0-9\._-]+\]/ # 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\[/ # [ yield :Left_bracket_code, :Left_bracket_code when /\A\]/ # ] yield :Right_bracket_code, :Right_bracket_code when /\A[A-Z][a-zA-Z0-9_]*/ yield :V_TYPE_IDENTIFIER, $& 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 @@dadl_reserved[word] yield @@dadl_reserved[word], @@dadl_reserved[word] else yield :V_ATTRIBUTE_IDENTIFIER, $& end 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 /\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[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 /\A\S/ #UTF8CHAR yield :UTF8CHAR, $& end data = $' # variable $' receives the string after the match when :adl # puts "Entering scan_adl" data = scan_adl(data) do |sym, val| yield sym, val end when :cadl # puts "Entering scan_cadl" data = scan_cadl(data) do |sym, val| yield sym, val end when :regexp # puts "Entering scan_regexp" data = scan_regexp(data) do |sym, val| yield sym, val end when :term_constraint # puts "Entering scan_term_constraint" data = scan_term_constraint(data) do |sym, val| yield sym, val end else raise end end end # of scan_dadl def scan_regexp(data) until data.nil? do case @adl_type.last when :regexp # puts "Entering scan_regexp" case data when /\A\/\}/ #V_REGEXP if @adl_type.last == :regexp @in_regexp = false @adl_type.pop yield :END_REGEXP_BLOCK, :END_REGEXP_BLOCK else raise end when /\A(.*)(\/\})/ #V_REGEXP yield :REGEXP_BODY, $1 if @adl_type.last == :regexp @in_regexp = false @adl_type.pop yield :END_REGEXP_BLOCK, :END_REGEXP_BLOCK else raise end else raise data end data = $' # variable $' receives the string after the match when :adl # puts "Entering scan_adl" data = scan_adl(data) do |sym, val| yield sym, val end when :dadl # puts "Entering scan_dadl" data = scan_dadl(data) do |sym, val| yield sym, val end when :cadl # puts "Entering scan_cadl" data = scan_cadl(data) do |sym, val| yield sym, val end when :term_constraint # puts "Entering scan_term_constraint" data = scan_term_constraint(data) do |sym, val| yield sym, val end else raise end end end # of scan_regexp def scan_term_constraint(data) until data.nil? do case @adl_type.last when :term_constraint # puts "Entering scan_term_constraint" case data when /\A\n/ # carriage return @lineno += 1 ; when /\A[ \t\r\f]+/ #just drop it ; when /\A--.*$/ # single line comment @lineno += 1 ; when /\A[a-zA-Z0-9\._\-]+[ \t]*,/ # match any line, with ',' termination yield :TERM_CODE, $& when /\A[a-zA-Z0-9\._\-]+[ \t]*;/ #match second last line with ';' termination (assumed value) yield :TERM_CODE, $& # when /\A[a-zA-Z0-9\._\-]+[ \t]*\]/ # match final line, terminating in ']' when /\A[a-zA-Z0-9\._\-]*[ \t]*\]/ # match final line, terminating in ']' adl_type = @adl_type.pop assert_at(__FILE__,__LINE__){adl_type == :term_constraint} yield :END_TERM_CODE_CONSTRAINT, $& else raise "data = #{data}" end data = $' # variable $' receives the string after the match when :adl # puts "Entering scan_adl" data = scan_adl(data) do |sym, val| yield sym, val end when :dadl # puts "Entering scan_dadl" data = scan_dadl(data) do |sym, val| yield sym, val end when :cadl # puts "Entering scan_cadl" data = scan_cadl(data) do |sym, val| yield sym, val end else raise end end end # of scan_term_constraint def parse(data, filename, lineno = 1, debug = false) @yydebug = true @parsestring = data @data = data @lineno = lineno @filename = filename @adl_type = [:adl] # {:adl, :cadl, :dadl} @in_regexp = false @in_interval = false @in_c_domain_type = false yyparse self, :scan end def on_error( t, v, values) raise Racc::ParseError, "#{@filename}:#{@lineno}: Inline syntax error on #{v.inspect}" end ### Local Variables: ### mode:ruby ### mode:font-lock ### comment-column:0 ### comment-start: "### " ### comment-end:"" ### End: ..end lib/parser.y modeval..id7c96f38efa ##### racc 1.4.5 generates ### racc_reduce_table = [ 0, 0, :racc_error, 2, 94, :_reduce_none, 1, 94, :_reduce_none, 8, 95, :_reduce_none, 2, 96, :_reduce_none, 2, 96, :_reduce_none, 1, 104, :_reduce_none, 2, 104, :_reduce_none, 3, 105, :_reduce_none, 1, 106, :_reduce_none, 3, 106, :_reduce_none, 3, 107, :_reduce_none, 1, 107, :_reduce_none, 0, 97, :_reduce_none, 2, 97, :_reduce_none, 2, 97, :_reduce_none, 2, 98, :_reduce_none, 2, 98, :_reduce_none, 0, 99, :_reduce_none, 2, 99, :_reduce_none, 2, 99, :_reduce_none, 0, 100, :_reduce_none, 2, 100, :_reduce_none, 2, 100, :_reduce_none, 2, 101, :_reduce_none, 2, 101, :_reduce_none, 1, 109, :_reduce_none, 1, 109, :_reduce_none, 5, 110, :_reduce_none, 5, 110, :_reduce_none, 2, 112, :_reduce_none, 1, 114, :_reduce_none, 2, 114, :_reduce_none, 1, 113, :_reduce_none, 1, 113, :_reduce_none, 1, 119, :_reduce_none, 1, 119, :_reduce_none, 1, 119, :_reduce_none, 1, 119, :_reduce_none, 1, 119, :_reduce_none, 1, 119, :_reduce_none, 1, 119, :_reduce_none, 1, 119, :_reduce_none, 1, 119, :_reduce_none, 1, 119, :_reduce_none, 3, 126, :_reduce_none, 1, 127, :_reduce_none, 4, 120, :_reduce_none, 3, 120, :_reduce_none, 6, 121, :_reduce_none, 2, 129, :_reduce_none, 2, 132, :_reduce_none, 3, 132, :_reduce_none, 2, 132, :_reduce_none, 1, 125, :_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, 117, :_reduce_none, 1, 118, :_reduce_none, 2, 118, :_reduce_none, 5, 142, :_reduce_none, 5, 142, :_reduce_none, 5, 142, :_reduce_none, 2, 143, :_reduce_none, 3, 143, :_reduce_none, 1, 144, :_reduce_none, 2, 144, :_reduce_none, 1, 144, :_reduce_none, 0, 130, :_reduce_none, 2, 130, :_reduce_none, 0, 131, :_reduce_none, 2, 131, :_reduce_none, 1, 147, :_reduce_none, 2, 147, :_reduce_none, 3, 148, :_reduce_none, 1, 148, :_reduce_none, 3, 148, :_reduce_none, 0, 102, :_reduce_none, 2, 102, :_reduce_none, 2, 102, :_reduce_none, 2, 103, :_reduce_none, 2, 103, :_reduce_none, 1, 108, :_reduce_none, 1, 151, :_reduce_none, 1, 151, :_reduce_none, 1, 152, :_reduce_none, 2, 152, :_reduce_none, 3, 152, :_reduce_none, 3, 154, :_reduce_none, 1, 155, :_reduce_none, 2, 155, :_reduce_none, 1, 156, :_reduce_none, 1, 156, :_reduce_none, 1, 153, :_reduce_none, 1, 153, :_reduce_none, 1, 159, :_reduce_none, 2, 159, :_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_none, 1, 158, :_reduce_none, 2, 158, :_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_none, 1, 165, :_reduce_none, 1, 165, :_reduce_none, 1, 165, :_reduce_none, 1, 165, :_reduce_none, 1, 165, :_reduce_none, 1, 165, :_reduce_none, 1, 165, :_reduce_none, 1, 165, :_reduce_none, 1, 165, :_reduce_none, 1, 170, :_reduce_none, 1, 170, :_reduce_none, 1, 170, :_reduce_none, 1, 170, :_reduce_none, 1, 170, :_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, 1, 171, :_reduce_none, 1, 171, :_reduce_none, 1, 171, :_reduce_none, 1, 171, :_reduce_none, 1, 116, :_reduce_none, 1, 116, :_reduce_none, 1, 174, :_reduce_none, 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, 2, 176, :_reduce_none, 3, 186, :_reduce_none, 3, 186, :_reduce_none, 3, 186, :_reduce_none, 5, 194, :_reduce_none, 6, 194, :_reduce_none, 6, 194, :_reduce_none, 7, 194, :_reduce_none, 4, 194, :_reduce_none, 4, 194, :_reduce_none, 4, 194, :_reduce_none, 4, 194, :_reduce_none, 3, 194, :_reduce_none, 1, 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, 6, 195, :_reduce_none, 7, 195, :_reduce_none, 4, 195, :_reduce_none, 4, 195, :_reduce_none, 4, 195, :_reduce_none, 4, 195, :_reduce_none, 3, 195, :_reduce_none, 1, 180, :_reduce_none, 3, 190, :_reduce_none, 3, 190, :_reduce_none, 3, 190, :_reduce_none, 5, 196, :_reduce_none, 6, 196, :_reduce_none, 6, 196, :_reduce_none, 7, 196, :_reduce_none, 4, 196, :_reduce_none, 4, 196, :_reduce_none, 4, 196, :_reduce_none, 4, 196, :_reduce_none, 3, 196, :_reduce_none, 1, 181, :_reduce_none, 3, 191, :_reduce_none, 3, 191, :_reduce_none, 3, 191, :_reduce_none, 5, 197, :_reduce_none, 6, 197, :_reduce_none, 6, 197, :_reduce_none, 7, 197, :_reduce_none, 4, 197, :_reduce_none, 4, 197, :_reduce_none, 4, 197, :_reduce_none, 4, 197, :_reduce_none, 3, 197, :_reduce_none, 1, 182, :_reduce_none, 3, 192, :_reduce_none, 3, 192, :_reduce_none, 3, 192, :_reduce_none, 5, 198, :_reduce_none, 6, 198, :_reduce_none, 6, 198, :_reduce_none, 7, 198, :_reduce_none, 4, 198, :_reduce_none, 4, 198, :_reduce_none, 4, 198, :_reduce_none, 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, 1, 111, :_reduce_none, 2, 111, :_reduce_none, 3, 199, :_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, 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, 1, 204, :_reduce_none, 1, 128, :_reduce_none, 2, 128, :_reduce_none, 1, 202, :_reduce_none, 3, 202, :_reduce_none, 2, 206, :_reduce_none, 1, 206, :_reduce_none, 0, 145, :_reduce_none, 5, 145, :_reduce_none, 1, 207, :_reduce_none, 3, 207, :_reduce_none, 5, 146, :_reduce_none, 1, 208, :_reduce_none, 3, 208, :_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, 115, :_reduce_none, 5, 115, :_reduce_none, 2, 115, :_reduce_none, 1, 209, :_reduce_none, 3, 209, :_reduce_none, 1, 211, :_reduce_none, 1, 211, :_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, 1, 212, :_reduce_none, 1, 135, :_reduce_none, 3, 135, :_reduce_none, 3, 135, :_reduce_none, 1, 213, :_reduce_none, 1, 213, :_reduce_none, 1, 213, :_reduce_none, 1, 136, :_reduce_none, 3, 136, :_reduce_none, 3, 136, :_reduce_none, 1, 214, :_reduce_none, 1, 214, :_reduce_none, 1, 214, :_reduce_none, 1, 137, :_reduce_none, 3, 137, :_reduce_none, 3, 137, :_reduce_none, 1, 215, :_reduce_none, 1, 215, :_reduce_none, 1, 215, :_reduce_none, 1, 138, :_reduce_none, 3, 138, :_reduce_none, 3, 138, :_reduce_none, 1, 216, :_reduce_none, 3, 216, :_reduce_none, 1, 216, :_reduce_none, 1, 216, :_reduce_none, 1, 139, :_reduce_none, 3, 139, :_reduce_none, 3, 139, :_reduce_none, 1, 218, :_reduce_none, 1, 218, :_reduce_none, 3, 218, :_reduce_none, 1, 140, :_reduce_none, 3, 140, :_reduce_none, 3, 140, :_reduce_none, 1, 219, :_reduce_none, 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, 124, :_reduce_none, 3, 124, :_reduce_none, 3, 124, :_reduce_none, 1, 220, :_reduce_none, 3, 220, :_reduce_none, 3, 221, :_reduce_none, 1, 123, :_reduce_none, 1, 123, :_reduce_none, 3, 222, :_reduce_none, 0, 223, :_reduce_none, 1, 223, :_reduce_none, 2, 223, :_reduce_none, 1, 122, :_reduce_none, 1, 149, :_reduce_none, 1, 149, :_reduce_none, 1, 217, :_reduce_none ] racc_reduce_n = 377 racc_shift_n = 634 racc_action_table = [ 574, 497, 475, 144, 409, 90, 96, 472, 467, 469, 24, 591, 572, 576, 1, 466, 376, 16, 152, 155, 323, 324, 108, 67, 368, 54, 162, 112, 524, 163, 67, 262, 124, 6, 236, 17, 536, 511, 25, 514, 516, 513, 543, 49, 571, 540, 90, 96, 541, 542, 49, 44, 46, 317, 156, 495, 78, 183, 112, 86, 294, 299, 410, 124, 126, 109, 112, 526, 112, 524, 573, 124, 109, 126, 86, 493, 443, 536, 511, 71, 514, 516, 273, 90, 96, 309, 314, 279, 532, 148, 149, 287, 44, 46, 317, 147, 435, 78, 183, 112, 86, 294, 299, 491, 124, 126, 109, 112, 526, 480, 160, 109, 152, 155, 431, 143, 628, 217, 463, 323, 324, 90, 96, 382, 383, 433, 309, 314, 279, 532, 126, 317, 287, 112, 78, 183, 100, 86, 294, 299, 230, 124, 126, 109, 112, 90, 96, 371, 156, 216, 88, 94, 109, 152, 155, 133, 126, 124, 138, 142, 100, 76, 127, 309, 314, 279, 90, 96, 124, 287, 152, 155, 78, 86, 78, 86, 88, 94, 152, 155, 126, 100, 138, 148, 149, 82, 85, 152, 155, 156, 157, 158, 71, 459, 150, 390, 78, 151, 153, 86, 88, 94, 134, 98, 152, 155, 156, 152, 155, 82, 85, 237, 44, 46, 156, 458, 71, 78, 90, 96, 86, 88, 94, 156, 148, 149, 129, 391, 323, 324, 82, 85, 568, 219, 382, 383, 274, 71, 323, 324, 156, 148, 149, 156, 152, 155, 211, 157, 158, 148, 149, 150, 393, 154, 151, 153, 382, 383, 148, 149, 236, 62, 165, 166, 167, 168, 90, 96, 212, 78, 12, 395, 86, 323, 324, 148, 149, 489, 148, 149, 156, 100, 86, 44, 46, 78, 215, 90, 96, 71, 14, 396, 86, 323, 324, 382, 383, 417, 102, 90, 96, 378, 100, 138, 341, 342, 164, 78, 214, 239, 154, 90, 96, 180, 100, 148, 149, 78, 90, 96, 86, 88, 94, -374, 138, 397, 100, 86, 382, 383, 82, 85, 456, 219, 90, 96, 138, 71, 78, 44, 46, 86, 88, 94, 90, 96, 78, 86, 138, 219, 78, 82, 85, 86, 88, 94, 90, 96, 71, 100, 398, 329, 78, 82, 85, 86, 88, 94, 123, 78, 71, 100, 86, 374, 37, 82, 85, 90, 96, 78, 399, 98, 71, 109, 33, 78, 90, 96, 86, 71, 44, 46, 100, 138, 58, 78, 382, 383, 86, 88, 94, 219, 90, 96, 386, 71, 385, 78, 82, 85, 86, 88, 94, 400, 98, 71, 49, 219, 323, 324, 82, 85, 49, 44, 46, 44, 46, 71, 78, 90, 96, 86, 88, 94, 171, 90, 96, 78, 401, 209, 86, 82, 85, 380, 100, 479, 388, 78, 71, 33, 219, -375, 402, 78, 382, 383, 86, 71, 403, 90, 96, 90, 96, 382, 383, 20, 138, 21, 322, 382, 383, 404, 86, 71, 219, 405, 100, 90, 96, 169, 78, 49, 170, 86, 88, 94, 78, 90, 96, 86, 44, 46, 219, 82, 85, 406, 90, 96, 98, 414, 71, 407, 100, 90, 96, 78, 71, 44, 46, 408, 78, 219, 78, 86, 413, 86, 88, 94, 219, 265, 78, 90, 96, 261, 98, 82, 85, 20, 78, 21, 71, 86, 71, 44, 46, 267, 219, 102, 78, 343, 344, 86, 88, 94, 90, 96, 268, 78, 71, 570, 86, 82, 85, 268, 78, 55, 266, 86, 71, 100, 382, 383, 90, 96, 260, 33, 259, 71, 163, 90, 96, 170, 78, 258, 71, 86, 264, 219, 44, 46, 33, 98, 165, 166, 167, 168, 180, 90, 96, 380, 44, 46, 71, 339, 340, 78, 414, 49, 86, 88, 94, 90, 96, 618, 619, 620, 44, 46, 82, 85, 265, 78, 49, 78, 266, 71, 86, 127, 90, 96, 78, 44, 46, 86, 119, 121, 123, 124, 126, 109, 112, -104, 115, 71, 267, 202, 90, 96, 78, 183, 257, 86, 119, 121, 123, 124, 126, 109, 112, 180, 115, 256, 78, 382, 383, 86, 255, 498, 436, 124, 126, 109, 112, 90, 96, 382, 383, 252, 437, 78, 245, 438, 86, 249, 251, 439, 124, 126, 109, 112, 90, 96, 440, 326, 351, 352, 441, 78, 119, 121, 86, 599, 600, 254, 124, 126, 109, 112, 29, 30, 444, 414, 365, 366, 78, 165, 166, 167, 168, 165, 166, 167, 168, 445, 78, 446, 413, 86, 119, 121, 447, 124, 126, 109, 112, 165, 166, 167, 168, 273, 274, 78, 44, 46, 86, 119, 121, 448, 124, 126, 109, 112, 165, 166, 167, 168, 165, 166, 167, 168, 165, 166, 167, 168, 165, 166, 167, 168, 632, 633, 428, 429, 426, 427, 424, 425, 422, 423, 420, 421, 418, 419, 331, 332, 449, 450, 451, 452, 453, 454, 455, 243, 162, 169, 242, 460, 461, 241, 240, 239, 238, 471, 138, 474, 171, 478, 112, 142, 482, 268, 484, 485, 486, 207, 102, 161, 147, 141, 138, 136, 500, 124, 502, 126, 504, 109, 506, 112, 49, 509, 510, 131, 538, 539, 69, 68, 545, 546, 62, 548, 124, 550, 126, 552, 109, 554, 112, 33, 557, 558, 559, 560, 561, 562, 563, 57, 566, 109, 164, -104, 263, 126, 51, 577, 579, 147, 581, 583, 112, 112, 112, 32, 584, 585, 586, 587, 588, 589, 590, 276, 593, 594, 28, 597, 27, 277, 601, 602, 603, 318, 71, 570, 607, 609, 610, 611, 18, 616, 124, 15, 622, 10, 9, 624, 625, 626, 627, 8, 7, 630, 631, 123, 112 ] racc_action_check = [ 529, 427, 405, 82, 312, 529, 529, 403, 400, 401, 18, 567, 527, 529, 0, 399, 261, 10, 319, 319, 399, 399, 59, 47, 255, 31, 90, 261, 529, 90, 59, 196, 255, 0, 319, 10, 529, 529, 18, 529, 529, 459, 478, 47, 527, 478, 459, 459, 478, 478, 59, 529, 529, 529, 319, 425, 529, 529, 427, 529, 529, 529, 312, 529, 529, 529, 529, 529, 405, 459, 527, 400, 403, 401, 399, 423, 352, 459, 459, 82, 459, 459, 459, 215, 215, 529, 529, 529, 529, 319, 319, 529, 459, 459, 459, 567, 344, 459, 459, 478, 459, 459, 459, 421, 459, 459, 459, 459, 459, 408, 85, 425, 222, 222, 340, 81, 622, 147, 398, 267, 267, 622, 622, 398, 398, 342, 459, 459, 459, 459, 423, 215, 459, 352, 215, 215, 622, 215, 215, 215, 161, 215, 215, 215, 215, 161, 161, 257, 222, 147, 85, 85, 344, 225, 225, 69, 257, 421, 622, 81, 161, 54, 408, 215, 215, 215, 54, 54, 340, 215, 228, 228, 622, 267, 398, 622, 622, 622, 224, 224, 342, 54, 161, 222, 222, 622, 622, 84, 84, 225, 84, 84, 622, 390, 84, 269, 161, 84, 84, 161, 161, 161, 69, 54, 229, 229, 228, 221, 221, 161, 161, 173, 54, 54, 224, 390, 161, 54, 158, 158, 54, 54, 54, 84, 225, 225, 63, 270, 417, 417, 54, 54, 516, 158, 456, 456, 272, 54, 489, 489, 229, 228, 228, 221, 172, 172, 141, 172, 172, 224, 224, 172, 274, 84, 172, 172, 498, 498, 84, 84, 172, 63, 173, 173, 173, 173, 165, 165, 141, 158, 6, 276, 158, 419, 419, 229, 229, 419, 221, 221, 172, 165, 417, 516, 516, 456, 143, 168, 168, 158, 6, 277, 489, 332, 332, 573, 573, 332, 57, 167, 167, 262, 168, 165, 247, 247, 91, 498, 143, 280, 172, 166, 166, 262, 167, 172, 172, 165, 219, 219, 165, 165, 165, 91, 168, 281, 166, 419, 366, 366, 165, 165, 366, 219, 157, 157, 167, 165, 168, 57, 57, 168, 168, 168, 623, 623, 573, 332, 166, 157, 167, 168, 168, 167, 167, 167, 160, 160, 168, 623, 282, 243, 166, 167, 167, 166, 166, 166, 243, 219, 167, 160, 219, 260, 27, 166, 166, 616, 616, 366, 285, 623, 166, 260, 27, 157, 156, 156, 157, 219, 623, 623, 616, 160, 38, 623, 268, 268, 623, 623, 623, 156, 155, 155, 266, 157, 266, 160, 623, 623, 160, 160, 160, 289, 616, 623, 27, 155, 239, 239, 160, 160, 38, 616, 616, 27, 27, 160, 616, 100, 100, 616, 616, 616, 98, 154, 154, 156, 292, 136, 156, 616, 616, 407, 100, 407, 268, 268, 616, 136, 154, 98, 294, 155, 265, 265, 155, 156, 296, 153, 153, 612, 612, 318, 318, 14, 100, 14, 239, 571, 571, 299, 239, 155, 153, 300, 612, 148, 148, 96, 100, 136, 96, 100, 100, 100, 154, 607, 607, 154, 136, 136, 148, 100, 100, 303, 151, 151, 612, 318, 100, 305, 607, 150, 150, 265, 154, 612, 612, 307, 153, 151, 612, 153, 318, 612, 612, 612, 150, 310, 571, 149, 149, 193, 607, 612, 612, 30, 148, 30, 153, 148, 612, 607, 607, 315, 149, 131, 607, 248, 248, 607, 607, 607, 75, 75, 518, 151, 148, 518, 151, 607, 607, 316, 150, 32, 317, 150, 607, 75, 485, 485, 152, 152, 190, 32, 189, 151, 323, 62, 62, 324, 149, 188, 150, 149, 199, 152, 131, 131, 511, 75, 233, 233, 233, 233, 264, 102, 102, 263, 75, 75, 149, 246, 246, 75, 485, 32, 75, 75, 75, 251, 251, 610, 610, 610, 32, 32, 75, 75, 201, 485, 511, 152, 202, 75, 152, 62, 245, 245, 62, 511, 511, 62, 62, 62, 62, 62, 62, 62, 62, 102, 62, 152, 204, 102, 249, 249, 102, 102, 187, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 186, 251, 429, 429, 251, 185, 429, 345, 251, 251, 251, 251, 183, 183, 583, 583, 183, 346, 245, 183, 347, 245, 183, 183, 348, 245, 245, 245, 245, 252, 252, 349, 241, 250, 250, 350, 249, 241, 241, 249, 578, 578, 184, 249, 249, 249, 249, 22, 22, 353, 583, 253, 253, 429, 231, 231, 231, 231, 232, 232, 232, 232, 354, 183, 355, 583, 183, 238, 238, 356, 183, 183, 183, 183, 95, 95, 95, 95, 211, 211, 252, 514, 514, 252, 410, 410, 357, 252, 252, 252, 252, 234, 234, 234, 234, 235, 235, 235, 235, 615, 615, 615, 615, 629, 629, 629, 629, 627, 627, 338, 338, 337, 337, 336, 336, 335, 335, 334, 334, 333, 333, 244, 244, 358, 359, 360, 361, 362, 363, 364, 182, 382, 383, 181, 393, 394, 179, 178, 176, 175, 402, 142, 404, 138, 406, 259, 137, 409, 205, 411, 413, 416, 111, 106, 89, 83, 79, 71, 70, 430, 431, 432, 433, 434, 435, 442, 443, 67, 457, 458, 65, 460, 461, 53, 49, 487, 488, 43, 490, 491, 492, 493, 494, 495, 496, 497, 41, 499, 501, 503, 505, 507, 508, 510, 36, 513, 256, 515, 33, 198, 254, 28, 532, 534, 537, 538, 539, 540, 541, 542, 26, 547, 549, 551, 553, 555, 556, 564, 212, 569, 570, 20, 572, 19, 214, 579, 581, 582, 216, 592, 596, 601, 602, 604, 605, 11, 608, 242, 8, 614, 5, 4, 617, 618, 619, 620, 3, 2, 625, 626, 240, 543 ] racc_action_pointer = [ 13, nil, 879, 897, 874, 864, 269, nil, 889, nil, 16, 858, nil, nil, 441, nil, nil, nil, 9, 844, 864, nil, 676, nil, nil, nil, 830, 373, 827, nil, 503, -7, 554, 799, nil, nil, 837, nil, 379, nil, nil, 826, nil, 778, nil, nil, nil, 0, nil, 824, nil, nil, nil, 777, 160, nil, nil, 287, nil, 7, nil, nil, 563, 211, nil, 813, nil, 775, nil, 154, 760, 765, nil, nil, nil, 538, nil, nil, nil, 774, nil, 82, 2, 721, 181, 89, nil, nil, nil, 759, -31, 277, nil, nil, nil, 652, 422, nil, 405, nil, 423, nil, 581, nil, nil, nil, 793, nil, nil, nil, nil, 752, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 526, nil, nil, nil, nil, 438, 720, 765, nil, nil, 234, 749, 274, nil, nil, nil, 116, 471, 515, 497, 490, 556, 453, 429, 396, 380, 328, 212, nil, 350, 139, nil, nil, nil, 260, 305, 293, 281, nil, nil, nil, 238, 189, nil, 735, 734, nil, 733, 732, nil, 729, 726, 657, 638, 601, 596, 585, 558, 511, 509, nil, nil, 468, nil, nil, -24, nil, 795, 521, nil, 555, 559, nil, 579, 744, nil, nil, nil, nil, nil, 687, 834, nil, 840, 77, 867, nil, nil, 312, nil, 201, 106, nil, 172, 147, nil, nil, 164, 198, nil, 632, 636, 509, 669, 673, nil, nil, 657, 412, 838, 627, 824, 305, 714, 612, 535, 246, 481, 630, 626, 595, 674, 644, 786, -32, 781, 91, nil, 729, 317, -40, 245, 535, 518, 448, 350, 113, 390, 162, 213, nil, 193, nil, 173, nil, 235, 255, nil, nil, 254, 311, 279, nil, nil, 299, nil, nil, nil, 332, nil, nil, 357, nil, 397, nil, 377, nil, nil, 416, 394, nil, nil, 418, nil, 446, nil, 428, nil, nil, 464, nil, -19, nil, nil, 480, 498, 501, 457, 12, nil, nil, nil, 508, 511, nil, nil, nil, nil, nil, nil, nil, 287, 712, 710, 708, 706, 704, 702, nil, 104, nil, 115, nil, 86, 600, 610, 613, 617, 624, 628, nil, 66, 642, 655, 657, 662, 679, 716, 717, 718, 719, 720, 721, 722, nil, 322, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 725, 726, nil, nil, nil, nil, nil, nil, 181, nil, nil, 752, 706, nil, nil, nil, 117, 14, 7, 8, 729, 6, 732, 1, 737, 389, 108, 797, 674, 786, nil, 742, nil, nil, 744, 222, nil, 267, nil, 93, nil, 65, nil, 45, nil, -9, nil, 647, 752, 747, 754, 748, 756, 749, nil, nil, nil, nil, nil, nil, 758, 750, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 228, 761, 785, 40, 810, 790, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 32, nil, nil, nil, nil, nil, nil, 554, nil, 768, 769, 232, 771, 766, 773, 767, 775, 768, 777, 769, 250, 780, nil, 781, nil, 782, nil, 783, nil, 784, 785, nil, 808, 569, nil, 832, 680, 819, 231, nil, 491, nil, nil, nil, nil, nil, nil, nil, nil, -11, nil, -1, nil, nil, 762, nil, 821, nil, nil, 770, 799, 845, 791, 792, 793, 835, nil, nil, nil, 804, nil, 805, nil, 806, nil, 807, nil, 808, 809, nil, nil, nil, nil, nil, nil, nil, 829, nil, nil, 10, nil, 841, 803, 463, 872, 289, nil, nil, nil, nil, 601, 864, nil, 818, 864, 659, nil, nil, nil, nil, nil, nil, nil, nil, 803, nil, nil, nil, 823, nil, nil, nil, nil, 838, 826, nil, 803, 871, nil, 481, 842, nil, 521, nil, 455, nil, 844, 677, 371, 879, 813, 814, 815, nil, 115, 338, nil, 815, 816, 676, nil, 681, nil, nil, nil, nil ] racc_action_default = [ -377, -2, -377, -377, -377, -13, -6, -4, -377, -1, -377, -377, -5, -7, -377, 634, -15, -14, -377, -18, -377, -12, -377, -9, -17, -16, -21, -377, -377, -8, -377, -377, -377, -113, -91, -109, -377, -20, -377, -99, -100, -377, -101, -377, -147, -88, -148, -89, -19, -95, -90, -11, -10, -83, -377, -23, -22, -377, -111, -377, -110, -102, -377, -377, -105, -377, -92, -377, -96, -377, -377, -285, -283, -26, -249, -27, -25, -254, -153, -377, -255, -377, -377, -306, -377, -377, -168, -274, -272, -377, -377, -31, -284, -275, -273, -252, -377, -287, -290, -282, -377, -24, -113, -94, -114, -98, -377, -97, -112, -218, -124, -377, -231, -125, -126, -248, -127, -128, -129, -183, -130, -184, -131, -188, -192, -122, -205, -149, -123, -103, -106, -377, -93, -85, -84, -3, -377, -286, -290, -250, -374, -377, -377, -377, -257, -256, -30, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -260, -377, -377, -154, -169, -32, -377, -377, -377, -377, -155, -170, -289, -377, -377, -146, -135, -124, -117, -136, -125, -244, -137, -126, -377, -138, -127, -139, -128, -377, -140, -129, -118, -141, -130, -119, -142, -120, -143, -132, -121, -144, -133, -149, -145, -134, -123, -115, -108, -107, -87, -86, -377, -377, -288, -377, -377, -377, -308, -279, -377, -280, -264, -265, -276, -266, -261, -277, -278, -262, -263, -253, -251, -267, -268, -269, -270, -281, -271, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -116, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -33, -34, -63, -291, -64, -377, -377, -344, -335, -317, -377, -314, -55, -324, -320, -56, -376, -330, -326, -57, -336, -332, -58, -354, -343, -338, -313, -59, -355, -345, -319, -60, -341, -325, -349, -61, -351, -331, -323, -312, -62, -358, -337, -329, -318, -311, -348, -377, -377, -186, -171, -173, -377, -377, -190, -187, -185, -194, -191, -189, -182, -377, -377, -377, -377, -377, -377, -377, -204, -377, -217, -377, -230, -377, -377, -377, -377, -377, -377, -377, -243, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -167, -377, -207, -195, -193, -220, -208, -206, -233, -221, -219, -234, -232, -247, -245, -151, -246, -377, -377, -157, -152, -150, -172, -158, -156, -377, -29, -65, -377, -69, -28, -259, -258, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -309, -153, -305, -304, -377, -377, -180, -377, -202, -377, -215, -377, -228, -377, -241, -377, -165, -377, -377, -377, -377, -377, -377, -377, -179, -201, -214, -227, -240, -164, -377, -377, -181, -203, -216, -229, -242, -166, -178, -200, -213, -226, -239, -163, -377, -377, -377, -377, -377, -377, -70, -316, -315, -321, -322, -328, -327, -334, -333, -356, -340, -339, -357, -347, -346, -342, -377, -350, -353, -352, -360, -359, -307, -377, -174, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -377, -196, -377, -209, -377, -222, -377, -235, -377, -377, -159, -377, -377, -54, -44, -377, -31, -377, -73, -311, -71, -36, -37, -38, -39, -373, -40, -368, -361, -41, -377, -364, -42, -370, -367, -377, -35, -43, -306, -377, -377, -377, -377, -377, -377, -310, -176, -175, -377, -197, -377, -210, -377, -223, -377, -236, -377, -377, -160, -198, -211, -224, -237, -161, -67, -377, -46, -68, -306, -53, -51, -377, -377, -377, -377, -44, -72, -66, -371, -377, -377, -50, -293, -377, -377, -177, -199, -212, -225, -238, -162, -45, -48, -377, -52, -366, -365, -377, -363, -362, -369, -372, -74, -377, -292, -296, -377, -47, -377, -76, -294, -377, -295, -75, -78, -377, -81, -377, -377, -297, -298, -299, -79, -377, -77, -49, -377, -377, -377, -82, -80, -300, -301, -302, -303 ] racc_goto_table = [ 95, 128, 146, 145, 113, 411, 41, 48, 271, 110, 174, 41, 56, 196, 172, 103, 114, 519, 107, 120, 61, 95, 275, 60, 74, 181, 111, 89, 621, 612, 118, 394, 64, 91, 23, 66, 106, 529, 623, 621, 117, 205, 281, 59, 179, 139, 173, 66, 89, 176, 52, 116, 130, 218, 220, 132, 182, 223, 617, 193, 226, 227, 608, 564, 221, 222, 177, 224, 225, 272, 190, 228, 229, 63, 270, 75, 73, 206, 188, 191, 187, 194, 101, 392, 199, 61, 481, 575, 60, 208, 3, 185, 107, 22, 13, 2, 135, 70, 53, 31, 198, 201, 204, 175, 178, 462, 173, 231, 184, 186, 106, 232, 233, 234, 235, 41, 210, 189, 192, 195, 197, 200, 253, 203, 26, 19, 159, 137, 11, 5, 244, 213, 582, 319, 605, 4, 544, 595, 578, nil, 250, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 248, nil, nil, 316, nil, nil, nil, nil, nil, nil, 247, 280, nil, nil, nil, nil, nil, nil, nil, nil, nil, 246, 379, nil, 381, nil, nil, nil, nil, 320, nil, nil, 327, 338, nil, 321, nil, 350, nil, 358, 364, 333, nil, 325, nil, 345, 330, 353, 359, nil, nil, 337, nil, 384, nil, 349, 389, 357, 363, nil, nil, nil, 336, 387, nil, 373, 348, 377, 356, 362, nil, nil, 335, 370, nil, nil, 347, 375, 355, 361, 328, 367, nil, 334, 372, nil, nil, 346, nil, 354, 360, nil, nil, 369, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 517, 415, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 604, nil, nil, nil, nil, nil, nil, nil, nil, 416, 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, 457, nil, nil, nil, 442, nil, nil, 434, nil, 477, nil, nil, nil, nil, nil, 432, nil, nil, nil, nil, nil, nil, nil, nil, 430, nil, nil, nil, nil, nil, nil, nil, 464, nil, nil, nil, nil, nil, nil, nil, nil, 465, nil, nil, nil, nil, nil, 483, nil, nil, nil, nil, nil, nil, nil, nil, nil, 476, nil, 487, nil, 488, nil, 499, nil, nil, 473, nil, nil, nil, nil, nil, nil, nil, 470, nil, nil, nil, nil, 496, nil, nil, nil, nil, 468, nil, nil, nil, 494, nil, 508, nil, nil, 518, nil, 507, 492, nil, 505, nil, nil, 280, nil, nil, nil, 490, 503, nil, nil, nil, nil, nil, nil, nil, nil, 501, nil, nil, nil, 415, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 250, 547, 556, 515, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 555, nil, 580, nil, nil, nil, nil, nil, nil, 553, nil, nil, nil, nil, 518, nil, nil, 551, nil, nil, nil, nil, 280, nil, nil, nil, 549, nil, nil, nil, nil, nil, 592, nil, nil, nil, 41, 565, nil, 567, nil, 569, nil, 337, 349, 357, 363, nil, nil, nil, nil, nil, nil, nil, 515, nil, 596, nil, 598, 606, nil, nil, nil, nil, nil, nil, nil, nil, 415, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 629 ] racc_goto_check = [ 57, 82, 22, 35, 84, 116, 23, 15, 24, 83, 105, 23, 15, 79, 110, 63, 85, 26, 60, 89, 67, 57, 49, 73, 106, 96, 72, 56, 55, 54, 88, 52, 70, 23, 14, 61, 23, 51, 54, 55, 87, 82, 40, 59, 84, 106, 57, 61, 56, 83, 14, 86, 70, 111, 111, 61, 85, 111, 38, 89, 111, 111, 37, 34, 110, 110, 72, 110, 110, 25, 88, 110, 110, 69, 20, 18, 17, 75, 76, 77, 87, 78, 16, 49, 80, 67, 81, 26, 73, 63, 1, 86, 60, 13, 12, 11, 10, 9, 8, 7, 91, 92, 93, 94, 95, 53, 57, 57, 97, 98, 23, 57, 57, 57, 57, 23, 15, 99, 100, 101, 102, 103, 82, 104, 6, 5, 107, 109, 4, 3, 83, 113, 114, 110, 115, 2, 117, 128, 130, nil, 89, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 88, nil, nil, 82, nil, nil, nil, nil, nil, nil, 87, 83, nil, nil, nil, nil, nil, nil, nil, nil, nil, 86, 79, nil, 79, nil, nil, nil, nil, 84, nil, nil, 84, 82, nil, 83, nil, 82, nil, 82, 82, 83, nil, 85, nil, 83, 85, 83, 83, nil, nil, 89, nil, 82, nil, 89, 82, 89, 89, nil, nil, nil, 88, 83, nil, 89, 88, 89, 88, 88, nil, nil, 87, 88, nil, nil, 87, 88, 87, 87, 86, 87, nil, 86, 87, nil, nil, 86, nil, 86, 86, nil, nil, 86, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 24, 82, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 116, nil, nil, nil, nil, nil, nil, nil, nil, 83, 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, 82, nil, nil, nil, 89, nil, nil, 88, nil, 105, nil, nil, nil, nil, nil, 87, nil, nil, nil, nil, nil, nil, nil, nil, 86, nil, nil, nil, nil, nil, nil, nil, 82, nil, nil, nil, nil, nil, nil, nil, nil, 83, nil, nil, nil, nil, nil, 84, nil, nil, nil, nil, nil, nil, nil, nil, nil, 89, nil, 83, nil, 83, nil, 82, nil, nil, 88, nil, nil, nil, nil, nil, nil, nil, 87, nil, nil, nil, nil, 89, nil, nil, nil, nil, 86, nil, nil, nil, 88, nil, 82, nil, nil, 82, nil, 89, 87, nil, 88, nil, nil, 83, nil, nil, nil, 86, 87, nil, nil, nil, nil, nil, nil, nil, nil, 86, nil, nil, nil, 82, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 89, 83, 82, 23, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 89, nil, 22, nil, nil, nil, nil, nil, nil, 88, nil, nil, nil, nil, 82, nil, nil, 87, nil, nil, nil, nil, 83, nil, nil, nil, 86, nil, nil, nil, nil, nil, 22, nil, nil, nil, 23, 15, nil, 23, nil, 23, nil, 89, 89, 89, 89, nil, nil, nil, nil, nil, nil, nil, 23, nil, 82, nil, 82, 35, nil, nil, nil, nil, nil, nil, nil, nil, 82, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 57 ] racc_goto_pointer = [ nil, 90, 135, 129, 123, 114, 105, 73, 67, 44, 26, 95, 88, 79, 20, -20, 28, 22, 21, nil, -137, nil, -81, -21, -203, -142, -442, nil, nil, nil, nil, nil, nil, nil, -448, -79, nil, -539, -550, nil, -173, nil, nil, nil, nil, nil, nil, nil, nil, -189, nil, -422, -243, -289, -578, -584, -27, -54, nil, 5, -39, -12, nil, -42, nil, nil, nil, -21, nil, 30, -11, nil, -36, -18, nil, -29, -24, -23, -21, -89, -18, -322, -61, -53, -58, -46, -11, -22, -32, -43, nil, -2, -1, 0, 1, 2, -77, 6, 7, 15, 16, 17, 18, 19, 21, -92, -30, 41, nil, 56, -86, -95, nil, -11, -406, -449, -313, -349, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, -434, nil, -394 ] racc_goto_default = [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 535, nil, 79, nil, 83, nil, 140, nil, nil, nil, 520, 521, 522, 523, 525, 528, 531, nil, 92, 534, nil, nil, 537, 512, 283, 286, 290, 293, 298, 302, 306, 311, nil, 269, nil, nil, nil, nil, 613, 614, 615, 45, 47, 50, 34, 36, nil, 105, 39, 40, 42, 43, nil, nil, 65, nil, 35, 38, 104, nil, nil, nil, nil, nil, 125, 99, 72, nil, nil, 284, 288, 291, 295, 122, 305, 310, 315, nil, nil, nil, nil, nil, nil, 297, 301, 304, 308, 313, 278, nil, 77, 80, 81, 84, 87, 93, 97, nil, nil, nil, 412, 282, 285, 289, 292, 296, 300, 303, 307, 312, 527, 530, 533, 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_START_CBLOCK => 12, :SYM_GT => 13, :SYM_END_CBLOCK => 14, :SYM_END_DBLOCK => 15, :SYM_LE => 16, :SYM_GE => 17, :EOF => 18, :V_ARCHETYPE_ID => 19, :SYM_ARCHETYPE => 20, :Left_parenthesis_code => 21, :Right_parenthesis_code => 22, ";" => 23, :SYM_ADL_VERSION => 24, :V_VERSION_STRING => 25, :SYM_IS_CONTROLLED => 26, :SYM_SPECIALIZE => 27, :SYM_CONCEPT => 28, :V_LOCAL_TERM_CODE_REF => 29, :SYM_LANGUAGE => 30, :SYM_DESCRIPTION => 31, :SYM_DEFINITION => 32, :SYM_MATCHES => 33, :START_REGEXP_BLOCK => 34, :REGEXP_BODY => 35, :END_REGEXP_BLOCK => 36, :ERR_C_DOMAIN_TYPE => 37, :START_V_C_DOMAIN_TYPE => 38, :END_V_C_DOMAIN_TYPE => 39, :SYM_USE_NODE => 40, :SYM_ALLOW_ARCHETYPE => 41, :Star_code => 42, :V_ATTRIBUTE_IDENTIFIER => 43, :SYM_INCLUDE => 44, :SYM_EXCLUDE => 45, ":" => 46, :SYM_INVARIANT => 47, :V_ASSERTION_TEXT => 48, :SYM_ONTOLOGY => 49, :Left_bracket_code => 50, :Right_bracket_code => 51, :V_TYPE_IDENTIFIER => 52, :V_GENERIC_TYPE_IDENTIFIER => 53, :V_STRING => 54, :Comma_code => 55, :SYM_LIST_CONTINUE => 56, :V_INTEGER => 57, :SYM_INTERVAL_DELIM => 58, :SYM_ELLIPSIS => 59, :V_REAL => 60, :SYM_TRUE => 61, :SYM_FALSE => 62, :V_CHARACTER => 63, :V_ISO8601_EXTENDED_DATE => 64, :V_ISO8601_EXTENDED_TIME => 65, :V_ISO8601_EXTENDED_DATE_TIME => 66, :V_ISO8601_DURATION => 67, :V_QUALIFIED_TERM_CODE_REF => 68, :V_URI => 69, :SYM_EXISTS => 70, :SYM_NOT => 71, "=" => 72, :SYM_AND => 73, :SYM_OR => 74, :SYM_XOR => 75, :SYM_IMPLIES => 76, :Slash_code => 77, "^" => 78, :SYM_EXISTENCE => 79, :SYM_CARDINALITY => 80, :Semicolon_code => 81, :SYM_ORDERED => 82, :SYM_UNORDERED => 83, :SYM_UNIQUE => 84, :SYM_OCCURRENCES => 85, :V_ISO8601_DATE_CONSTRAINT_PATTERN => 86, :V_ISO8601_TIME_CONSTRAINT_PATTERN => 87, :V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN => 88, :START_TERM_CODE_CONSTRAINT => 89, :END_TERM_CODE_CONSTRAINT => 90, :TERM_CODE => 91, :V_ISO8601_DURATION_CONSTRAINT_PATTERN => 92 } racc_use_result_var = true racc_nt_base = 93 Racc_arg = [ racc_action_table, racc_action_check, racc_action_default, racc_action_pointer, racc_goto_table, racc_goto_check, racc_goto_default, racc_goto_pointer, racc_nt_base, racc_reduce_table, racc_token_table, racc_shift_n, racc_reduce_n, racc_use_result_var ] Racc_token_to_s_table = [ '$end', 'error', 'UMINUS', 'UPLUS', '"*"', '"/"', '"+"', '"-"', 'SYM_EQ', 'SYM_NE', 'SYM_LT', 'SYM_START_DBLOCK', 'SYM_START_CBLOCK', 'SYM_GT', 'SYM_END_CBLOCK', 'SYM_END_DBLOCK', 'SYM_LE', 'SYM_GE', 'EOF', 'V_ARCHETYPE_ID', 'SYM_ARCHETYPE', 'Left_parenthesis_code', 'Right_parenthesis_code', '";"', 'SYM_ADL_VERSION', 'V_VERSION_STRING', 'SYM_IS_CONTROLLED', 'SYM_SPECIALIZE', 'SYM_CONCEPT', 'V_LOCAL_TERM_CODE_REF', 'SYM_LANGUAGE', 'SYM_DESCRIPTION', 'SYM_DEFINITION', 'SYM_MATCHES', 'START_REGEXP_BLOCK', 'REGEXP_BODY', 'END_REGEXP_BLOCK', 'ERR_C_DOMAIN_TYPE', 'START_V_C_DOMAIN_TYPE', 'END_V_C_DOMAIN_TYPE', 'SYM_USE_NODE', 'SYM_ALLOW_ARCHETYPE', 'Star_code', 'V_ATTRIBUTE_IDENTIFIER', 'SYM_INCLUDE', 'SYM_EXCLUDE', '":"', 'SYM_INVARIANT', 'V_ASSERTION_TEXT', 'SYM_ONTOLOGY', 'Left_bracket_code', 'Right_bracket_code', 'V_TYPE_IDENTIFIER', 'V_GENERIC_TYPE_IDENTIFIER', 'V_STRING', 'Comma_code', 'SYM_LIST_CONTINUE', 'V_INTEGER', 'SYM_INTERVAL_DELIM', 'SYM_ELLIPSIS', 'V_REAL', 'SYM_TRUE', 'SYM_FALSE', 'V_CHARACTER', 'V_ISO8601_EXTENDED_DATE', 'V_ISO8601_EXTENDED_TIME', 'V_ISO8601_EXTENDED_DATE_TIME', 'V_ISO8601_DURATION', 'V_QUALIFIED_TERM_CODE_REF', 'V_URI', 'SYM_EXISTS', 'SYM_NOT', '"="', 'SYM_AND', 'SYM_OR', 'SYM_XOR', 'SYM_IMPLIES', 'Slash_code', '"^"', 'SYM_EXISTENCE', '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', 'START_TERM_CODE_CONSTRAINT', 'END_TERM_CODE_CONSTRAINT', 'TERM_CODE', 'V_ISO8601_DURATION_CONSTRAINT_PATTERN', '$start', 'input', 'archetype', 'arch_identification', 'arch_specialisation', 'arch_concept', 'arch_language', 'arch_description', 'arch_definition', 'arch_invariant', 'arch_ontology', 'arch_head', 'arch_meta_data', 'arch_meta_data_items', 'arch_meta_data_item', 'dadl_section', 'cadl_section', 'c_complex_object', 'assertions', 'c_complex_object_head', 'c_complex_object_body', 'c_complex_object_id', 'c_occurrences', 'type_identifier', 'c_any', 'c_attributes', 'c_object', 'archetype_internal_ref', 'archetype_slot', 'constraint_ref', 'c_code_phrase', 'c_ordinal', 'c_primitive_object', 'v_c_domain_type', 'v_c_domain_type_body', 'absolute_path', 'c_archetype_slot_head', 'c_includes', 'c_excludes', 'c_archetype_slot_id', 'c_primitive', 'c_integer', 'c_real', 'c_date', 'c_time', 'c_date_time', 'c_duration', 'c_string', 'c_boolean', 'c_attribute', 'c_attr_head', 'c_attr_values', 'c_existence', 'c_cardinality', 'invariants', 'invariant', 'any_identifier', 'boolean_expression', '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', 'multiple_attr_object_block_head', 'keyed_objects', 'keyed_object', 'object_key', 'simple_value', 'untyped_single_attr_object_block', 'single_attr_object_complex_head', 'untyped_primitive_object_block', 'primitive_object_value', 'simple_list_value', 'simple_interval_value', 'term_code', 'term_code_list_value', 'string_value', 'integer_value', 'real_value', 'boolean_value', 'character_value', 'date_value', 'time_value', 'date_time_value', 'duration_value', 'uri_value', 'string_list_value', 'integer_list_value', 'real_list_value', 'boolean_list_value', 'character_list_value', 'date_list_value', 'time_list_value', 'date_time_list_value', 'duration_list_value', 'integer_interval_value', 'real_interval_value', 'date_interval_value', 'time_interval_value', 'date_time_interval_value', 'duration_interval_value', 'assertion', 'boolean_leaf', 'boolean_node', 'relative_path', 'arithmetic_expression', 'arithmetic_leaf', 'arithmetic_node', 'path_segment', 'existence_spec', 'cardinality_spec', 'occurrence_spec', 'cardinality_limit_value', 'c_integer_spec', 'c_real_spec', 'c_date_constraint', 'c_time_constraint', 'c_date_time_constraint', 'c_duration_constraint', 'duration_pattern', 'c_string_spec', 'c_boolean_spec', 'c_ordinal_spec', 'ordinal', 'term_code_constraint_section', 'term_code_body'] Racc_debug_parser = false ##### 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 # reduce 272 omitted # reduce 273 omitted # reduce 274 omitted # reduce 275 omitted # reduce 276 omitted # reduce 277 omitted # reduce 278 omitted # reduce 279 omitted # reduce 280 omitted # reduce 281 omitted # reduce 282 omitted # reduce 283 omitted # reduce 284 omitted # reduce 285 omitted # reduce 286 omitted # reduce 287 omitted # reduce 288 omitted # reduce 289 omitted # reduce 290 omitted # reduce 291 omitted # reduce 292 omitted # reduce 293 omitted # reduce 294 omitted # reduce 295 omitted # reduce 296 omitted # reduce 297 omitted # reduce 298 omitted # reduce 299 omitted # reduce 300 omitted # reduce 301 omitted # reduce 302 omitted # reduce 303 omitted # reduce 304 omitted # reduce 305 omitted # reduce 306 omitted # reduce 307 omitted # reduce 308 omitted # reduce 309 omitted # reduce 310 omitted # reduce 311 omitted # reduce 312 omitted # reduce 313 omitted # reduce 314 omitted # reduce 315 omitted # reduce 316 omitted # reduce 317 omitted # reduce 318 omitted # reduce 319 omitted # reduce 320 omitted # reduce 321 omitted # reduce 322 omitted # reduce 323 omitted # reduce 324 omitted # reduce 325 omitted # reduce 326 omitted # reduce 327 omitted # reduce 328 omitted # reduce 329 omitted # reduce 330 omitted # reduce 331 omitted # reduce 332 omitted # reduce 333 omitted # reduce 334 omitted # reduce 335 omitted # reduce 336 omitted # reduce 337 omitted # reduce 338 omitted # reduce 339 omitted # reduce 340 omitted # reduce 341 omitted # reduce 342 omitted # reduce 343 omitted # reduce 344 omitted # reduce 345 omitted # reduce 346 omitted # reduce 347 omitted # reduce 348 omitted # reduce 349 omitted # reduce 350 omitted # reduce 351 omitted # reduce 352 omitted # reduce 353 omitted # reduce 354 omitted # reduce 355 omitted # reduce 356 omitted # reduce 357 omitted # reduce 358 omitted # reduce 359 omitted # reduce 360 omitted # reduce 361 omitted # reduce 362 omitted # reduce 363 omitted # reduce 364 omitted # reduce 365 omitted # reduce 366 omitted # reduce 367 omitted # reduce 368 omitted # reduce 369 omitted # reduce 370 omitted # reduce 371 omitted # reduce 372 omitted # reduce 373 omitted # reduce 374 omitted # reduce 375 omitted # reduce 376 omitted def _reduce_none( val, _values, result ) result end end # class Parser end # module ADL end # module OpenEHR