# # 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 'logger' require 'lib/util.rb' require 'lib/scanner.rb' $DEBUG = true module OpenEHR module ADL class Parser < Racc::Parser module_eval <<'..end lib/parser.y modeval..idd4a3e5c962', 'lib/parser.y', 654 @@log = Logger.new('log/parser.log','daily') @@dadl_scanner = OpenEHR::ADL::Scanner::DADL::RootScanner.new ###----------/* 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] @@log.info("@@adl_reserved: #{@@adl_reserved[word]} at #{@filename}") 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, $& 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 # @in_interval = true 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 scanned = @@dadl_scanner.parse(data) when Yaparc::Result::OK yield scanned.value data = scanned.input ### when Yaparc::Result::Fail ### raise "Scan Failed: #{scanned}" ### when Yaparc::Result::Error ### raise "Scan Error: #{scanned}" else end 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 == true assert_at(__FILE__,__LINE__){@adl_type.last == :dadl} adl_type = @adl_type.pop if @adl_type.last == :cadl @in_c_domain_type = false yield :END_V_C_DOMAIN_TYPE_BLOCK, $& else yield :SYM_END_DBLOCK, $& end elsif @in_c_domain_type == false adl_type = @adl_type.pop # puts "Escaping #{adl_type}" assert_at(__FILE__,__LINE__){adl_type == :dadl} yield :SYM_END_DBLOCK, $& else raise 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 else @in_interval = false # @in_interval = true 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._\-]*\]/ #V_LOCAL_TERM_CODE_REF ### yield :V_LOCAL_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\[/ # [ 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 /\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..idd4a3e5c962 ##### racc 1.4.5 generates ### racc_reduce_table = [ 0, 0, :racc_error, 2, 96, :_reduce_none, 1, 96, :_reduce_none, 8, 97, :_reduce_none, 2, 98, :_reduce_none, 2, 98, :_reduce_none, 1, 106, :_reduce_none, 2, 106, :_reduce_none, 3, 107, :_reduce_none, 1, 108, :_reduce_none, 3, 108, :_reduce_none, 3, 109, :_reduce_none, 1, 109, :_reduce_none, 0, 99, :_reduce_none, 2, 99, :_reduce_none, 2, 99, :_reduce_none, 2, 100, :_reduce_none, 2, 100, :_reduce_none, 0, 101, :_reduce_none, 2, 101, :_reduce_19, 2, 101, :_reduce_none, 0, 102, :_reduce_none, 2, 102, :_reduce_none, 2, 102, :_reduce_none, 2, 103, :_reduce_none, 2, 103, :_reduce_none, 1, 111, :_reduce_none, 1, 111, :_reduce_none, 5, 112, :_reduce_none, 5, 112, :_reduce_none, 2, 114, :_reduce_none, 1, 116, :_reduce_31, 2, 116, :_reduce_32, 1, 115, :_reduce_none, 1, 115, :_reduce_none, 1, 121, :_reduce_none, 1, 121, :_reduce_none, 1, 121, :_reduce_none, 1, 121, :_reduce_none, 1, 121, :_reduce_none, 1, 121, :_reduce_none, 1, 121, :_reduce_none, 1, 121, :_reduce_none, 1, 121, :_reduce_none, 1, 121, :_reduce_none, 3, 128, :_reduce_none, 4, 122, :_reduce_none, 3, 122, :_reduce_none, 6, 123, :_reduce_none, 2, 130, :_reduce_none, 2, 133, :_reduce_none, 3, 133, :_reduce_none, 2, 133, :_reduce_none, 1, 127, :_reduce_none, 1, 134, :_reduce_none, 1, 134, :_reduce_none, 1, 134, :_reduce_none, 1, 134, :_reduce_none, 1, 134, :_reduce_none, 1, 134, :_reduce_none, 1, 134, :_reduce_none, 1, 134, :_reduce_none, 1, 119, :_reduce_none, 1, 120, :_reduce_none, 2, 120, :_reduce_none, 5, 143, :_reduce_none, 5, 143, :_reduce_none, 5, 143, :_reduce_none, 2, 144, :_reduce_none, 3, 144, :_reduce_none, 1, 145, :_reduce_none, 2, 145, :_reduce_none, 1, 145, :_reduce_none, 0, 131, :_reduce_none, 2, 131, :_reduce_none, 0, 132, :_reduce_none, 2, 132, :_reduce_none, 1, 148, :_reduce_none, 2, 148, :_reduce_none, 3, 149, :_reduce_none, 1, 149, :_reduce_none, 3, 149, :_reduce_none, 0, 104, :_reduce_none, 2, 104, :_reduce_none, 2, 104, :_reduce_none, 2, 105, :_reduce_none, 2, 105, :_reduce_none, 1, 110, :_reduce_none, 1, 152, :_reduce_none, 1, 152, :_reduce_none, 1, 153, :_reduce_none, 2, 153, :_reduce_none, 3, 153, :_reduce_none, 3, 155, :_reduce_none, 1, 156, :_reduce_94, 2, 156, :_reduce_none, 1, 157, :_reduce_none, 1, 157, :_reduce_none, 1, 154, :_reduce_none, 1, 154, :_reduce_none, 1, 160, :_reduce_none, 2, 160, :_reduce_none, 3, 161, :_reduce_none, 1, 162, :_reduce_none, 1, 163, :_reduce_none, 2, 163, :_reduce_none, 3, 164, :_reduce_none, 3, 165, :_reduce_none, 1, 159, :_reduce_none, 2, 159, :_reduce_none, 2, 167, :_reduce_none, 3, 167, :_reduce_none, 1, 168, :_reduce_none, 1, 158, :_reduce_none, 2, 158, :_reduce_none, 3, 169, :_reduce_none, 1, 170, :_reduce_none, 1, 170, :_reduce_none, 1, 170, :_reduce_none, 1, 170, :_reduce_none, 1, 170, :_reduce_none, 1, 166, :_reduce_none, 1, 166, :_reduce_none, 1, 166, :_reduce_none, 1, 166, :_reduce_none, 1, 166, :_reduce_none, 1, 166, :_reduce_none, 1, 166, :_reduce_none, 1, 166, :_reduce_none, 1, 166, :_reduce_none, 1, 166, :_reduce_none, 1, 171, :_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, 171, :_reduce_none, 1, 171, :_reduce_none, 1, 172, :_reduce_none, 1, 172, :_reduce_none, 1, 172, :_reduce_none, 1, 172, :_reduce_none, 1, 172, :_reduce_none, 1, 172, :_reduce_none, 1, 118, :_reduce_none, 1, 118, :_reduce_none, 1, 175, :_reduce_148, 3, 185, :_reduce_none, 3, 185, :_reduce_none, 3, 185, :_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, 2, 177, :_reduce_none, 2, 177, :_reduce_none, 3, 187, :_reduce_none, 3, 187, :_reduce_none, 3, 187, :_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, 178, :_reduce_none, 1, 178, :_reduce_none, 3, 188, :_reduce_none, 3, 188, :_reduce_none, 3, 188, :_reduce_none, 1, 179, :_reduce_none, 3, 189, :_reduce_none, 3, 189, :_reduce_none, 3, 189, :_reduce_none, 1, 180, :_reduce_none, 3, 190, :_reduce_none, 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, 183, :_reduce_none, 3, 193, :_reduce_none, 3, 193, :_reduce_none, 3, 193, :_reduce_none, 5, 199, :_reduce_none, 6, 199, :_reduce_none, 6, 199, :_reduce_none, 7, 199, :_reduce_none, 4, 199, :_reduce_none, 4, 199, :_reduce_none, 4, 199, :_reduce_none, 4, 199, :_reduce_none, 3, 199, :_reduce_none, 1, 173, :_reduce_none, 3, 174, :_reduce_none, 3, 174, :_reduce_none, 3, 174, :_reduce_none, 1, 184, :_reduce_none, 1, 113, :_reduce_none, 2, 113, :_reduce_none, 3, 200, :_reduce_none, 1, 200, :_reduce_none, 3, 200, :_reduce_none, 1, 151, :_reduce_none, 1, 151, :_reduce_none, 2, 202, :_reduce_none, 2, 202, :_reduce_none, 5, 202, :_reduce_none, 5, 202, :_reduce_none, 2, 202, :_reduce_none, 3, 202, :_reduce_none, 3, 202, :_reduce_none, 3, 202, :_reduce_none, 3, 202, :_reduce_none, 3, 202, :_reduce_none, 3, 202, :_reduce_none, 3, 202, :_reduce_none, 3, 202, :_reduce_none, 3, 202, :_reduce_none, 3, 202, :_reduce_none, 3, 201, :_reduce_none, 1, 201, :_reduce_none, 1, 201, :_reduce_none, 1, 204, :_reduce_none, 1, 204, :_reduce_none, 3, 206, :_reduce_none, 3, 206, :_reduce_none, 3, 206, :_reduce_none, 3, 206, :_reduce_none, 3, 206, :_reduce_none, 3, 205, :_reduce_none, 1, 205, :_reduce_none, 1, 205, :_reduce_none, 1, 205, :_reduce_none, 1, 129, :_reduce_none, 2, 129, :_reduce_none, 1, 203, :_reduce_none, 3, 203, :_reduce_none, 2, 207, :_reduce_none, 1, 207, :_reduce_none, 0, 146, :_reduce_none, 5, 146, :_reduce_none, 1, 208, :_reduce_none, 3, 208, :_reduce_none, 5, 147, :_reduce_none, 1, 209, :_reduce_none, 3, 209, :_reduce_none, 3, 209, :_reduce_none, 3, 209, :_reduce_none, 5, 209, :_reduce_none, 5, 209, :_reduce_none, 5, 209, :_reduce_none, 5, 209, :_reduce_none, 1, 211, :_reduce_none, 1, 211, :_reduce_none, 0, 117, :_reduce_none, 5, 117, :_reduce_none, 2, 117, :_reduce_none, 1, 210, :_reduce_none, 3, 210, :_reduce_none, 1, 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, 1, 216, :_reduce_none, 1, 216, :_reduce_none, 1, 139, :_reduce_none, 3, 139, :_reduce_none, 3, 139, :_reduce_none, 1, 217, :_reduce_none, 3, 217, :_reduce_none, 1, 217, :_reduce_none, 1, 217, :_reduce_none, 1, 140, :_reduce_none, 3, 140, :_reduce_none, 3, 140, :_reduce_none, 1, 219, :_reduce_none, 1, 219, :_reduce_none, 3, 219, :_reduce_none, 1, 141, :_reduce_none, 3, 141, :_reduce_none, 3, 141, :_reduce_none, 1, 220, :_reduce_none, 1, 220, :_reduce_none, 3, 220, :_reduce_none, 3, 220, :_reduce_none, 1, 142, :_reduce_none, 3, 142, :_reduce_none, 3, 142, :_reduce_none, 1, 126, :_reduce_none, 3, 126, :_reduce_none, 3, 126, :_reduce_none, 1, 221, :_reduce_none, 3, 221, :_reduce_none, 3, 222, :_reduce_none, 1, 125, :_reduce_none, 1, 125, :_reduce_none, 3, 223, :_reduce_none, 0, 224, :_reduce_none, 1, 224, :_reduce_none, 2, 224, :_reduce_none, 1, 124, :_reduce_none, 1, 150, :_reduce_none, 1, 150, :_reduce_none, 1, 218, :_reduce_none ] racc_reduce_n = 376 racc_shift_n = 633 racc_action_table = [ 574, 501, 476, 159, 397, 590, 473, 469, 471, 146, 229, 130, 9, 576, 1, 572, 58, 543, 67, 379, 540, 383, 600, 541, 542, 385, 29, 451, 523, 390, 22, 115, 11, 4, 499, 185, 537, 511, 51, 515, 516, 497, 228, 514, 51, 443, 61, 571, 23, 152, 154, 46, 49, 316, 30, 147, 77, 80, 83, 188, 117, 92, 304, 308, 398, 110, 112, 115, 117, 529, 117, 523, 110, 115, 112, 573, 117, 152, 154, 537, 511, 75, 515, 516, 272, 156, 117, 280, 284, 286, 534, 162, 115, 296, 46, 49, 316, 230, 112, 77, 80, 83, 188, 115, 92, 304, 308, 435, 110, 112, 115, 117, 529, 156, 495, 627, 214, 101, 433, 108, 211, 381, 148, 150, 459, 466, 482, 67, 391, 376, 280, 284, 286, 534, 117, 101, 296, 133, 213, 138, 112, 331, 212, 73, 152, 154, 458, 51, 124, 126, 148, 150, 393, 77, 80, 83, 274, 138, 92, 95, 99, 152, 154, 101, 112, 467, 152, 154, 87, 90, 110, 77, 80, 83, 110, 75, 92, 95, 99, 128, 156, 77, 325, 326, 134, 100, 87, 90, 152, 154, 568, 152, 154, 75, 46, 49, 395, 156, 337, 77, 80, 83, 156, 396, 92, 95, 99, 236, 110, 152, 154, 419, 157, 158, 87, 90, 149, 148, 150, 151, 153, 75, 321, 322, 156, 236, 92, 156, 334, 247, 388, 170, 387, 217, 148, 150, 238, 127, 164, 148, 150, 46, 49, 152, 154, 156, 157, 158, -373, 257, 149, 101, 250, 151, 153, 253, 255, 239, 171, 321, 322, 148, 150, 92, 148, 150, 493, 139, 241, 77, 80, 83, 140, 138, 92, -374, 16, 155, 17, 156, 95, 99, 148, 150, 217, 349, 350, 77, 80, 83, 217, 75, 92, 95, 99, 399, 77, 80, 83, 239, 217, 92, 87, 90, 570, 110, 112, 115, 117, 75, 400, 155, 491, 101, 321, 322, 148, 150, 92, 143, 77, 80, 83, 401, 144, 92, 77, 80, 83, 321, 322, 92, 217, 92, 402, 138, 77, 80, 83, 217, 417, 92, 75, 321, 322, 217, 403, 92, 75, 77, 80, 83, 339, 340, 92, 95, 99, 217, 75, 77, 325, 326, 404, 237, 87, 90, 341, 342, 77, 80, 83, 75, 217, 92, 405, 77, 80, 83, 25, 26, 92, 77, 80, 83, 101, 406, 92, 77, 325, 326, 75, 46, 49, 77, 80, 83, 407, 75, 92, 408, 321, 322, 101, 75, 92, 385, 138, 481, 77, 80, 83, 351, 352, 92, 102, 75, 168, 169, 166, 167, 77, 80, 83, 409, 100, 92, 95, 99, 101, 16, 75, 17, 410, 46, 49, 87, 90, 217, 77, 80, 83, 268, 75, 92, 95, 99, 101, 598, 599, 210, 138, 39, 267, 87, 90, 46, 49, 359, 360, 35, 75, 35, 272, 274, 77, 80, 83, 246, 138, 92, 95, 99, 245, 77, 80, 83, 140, 101, 92, 87, 90, 144, 77, 80, 83, 217, 75, 92, 95, 99, 139, 51, 143, 51, 244, 75, 102, 87, 90, 100, 46, 49, 46, 49, 75, 367, 368, 56, 46, 49, 101, 124, 126, 77, 80, 83, 243, 35, 92, 95, 99, 77, 80, 83, 258, 35, 92, 259, 87, 90, 430, 431, 100, 101, 260, 75, 117, 46, 49, 428, 429, 46, 49, 75, 261, 217, 77, 80, 83, 51, 115, 92, 95, 99, 242, 100, 101, 51, 46, 49, 241, 87, 90, 436, 46, 49, 46, 49, 75, 77, 80, 83, 426, 427, 92, 95, 99, 437, 100, 101, 438, 77, 80, 83, 87, 90, 92, 46, 49, 415, 439, 75, 77, 80, 83, 415, 440, 92, 95, 99, 441, 138, 240, 75, 414, 325, 326, 87, 90, 415, 414, 325, 326, 444, 75, 77, 80, 83, 424, 425, 92, 95, 99, 445, 77, 325, 326, 77, 325, 326, 87, 90, 617, 618, 619, 316, 446, 75, 77, 80, 83, 188, 447, 92, 304, 308, 448, 110, 112, 115, 117, 128, 422, 423, 77, 80, 83, 420, 421, 92, 124, 126, 127, 110, 112, 115, 117, 449, 120, 280, 284, 286, -103, 631, 632, 296, 203, 124, 126, 77, 80, 83, 188, 239, 92, 124, 126, 127, 110, 112, 115, 117, 185, 120, 77, 80, 83, 452, 453, 92, 77, 325, 326, 110, 112, 115, 117, 77, 80, 83, 454, 455, 92, 77, 325, 326, 110, 112, 115, 117, 77, 80, 83, 456, 457, 92, 77, 325, 326, 110, 112, 115, 117, 77, 80, 83, 238, 461, 92, 77, 325, 326, 110, 112, 115, 117, 328, 462, 321, 322, 463, 262, 92, 168, 169, 166, 167, 324, 77, 325, 326, 168, 169, 166, 167, 168, 169, 166, 167, 168, 169, 166, 167, 168, 169, 166, 167, 168, 169, 166, 167, 168, 169, 166, 167, 168, 169, 166, 167, 138, 171, 147, 208, 102, 475, 165, 478, 480, 263, 162, 484, 485, 486, 264, 488, 145, 138, 135, 51, 109, 69, 66, 502, 110, 504, 112, 506, 115, 508, 117, 510, 35, 538, 539, 61, 57, 545, 546, 547, 265, 549, -103, 551, 110, 553, 112, 555, 115, 557, 117, 559, 560, 561, 562, 563, 54, 162, 566, 266, 34, 170, 112, 31, 28, 578, 579, 580, 581, 117, 117, 117, 267, 583, 584, 585, 586, 587, 588, 589, 24, 592, 593, 110, 596, 268, 127, 185, 21, 603, 604, 75, 570, 606, 608, 609, 610, 319, 616, 276, 15, 621, 14, 622, 12, 624, 625, 626, 8, 7, 629, 630, 277, 117 ] racc_action_check = [ 528, 431, 406, 87, 278, 567, 404, 402, 403, 85, 162, 62, 4, 528, 0, 526, 42, 480, 52, 262, 480, 264, 579, 480, 480, 265, 21, 368, 528, 270, 14, 262, 4, 0, 429, 264, 528, 528, 52, 528, 528, 427, 162, 459, 42, 360, 62, 526, 14, 226, 226, 528, 528, 528, 21, 85, 528, 528, 528, 528, 431, 528, 528, 528, 278, 528, 528, 528, 528, 528, 406, 459, 402, 404, 403, 526, 480, 224, 224, 459, 459, 87, 459, 459, 459, 226, 368, 528, 528, 528, 528, 567, 429, 528, 459, 459, 459, 165, 427, 459, 459, 459, 459, 360, 459, 459, 459, 352, 459, 459, 459, 459, 459, 224, 425, 621, 146, 165, 350, 59, 145, 263, 226, 226, 390, 400, 410, 59, 271, 259, 459, 459, 459, 459, 263, 621, 459, 69, 146, 165, 259, 243, 145, 54, 227, 227, 390, 59, 243, 243, 224, 224, 274, 165, 165, 165, 275, 621, 165, 165, 165, 222, 222, 54, 352, 401, 218, 218, 165, 165, 425, 621, 621, 621, 350, 165, 621, 621, 621, 410, 227, 400, 400, 400, 69, 54, 621, 621, 220, 220, 516, 318, 318, 621, 54, 54, 276, 222, 247, 54, 54, 54, 218, 277, 54, 54, 54, 318, 247, 172, 172, 342, 172, 172, 54, 54, 172, 227, 227, 172, 172, 54, 401, 401, 220, 172, 401, 318, 245, 187, 267, 97, 267, 158, 222, 222, 281, 245, 90, 218, 218, 516, 516, 86, 86, 172, 86, 86, 97, 188, 86, 164, 188, 86, 86, 188, 188, 282, 100, 342, 342, 220, 220, 342, 318, 318, 423, 80, 285, 158, 158, 158, 80, 164, 158, 100, 11, 172, 11, 86, 90, 90, 172, 172, 157, 251, 251, 164, 164, 164, 156, 158, 164, 164, 164, 287, 188, 188, 188, 519, 155, 188, 164, 164, 519, 188, 188, 188, 188, 164, 288, 86, 421, 166, 423, 423, 86, 86, 423, 83, 157, 157, 157, 291, 83, 157, 156, 156, 156, 419, 419, 156, 154, 419, 294, 166, 155, 155, 155, 153, 340, 155, 157, 493, 493, 152, 298, 493, 156, 166, 166, 166, 248, 248, 166, 166, 166, 151, 155, 421, 421, 421, 301, 173, 166, 166, 249, 249, 154, 154, 154, 166, 150, 154, 304, 153, 153, 153, 18, 18, 153, 152, 152, 152, 167, 305, 152, 340, 340, 340, 154, 515, 515, 151, 151, 151, 308, 153, 151, 309, 238, 238, 81, 152, 238, 409, 167, 409, 150, 150, 150, 252, 252, 150, 57, 151, 173, 173, 173, 173, 167, 167, 167, 311, 81, 167, 167, 167, 168, 26, 150, 26, 313, 81, 81, 167, 167, 149, 81, 81, 81, 315, 167, 81, 81, 81, 169, 577, 577, 135, 168, 28, 316, 81, 81, 57, 57, 254, 254, 135, 81, 28, 211, 211, 168, 168, 168, 186, 169, 168, 168, 168, 184, 149, 149, 149, 321, 606, 149, 168, 168, 322, 169, 169, 169, 148, 168, 169, 169, 169, 325, 135, 326, 28, 183, 149, 109, 169, 169, 606, 135, 135, 28, 28, 169, 256, 256, 34, 606, 606, 611, 398, 398, 606, 606, 606, 182, 34, 606, 606, 606, 148, 148, 148, 189, 511, 148, 190, 606, 606, 348, 348, 611, 616, 191, 606, 261, 109, 109, 347, 347, 611, 611, 148, 192, 217, 611, 611, 611, 34, 258, 611, 611, 611, 181, 616, 623, 511, 34, 34, 179, 611, 611, 353, 616, 616, 511, 511, 611, 616, 616, 616, 346, 346, 616, 616, 616, 354, 623, 101, 355, 217, 217, 217, 616, 616, 217, 623, 623, 319, 356, 616, 623, 623, 623, 580, 357, 623, 623, 623, 358, 101, 178, 217, 319, 319, 319, 623, 623, 485, 580, 580, 580, 361, 623, 101, 101, 101, 345, 345, 101, 101, 101, 362, 485, 485, 485, 268, 268, 268, 101, 101, 609, 609, 609, 214, 363, 101, 214, 214, 214, 214, 364, 214, 214, 214, 365, 214, 214, 214, 214, 61, 344, 344, 61, 61, 61, 343, 343, 61, 61, 61, 61, 61, 61, 61, 61, 366, 61, 214, 214, 214, 102, 626, 626, 214, 102, 240, 240, 102, 102, 102, 102, 176, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 250, 250, 250, 369, 370, 250, 417, 417, 417, 250, 250, 250, 250, 257, 257, 257, 371, 372, 257, 573, 573, 573, 257, 257, 257, 257, 253, 253, 253, 373, 374, 253, 571, 571, 571, 253, 253, 253, 253, 255, 255, 255, 175, 392, 255, 491, 491, 491, 255, 255, 255, 255, 241, 393, 241, 241, 397, 193, 241, 234, 234, 234, 234, 239, 239, 239, 239, 96, 96, 96, 96, 614, 614, 614, 614, 235, 235, 235, 235, 231, 231, 231, 231, 232, 232, 232, 232, 233, 233, 233, 233, 628, 628, 628, 628, 147, 138, 137, 114, 107, 405, 91, 407, 408, 196, 88, 412, 414, 416, 199, 418, 84, 75, 70, 67, 60, 53, 51, 432, 433, 434, 435, 442, 443, 450, 451, 458, 48, 461, 462, 47, 41, 487, 489, 490, 201, 492, 35, 494, 495, 496, 497, 498, 499, 500, 501, 503, 505, 507, 509, 510, 33, 512, 514, 202, 27, 517, 246, 24, 20, 534, 535, 538, 539, 540, 541, 542, 203, 548, 550, 552, 554, 556, 558, 564, 16, 569, 570, 244, 572, 205, 242, 266, 13, 581, 582, 591, 594, 600, 601, 602, 603, 228, 607, 212, 8, 613, 6, 615, 5, 617, 618, 619, 3, 2, 624, 625, 213, 543 ] racc_action_pointer = [ 13, nil, 879, 897, 11, 875, 864, nil, 889, nil, nil, 252, nil, 849, 29, nil, 861, nil, 356, nil, 823, 25, nil, nil, 827, nil, 405, 818, 450, nil, nil, nil, nil, 813, 506, 781, nil, nil, nil, nil, nil, 817, 1, nil, nil, nil, nil, 774, 810, nil, nil, 810, -5, 763, 142, nil, nil, 403, nil, 104, 801, 597, -4, nil, nil, nil, nil, 765, nil, 136, 758, nil, nil, nil, nil, 763, nil, nil, nil, nil, 210, 381, nil, 262, 772, -24, 237, 2, 712, nil, 217, 749, nil, nil, nil, nil, 686, 202, nil, nil, 229, 558, 622, nil, nil, nil, nil, 782, nil, 485, nil, nil, nil, nil, 741, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 448, nil, 712, 761, nil, nil, nil, nil, nil, nil, 108, 104, 746, 464, 416, 351, 336, 324, 318, 311, 279, 269, 263, 212, nil, nil, nil, 9, nil, 230, 96, 292, 363, 407, 425, nil, nil, 203, 341, nil, 681, 628, nil, 547, 505, nil, 499, 461, 439, 417, nil, 412, 174, 239, 469, 472, 519, 489, 696, nil, nil, 743, nil, nil, 748, nil, 774, 793, 806, nil, 819, nil, nil, nil, nil, nil, 420, 853, 866, 581, nil, nil, 524, 160, nil, 182, nil, 155, nil, 71, nil, 43, 138, 874, nil, nil, 698, 702, 706, 678, 694, nil, nil, 342, 701, 614, 690, 810, 85, 806, 172, 784, 142, 292, 306, 637, 225, 351, 663, 397, 676, 445, 650, 482, 73, nil, 467, -37, 65, -35, -29, 806, 176, 570, nil, -4, 114, nil, nil, 71, 113, 160, 167, -19, nil, nil, 181, 202, nil, nil, 213, nil, 281, 227, nil, nil, 240, nil, nil, 251, nil, nil, nil, 263, nil, nil, 279, nil, nil, 319, 302, nil, nil, 341, 320, nil, 368, nil, 349, nil, 386, 397, nil, 185, 547, nil, 414, 419, nil, nil, 433, 435, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 330, nil, 201, 597, 592, 558, 512, 479, 470, nil, 108, nil, 97, 503, 517, 520, 530, 536, 540, nil, 35, 553, 563, 576, 582, 586, 607, nil, 17, 637, 638, 650, 651, 663, 664, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 112, nil, 655, 714, nil, nil, nil, 749, 448, nil, 124, 164, 6, 7, 5, 730, 1, 733, 737, 351, 125, nil, 786, nil, 740, nil, 742, 643, 744, 271, nil, 302, nil, 256, nil, 104, nil, 31, nil, 24, nil, -9, 752, 747, 754, 748, nil, nil, nil, nil, nil, nil, 756, 749, nil, nil, nil, nil, nil, nil, 758, 750, nil, nil, nil, nil, nil, nil, 785, 42, nil, 789, 811, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 7, nil, nil, nil, nil, 567, nil, 766, nil, 767, 768, 682, 770, 285, 772, 767, 774, 768, 776, 769, 778, 770, nil, 780, nil, 781, nil, 782, nil, 783, 808, 514, 759, nil, 833, 339, 189, 821, nil, 244, nil, nil, nil, nil, nil, nil, -8, nil, -1, nil, nil, nil, nil, nil, 761, 822, nil, nil, 844, 800, 789, 790, 791, 833, nil, nil, nil, nil, 802, nil, 803, nil, 804, nil, 805, nil, 806, nil, 807, nil, nil, nil, nil, nil, 829, nil, nil, 4, nil, 841, 801, 669, 872, 656, nil, nil, nil, 355, nil, 10, 553, 817, 865, nil, nil, nil, nil, nil, nil, nil, nil, 801, nil, nil, 821, nil, nil, nil, nil, nil, 838, 869, 801, 828, nil, nil, 456, 842, nil, 548, nil, 489, nil, 844, 690, 878, 512, 811, 812, 813, nil, 114, nil, 535, 813, 814, 589, nil, 710, nil, nil, nil, nil ] racc_action_default = [ -376, -2, -376, -376, -6, -376, -13, -4, -376, -5, -7, -376, -1, -376, -376, 633, -376, -12, -376, -9, -18, -376, -15, -14, -376, -8, -376, -21, -376, -17, -16, -11, -10, -376, -376, -112, -89, -19, -90, -20, -108, -376, -376, -98, -99, -100, -146, -376, -376, -147, -87, -94, -88, -82, -376, -22, -23, -376, -110, -376, -376, -376, -376, -104, -109, -101, -95, -376, -91, -376, -376, -281, -282, -25, -24, -284, -248, -152, -26, -253, -376, -27, -254, -376, -376, -376, -376, -376, -305, -273, -376, -376, -167, -283, -274, -271, -251, -31, -286, -272, -289, -376, -112, -96, -93, -113, -97, -376, -111, -376, -191, -122, -204, -123, -376, -217, -124, -230, -125, -126, -247, -127, -128, -129, -182, -130, -183, -187, -148, -121, -102, -105, -92, -84, -83, -376, -3, -285, -289, -153, -168, -249, -373, -154, -169, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -256, -255, -30, -376, -259, -376, -376, -376, -376, -376, -376, -32, -288, -376, -376, -144, -133, -122, -145, -134, -123, -116, -135, -124, -136, -125, -243, -137, -126, -376, -138, -127, -376, -139, -128, -117, -140, -129, -118, -141, -119, -142, -131, -120, -148, -143, -132, -114, -106, -107, -85, -86, -376, -376, -376, -376, -287, -278, -376, -263, -279, -264, -275, -265, -276, -260, -277, -261, -262, -376, -307, -252, -250, -268, -269, -266, -267, -280, -270, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -115, -376, -376, -376, -376, -376, -376, -376, -376, -63, -376, -376, -62, -33, -290, -34, -376, -376, -357, -336, -322, -317, -310, -343, -328, -316, -334, -376, -313, -54, -323, -319, -55, -329, -325, -56, -375, -335, -331, -57, -342, -337, -312, -58, -353, -344, -318, -59, -354, -340, -324, -348, -60, -350, -330, -311, -347, -61, -376, -376, -171, -376, -376, -155, -157, -376, -376, -185, -172, -170, -189, -186, -184, -193, -190, -188, -206, -194, -192, -166, -376, -181, -376, -376, -376, -376, -376, -376, -376, -203, -376, -216, -376, -376, -376, -376, -376, -376, -376, -229, -376, -376, -376, -376, -376, -376, -376, -242, -376, -376, -376, -376, -376, -376, -376, -219, -207, -205, -232, -220, -218, -233, -231, -246, -244, -150, -245, -151, -149, -156, -376, -29, -68, -376, -64, -28, -258, -376, -376, -257, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -303, -376, -308, -152, -304, -376, -376, -376, -376, -164, -376, -179, -376, -201, -376, -214, -376, -227, -376, -240, -376, -376, -376, -376, -376, -163, -178, -200, -213, -226, -239, -376, -376, -165, -180, -202, -215, -228, -241, -376, -376, -162, -177, -199, -212, -225, -238, -376, -376, -69, -376, -376, -359, -358, -314, -315, -321, -320, -327, -326, -333, -332, -339, -338, -355, -346, -345, -356, -341, -376, -349, -352, -351, -306, -376, -158, -376, -173, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -195, -376, -208, -376, -221, -376, -234, -376, -376, -376, -305, -53, -44, -376, -376, -31, -72, -310, -70, -36, -37, -372, -38, -39, -360, -40, -376, -367, -363, -41, -366, -42, -369, -376, -35, -43, -376, -376, -376, -376, -376, -376, -309, -160, -175, -159, -376, -174, -376, -196, -376, -209, -376, -222, -376, -235, -376, -197, -210, -223, -236, -66, -376, -49, -67, -305, -52, -50, -376, -376, -376, -376, -44, -71, -65, -376, -370, -376, -376, -292, -376, -161, -176, -198, -211, -224, -237, -45, -47, -376, -51, -365, -376, -364, -362, -361, -368, -371, -73, -376, -295, -376, -291, -46, -376, -75, -294, -376, -293, -74, -77, -376, -80, -376, -376, -296, -297, -298, -78, -376, -48, -76, -376, -376, -376, -81, -79, -299, -300, -301, -302 ] racc_goto_table = [ 96, 111, 160, 161, 116, 177, 412, 123, 273, 48, 37, 199, 269, 172, 520, 48, 55, 114, 64, 65, 103, 122, 104, 91, 76, 620, 19, 96, 3, 68, 392, 63, 528, 59, 113, 97, 68, 620, 107, 611, 121, 32, 176, 118, 132, 182, 131, 173, 196, 623, 91, 141, 287, 615, 607, 275, 62, 119, 180, 271, 460, 218, 193, 220, 81, 222, 206, 224, 191, 226, 227, 194, 103, 197, 207, 179, 394, 64, 65, 78, 202, 190, 483, 575, 184, 216, 74, 219, 18, 221, 107, 223, 10, 225, 2, 136, 70, 53, 187, 33, 201, 205, 175, 178, 181, 183, 186, 189, 192, 195, 173, 231, 232, 233, 234, 235, 48, 209, 198, 200, 204, 174, 27, 20, 163, 137, 13, 6, 248, 318, 215, 582, 601, 5, 256, 544, 595, 577, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 254, nil, nil, nil, nil, nil, 282, nil, nil, nil, nil, nil, nil, 249, nil, nil, nil, nil, nil, 252, nil, nil, nil, nil, nil, 384, nil, 386, nil, nil, nil, 323, nil, nil, nil, 327, 251, nil, 332, 285, nil, nil, 343, nil, nil, 353, nil, 361, 348, 369, nil, 358, nil, 366, nil, 374, nil, nil, nil, 378, 389, 382, 347, 320, nil, 357, 329, 365, nil, 373, 375, nil, nil, nil, 380, 344, 330, 336, 354, 335, 362, 346, 370, nil, 356, nil, 364, nil, 372, nil, 377, nil, 333, nil, nil, 338, nil, nil, 345, nil, nil, 355, nil, 363, nil, 371, nil, nil, 518, nil, nil, 411, nil, nil, nil, nil, nil, nil, nil, 602, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 416, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 479, nil, nil, 450, 418, nil, nil, nil, nil, 442, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 434, nil, nil, nil, nil, nil, nil, nil, nil, 465, 464, nil, nil, nil, nil, 432, nil, nil, nil, nil, nil, 477, nil, nil, nil, nil, 487, nil, nil, nil, 490, nil, nil, 474, nil, nil, nil, nil, nil, nil, nil, nil, nil, 468, nil, nil, 500, nil, nil, nil, nil, 472, nil, nil, nil, nil, nil, nil, 498, nil, nil, 489, nil, nil, nil, 492, 509, 470, 519, nil, nil, nil, 507, nil, nil, 496, nil, nil, nil, nil, nil, nil, nil, 505, nil, nil, nil, nil, nil, nil, 494, nil, nil, nil, 411, 256, 565, nil, 503, nil, 548, 285, nil, nil, nil, nil, nil, nil, nil, 517, nil, nil, nil, nil, nil, nil, 558, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 556, nil, nil, nil, nil, nil, nil, 550, nil, 519, nil, nil, nil, nil, nil, nil, nil, 554, nil, nil, nil, nil, nil, 591, nil, nil, nil, 348, 358, 366, 374, nil, 552, 48, 564, nil, nil, 567, 569, nil, nil, nil, 285, nil, nil, nil, nil, 605, nil, nil, 517, nil, 594, nil, 597, nil, nil, nil, nil, nil, nil, 411, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 628 ] racc_goto_check = [ 56, 81, 34, 22, 83, 104, 115, 88, 24, 23, 15, 78, 48, 109, 26, 23, 15, 71, 72, 66, 59, 87, 62, 55, 105, 54, 14, 56, 1, 60, 51, 69, 50, 58, 82, 23, 60, 54, 23, 53, 86, 14, 81, 84, 60, 83, 69, 56, 88, 53, 55, 105, 39, 37, 36, 25, 68, 85, 71, 20, 52, 109, 87, 109, 18, 109, 74, 109, 75, 109, 109, 76, 59, 77, 62, 82, 48, 72, 66, 17, 79, 86, 80, 26, 84, 110, 16, 110, 13, 110, 23, 110, 12, 110, 11, 10, 9, 8, 85, 7, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 56, 56, 56, 56, 56, 56, 23, 15, 100, 101, 102, 103, 6, 5, 106, 108, 4, 3, 81, 109, 112, 113, 114, 2, 88, 116, 127, 129, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 87, nil, nil, nil, nil, nil, 81, nil, nil, nil, nil, nil, nil, 82, nil, nil, nil, nil, nil, 86, nil, nil, nil, nil, nil, 78, nil, 78, nil, nil, nil, 81, nil, nil, nil, 83, 85, nil, 83, 82, nil, nil, 81, nil, nil, 81, nil, 81, 88, 81, nil, 88, nil, 88, nil, 88, nil, nil, nil, 88, 81, 88, 87, 82, nil, 87, 82, 87, nil, 87, 87, nil, nil, nil, 87, 82, 84, 86, 82, 84, 82, 86, 82, nil, 86, nil, 86, nil, 86, nil, 86, nil, 85, nil, nil, 85, nil, nil, 85, nil, nil, 85, nil, 85, nil, 85, nil, nil, 24, nil, nil, 81, nil, nil, nil, nil, nil, nil, nil, 115, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 81, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 104, nil, nil, 88, 82, nil, nil, nil, nil, 87, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 86, nil, nil, nil, nil, nil, nil, nil, nil, 81, 83, nil, nil, nil, nil, 85, nil, nil, nil, nil, nil, 88, nil, nil, nil, nil, 81, nil, nil, nil, 81, nil, nil, 87, nil, nil, nil, nil, nil, nil, nil, nil, nil, 82, nil, nil, 88, nil, nil, nil, nil, 86, nil, nil, nil, nil, nil, nil, 87, nil, nil, 82, nil, nil, nil, 82, 88, 85, 81, nil, nil, nil, 87, nil, nil, 86, nil, nil, nil, nil, nil, nil, nil, 86, nil, nil, nil, nil, nil, nil, 85, nil, nil, nil, 81, 88, 22, nil, 85, nil, 81, 82, nil, nil, nil, nil, nil, nil, nil, 23, nil, nil, nil, nil, nil, nil, 88, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 87, nil, nil, nil, nil, nil, nil, 82, nil, 81, nil, nil, nil, nil, nil, nil, nil, 86, nil, nil, nil, nil, nil, 22, nil, nil, nil, 88, 88, 88, 88, nil, 85, 23, 15, nil, nil, 23, 23, nil, nil, nil, 82, nil, nil, nil, nil, 34, nil, nil, 23, nil, 81, nil, 81, nil, nil, nil, nil, nil, nil, 81, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 56 ] racc_goto_pointer = [ nil, 28, 133, 127, 120, 110, 102, 72, 64, 43, 25, 94, 88, 77, 15, -18, 32, 25, 10, nil, -152, nil, -85, -19, -203, -156, -445, nil, nil, nil, nil, nil, nil, nil, -85, nil, -546, -554, nil, -162, nil, nil, nil, nil, nil, nil, nil, nil, -199, nil, -427, -244, -332, -567, -586, -31, -54, nil, -9, -37, -23, nil, -35, nil, nil, nil, -29, nil, 9, -16, nil, -44, -30, nil, -41, -34, -31, -29, -91, -22, -328, -60, -27, -57, -18, -4, -21, -40, -54, nil, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 16, 17, 18, 19, -97, -30, 34, nil, 50, -88, -63, nil, -17, -408, -448, -313, -350, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, -435, nil, -397 ] racc_goto_default = [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 536, nil, 84, nil, 88, nil, 142, nil, nil, nil, 521, 522, 524, 525, 527, 531, 533, 93, 535, nil, nil, 512, 513, 289, 292, 295, 299, 303, 307, 312, 317, nil, 270, nil, nil, nil, nil, 612, 613, 614, 50, 52, 36, 38, 41, nil, 106, 43, 44, 45, 47, nil, nil, 60, nil, 40, 42, 105, nil, nil, nil, nil, nil, 129, 71, 72, nil, nil, 290, 293, 297, 300, 125, 311, 315, 281, nil, nil, nil, nil, nil, nil, 302, 306, 310, 314, 279, 283, nil, 79, 82, 85, 86, 89, 94, 98, nil, nil, nil, 413, 288, 291, 294, 298, 301, 305, 309, 313, 278, 526, 530, 532, nil ] 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_BLOCK => 38, :END_V_C_DOMAIN_TYPE_BLOCK => 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, :Plus_code => 58, :Minus_code => 59, :SYM_INTERVAL_DELIM => 60, :SYM_ELLIPSIS => 61, :V_REAL => 62, :SYM_TRUE => 63, :SYM_FALSE => 64, :V_CHARACTER => 65, :V_ISO8601_EXTENDED_DATE => 66, :V_ISO8601_EXTENDED_TIME => 67, :V_ISO8601_EXTENDED_DATE_TIME => 68, :V_ISO8601_DURATION => 69, :V_QUALIFIED_TERM_CODE_REF => 70, :V_URI => 71, :SYM_EXISTS => 72, :SYM_NOT => 73, "=" => 74, :SYM_AND => 75, :SYM_OR => 76, :SYM_XOR => 77, :SYM_IMPLIES => 78, :Slash_code => 79, "^" => 80, :SYM_EXISTENCE => 81, :SYM_CARDINALITY => 82, :Semicolon_code => 83, :SYM_ORDERED => 84, :SYM_UNORDERED => 85, :SYM_UNIQUE => 86, :SYM_OCCURRENCES => 87, :V_ISO8601_DATE_CONSTRAINT_PATTERN => 88, :V_ISO8601_TIME_CONSTRAINT_PATTERN => 89, :V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN => 90, :START_TERM_CODE_CONSTRAINT => 91, :END_TERM_CODE_CONSTRAINT => 92, :TERM_CODE => 93, :V_ISO8601_DURATION_CONSTRAINT_PATTERN => 94 } racc_use_result_var = true racc_nt_base = 95 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_BLOCK', 'END_V_C_DOMAIN_TYPE_BLOCK', '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', 'Plus_code', 'Minus_code', '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', '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 module_eval <<'.,.,', 'lib/parser.y', 73 def _reduce_19( val, _values, result ) result = {:language => val[1]} result end .,., # 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 module_eval <<'.,.,', 'lib/parser.y', 110 def _reduce_31( val, _values, result ) result = {:c_complex_object_id => {:type_identifier => val[0]}} result end .,., module_eval <<'.,.,', 'lib/parser.y', 114 def _reduce_32( val, _values, result ) result = {:c_complex_object_id => {:type_identifier => val[0], :V_LOCAL_TERM_CODE_REF => val[1]}} result end .,., # 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 module_eval <<'.,.,', 'lib/parser.y', 233 def _reduce_94( val, _values, result ) @@log.info("dADL::V_ATTRIBUTE_IDENTIFIER: #{val[0]} at #{@filename}") result end .,., # 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 module_eval <<'.,.,', 'lib/parser.y', 302 def _reduce_148( val, _values, result ) @@log.info("V_STRING: #{val[0]} at #{@filename}") result end .,., # 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 def _reduce_none( val, _values, result ) result end end # class Parser end # module ADL end # module OpenEHR