# # 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' require 'rubygems' require '../models/am.rb' $DEBUG = true module OpenEHR module ADL class Parser < Racc::Parser module_eval <<'..end lib/parser.y modeval..id3b9eed63e6', 'lib/parser.y', 1127 def assert_at(file,line, message = "") unless yield raise "Assertion failed !: #{file}, #{line}: #{message}" end end @@log = Logger.new('log/parser.log','daily') @@dadl_scanner = OpenEHR::ADL::Scanner::DADL::RootScanner.new @@cadl_scanner = OpenEHR::ADL::Scanner::CADL::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 @@log.info("#{__FILE__}:#{__LINE__}: scan_adl: COMMENT = #{$&} at #{@filename}:#{@lineno}") ; 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("#{__FILE__}:#{__LINE__}: scan_adl: @@adl_reserved = #{@@adl_reserved[word]} at #{@filename}:#{@lineno}") yield @@adl_reserved[word], @@adl_reserved[word] elsif #/\A[A-Z][a-zA-Z0-9_]*/ @@log.info("#{__FILE__}:#{__LINE__}: scan_adl: V_ATTRIBUTE_IDENTIFIER = #{$&} at #{@filename}:#{@lineno}") yield :V_ATTRIBUTE_IDENTIFIER, $& end 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) @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: entering cADL at #{@filename}:#{@lineno}") 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} @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: exiting cADL at #{@filename}:#{@lineno}") 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 else @in_interval = true 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 scanned = @@cadl_scanner.parse(data) when Yaparc::Result::OK if scanned.value[0] == :START_V_C_DOMAIN_TYPE_BLOCK @in_c_domain_type = true @adl_type.push(:dadl) yield scanned.value else yield scanned.value end data = scanned.input end case data when /\A\n/ # carriage return @lineno += 1 ; when /\A[ \t\r\f]+/ #just drop it ; when /\A--.*\n/ # single line comment @lineno += 1 @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: COMMENT = #{$&} at #{@filename}:#{@lineno}") ; ###----------/* 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) @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: entering cADL at #{@filename}:#{@lineno}") 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} @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: exiting cADL at #{@filename}:#{@lineno}") 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\|/ # | @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: @in_interval = #{@in_interval} at #{@filename}:#{@lineno}") if @in_interval @in_interval = false else # @in_interval = false @in_interval = true end @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: SYM_INTERVAL_DELIM at #{@filename}:#{@lineno}") 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 @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: V_ATTRIBUTE_IDENTIFIER = #{word} at #{@filename}:#{@lineno}") yield :V_ATTRIBUTE_IDENTIFIER, word #V_ATTRIBUTE_IDENTIFIER /\A[a-z][a-zA-Z0-9_]*/ end 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 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 @@log.info("#{__FILE__}:#{__LINE__}: scan_dadl: COMMENT = #{$&} at #{@filename}:#{@lineno}") ; ###----------/* 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\|/ # | @@log.info("#{__FILE__}:#{__LINE__}: scan_dadl: @in_interval = #{@in_interval} at #{@filename}:#{@lineno}") if @in_interval @in_interval = false else # @in_interval = false @in_interval = true end @@log.info("#{__FILE__}:#{__LINE__}: scan_dadl: SYM_INTERVAL_DELIM at #{@filename}:#{@lineno}") 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 @@log.info("#{__FILE__}:#{__LINE__}: scan_term_constraint: COMMENT = #{$&} at #{@filename}:#{@lineno}") ; 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..id3b9eed63e6 ##### racc 1.4.5 generates ### racc_reduce_table = [ 0, 0, :racc_error, 2, 95, :_reduce_1, 1, 95, :_reduce_none, 8, 96, :_reduce_3, 2, 97, :_reduce_4, 2, 97, :_reduce_5, 1, 105, :_reduce_6, 2, 105, :_reduce_7, 3, 106, :_reduce_8, 1, 107, :_reduce_9, 3, 107, :_reduce_10, 3, 108, :_reduce_11, 1, 108, :_reduce_12, 0, 98, :_reduce_none, 2, 98, :_reduce_none, 2, 98, :_reduce_none, 2, 99, :_reduce_16, 2, 99, :_reduce_none, 0, 100, :_reduce_18, 2, 100, :_reduce_19, 2, 100, :_reduce_none, 0, 101, :_reduce_none, 2, 101, :_reduce_22, 2, 101, :_reduce_none, 2, 102, :_reduce_24, 2, 102, :_reduce_none, 1, 110, :_reduce_26, 1, 110, :_reduce_27, 5, 111, :_reduce_28, 5, 111, :_reduce_29, 2, 113, :_reduce_30, 1, 115, :_reduce_31, 2, 115, :_reduce_32, 1, 114, :_reduce_none, 1, 114, :_reduce_34, 1, 120, :_reduce_35, 1, 120, :_reduce_36, 1, 120, :_reduce_37, 1, 120, :_reduce_38, 1, 120, :_reduce_39, 1, 120, :_reduce_40, 1, 120, :_reduce_41, 1, 120, :_reduce_42, 1, 120, :_reduce_none, 1, 120, :_reduce_none, 3, 121, :_reduce_45, 4, 122, :_reduce_none, 3, 122, :_reduce_none, 6, 123, :_reduce_none, 2, 129, :_reduce_none, 2, 132, :_reduce_none, 3, 132, :_reduce_none, 2, 132, :_reduce_none, 1, 127, :_reduce_53, 1, 133, :_reduce_54, 1, 133, :_reduce_55, 1, 133, :_reduce_56, 1, 133, :_reduce_57, 1, 133, :_reduce_58, 1, 133, :_reduce_59, 1, 133, :_reduce_60, 1, 133, :_reduce_61, 1, 118, :_reduce_none, 1, 119, :_reduce_63, 2, 119, :_reduce_64, 5, 142, :_reduce_65, 5, 142, :_reduce_66, 5, 142, :_reduce_67, 2, 143, :_reduce_68, 3, 143, :_reduce_69, 1, 144, :_reduce_70, 2, 144, :_reduce_71, 1, 144, :_reduce_72, 0, 130, :_reduce_none, 2, 130, :_reduce_none, 0, 131, :_reduce_none, 2, 131, :_reduce_none, 1, 147, :_reduce_none, 2, 147, :_reduce_none, 3, 148, :_reduce_none, 1, 148, :_reduce_none, 3, 148, :_reduce_none, 0, 103, :_reduce_none, 2, 103, :_reduce_none, 2, 103, :_reduce_none, 2, 104, :_reduce_85, 2, 104, :_reduce_none, 1, 109, :_reduce_none, 1, 151, :_reduce_none, 1, 151, :_reduce_none, 1, 152, :_reduce_90, 2, 152, :_reduce_91, 3, 152, :_reduce_92, 3, 154, :_reduce_93, 1, 155, :_reduce_94, 2, 155, :_reduce_none, 1, 156, :_reduce_96, 1, 156, :_reduce_97, 1, 153, :_reduce_98, 1, 153, :_reduce_99, 1, 159, :_reduce_100, 2, 159, :_reduce_101, 3, 160, :_reduce_102, 1, 161, :_reduce_103, 1, 162, :_reduce_104, 2, 162, :_reduce_105, 3, 163, :_reduce_106, 3, 164, :_reduce_107, 1, 158, :_reduce_108, 2, 158, :_reduce_109, 2, 166, :_reduce_110, 3, 166, :_reduce_111, 1, 167, :_reduce_none, 1, 157, :_reduce_113, 2, 157, :_reduce_114, 3, 168, :_reduce_115, 1, 169, :_reduce_116, 1, 169, :_reduce_117, 1, 169, :_reduce_118, 1, 169, :_reduce_119, 1, 169, :_reduce_120, 1, 165, :_reduce_121, 1, 165, :_reduce_122, 1, 165, :_reduce_123, 1, 165, :_reduce_124, 1, 165, :_reduce_125, 1, 165, :_reduce_126, 1, 165, :_reduce_127, 1, 165, :_reduce_128, 1, 165, :_reduce_129, 1, 165, :_reduce_130, 1, 170, :_reduce_none, 1, 170, :_reduce_none, 1, 170, :_reduce_none, 1, 170, :_reduce_none, 1, 170, :_reduce_none, 1, 170, :_reduce_none, 1, 170, :_reduce_none, 1, 170, :_reduce_none, 1, 170, :_reduce_none, 1, 171, :_reduce_none, 1, 171, :_reduce_none, 1, 171, :_reduce_none, 1, 171, :_reduce_none, 1, 171, :_reduce_none, 1, 171, :_reduce_none, 1, 117, :_reduce_146, 1, 117, :_reduce_147, 1, 174, :_reduce_148, 3, 184, :_reduce_none, 3, 184, :_reduce_none, 3, 184, :_reduce_none, 1, 175, :_reduce_152, 2, 175, :_reduce_153, 2, 175, :_reduce_154, 3, 185, :_reduce_none, 3, 185, :_reduce_none, 3, 185, :_reduce_none, 5, 193, :_reduce_none, 6, 193, :_reduce_none, 6, 193, :_reduce_none, 7, 193, :_reduce_none, 4, 193, :_reduce_none, 4, 193, :_reduce_none, 4, 193, :_reduce_none, 4, 193, :_reduce_none, 3, 193, :_reduce_none, 1, 176, :_reduce_167, 2, 176, :_reduce_168, 2, 176, :_reduce_169, 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_182, 1, 177, :_reduce_183, 3, 187, :_reduce_none, 3, 187, :_reduce_none, 3, 187, :_reduce_none, 1, 178, :_reduce_none, 3, 188, :_reduce_none, 3, 188, :_reduce_none, 3, 188, :_reduce_none, 1, 179, :_reduce_none, 3, 189, :_reduce_none, 3, 189, :_reduce_none, 3, 189, :_reduce_none, 5, 195, :_reduce_none, 6, 195, :_reduce_none, 6, 195, :_reduce_none, 7, 195, :_reduce_none, 4, 195, :_reduce_none, 4, 195, :_reduce_none, 4, 195, :_reduce_none, 4, 195, :_reduce_none, 3, 195, :_reduce_none, 1, 180, :_reduce_none, 3, 190, :_reduce_none, 3, 190, :_reduce_none, 3, 190, :_reduce_none, 5, 196, :_reduce_none, 6, 196, :_reduce_none, 6, 196, :_reduce_none, 7, 196, :_reduce_none, 4, 196, :_reduce_none, 4, 196, :_reduce_none, 4, 196, :_reduce_none, 4, 196, :_reduce_none, 3, 196, :_reduce_none, 1, 181, :_reduce_none, 3, 191, :_reduce_none, 3, 191, :_reduce_none, 3, 191, :_reduce_none, 5, 197, :_reduce_none, 6, 197, :_reduce_none, 6, 197, :_reduce_none, 7, 197, :_reduce_none, 4, 197, :_reduce_none, 4, 197, :_reduce_none, 4, 197, :_reduce_none, 4, 197, :_reduce_none, 3, 197, :_reduce_none, 1, 182, :_reduce_230, 3, 192, :_reduce_none, 3, 192, :_reduce_none, 3, 192, :_reduce_none, 5, 198, :_reduce_none, 6, 198, :_reduce_none, 6, 198, :_reduce_none, 7, 198, :_reduce_none, 4, 198, :_reduce_none, 4, 198, :_reduce_none, 4, 198, :_reduce_none, 4, 198, :_reduce_none, 3, 198, :_reduce_none, 1, 172, :_reduce_243, 3, 173, :_reduce_none, 3, 173, :_reduce_none, 3, 173, :_reduce_none, 1, 183, :_reduce_247, 1, 112, :_reduce_none, 2, 112, :_reduce_none, 3, 199, :_reduce_none, 1, 199, :_reduce_none, 3, 199, :_reduce_none, 1, 150, :_reduce_none, 1, 150, :_reduce_none, 2, 201, :_reduce_none, 2, 201, :_reduce_none, 5, 201, :_reduce_none, 5, 201, :_reduce_none, 2, 201, :_reduce_none, 3, 201, :_reduce_none, 3, 201, :_reduce_none, 3, 201, :_reduce_none, 3, 201, :_reduce_none, 3, 201, :_reduce_none, 3, 201, :_reduce_none, 3, 201, :_reduce_none, 3, 201, :_reduce_none, 3, 201, :_reduce_none, 3, 201, :_reduce_none, 3, 200, :_reduce_none, 1, 200, :_reduce_none, 1, 200, :_reduce_none, 1, 203, :_reduce_none, 1, 203, :_reduce_none, 3, 205, :_reduce_none, 3, 205, :_reduce_none, 3, 205, :_reduce_none, 3, 205, :_reduce_none, 3, 205, :_reduce_none, 3, 204, :_reduce_none, 1, 204, :_reduce_none, 1, 204, :_reduce_none, 1, 204, :_reduce_none, 1, 128, :_reduce_none, 2, 128, :_reduce_none, 1, 202, :_reduce_none, 3, 202, :_reduce_none, 2, 206, :_reduce_288, 1, 206, :_reduce_289, 0, 145, :_reduce_290, 5, 145, :_reduce_291, 1, 207, :_reduce_292, 3, 207, :_reduce_293, 5, 146, :_reduce_294, 1, 208, :_reduce_none, 3, 208, :_reduce_none, 3, 208, :_reduce_none, 3, 208, :_reduce_none, 5, 208, :_reduce_none, 5, 208, :_reduce_none, 5, 208, :_reduce_none, 5, 208, :_reduce_none, 1, 210, :_reduce_none, 1, 210, :_reduce_none, 0, 116, :_reduce_none, 5, 116, :_reduce_306, 2, 116, :_reduce_none, 1, 209, :_reduce_none, 3, 209, :_reduce_none, 1, 211, :_reduce_none, 1, 211, :_reduce_none, 1, 211, :_reduce_none, 1, 134, :_reduce_none, 3, 134, :_reduce_none, 3, 134, :_reduce_none, 1, 212, :_reduce_none, 1, 212, :_reduce_none, 1, 212, :_reduce_none, 1, 135, :_reduce_none, 3, 135, :_reduce_none, 3, 135, :_reduce_none, 1, 213, :_reduce_none, 1, 213, :_reduce_none, 1, 213, :_reduce_none, 1, 136, :_reduce_none, 3, 136, :_reduce_none, 3, 136, :_reduce_none, 1, 214, :_reduce_none, 1, 214, :_reduce_none, 1, 214, :_reduce_none, 1, 137, :_reduce_none, 3, 137, :_reduce_none, 3, 137, :_reduce_none, 1, 215, :_reduce_none, 1, 215, :_reduce_none, 1, 215, :_reduce_none, 1, 138, :_reduce_none, 3, 138, :_reduce_none, 3, 138, :_reduce_none, 1, 216, :_reduce_none, 3, 216, :_reduce_none, 1, 216, :_reduce_none, 1, 216, :_reduce_none, 1, 139, :_reduce_none, 3, 139, :_reduce_none, 3, 139, :_reduce_none, 1, 218, :_reduce_none, 1, 218, :_reduce_none, 3, 218, :_reduce_none, 1, 140, :_reduce_none, 3, 140, :_reduce_none, 3, 140, :_reduce_none, 1, 219, :_reduce_353, 1, 219, :_reduce_354, 3, 219, :_reduce_355, 3, 219, :_reduce_356, 1, 141, :_reduce_357, 3, 141, :_reduce_358, 3, 141, :_reduce_359, 1, 126, :_reduce_none, 3, 126, :_reduce_none, 3, 126, :_reduce_none, 1, 220, :_reduce_none, 3, 220, :_reduce_none, 3, 221, :_reduce_365, 1, 125, :_reduce_none, 1, 125, :_reduce_none, 3, 222, :_reduce_none, 0, 223, :_reduce_none, 1, 223, :_reduce_none, 2, 223, :_reduce_none, 1, 124, :_reduce_none, 1, 149, :_reduce_none, 1, 149, :_reduce_374, 1, 217, :_reduce_375 ] racc_reduce_n = 376 racc_shift_n = 631 racc_action_table = [ 571, 442, 161, 472, 144, 588, 470, 466, 468, 129, 214, 570, 165, 573, 229, 10, 542, 170, 376, 539, 29, 58, 540, 541, 171, 458, 496, 386, 522, 385, 24, 116, 213, 494, -373, 12, 535, 510, 434, 513, 514, -374, 512, 569, 60, 492, 228, 457, 30, 50, 145, 46, 48, 317, 97, 98, 78, 81, 84, 188, 116, 94, 302, 307, 75, 109, 112, 114, 116, 529, 522, 116, 109, 114, 112, 116, 152, 154, 535, 510, 76, 513, 514, 272, 101, 116, 314, 279, 281, 532, 160, 114, 291, 46, 48, 317, 114, 625, 78, 81, 84, 188, 112, 94, 302, 307, 99, 109, 112, 114, 116, 529, 156, 432, 1, 46, 48, 101, 347, 348, 78, 81, 84, 230, 479, 94, 97, 98, 314, 279, 281, 532, 490, 5, 291, 88, 92, 152, 154, 138, 152, 154, 76, 101, 260, 374, 152, 154, 430, 148, 150, 133, 259, 78, 81, 84, 236, 114, 94, 97, 98, 152, 154, 67, 481, 138, 152, 154, 88, 92, 112, 152, 154, 156, 462, 76, 156, 127, 329, 78, 81, 84, 156, 50, 94, 97, 98, 126, 109, 152, 154, 465, 157, 158, 88, 92, 149, 156, 134, 151, 153, 76, 156, 594, 109, 152, 154, 156, 157, 158, 148, 150, 149, 148, 150, 151, 153, 566, 332, 148, 150, 236, 337, 338, 378, 156, 123, 124, 109, 101, 78, 382, 383, 55, 148, 150, 211, 20, 184, 148, 150, 156, 497, 35, 148, 150, 209, 257, 323, 324, 250, 138, 94, 254, 256, 21, 35, 155, 212, 78, 382, 383, 148, 150, 390, 78, 81, 84, 46, 48, 94, 97, 98, 155, 217, 50, 391, 455, 148, 150, 88, 92, 217, 274, 46, 48, 394, 76, 50, 78, 382, 383, 101, 237, 78, 81, 84, 46, 48, 94, 102, 395, 335, 109, 112, 114, 116, 272, 274, 108, 78, 81, 84, 112, 138, 94, 101, 67, 78, 81, 84, 396, 141, 94, 78, 382, 383, 142, 78, 81, 84, 268, 76, 94, 97, 98, 568, 50, 138, 101, 76, 46, 48, 88, 92, 239, 168, 169, 166, 167, 76, 101, 78, 81, 84, 146, 397, 94, 97, 98, 147, 138, 398, 217, 326, 345, 346, 88, 92, 217, 102, 123, 124, 138, 76, 78, 81, 84, 217, 399, 94, 97, 98, 168, 169, 166, 167, 78, 81, 84, 88, 92, 94, 97, 98, 400, 217, 76, 401, 78, 81, 84, 88, 92, 94, 78, 81, 84, 101, 76, 94, 46, 48, 402, 78, 81, 84, 403, 16, 94, 17, 76, 322, 404, 323, 324, 101, 76, 94, 405, 99, 488, 78, 81, 84, 217, 76, 94, 406, 46, 48, 78, 382, 383, 78, 81, 84, 407, 99, 94, 97, 98, 416, 217, 76, 46, 48, 46, 48, 88, 92, 217, 78, 81, 84, 408, 76, 94, 97, 98, 265, 78, 81, 84, 349, 350, 94, 88, 92, 323, 324, 25, 26, 94, 76, 101, 357, 358, 35, 78, 81, 84, 409, 76, 94, 596, 597, 78, 81, 84, 323, 324, 94, 217, 94, 267, 380, 99, 477, 217, 268, 76, 615, 616, 617, 217, 46, 48, 266, 76, 50, 78, 81, 84, 427, 428, 94, 97, 98, 46, 48, 323, 324, 101, 248, 94, 88, 92, 247, 78, 81, 84, 142, 76, 94, 78, 81, 84, 371, 372, 94, 78, 81, 84, 147, 99, 94, 101, 246, 323, 324, 76, 39, 94, 46, 48, 413, 76, 380, 78, 81, 84, 35, 76, 94, 97, 98, 425, 426, 99, 101, 78, 382, 383, 88, 92, 423, 424, 46, 48, 413, 76, 261, 78, 81, 84, 421, 422, 94, 97, 98, 16, 138, 17, 50, 412, 382, 383, 88, 92, 413, 419, 420, 46, 48, 76, 78, 81, 84, 417, 418, 94, 97, 98, 262, 412, 382, 383, 263, 323, 324, 88, 92, 94, 629, 630, 317, 116, 76, 78, 81, 84, 188, 264, 94, 302, 307, 245, 109, 112, 114, 116, 78, 81, 84, 123, 124, 94, 78, 382, 383, 109, 112, 114, 116, 168, 169, 166, 167, 314, 279, 281, -103, 244, 243, 291, 202, 435, 436, 78, 81, 84, 188, 437, 94, 123, 124, 126, 109, 112, 114, 116, 184, 119, 127, 438, 439, 78, 81, 84, 440, 242, 94, 123, 124, 126, 109, 112, 114, 116, 443, 119, 78, 81, 84, 444, 445, 94, 78, 382, 383, 109, 112, 114, 116, 78, 81, 84, 446, 447, 94, 78, 382, 383, 109, 112, 114, 116, 78, 81, 84, 448, 449, 94, 450, 451, 452, 109, 112, 114, 116, 168, 169, 166, 167, 388, 78, 382, 383, 168, 169, 166, 167, 168, 169, 166, 167, 168, 169, 166, 167, 168, 169, 166, 167, 168, 169, 166, 167, 453, 454, 241, 141, 146, 240, 460, 461, 239, 238, 138, 171, 145, 207, 474, 476, 265, 478, 102, 163, 483, 484, 485, 160, 143, 138, 135, 50, 131, 69, 499, 109, 501, 112, 503, 114, 505, 116, 266, 508, 509, 68, 537, 538, 35, 60, 544, 545, 57, 547, 109, 549, 112, 551, 114, 553, 116, 267, 556, 557, 558, 559, 560, 561, 562, -103, 564, 268, 54, 170, 34, 114, 31, 575, 576, 160, 578, 579, 116, 116, 116, 28, 581, 582, 583, 584, 585, 586, 587, 112, 590, 591, 276, 184, 109, 598, 23, 601, 602, 76, 568, 604, 606, 607, 608, 277, 613, 126, 15, 619, 13, 9, 621, 622, 623, 624, 8, 7, 627, 628, 319, 116 ] racc_action_check = [ 526, 358, 88, 403, 83, 565, 402, 400, 401, 61, 144, 524, 92, 526, 160, 5, 476, 95, 261, 476, 23, 40, 476, 476, 99, 390, 426, 266, 526, 266, 16, 261, 144, 424, 95, 5, 526, 526, 350, 526, 526, 99, 458, 524, 61, 422, 160, 390, 23, 40, 83, 526, 526, 526, 92, 92, 526, 526, 526, 526, 358, 526, 526, 526, 54, 526, 526, 526, 526, 526, 458, 403, 400, 402, 401, 476, 226, 226, 458, 458, 88, 458, 458, 458, 54, 426, 526, 526, 526, 526, 565, 424, 526, 458, 458, 458, 350, 619, 458, 458, 458, 458, 422, 458, 458, 458, 54, 458, 458, 458, 458, 458, 226, 348, 0, 54, 54, 619, 252, 252, 54, 54, 54, 163, 408, 54, 54, 54, 458, 458, 458, 458, 420, 0, 458, 54, 54, 224, 224, 619, 318, 318, 54, 163, 190, 260, 227, 227, 346, 226, 226, 69, 189, 619, 619, 619, 318, 260, 619, 619, 619, 220, 220, 49, 409, 163, 218, 218, 619, 619, 348, 222, 222, 224, 398, 619, 318, 408, 243, 163, 163, 163, 227, 49, 163, 163, 163, 243, 420, 85, 85, 399, 85, 85, 163, 163, 85, 220, 69, 85, 85, 163, 218, 570, 346, 172, 172, 222, 172, 172, 224, 224, 172, 318, 318, 172, 172, 514, 245, 227, 227, 172, 249, 249, 262, 85, 409, 409, 245, 168, 398, 398, 398, 34, 220, 220, 143, 13, 262, 218, 218, 172, 428, 34, 222, 222, 135, 188, 399, 399, 188, 168, 399, 188, 188, 13, 135, 85, 143, 570, 570, 570, 85, 85, 269, 168, 168, 168, 514, 514, 168, 168, 168, 172, 151, 34, 270, 372, 172, 172, 168, 168, 217, 273, 34, 34, 274, 168, 135, 428, 428, 428, 167, 173, 188, 188, 188, 135, 135, 188, 131, 276, 247, 188, 188, 188, 188, 211, 211, 59, 151, 151, 151, 247, 167, 151, 166, 59, 217, 217, 217, 277, 81, 217, 372, 372, 372, 81, 167, 167, 167, 516, 151, 167, 167, 167, 516, 59, 166, 169, 217, 131, 131, 167, 167, 280, 173, 173, 173, 173, 167, 165, 166, 166, 166, 84, 282, 166, 166, 166, 84, 169, 283, 152, 241, 251, 251, 166, 166, 150, 57, 241, 241, 165, 166, 169, 169, 169, 149, 286, 169, 169, 169, 235, 235, 235, 235, 165, 165, 165, 169, 169, 165, 165, 165, 289, 148, 169, 293, 152, 152, 152, 165, 165, 152, 150, 150, 150, 79, 165, 150, 57, 57, 296, 149, 149, 149, 299, 12, 149, 12, 152, 239, 302, 239, 239, 620, 150, 239, 303, 79, 418, 148, 148, 148, 153, 149, 148, 305, 79, 79, 265, 265, 265, 79, 79, 79, 307, 620, 79, 79, 79, 338, 158, 148, 513, 513, 620, 620, 79, 79, 154, 620, 620, 620, 308, 79, 620, 620, 620, 310, 153, 153, 153, 253, 253, 153, 620, 620, 418, 418, 18, 18, 418, 620, 613, 255, 255, 510, 158, 158, 158, 312, 153, 158, 574, 574, 154, 154, 154, 338, 338, 154, 155, 338, 315, 406, 613, 406, 156, 316, 158, 606, 606, 606, 157, 613, 613, 317, 154, 510, 613, 613, 613, 344, 344, 613, 613, 613, 510, 510, 267, 267, 609, 187, 267, 613, 613, 186, 155, 155, 155, 323, 613, 155, 156, 156, 156, 258, 258, 156, 157, 157, 157, 324, 609, 157, 604, 185, 488, 488, 155, 28, 488, 609, 609, 484, 156, 263, 609, 609, 609, 28, 157, 609, 609, 609, 343, 343, 604, 101, 484, 484, 484, 609, 609, 342, 342, 604, 604, 578, 609, 193, 604, 604, 604, 341, 341, 604, 604, 604, 26, 101, 26, 28, 578, 578, 578, 604, 604, 319, 340, 340, 28, 28, 604, 101, 101, 101, 339, 339, 101, 101, 101, 196, 319, 319, 319, 198, 416, 416, 101, 101, 416, 624, 624, 214, 259, 101, 214, 214, 214, 214, 199, 214, 214, 214, 183, 214, 214, 214, 214, 254, 254, 254, 238, 238, 254, 569, 569, 569, 254, 254, 254, 254, 93, 93, 93, 93, 214, 214, 214, 102, 182, 181, 214, 102, 351, 352, 102, 102, 102, 102, 353, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 60, 354, 355, 60, 60, 60, 356, 180, 60, 60, 60, 60, 60, 60, 60, 60, 359, 60, 250, 250, 250, 360, 361, 250, 455, 455, 455, 250, 250, 250, 250, 257, 257, 257, 362, 363, 257, 497, 497, 497, 257, 257, 257, 257, 256, 256, 256, 364, 365, 256, 366, 367, 368, 256, 256, 256, 256, 612, 612, 612, 612, 268, 268, 268, 268, 231, 231, 231, 231, 232, 232, 232, 232, 233, 233, 233, 233, 234, 234, 234, 234, 626, 626, 626, 626, 369, 370, 179, 382, 383, 178, 393, 394, 176, 175, 145, 138, 137, 111, 404, 405, 201, 407, 106, 89, 410, 412, 415, 86, 82, 76, 70, 67, 63, 53, 429, 430, 431, 432, 433, 434, 441, 442, 202, 456, 457, 50, 460, 461, 45, 44, 486, 487, 38, 489, 490, 491, 492, 493, 494, 495, 496, 204, 498, 500, 502, 504, 506, 507, 509, 35, 512, 205, 33, 515, 27, 246, 24, 532, 533, 536, 537, 538, 539, 540, 541, 22, 546, 548, 550, 552, 554, 555, 563, 244, 567, 568, 212, 264, 242, 576, 14, 579, 580, 589, 593, 598, 599, 600, 601, 213, 605, 240, 8, 611, 6, 4, 614, 615, 616, 617, 3, 2, 622, 623, 228, 542 ] racc_action_pointer = [ 113, nil, 877, 895, 872, 14, 862, nil, 887, nil, nil, nil, 394, 236, 847, nil, 22, nil, 459, nil, nil, nil, 830, 19, 826, nil, 577, 818, 561, nil, nil, nil, nil, 815, 232, 794, nil, nil, 819, nil, 6, nil, nil, nil, 774, 812, nil, nil, nil, 140, 819, nil, nil, 761, 63, nil, nil, 359, nil, 294, 640, -6, nil, 799, nil, nil, nil, 763, nil, 150, 756, nil, nil, nil, nil, nil, 761, nil, nil, 387, nil, 265, 770, -29, 298, 183, 716, nil, 1, 752, nil, nil, -9, 590, nil, -12, nil, nil, nil, -5, nil, 559, 622, nil, nil, nil, 786, nil, nil, nil, nil, 741, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 289, nil, nil, nil, 245, nil, 712, 761, nil, nil, nil, nil, 224, -2, 746, nil, nil, 375, 357, 348, 253, 342, 414, 440, 482, 488, 494, 432, nil, 13, nil, nil, 122, nil, 330, 295, 271, 208, 318, nil, nil, 199, 271, nil, 733, 732, nil, 729, 726, 646, 619, 618, 592, nil, 503, 483, 519, 237, 97, 89, nil, nil, 537, nil, nil, 569, nil, 573, 588, nil, 740, 762, nil, 781, 791, nil, nil, nil, nil, nil, 265, 836, 849, 582, nil, nil, 261, 160, nil, 155, nil, 165, nil, 131, nil, 70, 140, 887, nil, nil, 684, 688, 692, 696, 308, nil, nil, 592, 366, 821, 308, 807, 122, 801, 162, 782, 246, nil, 162, 655, 305, 58, 414, 595, 426, 681, 668, 488, 568, 89, -38, 168, 514, 802, 384, -27, 473, 699, 231, 262, nil, nil, 240, 205, nil, 265, 285, nil, nil, 290, nil, 342, 339, nil, nil, 356, nil, nil, 372, nil, nil, nil, 375, nil, nil, 390, nil, nil, 394, nil, nil, 368, 350, nil, 383, nil, 392, 442, nil, 415, nil, 469, nil, nil, 450, 455, 463, 134, 568, nil, nil, nil, 480, 492, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 442, 559, 551, 536, 526, 517, 464, nil, 138, nil, 103, nil, 28, 617, 618, 623, 635, 636, 640, nil, -9, 650, 655, 656, 668, 669, 681, 682, 684, 685, 686, 719, 720, nil, 267, nil, nil, nil, nil, nil, nil, nil, nil, nil, 725, 726, nil, nil, nil, nil, nil, nil, 13, nil, nil, 703, 753, nil, nil, nil, 173, 190, 6, 7, 5, 2, 729, 734, 452, 733, 123, 163, 785, nil, 739, nil, nil, 741, 571, nil, 421, nil, 122, nil, 35, nil, 23, nil, 16, nil, 232, 749, 744, 751, 745, 753, 746, nil, nil, nil, nil, nil, nil, 755, 747, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 661, 758, 784, 41, nil, 788, 810, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 6, nil, nil, nil, nil, nil, nil, nil, 524, nil, 765, 766, 501, 768, 763, 770, 764, 772, 765, 774, 766, 674, 777, nil, 778, nil, 779, nil, 780, nil, 781, 782, nil, 807, 477, nil, 831, 403, 216, 819, 276, nil, nil, nil, nil, nil, nil, nil, -12, nil, -1, nil, nil, nil, nil, nil, 760, 820, nil, nil, 768, 843, 799, 788, 789, 790, 831, nil, nil, nil, 801, nil, 802, nil, 803, nil, 804, nil, 805, 806, nil, nil, nil, nil, nil, nil, nil, 828, nil, 4, nil, 840, 800, 601, 202, nil, nil, nil, 404, nil, 862, nil, 548, 815, 863, nil, nil, nil, nil, nil, nil, nil, nil, 799, nil, nil, nil, 819, nil, nil, nil, nil, 836, 858, 868, 826, nil, nil, 536, 840, 429, nil, nil, 512, nil, 842, 676, 464, 877, 869, 870, 871, nil, 96, 405, nil, 812, 813, 551, nil, 700, nil, nil, nil, nil ] racc_action_default = [ -376, -2, -376, -376, -376, -6, -13, -4, -376, -1, -5, -7, -376, -376, -376, 631, -376, -12, -376, -9, -15, -14, -18, -376, -376, -8, -376, -21, -376, -17, -16, -11, -10, -376, -376, -112, -90, -108, -376, -20, -376, -98, -99, -100, -376, -376, -146, -87, -147, -88, -94, -89, -19, -82, -376, -23, -22, -376, -110, -376, -376, -376, -104, -376, -109, -101, -91, -376, -95, -376, -376, -282, -24, -248, -26, -25, -284, -253, -152, -27, -254, -376, -376, -376, -376, -376, -305, -273, -376, -376, -283, -274, -376, -251, -167, -31, -286, -271, -272, -289, -281, -376, -112, -93, -113, -97, -376, -96, -111, -191, -123, -376, -204, -124, -217, -125, -230, -126, -127, -247, -128, -129, -130, -182, -183, -121, -187, -148, -122, -102, -105, -376, -92, -84, -83, -376, -3, -285, -289, -249, -373, -153, -168, -376, -376, -376, -154, -169, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -30, -376, -256, -255, -376, -259, -376, -376, -376, -376, -376, -32, -288, -376, -376, -145, -134, -123, -116, -135, -124, -136, -125, -137, -126, -243, -138, -127, -376, -376, -139, -128, -117, -140, -129, -118, -141, -119, -142, -131, -120, -143, -132, -148, -144, -133, -122, -114, -107, -106, -86, -85, -376, -376, -376, -376, -287, -278, -376, -263, -279, -264, -275, -265, -276, -260, -277, -261, -262, -376, -307, -252, -250, -268, -269, -266, -267, -280, -270, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -115, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -33, -62, -34, -290, -63, -376, -376, -343, -328, -316, -334, -376, -313, -54, -323, -319, -55, -329, -325, -56, -375, -335, -331, -57, -342, -337, -312, -58, -344, -318, -59, -353, -340, -324, -348, -60, -354, -350, -330, -311, -61, -357, -336, -322, -317, -310, -347, -376, -376, -185, -170, -172, -376, -376, -189, -186, -184, -193, -190, -188, -206, -194, -192, -219, -207, -205, -181, -376, -376, -376, -376, -376, -376, -376, -203, -376, -216, -376, -229, -376, -376, -376, -376, -376, -376, -376, -242, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -166, -376, -232, -220, -218, -233, -231, -246, -244, -150, -245, -376, -376, -156, -151, -149, -171, -157, -155, -376, -29, -64, -68, -376, -28, -258, -257, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -308, -152, -304, -303, -376, -376, -179, -376, -201, -376, -214, -376, -227, -376, -240, -376, -164, -376, -376, -376, -376, -376, -376, -376, -178, -200, -213, -226, -239, -163, -376, -376, -180, -202, -215, -228, -241, -165, -177, -199, -212, -225, -238, -162, -376, -376, -376, -376, -69, -376, -376, -315, -314, -320, -321, -327, -326, -333, -332, -339, -338, -346, -345, -355, -341, -376, -349, -356, -352, -351, -359, -358, -306, -376, -173, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -376, -195, -376, -208, -376, -221, -376, -234, -376, -376, -158, -376, -376, -53, -44, -376, -376, -31, -310, -72, -70, -35, -37, -38, -372, -39, -360, -40, -376, -363, -41, -367, -366, -42, -369, -376, -36, -43, -305, -376, -376, -376, -376, -376, -376, -309, -175, -174, -376, -196, -376, -209, -376, -222, -376, -235, -376, -376, -159, -197, -210, -223, -236, -160, -66, -376, -67, -305, -52, -50, -376, -376, -376, -44, -71, -65, -376, -370, -376, -49, -376, -292, -376, -176, -198, -211, -224, -237, -161, -45, -47, -376, -51, -365, -364, -376, -362, -361, -368, -371, -73, -295, -376, -376, -291, -46, -376, -75, -376, -294, -293, -74, -77, -376, -80, -376, -376, -296, -297, -298, -78, -376, -76, -48, -376, -376, -376, -81, -79, -299, -300, -301, -302 ] racc_goto_table = [ 93, 128, 162, 45, 174, 159, 113, 410, 271, 45, 52, 196, 107, 115, 172, 103, 56, 518, 121, 275, 89, 65, 64, 111, 73, 93, 66, 19, 618, 95, 3, 609, 106, 62, 393, 526, 66, 120, 59, 618, 620, 32, 282, 205, 132, 89, 110, 173, 179, 139, 130, 614, 605, 273, 118, 181, 61, 270, 459, 79, 193, 206, 218, 187, 220, 177, 222, 191, 224, 194, 226, 227, 216, 74, 219, 199, 221, 117, 223, 190, 225, 392, 65, 64, 480, 572, 107, 72, 176, 208, 18, 11, 2, 136, 70, 53, 186, 33, 198, 201, 204, 175, 178, 180, 182, 185, 106, 189, 192, 231, 45, 173, 232, 233, 234, 235, 195, 210, 197, 183, 200, 203, 27, 22, 164, 137, 14, 6, 215, 258, 318, 580, 600, 4, 543, 592, 574, nil, nil, nil, nil, nil, nil, nil, nil, nil, 255, nil, nil, nil, nil, nil, nil, nil, nil, 316, nil, nil, nil, nil, nil, nil, nil, nil, nil, 253, nil, nil, nil, nil, nil, 379, nil, 381, 249, nil, nil, nil, nil, nil, nil, nil, 252, nil, 320, nil, nil, 327, nil, nil, nil, 344, nil, 325, nil, 356, 330, 364, 370, nil, 280, nil, nil, nil, nil, 251, 384, nil, 343, 389, nil, nil, 355, nil, 363, 369, nil, 373, nil, 377, nil, nil, nil, 334, nil, 321, nil, 342, nil, nil, nil, 354, nil, 362, 368, nil, 339, 375, 331, nil, 351, 336, 359, 365, 341, nil, nil, nil, 353, nil, 361, 367, nil, 387, nil, 517, nil, nil, nil, 328, 414, nil, 333, nil, nil, nil, 599, 340, nil, nil, nil, 352, nil, 360, 366, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 475, nil, nil, nil, nil, nil, 456, nil, nil, 441, nil, nil, nil, nil, nil, nil, nil, 415, nil, nil, 433, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 463, nil, nil, 431, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 482, nil, nil, nil, nil, nil, 473, nil, 429, nil, nil, nil, nil, nil, 498, nil, nil, nil, nil, nil, nil, nil, nil, nil, 471, nil, nil, nil, nil, 495, 464, nil, nil, nil, nil, nil, nil, nil, nil, nil, 469, 507, nil, nil, 516, 506, 493, 486, nil, 487, nil, nil, nil, nil, nil, nil, 504, nil, nil, nil, nil, 491, 467, nil, nil, nil, nil, nil, nil, nil, 414, 502, nil, nil, nil, nil, nil, nil, 515, 255, nil, nil, 489, 555, nil, nil, nil, nil, nil, 280, nil, nil, 500, nil, nil, nil, nil, nil, nil, 554, 577, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 516, nil, nil, nil, 552, nil, nil, 546, nil, nil, nil, nil, nil, nil, nil, nil, nil, 589, 45, 550, nil, 565, 567, nil, nil, 563, nil, nil, nil, nil, 343, 355, 363, 369, 515, nil, 603, nil, nil, nil, 548, nil, nil, 593, 595, 280, nil, nil, nil, nil, nil, nil, 414, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 626 ] racc_goto_check = [ 56, 81, 34, 23, 104, 22, 83, 115, 24, 23, 15, 78, 59, 84, 109, 62, 15, 26, 88, 48, 55, 66, 72, 71, 105, 56, 60, 14, 54, 23, 1, 53, 23, 69, 51, 50, 60, 87, 58, 54, 53, 14, 39, 81, 60, 55, 82, 56, 83, 105, 69, 37, 36, 25, 86, 84, 68, 20, 52, 18, 88, 74, 109, 75, 109, 71, 109, 76, 109, 77, 109, 109, 110, 17, 110, 79, 110, 85, 110, 87, 110, 48, 66, 72, 80, 26, 59, 16, 82, 62, 13, 12, 11, 10, 9, 8, 86, 7, 90, 91, 92, 93, 94, 95, 96, 97, 23, 98, 99, 56, 23, 56, 56, 56, 56, 56, 100, 15, 101, 85, 102, 103, 6, 5, 106, 108, 4, 3, 112, 81, 109, 113, 114, 2, 116, 127, 129, nil, nil, nil, nil, nil, nil, nil, nil, nil, 88, nil, nil, nil, nil, nil, nil, nil, nil, 81, nil, nil, nil, nil, nil, nil, nil, nil, nil, 87, nil, nil, nil, nil, nil, 78, nil, 78, 82, nil, nil, nil, nil, nil, nil, nil, 86, nil, 83, nil, nil, 83, nil, nil, nil, 81, nil, 84, nil, 81, 84, 81, 81, nil, 82, nil, nil, nil, nil, 85, 81, nil, 88, 81, nil, nil, 88, nil, 88, 88, nil, 88, nil, 88, nil, nil, nil, 87, nil, 82, nil, 87, nil, nil, nil, 87, nil, 87, 87, nil, 82, 87, 86, nil, 82, 86, 82, 82, 86, nil, nil, nil, 86, nil, 86, 86, nil, 82, nil, 24, nil, nil, nil, 85, 81, nil, 85, nil, nil, nil, 115, 85, nil, nil, nil, 85, nil, 85, 85, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 104, nil, nil, nil, nil, nil, 81, nil, nil, 88, nil, nil, nil, nil, nil, nil, nil, 82, nil, nil, 87, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 81, nil, nil, 86, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 83, nil, nil, nil, nil, nil, 88, nil, 85, nil, nil, nil, nil, nil, 81, nil, nil, nil, nil, nil, nil, nil, nil, nil, 87, nil, nil, nil, nil, 88, 82, nil, nil, nil, nil, nil, nil, nil, nil, nil, 86, 81, nil, nil, 81, 88, 87, 82, nil, 82, nil, nil, nil, nil, nil, nil, 87, nil, nil, nil, nil, 86, 85, nil, nil, nil, nil, nil, nil, nil, 81, 86, nil, nil, nil, nil, nil, nil, 23, 88, nil, nil, 85, 81, nil, nil, nil, nil, nil, 82, nil, nil, 85, nil, nil, nil, nil, nil, nil, 88, 22, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 81, nil, nil, nil, 87, nil, nil, 82, nil, nil, nil, nil, nil, nil, nil, nil, nil, 22, 23, 86, nil, 23, 23, nil, nil, 15, nil, nil, nil, nil, 88, 88, 88, 88, 23, nil, 34, nil, nil, nil, 85, nil, nil, 81, 81, 82, nil, nil, nil, nil, nil, nil, 81, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 56 ] racc_goto_pointer = [ nil, 30, 133, 127, 120, 109, 100, 70, 62, 41, 23, 92, 86, 78, 15, -18, 33, 19, 5, nil, -154, nil, -81, -25, -203, -158, -441, nil, nil, nil, nil, nil, nil, nil, -86, nil, -546, -554, nil, -172, nil, nil, nil, nil, nil, nil, nil, nil, -192, nil, -423, -240, -335, -573, -581, -34, -54, nil, -2, -45, -23, nil, -42, nil, nil, nil, -24, nil, 12, -11, nil, -37, -23, nil, -45, -39, -35, -33, -91, -27, -324, -59, -14, -54, -47, 17, -6, -23, -42, nil, -4, -3, -2, -1, 0, 1, 2, 3, 5, 6, 14, 16, 18, 19, -98, -30, 32, nil, 49, -87, -76, nil, -17, -407, -446, -312, -350, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, -434, nil, -396 ] racc_goto_default = [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 534, nil, 82, nil, 86, nil, 140, nil, nil, nil, 519, 520, 521, 523, 525, 528, 531, 90, 533, nil, nil, 536, 511, 284, 287, 290, 294, 298, 301, 306, 311, nil, 269, nil, nil, nil, nil, 610, 611, 612, 47, 49, 51, 36, 38, nil, 105, 41, 42, 43, 44, nil, nil, 63, nil, 37, 40, 104, nil, nil, nil, nil, nil, 125, 100, 71, nil, nil, 285, 288, 292, 295, 122, 305, 310, 315, nil, nil, nil, nil, nil, nil, 297, 300, 304, 309, 313, 278, nil, 77, 80, 83, 85, 87, 91, 96, nil, nil, nil, 411, 283, 286, 289, 293, 296, 299, 303, 308, 312, 524, 527, 530, nil ] racc_token_table = { 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, :Semicolon_code => 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, :SYM_ORDERED => 83, :SYM_UNORDERED => 84, :SYM_UNIQUE => 85, :SYM_OCCURRENCES => 86, :V_ISO8601_DATE_CONSTRAINT_PATTERN => 87, :V_ISO8601_TIME_CONSTRAINT_PATTERN => 88, :V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN => 89, :START_TERM_CODE_CONSTRAINT => 90, :END_TERM_CODE_CONSTRAINT => 91, :TERM_CODE => 92, :V_ISO8601_DURATION_CONSTRAINT_PATTERN => 93 } racc_use_result_var = true racc_nt_base = 94 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', 'Semicolon_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', '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', 'v_c_domain_type', '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 module_eval <<'.,.,', 'lib/parser.y', 32 def _reduce_1( val, _values, result ) result = val[0] result end .,., # reduce 2 omitted module_eval <<'.,.,', 'lib/parser.y', 57 def _reduce_3( val, _values, result ) assert_at(__FILE__,__LINE__) do val[4].instance_of?(OpenEHR::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION) and val[5].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT) and val[7].instance_of?(OpenEHR::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY) end archetype_id = val[0][:archetype_id] adl_version = val[0][:arch_head][:arch_meta_data][:adl_version] concept = val[2] language = val[3][:arch_language] archetype = OpenEHR::AM::Archetype::ARCHETYPE.create( :archetype_id => archetype_id, :adl_version => adl_version, :concept => concept, :description => val[4], :definition => val[5], :ontology => val[7] ) do |archetype| archetype.original_language = language end @@log.info("#{__FILE__}:#{__LINE__}: archetype = #{archetype} at #{@filename}:#{@lineno}") result = archetype result end .,., module_eval <<'.,.,', 'lib/parser.y', 63 def _reduce_4( val, _values, result ) result = {:arch_head => val[0], :archetype_id => val[1] } result end .,., module_eval <<'.,.,', 'lib/parser.y', 67 def _reduce_5( val, _values, result ) raise result end .,., module_eval <<'.,.,', 'lib/parser.y', 72 def _reduce_6( val, _values, result ) result = {:arch_meta_data => nil } result end .,., module_eval <<'.,.,', 'lib/parser.y', 76 def _reduce_7( val, _values, result ) result = val[1] result end .,., module_eval <<'.,.,', 'lib/parser.y', 81 def _reduce_8( val, _values, result ) result = {:arch_meta_data => val[1] } result end .,., module_eval <<'.,.,', 'lib/parser.y', 86 def _reduce_9( val, _values, result ) result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 90 def _reduce_10( val, _values, result ) result = val[0].merge(val[2]) result end .,., module_eval <<'.,.,', 'lib/parser.y', 96 def _reduce_11( val, _values, result ) result = {:adl_version => val[2], :is_controlled => false } result end .,., module_eval <<'.,.,', 'lib/parser.y', 100 def _reduce_12( val, _values, result ) result = {:is_controlled => true } result end .,., # reduce 13 omitted # reduce 14 omitted # reduce 15 omitted module_eval <<'.,.,', 'lib/parser.y', 111 def _reduce_16( val, _values, result ) result = {:arch_concept => val[1] } result end .,., # reduce 17 omitted module_eval <<'.,.,', 'lib/parser.y', 121 def _reduce_18( val, _values, result ) result = {:arch_language => nil} result end .,., module_eval <<'.,.,', 'lib/parser.y', 125 def _reduce_19( val, _values, result ) result = {:arch_language => val[1]} result end .,., # reduce 20 omitted # reduce 21 omitted module_eval <<'.,.,', 'lib/parser.y', 136 def _reduce_22( val, _values, result ) result = OpenEHR::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION.new(:details => val[1]) result end .,., # reduce 23 omitted module_eval <<'.,.,', 'lib/parser.y', 144 def _reduce_24( val, _values, result ) result = val[1] result end .,., # reduce 25 omitted module_eval <<'.,.,', 'lib/parser.y', 154 def _reduce_26( val, _values, result ) assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT)} @@log.info("#{__FILE__}:#{__LINE__}: c_complex_object = #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 158 def _reduce_27( val, _values, result ) result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 169 def _reduce_28( val, _values, result ) result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object| c_complex_object.node_id = val[0][:c_complex_object_id][:local_term_code_ref] c_complex_object.rm_type_name = val[0][:c_complex_object_id][:type_identifier] c_complex_object.occurrences = val[0][:c_occurrences] end result end .,., module_eval <<'.,.,', 'lib/parser.y', 177 def _reduce_29( val, _values, result ) result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object| c_complex_object.node_id = val[0][:c_complex_object_id][:local_term_code_ref] c_complex_object.rm_type_name = val[0][:c_complex_object_id][:type_identifier] c_complex_object.occurrences = val[0][:c_occurrences] end result end .,., module_eval <<'.,.,', 'lib/parser.y', 184 def _reduce_30( val, _values, result ) result = {:c_complex_object_id => val[0], :c_occurrences => val[1]} result end .,., module_eval <<'.,.,', 'lib/parser.y', 189 def _reduce_31( val, _values, result ) result = {:type_identifier => val[0]} result end .,., module_eval <<'.,.,', 'lib/parser.y', 193 def _reduce_32( val, _values, result ) result = {:type_identifier => val[0], :local_term_code_ref => val[1]} result end .,., # reduce 33 omitted module_eval <<'.,.,', 'lib/parser.y', 199 def _reduce_34( val, _values, result ) result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new(:attributes => val[0]) result end .,., module_eval <<'.,.,', 'lib/parser.y', 207 def _reduce_35( val, _values, result ) result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 211 def _reduce_36( val, _values, result ) result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new result end .,., module_eval <<'.,.,', 'lib/parser.y', 215 def _reduce_37( val, _values, result ) result = OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_INTERNAL_REF.new result end .,., module_eval <<'.,.,', 'lib/parser.y', 219 def _reduce_38( val, _values, result ) result = OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_SLOT.new result end .,., module_eval <<'.,.,', 'lib/parser.y', 223 def _reduce_39( val, _values, result ) result = OpenEHR::AM::Archetype::Constraint_Model::CONSTRAINT_REF.new result end .,., module_eval <<'.,.,', 'lib/parser.y', 227 def _reduce_40( val, _values, result ) result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 231 def _reduce_41( val, _values, result ) result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 235 def _reduce_42( val, _values, result ) result = val[0] result end .,., # reduce 43 omitted # reduce 44 omitted module_eval <<'.,.,', 'lib/parser.y', 250 def _reduce_45( val, _values, result ) result = val[1] result end .,., # reduce 46 omitted # reduce 47 omitted # reduce 48 omitted # reduce 49 omitted # reduce 50 omitted # reduce 51 omitted # reduce 52 omitted module_eval <<'.,.,', 'lib/parser.y', 270 def _reduce_53( val, _values, result ) assert_at(__FILE__,__LINE__){val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_PRIMITIVE)} result = OpenEHR::AM::Archetype::Constraint_Model::C_PRIMITIVE_OBJECT.new(:item => val[0]) result end .,., module_eval <<'.,.,', 'lib/parser.y', 276 def _reduce_54( val, _values, result ) @@log.info("#{__FILE__}:#{__LINE__}: c_integer = #{val[0]} at #{@filename}:#{@lineno}") result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_INTEGER.new result end .,., module_eval <<'.,.,', 'lib/parser.y', 281 def _reduce_55( val, _values, result ) @@log.info("#{__FILE__}:#{__LINE__}: c_real = #{val[0]} at #{@filename}:#{@lineno}") result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_REAL.new result end .,., module_eval <<'.,.,', 'lib/parser.y', 286 def _reduce_56( val, _values, result ) @@log.info("#{__FILE__}:#{__LINE__}: c_date = #{val[0]} at #{@filename}:#{@lineno}") result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DATE.new result end .,., module_eval <<'.,.,', 'lib/parser.y', 291 def _reduce_57( val, _values, result ) @@log.info("#{__FILE__}:#{__LINE__}: c_time = #{val[0]} at #{@filename}:#{@lineno}") result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_TIME.new result end .,., module_eval <<'.,.,', 'lib/parser.y', 296 def _reduce_58( val, _values, result ) @@log.info("#{__FILE__}:#{__LINE__}: c_date_time = #{val[0]} at #{@filename}:#{@lineno}") result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DATE_TIME.new result end .,., module_eval <<'.,.,', 'lib/parser.y', 301 def _reduce_59( val, _values, result ) @@log.info("#{__FILE__}:#{__LINE__}: c_duration = #{val[0]} at #{@filename}:#{@lineno}") result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DURATION.new result end .,., module_eval <<'.,.,', 'lib/parser.y', 306 def _reduce_60( val, _values, result ) @@log.info("#{__FILE__}:#{__LINE__}: c_string = #{val[0]} at #{@filename}:#{@lineno}") result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_STRING.new result end .,., module_eval <<'.,.,', 'lib/parser.y', 312 def _reduce_61( val, _values, result ) assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN)} @@log.info("#{__FILE__}:#{__LINE__}: c_boolean = #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., # reduce 62 omitted module_eval <<'.,.,', 'lib/parser.y', 322 def _reduce_63( val, _values, result ) result = [val[0]] result end .,., module_eval <<'.,.,', 'lib/parser.y', 326 def _reduce_64( val, _values, result ) result = (val[0] << val[1]) result end .,., module_eval <<'.,.,', 'lib/parser.y', 335 def _reduce_65( val, _values, result ) assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)} c_attribute = val[0] c_attribute.children = val[3] result = c_attribute result end .,., module_eval <<'.,.,', 'lib/parser.y', 340 def _reduce_66( val, _values, result ) assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)} result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 345 def _reduce_67( val, _values, result ) assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)} result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 356 def _reduce_68( val, _values, result ) @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}, c_existence = #{val[1]} at #{@filename}") result = OpenEHR::AM::Archetype::Constraint_Model::C_SINGLE_ATTRIBUTE.new( :rm_attribute_name => val[0], :existence => val[1] ) result end .,., module_eval <<'.,.,', 'lib/parser.y', 366 def _reduce_69( val, _values, result ) assert_at(__FILE__,__LINE__){ val[2].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::CARDINALITY) } @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER: #{val[0]}, c_existence = #{val[1]}, c_cardinality = #{val[2]} at #{@filename}") result = OpenEHR::AM::Archetype::Constraint_Model::C_MULTIPLE_ATTRIBUTE.new( :rm_attribute_name => val[0], :existence => val[1], :cardinality => val[2] ) result end .,., module_eval <<'.,.,', 'lib/parser.y', 371 def _reduce_70( val, _values, result ) result = Array[val[0]] result end .,., module_eval <<'.,.,', 'lib/parser.y', 375 def _reduce_71( val, _values, result ) result = (val[0] << val[1]) result end .,., module_eval <<'.,.,', 'lib/parser.y', 379 def _reduce_72( val, _values, result ) result = Array[val[0]] result end .,., # 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 module_eval <<'.,.,', 'lib/parser.y', 410 def _reduce_85( val, _values, result ) dadl_section = val[1] result = OpenEHR::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY.new result end .,., # reduce 86 omitted # reduce 87 omitted # reduce 88 omitted # reduce 89 omitted module_eval <<'.,.,', 'lib/parser.y', 424 def _reduce_90( val, _values, result ) result = Array[val[0]] result end .,., module_eval <<'.,.,', 'lib/parser.y', 428 def _reduce_91( val, _values, result ) result = (val[0] << val[1]) result end .,., module_eval <<'.,.,', 'lib/parser.y', 432 def _reduce_92( val, _values, result ) result = (val[0] << val[2]) result end .,., module_eval <<'.,.,', 'lib/parser.y', 438 def _reduce_93( val, _values, result ) @@log.info("#{__FILE__}:#{__LINE__}: attr_id = #{val[0]}, object_block = #{val[2]} at #{@filename}:#{@lineno}") result = {:attr_id => val[0], :object_block => val[2]} result end .,., module_eval <<'.,.,', 'lib/parser.y', 444 def _reduce_94( val, _values, result ) @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., # reduce 95 omitted module_eval <<'.,.,', 'lib/parser.y', 450 def _reduce_96( val, _values, result ) result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 454 def _reduce_97( val, _values, result ) result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 459 def _reduce_98( val, _values, result ) result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 463 def _reduce_99( val, _values, result ) result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 468 def _reduce_100( val, _values, result ) result = {:untyped_multiple_attr_object_block => val[0]} result end .,., module_eval <<'.,.,', 'lib/parser.y', 472 def _reduce_101( val, _values, result ) result = {:type_identifier => val[0], :untyped_multiple_attr_object_block => val[1]} result end .,., module_eval <<'.,.,', 'lib/parser.y', 477 def _reduce_102( val, _values, result ) result = {:multiple_attr_object_block_head => val[0], :keyed_objects => val[1]} result end .,., module_eval <<'.,.,', 'lib/parser.y', 483 def _reduce_103( val, _values, result ) @@log.info("SYM_START_DBLOCK: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 488 def _reduce_104( val, _values, result ) result = Array[val[0]] result end .,., module_eval <<'.,.,', 'lib/parser.y', 492 def _reduce_105( val, _values, result ) result = (val[0] << val[1]) result end .,., module_eval <<'.,.,', 'lib/parser.y', 498 def _reduce_106( val, _values, result ) @@log.info("#{__FILE__}:#{__LINE__}: keyed_object = #{val[0]}, object_block = #{val[2]} at #{@filename}:#{@lineno}") result = {:object_key => val[0], :object_block => val[1]} result end .,., module_eval <<'.,.,', 'lib/parser.y', 504 def _reduce_107( val, _values, result ) @@log.info("object_key: [#{val[1]}] at #{@filename}:#{@lineno}") result = val[1] result end .,., module_eval <<'.,.,', 'lib/parser.y', 509 def _reduce_108( val, _values, result ) result = {:untyped_single_attr_object_block => val[0]} result end .,., module_eval <<'.,.,', 'lib/parser.y', 513 def _reduce_109( val, _values, result ) result = {:type_identifier => val[0], :untyped_single_attr_object_block => val[1]} result end .,., module_eval <<'.,.,', 'lib/parser.y', 519 def _reduce_110( val, _values, result ) @@log.info("#{__FILE__}:#{__LINE__}: single_attr_object_complex_head = #{val[0]} at #{@filename}:#{@lineno}") result = {:single_attr_object_complex_head => val[0]} result end .,., module_eval <<'.,.,', 'lib/parser.y', 524 def _reduce_111( val, _values, result ) @@log.info("#{__FILE__}:#{__LINE__}: single_attr_object_complex_head = #{val[0]}, attr_vals = #{val[1]} at #{@filename}:#{@lineno}") result = {:single_attr_object_complex_head => val[0], :attr_vals => val[1]} result end .,., # reduce 112 omitted module_eval <<'.,.,', 'lib/parser.y', 530 def _reduce_113( val, _values, result ) @@log.info("#{__FILE__}:#{__LINE__}: untyped_primitive_object_block = #{val[0]} at #{@filename}:#{@lineno}") result = {:untyped_primitive_object_block => val[0]} result end .,., module_eval <<'.,.,', 'lib/parser.y', 535 def _reduce_114( val, _values, result ) @@log.info("#{__FILE__}:#{__LINE__}: type_identifier = #{val[0]}, untyped_primitive_object_block = #{val[1]} at #{@filename}:#{@lineno}") result = {:type_identifier => val[0], :untyped_primitive_object_block => val[1]} result end .,., module_eval <<'.,.,', 'lib/parser.y', 540 def _reduce_115( val, _values, result ) @@log.info("#{__FILE__}:#{__LINE__}: primitive_object_block = <#{val[1]}> at #{@filename}:#{@lineno}") result = val[1] result end .,., module_eval <<'.,.,', 'lib/parser.y', 544 def _reduce_116( val, _values, result ) result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 548 def _reduce_117( val, _values, result ) result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 552 def _reduce_118( val, _values, result ) result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 556 def _reduce_119( val, _values, result ) result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 560 def _reduce_120( val, _values, result ) result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 565 def _reduce_121( val, _values, result ) @@log.info("string_value: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 570 def _reduce_122( val, _values, result ) @@log.info("integer_value: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 575 def _reduce_123( val, _values, result ) @@log.info("real_value: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 580 def _reduce_124( val, _values, result ) @@log.info("boolean_value: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 585 def _reduce_125( val, _values, result ) @@log.info("character_value: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 590 def _reduce_126( val, _values, result ) @@log.info("date_value: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 595 def _reduce_127( val, _values, result ) @@log.info("time_value: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 600 def _reduce_128( val, _values, result ) @@log.info("date_time_value: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 605 def _reduce_129( val, _values, result ) @@log.info("duration_value: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 610 def _reduce_130( val, _values, result ) @@log.info("uri_value: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., # 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 module_eval <<'.,.,', 'lib/parser.y', 633 def _reduce_146( val, _values, result ) @@log.info("V_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 638 def _reduce_147( val, _values, result ) @@log.info("V_GENERIC_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 644 def _reduce_148( val, _values, result ) @@log.info("V_STRING: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., # reduce 149 omitted # reduce 150 omitted # reduce 151 omitted module_eval <<'.,.,', 'lib/parser.y', 658 def _reduce_152( val, _values, result ) begin integer = Integer(val[0]) rescue raise end result = integer result end .,., module_eval <<'.,.,', 'lib/parser.y', 667 def _reduce_153( val, _values, result ) begin integer = Integer(val[0]) rescue raise end result = integer result end .,., module_eval <<'.,.,', 'lib/parser.y', 676 def _reduce_154( val, _values, result ) begin integer = Integer(val[0]) rescue raise end result = - integer result end .,., # 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 module_eval <<'.,.,', 'lib/parser.y', 702 def _reduce_167( val, _values, result ) begin real = Float(val[0]) rescue raise end result = real result end .,., module_eval <<'.,.,', 'lib/parser.y', 711 def _reduce_168( val, _values, result ) begin real = Float(val[1]) rescue raise end result = real result end .,., module_eval <<'.,.,', 'lib/parser.y', 720 def _reduce_169( val, _values, result ) begin real = Float(val[1]) rescue raise end result = - real result end .,., # 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 module_eval <<'.,.,', 'lib/parser.y', 740 def _reduce_182( val, _values, result ) result = true result end .,., module_eval <<'.,.,', 'lib/parser.y', 744 def _reduce_183( val, _values, result ) result = false result end .,., # 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 module_eval <<'.,.,', 'lib/parser.y', 808 def _reduce_230( val, _values, result ) @@log.info("V_ISO8601_DURATION: #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., # 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 module_eval <<'.,.,', 'lib/parser.y', 828 def _reduce_243( val, _values, result ) @@log.info("#{__FILE__}:#{__LINE__}: V_QUALIFIED_TERM_CODE_REF = #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., # reduce 244 omitted # reduce 245 omitted # reduce 246 omitted module_eval <<'.,.,', 'lib/parser.y', 838 def _reduce_247( val, _values, result ) @@log.info("#{__FILE__}:#{__LINE__}: V_URI = #{val[0]} at #{@filename}:#{@lineno}") result = val[0] result end .,., # 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 module_eval <<'.,.,', 'lib/parser.y', 907 def _reduce_288( val, _values, result ) @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}") result end .,., module_eval <<'.,.,', 'lib/parser.y', 911 def _reduce_289( val, _values, result ) @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}") result end .,., module_eval <<'.,.,', 'lib/parser.y', 922 def _reduce_290( val, _values, result ) result = Range.new(1,1) result end .,., module_eval <<'.,.,', 'lib/parser.y', 926 def _reduce_291( val, _values, result ) result = val[3] result end .,., module_eval <<'.,.,', 'lib/parser.y', 936 def _reduce_292( val, _values, result ) begin integer = Integer(val[0]) rescue raise end result = integer result end .,., module_eval <<'.,.,', 'lib/parser.y', 946 def _reduce_293( val, _values, result ) begin from_integer = Integer(val[0]) to_integer = Integer(val[2]) rescue raise end result = Range.new(from_integer,to_integer) result end .,., module_eval <<'.,.,', 'lib/parser.y', 951 def _reduce_294( val, _values, result ) result = OpenEHR::AM::Archetype::Constraint_Model::CARDINALITY.new result end .,., # 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 module_eval <<'.,.,', 'lib/parser.y', 970 def _reduce_306( val, _values, result ) result = val[3] result end .,., # 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 module_eval <<'.,.,', 'lib/parser.y', 1040 def _reduce_353( val, _values, result ) result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true) result end .,., module_eval <<'.,.,', 'lib/parser.y', 1044 def _reduce_354( val, _values, result ) result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false) result end .,., module_eval <<'.,.,', 'lib/parser.y', 1048 def _reduce_355( val, _values, result ) result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true,:false_valid => false) result end .,., module_eval <<'.,.,', 'lib/parser.y', 1052 def _reduce_356( val, _values, result ) result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false,:false_valid => true) result end .,., module_eval <<'.,.,', 'lib/parser.y', 1057 def _reduce_357( val, _values, result ) result = val[0] result end .,., module_eval <<'.,.,', 'lib/parser.y', 1061 def _reduce_358( val, _values, result ) raise 'Not implemented yet' result end .,., module_eval <<'.,.,', 'lib/parser.y', 1065 def _reduce_359( val, _values, result ) raise 'Not implemented yet' result end .,., # reduce 360 omitted # reduce 361 omitted # reduce 362 omitted # reduce 363 omitted # reduce 364 omitted module_eval <<'.,.,', 'lib/parser.y', 1078 def _reduce_365( val, _values, result ) @in_interval = false @@log.info("#{__FILE__}:#{__LINE__}, #{val[0]}|#{val[2]} at #{@filename}") result end .,., # reduce 366 omitted # reduce 367 omitted # reduce 368 omitted # reduce 369 omitted # reduce 370 omitted # reduce 371 omitted # reduce 372 omitted # reduce 373 omitted module_eval <<'.,.,', 'lib/parser.y', 1100 def _reduce_374( val, _values, result ) @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{word} at #{@filename}") result end .,., module_eval <<'.,.,', 'lib/parser.y', 1110 def _reduce_375( val, _values, result ) result = val[0] result end .,., def _reduce_none( val, _values, result ) result end end # class Parser end # module ADL end # module OpenEHR