# # 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..ida66f0a3b48', 'lib/parser.y', 624 ###----------/* 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\/ # > 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 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 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..ida66f0a3b48 ##### racc 1.4.5 generates ### racc_reduce_table = [ 0, 0, :racc_error, 2, 93, :_reduce_none, 1, 93, :_reduce_none, 8, 94, :_reduce_none, 2, 95, :_reduce_none, 2, 95, :_reduce_none, 1, 103, :_reduce_none, 2, 103, :_reduce_none, 3, 104, :_reduce_none, 1, 105, :_reduce_none, 3, 105, :_reduce_none, 3, 106, :_reduce_none, 1, 106, :_reduce_none, 0, 96, :_reduce_none, 2, 96, :_reduce_none, 2, 96, :_reduce_none, 2, 97, :_reduce_none, 2, 97, :_reduce_none, 0, 98, :_reduce_none, 2, 98, :_reduce_none, 2, 98, :_reduce_none, 0, 99, :_reduce_none, 2, 99, :_reduce_none, 2, 99, :_reduce_none, 2, 100, :_reduce_none, 2, 100, :_reduce_none, 1, 108, :_reduce_none, 1, 108, :_reduce_none, 5, 109, :_reduce_none, 5, 109, :_reduce_none, 2, 111, :_reduce_none, 1, 113, :_reduce_none, 2, 113, :_reduce_none, 1, 112, :_reduce_none, 1, 112, :_reduce_none, 1, 118, :_reduce_none, 1, 118, :_reduce_none, 1, 118, :_reduce_none, 1, 118, :_reduce_none, 1, 118, :_reduce_none, 1, 118, :_reduce_none, 1, 118, :_reduce_none, 1, 118, :_reduce_none, 1, 118, :_reduce_none, 1, 118, :_reduce_none, 4, 119, :_reduce_none, 3, 119, :_reduce_none, 6, 120, :_reduce_none, 2, 126, :_reduce_none, 2, 129, :_reduce_none, 3, 129, :_reduce_none, 2, 129, :_reduce_none, 1, 124, :_reduce_none, 1, 130, :_reduce_none, 1, 130, :_reduce_none, 1, 130, :_reduce_none, 1, 130, :_reduce_none, 1, 130, :_reduce_none, 1, 130, :_reduce_none, 1, 130, :_reduce_none, 1, 130, :_reduce_none, 1, 116, :_reduce_none, 1, 117, :_reduce_none, 2, 117, :_reduce_none, 5, 139, :_reduce_none, 5, 139, :_reduce_none, 5, 139, :_reduce_none, 2, 140, :_reduce_none, 3, 140, :_reduce_none, 1, 141, :_reduce_none, 2, 141, :_reduce_none, 1, 141, :_reduce_none, 0, 127, :_reduce_none, 2, 127, :_reduce_none, 0, 128, :_reduce_none, 2, 128, :_reduce_none, 1, 144, :_reduce_none, 2, 144, :_reduce_none, 3, 145, :_reduce_none, 1, 145, :_reduce_none, 3, 145, :_reduce_none, 0, 101, :_reduce_none, 2, 101, :_reduce_none, 2, 101, :_reduce_none, 2, 102, :_reduce_none, 2, 102, :_reduce_none, 1, 107, :_reduce_none, 1, 148, :_reduce_none, 1, 148, :_reduce_none, 1, 149, :_reduce_none, 2, 149, :_reduce_none, 3, 149, :_reduce_none, 3, 151, :_reduce_none, 1, 152, :_reduce_none, 2, 152, :_reduce_none, 1, 153, :_reduce_none, 1, 153, :_reduce_none, 1, 150, :_reduce_none, 1, 150, :_reduce_none, 1, 156, :_reduce_none, 2, 156, :_reduce_none, 3, 157, :_reduce_none, 1, 158, :_reduce_none, 1, 159, :_reduce_none, 2, 159, :_reduce_none, 3, 160, :_reduce_none, 3, 161, :_reduce_none, 1, 155, :_reduce_none, 2, 155, :_reduce_none, 2, 163, :_reduce_none, 3, 163, :_reduce_none, 1, 164, :_reduce_none, 1, 154, :_reduce_none, 2, 154, :_reduce_none, 3, 165, :_reduce_none, 1, 166, :_reduce_none, 1, 166, :_reduce_none, 1, 166, :_reduce_none, 1, 166, :_reduce_none, 1, 166, :_reduce_none, 1, 162, :_reduce_none, 1, 162, :_reduce_none, 1, 162, :_reduce_none, 1, 162, :_reduce_none, 1, 162, :_reduce_none, 1, 162, :_reduce_none, 1, 162, :_reduce_none, 1, 162, :_reduce_none, 1, 162, :_reduce_none, 1, 162, :_reduce_none, 1, 167, :_reduce_none, 1, 167, :_reduce_none, 1, 167, :_reduce_none, 1, 167, :_reduce_none, 1, 167, :_reduce_none, 1, 167, :_reduce_none, 1, 167, :_reduce_none, 1, 167, :_reduce_none, 1, 167, :_reduce_none, 1, 168, :_reduce_none, 1, 168, :_reduce_none, 1, 168, :_reduce_none, 1, 168, :_reduce_none, 1, 168, :_reduce_none, 1, 168, :_reduce_none, 1, 115, :_reduce_none, 1, 115, :_reduce_none, 1, 171, :_reduce_none, 3, 181, :_reduce_none, 3, 181, :_reduce_none, 3, 181, :_reduce_none, 1, 172, :_reduce_none, 2, 172, :_reduce_none, 2, 172, :_reduce_none, 3, 182, :_reduce_none, 3, 182, :_reduce_none, 3, 182, :_reduce_none, 5, 190, :_reduce_none, 6, 190, :_reduce_none, 6, 190, :_reduce_none, 7, 190, :_reduce_none, 4, 190, :_reduce_none, 4, 190, :_reduce_none, 4, 190, :_reduce_none, 4, 190, :_reduce_none, 3, 190, :_reduce_none, 1, 173, :_reduce_none, 2, 173, :_reduce_none, 2, 173, :_reduce_none, 3, 183, :_reduce_none, 3, 183, :_reduce_none, 3, 183, :_reduce_none, 5, 191, :_reduce_none, 6, 191, :_reduce_none, 6, 191, :_reduce_none, 7, 191, :_reduce_none, 4, 191, :_reduce_none, 4, 191, :_reduce_none, 4, 191, :_reduce_none, 4, 191, :_reduce_none, 3, 191, :_reduce_none, 1, 174, :_reduce_none, 1, 174, :_reduce_none, 3, 184, :_reduce_none, 3, 184, :_reduce_none, 3, 184, :_reduce_none, 1, 175, :_reduce_none, 3, 185, :_reduce_none, 3, 185, :_reduce_none, 3, 185, :_reduce_none, 1, 176, :_reduce_none, 3, 186, :_reduce_none, 3, 186, :_reduce_none, 3, 186, :_reduce_none, 5, 192, :_reduce_none, 6, 192, :_reduce_none, 6, 192, :_reduce_none, 7, 192, :_reduce_none, 4, 192, :_reduce_none, 4, 192, :_reduce_none, 4, 192, :_reduce_none, 4, 192, :_reduce_none, 3, 192, :_reduce_none, 1, 177, :_reduce_none, 3, 187, :_reduce_none, 3, 187, :_reduce_none, 3, 187, :_reduce_none, 5, 193, :_reduce_none, 6, 193, :_reduce_none, 6, 193, :_reduce_none, 7, 193, :_reduce_none, 4, 193, :_reduce_none, 4, 193, :_reduce_none, 4, 193, :_reduce_none, 4, 193, :_reduce_none, 3, 193, :_reduce_none, 1, 178, :_reduce_none, 3, 188, :_reduce_none, 3, 188, :_reduce_none, 3, 188, :_reduce_none, 5, 194, :_reduce_none, 6, 194, :_reduce_none, 6, 194, :_reduce_none, 7, 194, :_reduce_none, 4, 194, :_reduce_none, 4, 194, :_reduce_none, 4, 194, :_reduce_none, 4, 194, :_reduce_none, 3, 194, :_reduce_none, 1, 179, :_reduce_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, 169, :_reduce_none, 3, 170, :_reduce_none, 3, 170, :_reduce_none, 3, 170, :_reduce_none, 1, 180, :_reduce_none, 1, 110, :_reduce_none, 2, 110, :_reduce_none, 3, 196, :_reduce_none, 1, 196, :_reduce_none, 3, 196, :_reduce_none, 1, 147, :_reduce_none, 1, 147, :_reduce_none, 2, 198, :_reduce_none, 2, 198, :_reduce_none, 5, 198, :_reduce_none, 5, 198, :_reduce_none, 2, 198, :_reduce_none, 3, 198, :_reduce_none, 3, 198, :_reduce_none, 3, 198, :_reduce_none, 3, 198, :_reduce_none, 3, 198, :_reduce_none, 3, 198, :_reduce_none, 3, 198, :_reduce_none, 3, 198, :_reduce_none, 3, 198, :_reduce_none, 3, 198, :_reduce_none, 3, 197, :_reduce_none, 1, 197, :_reduce_none, 1, 197, :_reduce_none, 1, 200, :_reduce_none, 1, 200, :_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, 201, :_reduce_none, 1, 125, :_reduce_none, 2, 125, :_reduce_none, 1, 199, :_reduce_none, 3, 199, :_reduce_none, 2, 203, :_reduce_none, 1, 203, :_reduce_none, 0, 142, :_reduce_none, 5, 142, :_reduce_none, 1, 204, :_reduce_none, 3, 204, :_reduce_none, 5, 143, :_reduce_none, 1, 205, :_reduce_none, 3, 205, :_reduce_none, 3, 205, :_reduce_none, 3, 205, :_reduce_none, 5, 205, :_reduce_none, 5, 205, :_reduce_none, 5, 205, :_reduce_none, 5, 205, :_reduce_none, 1, 207, :_reduce_none, 1, 207, :_reduce_none, 0, 114, :_reduce_none, 5, 114, :_reduce_none, 2, 114, :_reduce_none, 1, 206, :_reduce_none, 3, 206, :_reduce_none, 1, 208, :_reduce_none, 1, 208, :_reduce_none, 1, 208, :_reduce_none, 1, 131, :_reduce_none, 3, 131, :_reduce_none, 3, 131, :_reduce_none, 1, 209, :_reduce_none, 1, 209, :_reduce_none, 1, 209, :_reduce_none, 1, 132, :_reduce_none, 3, 132, :_reduce_none, 3, 132, :_reduce_none, 1, 210, :_reduce_none, 1, 210, :_reduce_none, 1, 210, :_reduce_none, 1, 133, :_reduce_none, 3, 133, :_reduce_none, 3, 133, :_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, 3, 213, :_reduce_none, 1, 213, :_reduce_none, 1, 213, :_reduce_none, 1, 136, :_reduce_none, 3, 136, :_reduce_none, 3, 136, :_reduce_none, 1, 215, :_reduce_none, 1, 215, :_reduce_none, 3, 215, :_reduce_none, 1, 137, :_reduce_none, 3, 137, :_reduce_none, 3, 137, :_reduce_none, 1, 216, :_reduce_none, 1, 216, :_reduce_none, 3, 216, :_reduce_none, 3, 216, :_reduce_none, 1, 138, :_reduce_none, 3, 138, :_reduce_none, 3, 138, :_reduce_none, 1, 123, :_reduce_none, 3, 123, :_reduce_none, 3, 123, :_reduce_none, 1, 217, :_reduce_none, 3, 217, :_reduce_none, 3, 218, :_reduce_none, 1, 122, :_reduce_none, 1, 122, :_reduce_none, 3, 219, :_reduce_none, 0, 220, :_reduce_none, 1, 220, :_reduce_none, 2, 220, :_reduce_none, 1, 121, :_reduce_none, 1, 146, :_reduce_none, 1, 146, :_reduce_none, 1, 214, :_reduce_none ] racc_reduce_n = 375 racc_shift_n = 630 racc_action_table = [ 537, 192, 490, 172, 488, 80, 83, 486, 63, 485, 93, 588, 243, 262, 59, 482, 409, 574, 185, 187, 323, 324, 465, 12, 443, 337, 133, 135, 549, 134, 136, 597, 82, 46, 242, 46, 558, 533, 535, 538, 385, 577, 471, 14, 53, 261, 80, 83, 576, 173, 40, 42, 376, 188, 579, 71, 145, 469, 76, 357, 362, 395, 85, 88, 91, 69, 550, 69, 91, 549, 88, 85, 69, 76, 575, 85, 129, 558, 533, 535, 538, 444, 80, 83, 372, 374, 377, 553, 190, 181, 349, 40, 42, 376, 196, 393, 71, 145, 69, 76, 357, 362, 467, 85, 88, 91, 69, 550, 497, 270, 185, 187, 91, 391, 110, 531, 91, 85, 528, 80, 83, 529, 530, 385, 386, 372, 374, 377, 553, 376, 236, 349, 71, 145, 130, 76, 357, 362, 624, 85, 88, 91, 69, 80, 83, 188, 323, 324, 501, 88, 475, 185, 187, 320, 322, 126, 88, 314, 130, 235, 89, 372, 374, 377, 40, 42, 85, 349, 69, 71, 259, 69, 76, 121, 123, 80, 83, 185, 187, 206, 190, 181, 113, 118, 185, 187, 188, 189, 191, 129, 130, 182, 178, 71, 183, 186, 76, 121, 123, 76, 267, 320, 322, 71, 1, 273, 113, 118, 316, 80, 83, 206, 188, 129, 88, 185, 187, 185, 187, 188, 141, 190, 181, 6, 248, 71, 185, 187, 76, 121, 123, 80, 83, 185, 187, 179, 189, 191, 113, 118, 182, 234, 267, 183, 186, 129, 248, 190, 181, 184, 188, 71, 188, 233, 190, 181, 80, 83, 16, 71, 504, 188, 76, 80, 83, 80, 83, 203, 188, 323, 324, 248, 323, 324, 80, 83, 17, 232, 248, 129, 248, 71, 503, -372, 76, 190, 181, 190, 181, 130, 80, 83, 80, 83, 323, 324, 190, 181, 184, 323, 324, 129, 24, 190, 181, 248, 71, 248, 572, 76, 206, 320, 322, 71, 245, 71, 76, 238, 76, 80, 83, 329, 76, 389, 71, 76, 129, 76, 121, 123, 25, 80, 83, 129, 130, 129, 246, 113, 118, 98, 71, 239, 71, 76, 129, 76, 130, 76, 320, 322, 323, 324, 76, 197, 425, 126, 80, 83, 40, 42, 129, 71, 129, 232, 40, 42, 569, 206, 318, 71, 495, 248, 76, 121, 123, 80, 83, 320, 322, 40, 42, 71, 113, 118, 76, 121, 123, 80, 83, 129, 130, 206, 121, 123, 113, 118, 179, 326, 71, 80, 83, 129, 130, 76, 204, 312, 71, 98, 204, 76, 231, 126, 456, 410, 130, 91, 320, 322, 80, 83, 40, 42, 411, 206, -373, 71, 129, 453, 76, 121, 123, 80, 83, 248, 20, 206, 21, 71, 113, 118, 76, 121, 123, 80, 83, 129, 130, 40, 42, 71, 113, 118, 76, 121, 123, 595, 596, 129, 130, 80, 83, 412, 113, 118, 320, 322, 71, 206, 71, 129, 67, 76, 80, 83, 248, 199, 200, 201, 202, 206, 31, 71, 320, 322, 76, 121, 123, 130, 129, 320, 322, 301, 302, 71, 113, 118, 76, 121, 123, 456, 20, 129, 21, 413, 80, 83, 113, 118, 126, 71, 268, 46, 76, 129, 71, 29, 30, 40, 42, 130, 40, 42, 71, 80, 83, 76, 121, 123, 334, 129, 80, 83, 71, 78, 79, 113, 118, 414, 248, 71, 126, 332, 129, 331, 415, 248, 287, 288, 103, 40, 42, 80, 83, 416, 71, 417, 59, 76, 121, 123, 199, 200, 201, 202, 78, 79, 130, 113, 118, 80, 83, 279, 280, 71, 129, 46, 76, 614, 615, 616, 71, 303, 304, 76, 418, 80, 83, 126, 199, 200, 201, 202, 419, 129, 40, 42, 40, 42, 277, 278, 129, 71, 275, 276, 76, 121, 123, 80, 83, 78, 79, 420, -102, 421, 113, 118, 166, 628, 629, 71, 145, 129, 76, 78, 79, 82, 85, 88, 91, 69, 141, 73, 89, 80, 83, 71, 406, 407, 76, 78, 79, 82, 85, 88, 91, 69, 33, 73, 80, 83, 320, 322, 223, 240, 473, 217, 31, 71, 219, 220, 76, 80, 83, 31, 85, 88, 91, 69, 199, 200, 201, 202, 80, 83, 320, 322, 320, 322, 404, 405, 423, 402, 403, 71, 400, 401, 76, 46, 398, 399, 85, 88, 91, 69, 46, 230, 40, 42, 71, 229, 71, 76, 426, 40, 42, 85, 88, 91, 69, 456, 427, 71, 396, 397, 76, 428, 429, 430, 85, 88, 91, 69, 71, 431, 453, 76, 71, 133, 135, 85, 88, 91, 69, 199, 200, 201, 202, 199, 200, 201, 202, 199, 200, 201, 202, 199, 200, 201, 202, 199, 200, 201, 202, 134, 136, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 230, 228, 231, 232, 234, 445, 235, 446, 447, 386, 449, 450, 452, 227, 226, 458, 85, 460, 88, 462, 91, 225, 224, 213, 212, 211, 210, 476, 69, 478, 209, 480, 206, 196, 194, 180, 175, 98, 492, 493, 88, 496, 137, 499, 91, 104, 46, 505, 507, 508, 95, 510, 511, 512, 513, 85, 515, 88, 517, 91, 519, 69, 521, 66, 523, 62, 525, 526, 527, 61, 532, 31, 559, 560, 53, 562, 563, 564, 565, 566, 567, 69, 69, 69, 69, 568, -102, 387, 203, 571, 339, 51, 50, 581, 582, 196, 584, 586, 587, 85, 590, 591, 28, 26, 82, 237, 598, 599, 141, 129, 569, 604, 605, 606, 607, 608, 18, 69, 15, 618, 10, 620, 9, 621, 622, 623, 8, 7, 626, 627, 318, 509 ] racc_action_check = [ 504, 113, 437, 104, 436, 504, 504, 435, 48, 434, 54, 570, 178, 196, 39, 433, 288, 544, 253, 253, 433, 433, 397, 6, 367, 239, 80, 83, 504, 80, 83, 582, 239, 39, 178, 48, 504, 504, 504, 504, 504, 545, 403, 6, 54, 196, 545, 545, 544, 104, 504, 504, 504, 253, 545, 504, 504, 401, 504, 504, 504, 280, 504, 504, 504, 504, 504, 437, 436, 545, 435, 434, 288, 433, 544, 397, 113, 545, 545, 545, 545, 367, 243, 243, 504, 504, 504, 504, 253, 253, 504, 545, 545, 545, 570, 278, 545, 545, 403, 545, 545, 545, 399, 545, 545, 545, 545, 545, 442, 210, 256, 256, 401, 276, 66, 493, 280, 210, 493, 66, 66, 493, 493, 245, 245, 545, 545, 545, 545, 243, 167, 545, 243, 243, 66, 243, 243, 243, 620, 243, 243, 243, 243, 620, 620, 256, 407, 407, 446, 278, 407, 258, 258, 446, 446, 66, 399, 226, 620, 166, 442, 243, 243, 243, 66, 66, 276, 243, 226, 66, 194, 493, 66, 66, 66, 194, 194, 251, 251, 620, 256, 256, 66, 66, 207, 207, 258, 207, 207, 66, 194, 207, 108, 620, 207, 207, 620, 620, 620, 407, 207, 575, 575, 446, 0, 212, 620, 620, 227, 183, 183, 194, 251, 620, 212, 249, 249, 250, 250, 207, 227, 258, 258, 0, 183, 194, 388, 388, 194, 194, 194, 248, 248, 111, 111, 108, 111, 111, 194, 194, 111, 164, 388, 111, 111, 194, 248, 251, 251, 207, 249, 575, 250, 163, 207, 207, 185, 185, 10, 183, 449, 388, 183, 182, 182, 186, 186, 122, 111, 425, 425, 185, 234, 234, 130, 130, 10, 161, 182, 183, 186, 248, 449, 122, 248, 249, 249, 250, 250, 130, 184, 184, 181, 181, 475, 475, 388, 388, 111, 231, 231, 248, 18, 111, 111, 184, 185, 181, 538, 185, 130, 576, 576, 182, 180, 186, 182, 169, 186, 604, 604, 234, 425, 261, 130, 234, 185, 130, 130, 130, 18, 202, 202, 182, 604, 186, 180, 130, 130, 95, 184, 170, 181, 184, 130, 181, 202, 475, 232, 232, 304, 304, 231, 118, 304, 604, 187, 187, 538, 538, 184, 576, 181, 534, 604, 604, 534, 202, 440, 604, 440, 187, 604, 604, 604, 107, 107, 586, 586, 95, 95, 202, 604, 604, 202, 202, 202, 201, 201, 604, 107, 179, 118, 118, 202, 202, 205, 232, 232, 200, 200, 202, 201, 304, 206, 225, 187, 62, 126, 187, 160, 107, 586, 289, 200, 225, 423, 423, 191, 191, 107, 107, 290, 201, 126, 107, 187, 586, 107, 107, 107, 199, 199, 191, 30, 200, 30, 201, 107, 107, 201, 201, 201, 197, 197, 107, 199, 62, 62, 200, 201, 201, 200, 200, 200, 580, 580, 201, 197, 190, 190, 291, 200, 200, 508, 508, 423, 199, 191, 200, 50, 191, 610, 610, 190, 613, 613, 613, 613, 197, 50, 199, 473, 473, 199, 199, 199, 610, 191, 230, 230, 221, 221, 197, 199, 199, 197, 197, 197, 508, 14, 199, 14, 292, 617, 617, 197, 197, 610, 190, 208, 50, 190, 197, 508, 22, 22, 610, 610, 617, 50, 50, 610, 189, 189, 610, 610, 610, 237, 190, 188, 188, 473, 237, 237, 610, 610, 293, 189, 230, 617, 235, 610, 235, 294, 188, 218, 218, 64, 617, 617, 608, 608, 295, 617, 296, 64, 617, 617, 617, 208, 208, 208, 208, 233, 233, 608, 617, 617, 98, 98, 216, 216, 189, 617, 64, 189, 607, 607, 607, 188, 222, 222, 188, 297, 53, 53, 608, 263, 263, 263, 263, 298, 189, 535, 535, 608, 608, 215, 215, 188, 608, 214, 214, 608, 608, 608, 217, 217, 444, 444, 299, 98, 300, 608, 608, 98, 623, 623, 98, 98, 608, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 53, 223, 223, 53, 286, 286, 53, 53, 53, 53, 53, 53, 53, 53, 26, 53, 145, 145, 405, 405, 145, 175, 405, 145, 26, 217, 145, 145, 217, 219, 219, 175, 217, 217, 217, 217, 264, 264, 264, 264, 220, 220, 389, 389, 302, 302, 285, 285, 302, 284, 284, 223, 283, 283, 223, 26, 282, 282, 223, 223, 223, 223, 175, 158, 26, 26, 145, 156, 405, 145, 305, 175, 175, 145, 145, 145, 145, 389, 306, 219, 281, 281, 219, 307, 308, 309, 219, 219, 219, 219, 220, 310, 389, 220, 302, 320, 322, 220, 220, 220, 220, 266, 266, 266, 266, 260, 260, 260, 260, 119, 119, 119, 119, 265, 265, 265, 265, 625, 625, 625, 625, 323, 324, 339, 341, 344, 347, 351, 354, 357, 358, 360, 362, 363, 365, 155, 369, 370, 373, 375, 376, 378, 380, 383, 384, 386, 387, 153, 150, 390, 391, 392, 393, 394, 395, 147, 146, 144, 143, 142, 140, 408, 409, 422, 139, 424, 129, 115, 114, 109, 105, 100, 438, 439, 209, 441, 87, 443, 211, 65, 59, 450, 451, 453, 56, 459, 461, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 49, 474, 47, 477, 479, 481, 46, 503, 37, 505, 507, 36, 514, 516, 518, 520, 522, 524, 528, 529, 530, 531, 532, 31, 246, 536, 537, 242, 28, 27, 553, 554, 556, 559, 560, 569, 238, 573, 574, 20, 19, 236, 168, 584, 585, 229, 589, 593, 597, 598, 600, 601, 603, 11, 224, 8, 609, 5, 612, 4, 614, 615, 616, 3, 2, 621, 622, 228, 455 ] racc_action_pointer = [ 203, nil, 874, 892, 870, 859, 22, nil, 884, nil, 257, 854, nil, nil, 476, nil, nil, nil, 301, 839, 860, nil, 493, nil, nil, nil, 645, 827, 832, nil, 410, 803, nil, nil, nil, nil, 791, 826, nil, -9, nil, nil, nil, nil, nil, nil, 834, 823, -7, 797, 469, nil, nil, 579, -5, nil, 808, nil, nil, 770, nil, nil, 396, nil, 533, 765, 113, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, -30, nil, nil, -29, nil, nil, nil, 758, nil, nil, nil, nil, nil, nil, nil, 328, nil, nil, 563, nil, 792, nil, nil, nil, 2, 754, nil, 369, 159, 768, nil, 227, nil, 0, 755, 715, nil, nil, 332, 669, nil, nil, 238, nil, nil, nil, 379, nil, nil, 756, 268, nil, nil, nil, nil, nil, nil, nil, nil, 742, 738, nil, 737, 736, 774, 642, 734, 733, nil, nil, 726, nil, nil, 725, nil, 713, 645, nil, 641, nil, 356, 223, nil, 199, 187, nil, 105, 76, 817, 263, 287, nil, nil, nil, nil, 652, nil, nil, 0, 349, 302, 286, 257, 203, 284, 250, 259, 350, 524, 517, 453, 412, nil, nil, 169, nil, 12, 437, nil, 425, 393, 381, 325, nil, nil, 320, 375, 178, 488, 742, 54, 745, 150, nil, 545, 541, 514, 601, 489, 655, 666, 434, 524, 627, 817, 350, 102, 153, 843, 807, 483, 293, 342, 504, 266, 488, 808, 473, 802, -30, nil, nil, 821, 76, nil, 82, 818, nil, 225, 209, 211, 171, nil, 12, nil, nil, 104, nil, 145, nil, 665, 311, nil, 516, 596, 673, 661, nil, nil, nil, nil, nil, nil, nil, nil, nil, 103, nil, 85, nil, 51, 655, 631, 627, 624, 621, 579, nil, 6, 356, 365, 404, 446, 480, 487, 496, 498, 527, 535, 554, 556, nil, 670, nil, 344, 645, 653, 658, 659, 660, 666, nil, nil, nil, nil, nil, nil, nil, nil, nil, 671, nil, 672, 694, 695, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 719, nil, 676, nil, nil, 677, nil, nil, 678, nil, nil, nil, 679, nil, nil, 680, nil, nil, 707, 686, nil, 709, nil, 710, 685, nil, 712, nil, 1, nil, 714, 715, nil, nil, 716, nil, 757, 718, nil, 693, nil, 760, nil, nil, 733, 743, nil, 699, 742, 220, 668, 724, 719, 726, 720, 728, 721, nil, 12, nil, 92, nil, 47, nil, 32, nil, 644, nil, 140, 736, 728, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 738, 410, 740, 263, nil, nil, nil, nil, nil, nil, nil, 14, 8, 6, 3, 1, 743, 748, 315, 747, 107, 808, 549, nil, 147, nil, nil, 248, 780, 735, nil, 757, nil, 883, nil, nil, nil, 760, nil, 761, nil, 762, 763, 758, 765, 759, 767, 760, 769, 761, 771, 476, 773, 288, nil, 775, nil, 776, nil, 777, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 105, nil, nil, nil, nil, nil, nil, nil, nil, nil, 801, -1, 826, nil, 806, 458, nil, nil, nil, nil, nil, 784, nil, 785, nil, 786, nil, 787, nil, 788, nil, 789, nil, nil, nil, 781, 782, 783, 784, 815, nil, 309, 543, 825, 841, 307, nil, nil, nil, nil, nil, -6, 40, nil, nil, nil, nil, nil, nil, nil, 769, 827, nil, 777, nil, nil, 806, 851, nil, nil, nil, nil, nil, nil, nil, nil, 797, 10, nil, nil, 837, 866, 195, 305, nil, nil, nil, 366, nil, 19, nil, 814, 859, 371, nil, nil, 799, nil, nil, nil, 819, nil, nil, nil, 834, 822, nil, 865, 800, nil, 837, 313, nil, nil, 496, 545, 871, 466, nil, 842, 403, 809, 810, 811, 498, nil, nil, 137, 811, 812, 536, nil, 677, nil, nil, nil, nil ] racc_action_default = [ -375, -2, -375, -375, -375, -13, -6, -4, -375, -1, -375, -375, -5, -7, -375, 630, -15, -14, -375, -18, -375, -12, -375, -9, -17, -16, -375, -21, -375, -8, -375, -111, -97, -20, -98, -99, -375, -375, -86, -87, -145, -88, -146, -89, -19, -107, -93, -375, -375, -375, -375, -11, -10, -375, -375, -103, -375, -100, -108, -375, -90, -94, -375, -109, -375, -81, -375, -23, -22, -229, -125, -151, -126, -246, -127, -128, -166, -129, -181, -182, -375, -120, -186, -375, -121, -190, -122, -375, -203, -147, -123, -216, -124, -101, -104, -375, -91, -112, -111, -96, -375, -95, -92, -110, -375, -375, -253, -27, -375, -375, -25, -375, -272, -375, -375, -304, -282, -273, -375, -250, -285, -270, -31, -271, -280, -281, -288, -247, -24, -283, -375, -252, -26, -152, -167, -153, -168, -106, -105, -136, -125, -242, -137, -126, -375, -375, -138, -127, -116, -139, -128, -117, -140, -118, -141, -130, -119, -142, -131, -143, -132, -121, -144, -133, -122, -115, -147, -134, -123, -135, -124, -113, -83, -82, -3, -375, -372, -248, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -255, -254, -375, -30, -375, -375, -258, -375, -375, -375, -375, -32, -287, -284, -288, -375, -375, -375, -375, -375, -375, -114, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -85, -84, -375, -375, -286, -375, -375, -278, -375, -262, -263, -259, -274, -264, -275, -276, -260, -277, -261, -251, -249, -375, -306, -265, -266, -267, -268, -279, -269, -205, -193, -191, -218, -206, -204, -202, -375, -215, -375, -228, -375, -375, -375, -375, -375, -375, -375, -241, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -165, -375, -180, -375, -375, -375, -375, -375, -375, -375, -231, -219, -217, -232, -230, -245, -243, -149, -244, -375, -155, -375, -375, -375, -170, -156, -154, -184, -171, -169, -150, -148, -188, -185, -183, -192, -189, -187, -375, -322, -318, -54, -328, -324, -55, -334, -330, -56, -374, -341, -336, -311, -57, -343, -317, -58, -352, -339, -323, -347, -59, -353, -349, -329, -310, -60, -356, -335, -316, -309, -342, -321, -315, -327, -375, -346, -333, -312, -53, -375, -33, -62, -34, -375, -61, -289, -375, -375, -375, -375, -375, -375, -375, -375, -375, -200, -375, -213, -375, -226, -375, -239, -375, -163, -375, -178, -375, -375, -375, -199, -212, -225, -238, -162, -177, -201, -214, -227, -240, -164, -179, -375, -375, -375, -375, -198, -211, -224, -237, -161, -176, -257, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -256, -375, -29, -63, -375, -375, -67, -28, -151, -302, -375, -303, -307, -194, -375, -207, -375, -220, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -375, -233, -375, -157, -375, -172, -375, -320, -319, -325, -326, -332, -331, -338, -337, -345, -344, -354, -375, -340, -348, -355, -351, -350, -358, -357, -314, -313, -375, -375, -375, -68, -375, -375, -305, -196, -209, -222, -195, -375, -208, -375, -221, -375, -234, -375, -158, -375, -173, -375, -235, -159, -174, -375, -375, -375, -375, -375, -43, -309, -375, -31, -44, -375, -71, -69, -36, -37, -38, -359, -375, -39, -362, -40, -371, -366, -365, -41, -368, -375, -35, -304, -52, -42, -375, -375, -308, -197, -210, -223, -236, -160, -175, -65, -375, -304, -66, -51, -49, -375, -375, -375, -44, -70, -64, -375, -369, -375, -48, -291, -375, -375, -364, -46, -375, -50, -361, -360, -375, -363, -367, -370, -72, -375, -290, -375, -294, -45, -74, -375, -292, -293, -375, -375, -375, -73, -76, -375, -79, -295, -296, -297, -75, -47, -77, -375, -375, -375, -375, -80, -78, -298, -299, -300, -301 ] racc_goto_table = [ 119, 84, 37, 193, 195, 162, 86, 382, 381, 90, 455, 44, 153, 87, 207, 57, 58, 92, 127, 540, 102, 55, 114, 60, 101, 619, 37, 3, 23, 610, 451, 75, 619, 617, 545, 68, 64, 375, 100, 94, 609, 119, 122, 96, 52, 603, 161, 74, 60, 383, 54, 164, 380, 138, 168, 506, 72, 101, 165, 177, 578, 70, 170, 114, 208, 107, 249, 250, 251, 171, 253, 100, 144, 256, 148, 258, 150, 247, 57, 58, 151, 252, 132, 254, 255, 156, 257, 498, 128, 22, 13, 2, 147, 221, 174, 105, 65, 49, 222, 155, 158, 143, 160, 163, 167, 169, 140, 139, 142, 146, 149, 152, 154, 157, 159, 27, 19, 198, 205, 11, 5, 244, 585, 218, 600, 4, 561, 594, 260, 580, nil, 208, 388, 263, 264, 265, 266, nil, nil, 216, nil, 317, nil, 319, nil, 448, nil, nil, 215, nil, nil, 37, nil, 214, nil, nil, nil, nil, nil, nil, 241, nil, nil, nil, nil, 285, nil, 293, 299, nil, 286, 309, 294, 300, nil, nil, 310, nil, 321, nil, 327, nil, nil, nil, 325, nil, nil, 330, nil, 328, nil, 370, nil, 335, nil, 284, 373, 292, 298, nil, 333, 308, 311, 338, 315, 272, nil, 601, nil, nil, nil, 283, 269, 291, 297, 274, nil, 307, 271, 313, 282, nil, 290, 296, nil, 281, 306, 289, 295, nil, nil, 305, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 336, nil, nil, nil, 422, nil, nil, nil, nil, nil, nil, 424, nil, nil, nil, nil, nil, nil, nil, nil, 408, 539, nil, nil, nil, nil, nil, nil, 394, nil, nil, nil, nil, nil, nil, 392, nil, nil, 390, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 454, nil, nil, nil, nil, nil, nil, nil, nil, 494, nil, nil, nil, nil, nil, nil, 472, nil, nil, nil, nil, nil, nil, 474, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 479, nil, nil, nil, nil, nil, nil, 481, nil, nil, 470, nil, nil, nil, nil, 483, 477, nil, 463, nil, nil, nil, nil, 502, 468, 461, nil, nil, 459, 500, nil, 466, nil, nil, 464, nil, nil, nil, nil, nil, nil, nil, nil, nil, 491, nil, nil, nil, nil, nil, 522, nil, nil, nil, nil, nil, nil, 524, nil, 489, nil, nil, nil, nil, nil, nil, nil, 487, nil, nil, nil, 484, nil, nil, 583, nil, nil, nil, 520, nil, nil, 534, nil, nil, nil, 454, 373, nil, 589, nil, nil, nil, 518, nil, nil, nil, nil, nil, nil, 516, 218, nil, 514, nil, nil, nil, nil, nil, 602, 536, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 534, nil, nil, nil, nil, 373, nil, nil, nil, nil, nil, nil, nil, 284, 292, 298, 308, nil, 570, nil, nil, 573, nil, nil, nil, nil, nil, nil, 536, nil, 592, 593, nil, nil, nil, nil, nil, nil, nil, nil, nil, 454, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 625 ] racc_goto_check = [ 55, 80, 23, 33, 22, 103, 81, 47, 24, 82, 114, 15, 77, 70, 108, 65, 71, 83, 104, 26, 61, 68, 54, 59, 58, 53, 23, 1, 14, 52, 50, 87, 53, 52, 49, 15, 57, 38, 23, 68, 36, 55, 23, 59, 14, 35, 80, 86, 59, 25, 67, 81, 20, 61, 82, 51, 85, 58, 70, 104, 26, 84, 83, 54, 55, 18, 108, 108, 108, 73, 108, 23, 74, 108, 75, 108, 87, 109, 65, 71, 76, 109, 17, 109, 109, 78, 109, 79, 16, 13, 12, 11, 86, 80, 10, 9, 8, 7, 81, 89, 90, 85, 91, 92, 93, 94, 84, 95, 96, 97, 98, 99, 100, 101, 102, 6, 5, 105, 107, 4, 3, 111, 112, 87, 113, 2, 115, 126, 55, 128, nil, 55, 108, 55, 55, 55, 55, nil, nil, 86, nil, 77, nil, 77, nil, 47, nil, nil, 85, nil, nil, 23, nil, 84, nil, nil, nil, nil, nil, nil, 15, nil, nil, nil, nil, 80, nil, 80, 80, nil, 81, 80, 81, 81, nil, nil, 81, nil, 80, nil, 80, nil, nil, nil, 81, nil, nil, 81, nil, 82, nil, 80, nil, 82, nil, 87, 81, 87, 87, nil, 83, 87, 87, 83, 87, 86, nil, 114, nil, nil, nil, 86, 85, 86, 86, 85, nil, 86, 84, 86, 85, nil, 85, 85, nil, 84, 85, 84, 84, nil, nil, 84, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 84, nil, nil, nil, 80, nil, nil, nil, nil, nil, nil, 81, nil, nil, nil, nil, nil, nil, nil, nil, 87, 24, nil, nil, nil, nil, nil, nil, 86, nil, nil, nil, nil, nil, nil, 85, nil, nil, 84, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 80, nil, nil, nil, nil, nil, nil, nil, nil, 103, nil, nil, nil, nil, nil, nil, 80, nil, nil, nil, nil, nil, nil, 81, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 80, nil, nil, nil, nil, nil, nil, 81, nil, nil, 87, nil, nil, nil, nil, 81, 87, nil, 86, nil, nil, nil, nil, 80, 86, 85, nil, nil, 84, 82, nil, 85, nil, nil, 84, nil, nil, nil, nil, nil, nil, nil, nil, nil, 87, nil, nil, nil, nil, nil, 80, nil, nil, nil, nil, nil, nil, 81, nil, 86, nil, nil, nil, nil, nil, nil, nil, 85, nil, nil, nil, 84, nil, nil, 22, nil, nil, nil, 87, nil, nil, 80, nil, nil, nil, 80, 81, nil, 22, nil, nil, nil, 86, nil, nil, nil, nil, nil, nil, 85, 87, nil, 84, nil, nil, nil, nil, nil, 33, 23, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 80, nil, nil, nil, nil, 81, nil, nil, nil, nil, nil, nil, nil, 87, 87, 87, 87, nil, 23, nil, nil, 23, nil, nil, nil, nil, nil, nil, 23, nil, 80, 80, nil, nil, nil, nil, nil, nil, nil, nil, nil, 80, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 55 ] racc_goto_pointer = [ nil, 27, 125, 120, 114, 105, 96, 70, 47, 30, -11, 91, 84, 75, 14, -15, 22, 16, -1, nil, -193, nil, -111, -24, -237, -196, -485, nil, nil, nil, nil, nil, nil, -110, nil, -552, -563, nil, -206, nil, nil, nil, nil, nil, nil, nil, nil, -238, nil, -470, -356, -396, -575, -585, -44, -66, nil, -12, -38, -16, nil, -42, nil, nil, nil, -22, nil, 14, -15, nil, -40, -21, nil, -31, -26, -24, -18, -86, -13, -355, -52, -47, -44, -36, 8, 3, -6, -22, nil, 1, 2, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, -93, -48, -1, nil, -11, -116, -104, nil, -58, -437, -462, -379, -382, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, -449, nil, -424 ] racc_goto_default = [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 555, nil, 109, nil, 115, nil, 176, nil, nil, nil, 541, 542, 543, 546, 548, 552, 116, 554, nil, nil, 556, 557, 379, 342, 345, 348, 353, 356, 361, 366, nil, 384, nil, nil, nil, nil, 611, 612, 613, 38, 39, 41, 43, 47, nil, 99, 32, 34, 35, 36, nil, nil, 56, nil, 45, 48, 97, nil, nil, nil, nil, nil, 81, 124, 125, nil, nil, 340, 343, 346, 350, 77, 360, 365, 369, nil, nil, nil, nil, nil, nil, 352, 355, 359, 364, 368, 371, nil, 131, 106, 108, 111, 112, 117, 120, nil, nil, nil, 457, 378, 341, 344, 347, 351, 354, 358, 363, 367, 544, 547, 551, 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, :V_C_DOMAIN_TYPE => 37, :ERR_C_DOMAIN_TYPE => 38, :SYM_USE_NODE => 39, :SYM_ALLOW_ARCHETYPE => 40, :Star_code => 41, :V_ATTRIBUTE_IDENTIFIER => 42, :SYM_INCLUDE => 43, :SYM_EXCLUDE => 44, ":" => 45, :SYM_INVARIANT => 46, :V_ASSERTION_TEXT => 47, :SYM_ONTOLOGY => 48, :Left_bracket_code => 49, :Right_bracket_code => 50, :V_TYPE_IDENTIFIER => 51, :V_GENERIC_TYPE_IDENTIFIER => 52, :V_STRING => 53, :Comma_code => 54, :SYM_LIST_CONTINUE => 55, :V_INTEGER => 56, :SYM_INTERVAL_DELIM => 57, :SYM_ELLIPSIS => 58, :V_REAL => 59, :SYM_TRUE => 60, :SYM_FALSE => 61, :V_CHARACTER => 62, :V_ISO8601_EXTENDED_DATE => 63, :V_ISO8601_EXTENDED_TIME => 64, :V_ISO8601_EXTENDED_DATE_TIME => 65, :V_ISO8601_DURATION => 66, :V_QUALIFIED_TERM_CODE_REF => 67, :V_URI => 68, :SYM_EXISTS => 69, :SYM_NOT => 70, "=" => 71, :SYM_AND => 72, :SYM_OR => 73, :SYM_XOR => 74, :SYM_IMPLIES => 75, :Slash_code => 76, "^" => 77, :SYM_EXISTENCE => 78, :SYM_CARDINALITY => 79, :Semicolon_code => 80, :SYM_ORDERED => 81, :SYM_UNORDERED => 82, :SYM_UNIQUE => 83, :SYM_OCCURRENCES => 84, :V_ISO8601_DATE_CONSTRAINT_PATTERN => 85, :V_ISO8601_TIME_CONSTRAINT_PATTERN => 86, :V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN => 87, :START_TERM_CODE_CONSTRAINT => 88, :END_TERM_CODE_CONSTRAINT => 89, :TERM_CODE => 90, :V_ISO8601_DURATION_CONSTRAINT_PATTERN => 91 } racc_use_result_var = true racc_nt_base = 92 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', 'V_C_DOMAIN_TYPE', 'ERR_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', '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 def _reduce_none( val, _values, result ) result end end # class Parser end # module ADL end # module OpenEHR