Ignore:
Timestamp:
Sep 20, 2009, 1:20:48 PM (15 years ago)
Author:
Tatsukawa, Akimichi
Message:

Scanners for ADL parser do not need yaparc library any more

File:
1 edited

Legend:

Unmodified
Added
Removed
  • ruby/trunk/lib/adl_parser/lib/parser.rb

    r265 r283  
    1111$:.unshift File.join(File.dirname(__FILE__))
    1212require 'logger'
     13require 'yaml'
    1314require 'rubygems'
    1415require 'adl_parser.rb'
    1516require 'am.rb'
    1617require 'rm.rb'
    17 $DEBUG = true
     18$DEBUG = false
    1819
    1920
     
    2324    class Parser < Racc::Parser
    2425
    25 module_eval(<<'...end parser.y/module_eval...', 'parser.y', 1205)
     26module_eval(<<'...end parser.y/module_eval...', 'parser.y', 1208)
    2627
    2728def assert_at(file,line, message = "")
     
    3940end
    4041
    41 @@dadl_scanner = OpenEHR::ADL::Scanner::DADL::RootScanner.new
    42 @@cadl_scanner = OpenEHR::ADL::Scanner::CADL::RootScanner.new
    4342
    4443###----------/* keywords */ ---------------------------------------------
     
    103102def scan
    104103  @@logger.debug("#{__FILE__}:#{__LINE__}: Entering scan at #{@filename}:#{@lineno}:")
    105   adl_scanner = OpenEHR::ADL::Scanner::ADLScanner.new(@adl_type, @filename)
    106   cadl_scanner = OpenEHR::ADL::Scanner::CADLScanner.new(@adl_type, @filename)
    107   dadl_scanner = OpenEHR::ADL::Scanner::DADLScanner.new(@adl_type, @filename)
    108   regex_scanner = OpenEHR::ADL::Scanner::RegexScanner.new(@adl_type, @filename)
    109   term_constraint_scanner = OpenEHR::ADL::Scanner::TermConstraintScanner.new(@adl_type, @filename)
     104  scanner = OpenEHR::ADL::Scanner::ADLScanner.new(@adl_type, @filename)
    110105
    111106  until @data.nil?  do
    112     case @adl_type.last
    113     when :adl
    114       @data = adl_scanner.scan(@data) do |sym, val|
     107    @data = scanner.scan(@data) do |sym, val|
    115108        yield sym, val
    116       end
    117     when :dadl
    118       @data = dadl_scanner.scan(@data) do |sym, val|
    119         yield sym, val
    120       end
    121     when :cadl
    122       @data = cadl_scanner.scan(@data) do |sym, val|
    123         yield sym, val
    124       end
    125     when :regexp
    126       @data = regex_scanner.scan(@data) do |sym, val|
    127         yield sym, val
    128       end
    129     when :term_constraint
    130       @@logger.debug("#{__FILE__}:#{__LINE__}: scan: Entering scan_term_constraint at #{@filename}:#{@lineno}: data = #{@data.inspect}")
    131       @data = term_constraint_scanner.scan(@data) do |sym, val|
    132         yield sym, val
    133       end
    134     else
    135       raise
    136109    end
    137110    @data = $' # variable $' receives the string after the match
     
    140113  yield false, '$'
    141114end # of scan
    142 
    143 ### def scan
    144 ###   @@logger.debug("#{__FILE__}:#{__LINE__}: Entering scan at #{@filename}:#{@lineno}:")
    145  
    146 ###   until @data.nil?  do
    147 ###     case @adl_type.last
    148 ###     when :adl
    149 ###       @data = scan_adl(@data) do |sym, val|
    150 ###         yield sym, val
    151 ###       end
    152 ###     when :dadl
    153 ###       @data = scan_dadl(@data) do |sym, val|
    154 ###         yield sym, val
    155 ###       end
    156 ###     when :cadl
    157 ###       @data = scan_cadl(@data) do |sym, val|
    158 ###         yield sym, val
    159 ###       end
    160 ###     when :regexp
    161 ###       @data = scan_regexp(@data) do |sym, val|
    162 ###         yield sym, val
    163 ###       end
    164 ###     when :term_constraint
    165 ###       @@logger.debug("#{__FILE__}:#{__LINE__}: scan: Entering scan_term_constraint at #{@filename}:#{@lineno}: data = #{data.inspect}")
    166 ###       @data = scan_term_constraint(@data) do |sym, val|
    167 ###         yield sym, val
    168 ###       end
    169 ###     else
    170 ###       raise
    171 ###     end
    172 ###     @data = $' # variable $' receives the string after the match
    173 ###   end
    174 ###   yield :EOF, nil
    175 ###   yield false, '$'
    176 ### end # of scan
    177 
    178 def scan_adl(data)
    179   @@logger.debug("#{__FILE__}:#{__LINE__}: Entering scan_adl at #{@filename}:#{@lineno}: data = #{data.inspect}")
    180   until data.nil?  do
    181     case @adl_type.last
    182     when :adl
    183       case data
    184       when /\A\n/ # carriage return
    185         @lineno += 1
    186         ;
    187       when /\A[ \t\r\f]+/ #just drop it
    188         ;
    189       when /\A--.*\n/ # single line comment
    190         @lineno += 1
    191         @@logger.debug("#{__FILE__}:#{__LINE__}: scan_adl: COMMENT = #{$&} at #{@filename}:#{@lineno}")
    192         ;
    193       when /\Adescription/   # description
    194         yield :SYM_DESCRIPTION, :SYM_DESCRIPTION
    195       when /\Adefinition/   # definition
    196         yield :SYM_DEFINITION, :SYM_DEFINITION
    197         ###----------/* symbols */ -------------------------------------------------
    198       when /\A[A-Z][a-zA-Z0-9_]*/
    199         yield :V_TYPE_IDENTIFIER, $&
    200 #      when /\A[a-zA-Z][a-zA-Z0-9_-]+\.[a-zA-Z][a-zA-Z0-9_-]+\.[a-zA-Z0-9]+/   #V_ARCHETYPE_ID
    201       when /\A(\w+)-(\w+)-(\w+)\.(\w+)(-\w+)?\.(v\w+)/   #V_ARCHETYPE_ID
    202         object_id, rm_originator, rm_name, rm_entity, concept_name, specialisation, version_id = $&, $1, $2, $3, $4, $5, $6
    203         archetype_id = OpenEHR::RM::Support::Identification::Archetype_ID.new(object_id, concept_name, rm_name, rm_entity, rm_originator, specialisation, version_id)
    204 #        yield :V_ARCHETYPE_ID, $&
    205         yield :V_ARCHETYPE_ID, archetype_id
    206       when /\A[a-z][a-zA-Z0-9_]*/
    207 #        word = $&.downcase
    208         word = $&
    209         if @@adl_reserved[word]
    210           @@logger.debug("#{__FILE__}:#{__LINE__}: scan_adl: @@adl_reserved = #{@@adl_reserved[word]} at #{@filename}:#{@lineno}")
    211           yield @@adl_reserved[word], @@adl_reserved[word]
    212         elsif #/\A[A-Z][a-zA-Z0-9_]*/
    213           @@logger.debug("#{__FILE__}:#{__LINE__}: scan_adl: V_ATTRIBUTE_IDENTIFIER = #{$&} at #{@filename}:#{@lineno}")
    214           yield :V_ATTRIBUTE_IDENTIFIER, $&
    215         end
    216       when /\A\=/   # =
    217         yield :SYM_EQ, :SYM_EQ
    218       when /\A\>=/   # >=
    219         yield :SYM_GE, :SYM_GE
    220       when /\A\<=/   # <=
    221         yield :SYM_LE, :SYM_LE
    222       when /\A\</   # <
    223         if @in_interval
    224 #          @start_block_received = false
    225           yield :SYM_LT, :SYM_LT
    226         else
    227 #          @start_block_received = true
    228           @adl_type.push(:dadl)
    229           yield :SYM_START_DBLOCK,  $&
    230         end
    231       when /\A\>/   # >
    232         if @in_interval
    233           yield :SYM_GT, :SYM_GT
    234         else
    235           adl_type = @adl_type.pop
    236           assert_at(__FILE__,__LINE__){adl_type == :dadl}
    237           yield :SYM_END_DBLOCK, :SYM_END_DBLOCK
    238         end
    239       when /\A\{/   # {
    240         @adl_type.push(:cadl)
    241         @@logger.debug("#{__FILE__}:#{__LINE__}: scan_cadl: entering cADL at #{@filename}:#{@lineno}")
    242         yield :SYM_START_CBLOCK, :SYM_START_CBLOCK
    243       when /\A\}/   # }
    244         adl_type = @adl_type.pop
    245 #        puts "Escaping #{adl_type}"
    246         assert_at(__FILE__,__LINE__){adl_type == :cadl}
    247         @@logger.debug("#{__FILE__}:#{__LINE__}: scan_cadl: exiting cADL at #{@filename}:#{@lineno}")
    248         yield :SYM_END_CBLOCK, $&
    249       when /\A\-/   # -
    250         yield :Minus_code, :Minus_code
    251       when /\A\+/   # +
    252         yield :Plus_code, :Plus_code
    253       when /\A\*/   # *
    254         yield :Star_code, :Star_code
    255       when /\A\//   # /
    256         yield :Slash_code, :Slash_code
    257       when /\A\^/   # ^
    258         yield :Caret_code, :Caret_code
    259       when /\A\=/   # =
    260         yield :Equal_code, :Equal_code
    261       when /\A\.\.\./   # ...
    262         yield :SYM_LIST_CONTINUE, :SYM_LIST_CONTINUE
    263       when /\A\.\./   # ..
    264         yield :SYM_ELLIPSIS, :SYM_ELLIPSIS
    265       when /\A\./   # .
    266         yield :Dot_code, :Dot_code
    267       when /\A\;/   # ;
    268         yield :Semicolon_code, :Semicolon_code
    269       when /\A\,/   # ,
    270         yield :Comma_code, :Comma_code
    271       when /\A\:/   # :
    272         yield :Colon_code, :Colon_code
    273       when /\A\!/   # !
    274         yield :Exclamation_code, :Exclamation_code
    275       when /\A\(/   # (
    276         yield :Left_parenthesis_code, :Left_parenthesis_code
    277       when /\A\)/   # )
    278         yield :Right_parenthesis_code, :Right_parenthesis_code
    279       when /\A\$/   # $
    280         yield :Dollar_code, :Dollar_code
    281       when /\A\?\?/   # ??
    282         yield :SYM_DT_UNKNOWN, :SYM_DT_UNKNOWN
    283       when /\A\?/   # ?
    284         yield :Question_mark_code, :Question_mark_code
    285       when /\A[0-9]+\.[0-9]+(\.[0-9]+)*/   # ?
    286         yield :V_VERSION_STRING, $&
    287       when /\A\|/   # |
    288         if @in_interval
    289           @in_interval = false
    290         else
    291           @in_interval = true
    292         end
    293         yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
    294       when /\A\[[a-zA-Z0-9()\._-]+::[a-zA-Z0-9\._-]+\]/
    295 #      when /\A\[[a-zA-Z0-9()\._-]+\:\:[a-zA-Z0-9\._-]+\]/   #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
    296         yield :V_QUALIFIED_TERM_CODE_REF, $&
    297       when /\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/   #V_LOCAL_TERM_CODE_REF
    298         yield :V_LOCAL_TERM_CODE_REF, $&
    299       when /\A\[/   # [
    300         yield :Left_bracket_code, :Left_bracket_code
    301       when /\A\]/   # ]
    302         yield :Right_bracket_code, :Right_bracket_code
    303 
    304       when /\A"([^"]*)"/m #V_STRING
    305         yield :V_STRING, $1
    306       when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
    307         yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
    308       when /\Aa[ct][0-9.]+/   #V_LOCAL_CODE
    309         yield :V_LOCAL_CODE, $&
    310       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-]-
    311         yield :V_ISO8601_EXTENDED_DATE_TIME, $&
    312       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]
    313         yield :V_ISO8601_EXTENDED_TIME, $&
    314       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
    315         yield :V_ISO8601_EXTENDED_DATE, $&
    316       when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
    317         yield :V_GENERIC_TYPE_IDENTIFIER, $&
    318       when /\A[0-9]+|[0-9]+[eE][+-]?[0-9]+/   #V_INTEGER
    319         yield :V_INTEGER, $&
    320       when /\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+ /   #V_REAL
    321         yield :V_REAL, $&
    322         #    when /\A"((?:[^"\\]+|\\.)*)"/ #V_STRING
    323       when /\A[a-z]+:\/\/[^<>|\\{}^~"\[\] ]*/ #V_URI
    324         yield :V_URI, $&
    325       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
    326         yield :V_ISO8601_DURATION, $&
    327       when /\A\S/ #UTF8CHAR
    328         yield :UTF8CHAR, $&
    329       end
    330       data = $' # variable $' receives the string after the match
    331     when :dadl
    332       data = scan_dadl(data) do |sym, val|
    333         yield sym, val
    334       end
    335     when :cadl
    336       data = scan_cadl(data) do |sym, val|
    337         yield sym, val
    338       end
    339     when :regexp
    340       data = scan_regexp(data) do |sym, val|
    341         yield sym, val
    342       end
    343     when :term_constraint
    344       @@logger.debug("#{__FILE__}:#{__LINE__}: scan_adl: Entering scan_term_constraint at #{@filename}:#{@lineno}: data = #{data.inspect}")
    345 
    346       data = scan_term_constraint(data) do |sym, val|
    347         yield sym, val
    348       end
    349     else
    350       raise
    351     end
    352   end
    353 end # scan_adl
    354 
    355 
    356 def scan_cadl(data)
    357   @@logger.debug("#{__FILE__}:#{__LINE__}: Entering scan_cadl at #{@filename}:#{@lineno}: data = #{data.inspect}")
    358   until data.nil?  do
    359     case @adl_type.last
    360     when :cadl
    361       case scanned = @@cadl_scanner.parse(data)
    362       when Yaparc::Result::OK
    363         if scanned.value[0] == :START_V_C_DOMAIN_TYPE_BLOCK
    364           @in_c_domain_type = true
    365           @adl_type.push(:dadl)
    366           yield scanned.value
    367         else
    368           yield scanned.value
    369         end
    370         data = scanned.input
    371       end
    372 
    373       case data
    374       when /\A\n/ # carriage return
    375         @lineno += 1
    376         ;
    377       when /\A[ \t\r\f]+/ #just drop it
    378         ;
    379       when /\A--.*\n/ # single line comment
    380         @lineno += 1
    381         @@logger.debug("#{__FILE__}:#{__LINE__}: scan_cadl: COMMENT = #{$&} at #{@filename}:#{@lineno}")
    382         ;
    383         ###----------/* symbols */ -------------------------------------------------
    384       when /\A\=/   # =
    385         yield :SYM_EQ, :SYM_EQ
    386       when /\A\>=/   # >=
    387         yield :SYM_GE, :SYM_GE
    388       when /\A\<=/   # <=
    389         yield :SYM_LE, :SYM_LE
    390 ###       when /\A[A-Z][a-zA-Z0-9_]*[ \n]*\</   # V_C_DOMAIN_TYPE
    391 ###         @in_c_domain_type = true
    392 ###         @adl_type.push(:dadl)
    393 ###         yield :START_V_C_DOMAIN_TYPE_BLOCK, $&
    394       when /\A\</   # <
    395         if @in_interval
    396           yield :SYM_LT, :SYM_LT
    397         else
    398           @adl_type.push(:dadl)
    399           yield :SYM_START_DBLOCK,  $&
    400         end
    401       when /\A\>/   # >
    402         if @in_interval
    403           yield :SYM_GT, :SYM_GT
    404         else
    405           adl_type = @adl_type.pop
    406 #          puts "Escaping #{adl_type}"
    407           assert_at(__FILE__,__LINE__){adl_type == :dadl}
    408           yield :SYM_END_DBLOCK, :SYM_END_DBLOCK
    409         end
    410       when /\A\-/   # -
    411         yield :Minus_code, :Minus_code
    412       when /\A\+/   # +
    413         yield :Plus_code, :Plus_code
    414       when /\A\*/   # *
    415         yield :Star_code, :Star_code
    416       when /\A\//   # /
    417         yield :Slash_code, :Slash_code
    418       when /\A\^/   # ^
    419         yield :Caret_code, :Caret_code
    420       when /\A\.\.\./   # ...
    421         yield :SYM_LIST_CONTINUE, :SYM_LIST_CONTINUE
    422       when /\A\.\./   # ..
    423         yield :SYM_ELLIPSIS, :SYM_ELLIPSIS
    424       when /\A\./   # .
    425         yield :Dot_code, :Dot_code
    426       when /\A\;/   # ;
    427         yield :Semicolon_code, :Semicolon_code
    428       when /\A\,/   # ,
    429         yield :Comma_code, :Comma_code
    430       when /\A\:/   # :
    431         yield :Colon_code, :Colon_code
    432       when /\A\!/   # !
    433         yield :Exclamation_code, :Exclamation_code
    434       when /\A\(/   # (
    435         yield :Left_parenthesis_code, :Left_parenthesis_code
    436       when /\A\)/   # )
    437         yield :Right_parenthesis_code, :Right_parenthesis_code
    438       when /\A\{\// #V_REGEXP
    439         if @adl_type.last != :regexp
    440           @in_regexp = true
    441           @adl_type.push(:regexp)
    442           yield :START_REGEXP_BLOCK, :START_REGEXP_BLOCK
    443         else
    444           raise
    445         end
    446 #        yield :V_REGEXP, :V_REGEXP
    447       when /\A\{/   # {
    448         @adl_type.push(:cadl)
    449         @@logger.debug("#{__FILE__}:#{__LINE__}: scan_cadl: entering cADL at #{@filename}:#{@lineno}")
    450         yield :SYM_START_CBLOCK, :SYM_START_CBLOCK
    451       when /\A\}/   # }
    452         adl_type = @adl_type.pop
    453 #        puts "Escaping #{adl_type}"
    454         assert_at(__FILE__,__LINE__){adl_type == :cadl}
    455         @@logger.debug("#{__FILE__}:#{__LINE__}: scan_cadl: exiting cADL at #{@filename}:#{@lineno}")
    456         yield :SYM_END_CBLOCK, :SYM_END_CBLOCK
    457       when /\A\$/   # $
    458         yield :Dollar_code, :Dollar_code
    459       when /\A\?\?/   # ??
    460         yield :SYM_DT_UNKNOWN, :SYM_DT_UNKNOWN
    461       when /\A\?/   # ?
    462         yield :Question_mark_code, :Question_mark_code
    463       when /\A\|/   # |
    464         @@logger.debug("#{__FILE__}:#{__LINE__}: scan_cadl: @in_interval = #{@in_interval} at #{@filename}:#{@lineno}")
    465         if @in_interval
    466           @in_interval = false
    467         else
    468 #          @in_interval = false
    469           @in_interval = true
    470         end
    471         @@logger.debug("#{__FILE__}:#{__LINE__}: scan_cadl: SYM_INTERVAL_DELIM at #{@filename}:#{@lineno}")
    472         yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
    473 
    474       when /\A\[[a-zA-Z0-9()\._-]+::[a-zA-Z0-9\._-]+\]/  #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
    475 #      when /\A\[[a-zA-Z0-9._\-]+::[a-zA-Z0-9._\-]+\]/   #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
    476         yield :V_QUALIFIED_TERM_CODE_REF, $&
    477       when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
    478         yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
    479       when /\A\[([a-zA-Z0-9\(\)\._\-]+)::[ \t\n]*/
    480         @adl_type.push(:term_constraint)
    481         yield :START_TERM_CODE_CONSTRAINT, $1
    482       when /\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/   #V_LOCAL_TERM_CODE_REF
    483         yield :V_LOCAL_TERM_CODE_REF, $&
    484       when /\A\[/   # [
    485         yield :Left_bracket_code, :Left_bracket_code
    486       when /\A\]/   # ]
    487         yield :Right_bracket_code, :Right_bracket_code
    488       when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
    489         yield :V_GENERIC_TYPE_IDENTIFIER, $&
    490       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]/
    491         yield :V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN, $&
    492       when /\A[yY][yY][yY][yY]-[mM?X][mM?X]-[dD?X][dD?X]/
    493         yield :V_ISO8601_DATE_CONSTRAINT_PATTERN, $&
    494       when /\A[hH][hH]:[mM?X][mM?X]:[sS?X][sS?X]/
    495         yield :V_ISO8601_TIME_CONSTRAINT_PATTERN, $&
    496       when /\A[a-z][a-zA-Z0-9_]*/
    497         word = $&.dup
    498         if @@cadl_reserved[word.downcase]
    499           yield @@cadl_reserved[word.downcase], @@cadl_reserved[word.downcase]
    500         else
    501           @@logger.debug("#{__FILE__}:#{__LINE__}: scan_cadl: V_ATTRIBUTE_IDENTIFIER = #{word} at #{@filename}:#{@lineno}")
    502           yield :V_ATTRIBUTE_IDENTIFIER, word #V_ATTRIBUTE_IDENTIFIER /\A[a-z][a-zA-Z0-9_]*/
    503         end
    504       when /\A[A-Z][a-zA-Z0-9_]*/
    505         word = $&.dup
    506         if @@cadl_reserved[word.downcase]
    507           yield @@cadl_reserved[word.downcase], @@cadl_reserved[word.downcase]
    508         else
    509           yield :V_TYPE_IDENTIFIER, $&
    510         end
    511       when /\Aa[ct][0-9.]+/   #V_LOCAL_CODE
    512         yield :V_LOCAL_CODE, $&
    513       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-]-
    514         yield :V_ISO8601_EXTENDED_DATE_TIME, $&
    515       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]
    516         yield :V_ISO8601_EXTENDED_TIME, $&
    517       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
    518         yield :V_ISO8601_EXTENDED_DATE, $&
    519       when /\A[0-9]+|[0-9]+[eE][+-]?[0-9]+/   #V_INTEGER
    520         yield :V_INTEGER, $&
    521       when /\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+ /   #V_REAL
    522         yield :V_REAL, $&
    523            when /\A"((?:[^"\\]+|\\.)*)"/ #V_STRING
    524       when /\A"([^"]*)"/m #V_STRING
    525         yield :V_STRING, $1
    526       when /\A[a-z]+:\/\/[^<>|\\{}^~"\[\] ]*/ #V_URI
    527         yield :V_URI, $&
    528 ###       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
    529 ###         yield :V_ISO8601_DURATION, $&
    530       when /\A\S/ #UTF8CHAR
    531         yield :UTF8CHAR, $&
    532       else
    533         raise
    534       end
    535       data = $' # variable $' receives the string after the match
    536     when :adl
    537       data = scan_adl(data) do |sym, val|
    538         yield sym, val
    539       end
    540     when :dadl
    541       data = scan_dadl(data) do |sym, val|
    542         yield sym, val
    543       end
    544     when :regexp
    545       data = scan_regexp(data) do |sym, val|
    546         yield sym, val
    547       end
    548     when :term_constraint
    549       @@logger.debug("#{__FILE__}:#{__LINE__}: scan_cadl: Entering scan_term_constraint at #{@filename}:#{@lineno}: data = #{data.inspect}")
    550      
    551       data = scan_term_constraint(data) do |sym, val|
    552         yield sym, val
    553       end
    554     else
    555       raise
    556     end
    557   end # of until
    558 end # of scan_cadl
    559 
    560 def scan_dadl(data)
    561   @@logger.debug("#{__FILE__}:#{__LINE__}: Entering scan_dadl at #{@filename}:#{@lineno}: data = #{data.inspect}")
    562   until data.nil?  do
    563     case @adl_type.last
    564     when :dadl
    565       case scanned = @@dadl_scanner.parse(data)
    566       when Yaparc::Result::OK
    567         yield scanned.value
    568         data = scanned.input
    569       else
    570       end
    571 
    572       case data
    573       when /\A\n/ # carriage return
    574         @lineno += 1
    575         ;
    576       when /\A[ \t\r\f]+/ #just drop it
    577         ;
    578       when /\A--.*\n/ # single line comment
    579         @lineno += 1
    580         @@logger.debug("#{__FILE__}:#{__LINE__}: scan_dadl: COMMENT = #{$&} at #{@filename}:#{@lineno}")
    581         ;
    582         ###----------/* symbols */ -------------------------------------------------
    583       when /\A\=/   # =
    584         yield :SYM_EQ, :SYM_EQ
    585       when /\A\>\=/   # >=
    586         yield :SYM_GE, :SYM_GE
    587       when /\A\<\=/   # <=
    588         yield :SYM_LE, :SYM_LE
    589       when /\A\</   # <
    590         if @in_interval
    591           yield :SYM_LT, :SYM_LT
    592         else
    593           @adl_type.push(:dadl)
    594           yield :SYM_START_DBLOCK, :SYM_START_DBLOCK
    595         end
    596       when /\A\>/   # >
    597         if @in_interval
    598 #          @in_interval = false
    599           yield :SYM_GT, :SYM_GT
    600         elsif @in_c_domain_type == true
    601           assert_at(__FILE__,__LINE__){@adl_type.last == :dadl}
    602           adl_type = @adl_type.pop
    603           if @adl_type.last == :cadl
    604             @in_c_domain_type = false
    605             yield :END_V_C_DOMAIN_TYPE_BLOCK, $&
    606           else
    607             yield :SYM_END_DBLOCK, $&
    608           end
    609         elsif @in_c_domain_type == false
    610           adl_type = @adl_type.pop
    611           assert_at(__FILE__,__LINE__){adl_type == :dadl}
    612           yield :SYM_END_DBLOCK, $&
    613         else
    614           raise
    615         end
    616       when /\A\-/   # -
    617         yield :Minus_code, :Minus_code
    618       when /\A\+/   # +
    619         yield :Plus_code, :Plus_code
    620       when /\A\*/   # *
    621         yield :Star_code, :Star_code
    622       when /\A\//   # /
    623         yield :Slash_code, :Slash_code
    624       when /\A\^/   # ^
    625         yield :Caret_code, :Caret_code
    626       when /\A\.\.\./   # ...
    627         yield :SYM_LIST_CONTINUE, :SYM_LIST_CONTINUE
    628       when /\A\.\./   # ..
    629         yield :SYM_ELLIPSIS, :SYM_ELLIPSIS
    630       when /\A\./   # .
    631         yield :Dot_code, :Dot_code
    632       when /\A\;/   # ;
    633         yield :Semicolon_code, :Semicolon_code
    634       when /\A\,/   # ,
    635         yield :Comma_code, :Comma_code
    636       when /\A\:/   # :
    637         yield :Colon_code, :Colon_code
    638       when /\A\!/   # !
    639         yield :Exclamation_code, :Exclamation_code
    640       when /\A\(/   # (
    641         yield :Left_parenthesis_code, :Left_parenthesis_code
    642       when /\A\)/   # )
    643         yield :Right_parenthesis_code, :Right_parenthesis_code
    644       when /\A\$/   # $
    645         yield :Dollar_code, :Dollar_code
    646       when /\A\?\?/   # ??
    647         yield :SYM_DT_UNKNOWN, :SYM_DT_UNKNOWN
    648       when /\A\?/   # ?
    649         yield :Question_mark_code, :Question_mark_code
    650       when /\A\|/   # |
    651         @@logger.debug("#{__FILE__}:#{__LINE__}: scan_dadl: @in_interval = #{@in_interval} at #{@filename}:#{@lineno}")
    652         if @in_interval
    653           @in_interval = false
    654         else
    655 #          @in_interval = false
    656           @in_interval = true
    657         end
    658         @@logger.debug("#{__FILE__}:#{__LINE__}: scan_dadl: SYM_INTERVAL_DELIM at #{@filename}:#{@lineno}")
    659         yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
    660 ###       when /\A\[[a-zA-Z0-9()\._-]+::[a-zA-Z0-9\._-]+\]/   #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
    661 ###         yield :V_QUALIFIED_TERM_CODE_REF, $&
    662 ###       when /\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/   #V_LOCAL_TERM_CODE_REF
    663 ###         yield :V_LOCAL_TERM_CODE_REF, $&
    664 ###       when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
    665 ###         yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
    666       when /\A\[/   # [
    667         yield :Left_bracket_code, :Left_bracket_code
    668       when /\A\]/   # ]
    669         yield :Right_bracket_code, :Right_bracket_code
    670 ###       when /\A[A-Z][a-zA-Z0-9_-]*/
    671 ###         yield :V_TYPE_IDENTIFIER, $&
    672 ###       when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
    673 ###         yield :V_GENERIC_TYPE_IDENTIFIER, $&
    674 ###       when /\A[a-z][a-zA-Z0-9_]*/
    675 ###         word = $&.downcase
    676 ###         if @@dadl_reserved[word]
    677 ###           yield @@dadl_reserved[word], @@dadl_reserved[word]
    678 ###         else
    679 ###           yield :V_ATTRIBUTE_IDENTIFIER, $&
    680 ###         end
    681 ###       when /\Aa[ct][0-9.]+/   #V_LOCAL_CODE
    682 ###         yield :V_LOCAL_CODE, $&
    683       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-]-
    684         yield :V_ISO8601_EXTENDED_DATE_TIME, $&
    685       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]
    686         yield :V_ISO8601_EXTENDED_TIME, $&
    687       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
    688         yield :V_ISO8601_EXTENDED_DATE, $&
    689       when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
    690         yield :V_GENERIC_TYPE_IDENTIFIER, $&
    691       when /\A[0-9]+|[0-9]+[eE][+-]?[0-9]+/   #V_INTEGER
    692         yield :V_INTEGER, $&
    693 ###       when /\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+ /   #V_REAL
    694 ###         yield :V_REAL, $&
    695         #    when /\A"((?:[^"\\]+|\\.)*)"/ #V_STRING
    696 ###       when /\A"([^"]*)"/m #V_STRING
    697 ###         yield :V_STRING, $1
    698       when /\A[a-z]+:\/\/[^<>|\\{}^~"\[\] ]*/ #V_URI
    699         yield :V_URI, $&
    700 ###       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
    701 ###         yield :V_ISO8601_DURATION, $&
    702       when /\A\S/ #UTF8CHAR
    703         yield :UTF8CHAR, $&
    704       end
    705       data = $' # variable $' receives the string after the match
    706     when :adl
    707       data = scan_adl(data) do |sym, val|
    708         yield sym, val
    709       end
    710     when :cadl
    711       data = scan_cadl(data) do |sym, val|
    712         yield sym, val
    713       end
    714     when :regexp
    715 #      puts "Entering scan_regexp"
    716       data = scan_regexp(data) do |sym, val|
    717         yield sym, val
    718       end
    719     when :term_constraint
    720       @@logger.debug("#{__FILE__}:#{__LINE__}: scan_dadl: Entering scan_term_constraint at #{@filename}:#{@lineno}: data = #{data.inspect}")
    721 
    722       data = scan_term_constraint(data) do |sym, val|
    723         yield sym, val
    724       end
    725     else
    726       raise
    727     end
    728   end
    729 end # of scan_dadl
    730 
    731 def scan_regexp(data)
    732   @@logger.debug("#{__FILE__}:#{__LINE__}: Entering scan_regexp at #{@filename}:#{@lineno}: data = #{data.inspect}")
    733   until data.nil?  do
    734     case @adl_type.last
    735     when :regexp
    736       case data
    737       when /\A\/\}/ #V_REGEXP
    738         if @adl_type.last == :regexp
    739           @in_regexp = false
    740           @adl_type.pop
    741           yield :END_REGEXP_BLOCK, :END_REGEXP_BLOCK
    742         else
    743           raise
    744         end
    745       when /\A(.*)(\/\})/ #V_REGEXP
    746         yield :REGEXP_BODY, $1
    747         if @adl_type.last == :regexp
    748           @in_regexp = false
    749           @adl_type.pop
    750           yield :END_REGEXP_BLOCK, :END_REGEXP_BLOCK
    751         else
    752           raise
    753         end
    754       else
    755         raise data
    756       end
    757       data = $' # variable $' receives the string after the match
    758     when :adl
    759       data = scan_adl(data) do |sym, val|
    760         yield sym, val
    761       end
    762     when :dadl
    763       data = scan_dadl(data) do |sym, val|
    764         yield sym, val
    765       end
    766     when :cadl
    767       data = scan_cadl(data) do |sym, val|
    768         yield sym, val
    769       end
    770     when :term_constraint
    771       @@logger.debug("#{__FILE__}:#{__LINE__}: scan_regexp: Entering scan_term_constraint at #{@filename}:#{@lineno}")
    772       data = scan_term_constraint(data) do |sym, val|
    773         yield sym, val
    774       end
    775     else
    776       raise
    777     end
    778   end
    779 end # of scan_regexp
    780 
    781 def scan_term_constraint(data)
    782   @@logger.debug("#{__FILE__}:#{__LINE__}: Entering scan_term_constraint")
    783   until data.nil?  do
    784     case @adl_type.last
    785     when :term_constraint
    786       case data
    787       when /\A\n/ # carriage return
    788         @lineno += 1
    789         ;
    790       when /\A[ \t\r\f]+/ #just drop it
    791         ;
    792       when /\A--.*$/ # single line comment
    793         @lineno += 1
    794         #@@logger.debug("#{__FILE__}:#{__LINE__}: scan_term_constraint: COMMENT = #{$&} at #{@filename}:#{@lineno}")
    795         ;
    796       when /\A([a-zA-Z0-9\._\-])+[ \t]*,/ # match any line, with ',' termination
    797         yield :TERM_CODE, $1
    798       when /\A([a-zA-Z0-9\._\-])+[ \t]*;/ # match second last line with ';' termination (assumed value)
    799         yield :TERM_CODE, $1
    800       when /\A([a-zA-Z0-9\._\-])*[ \t]*\]/ # match final line, terminating in ']'
    801         adl_type = @adl_type.pop
    802         assert_at(__FILE__,__LINE__){adl_type == :term_constraint}
    803         yield :END_TERM_CODE_CONSTRAINT, $1
    804       else
    805         raise "data = #{data}"
    806       end
    807       data = $' # variable $' receives the string after the match
    808     when :adl
    809       data = scan_adl(data) do |sym, val|
    810         yield sym, val
    811       end
    812     when :dadl
    813       data = scan_dadl(data) do |sym, val|
    814         yield sym, val
    815       end
    816     when :cadl
    817       data = scan_cadl(data) do |sym, val|
    818         yield sym, val
    819       end
    820     else
    821       raise
    822     end
    823   end
    824 end # of scan_term_constraint
    825115
    826116
     
    843133
    844134
    845 
     135__END__
    846136
    847137
     
    1518808  3, 189, :_reduce_none,
    1519809  3, 189, :_reduce_none,
    1520   1, 180, :_reduce_none,
     810  1, 180, :_reduce_191,
    1521811  3, 190, :_reduce_none,
    1522812  3, 190, :_reduce_none,
     
    20901380      archetype.original_language = language
    20911381    end
    2092     @@logger.debug("#{__FILE__}:#{__LINE__}: archetype = #{archetype} at #{@filename}:#{@lineno}")
     1382    @@logger.debug("#{__FILE__}:#{__LINE__}: archetype = #{archetype.to_yaml} at #{@filename}:#{@lineno}")
    20931383    result = archetype
    20941384 
     
    27742064module_eval(<<'.,.,', 'parser.y', 531)
    27752065  def _reduce_103(val, _values, result)
    2776         @@logger.debug("SYM_START_DBLOCK: #{val[0]} at #{@filename}:#{@lineno}")
    2777     result = val[0]
    2778  
    2779     result
    2780   end
    2781 .,.,
    2782 
    2783 module_eval(<<'.,.,', 'parser.y', 537)
     2066        result = val[0]
     2067 
     2068    result
     2069  end
     2070.,.,
     2071
     2072module_eval(<<'.,.,', 'parser.y', 536)
    27842073  def _reduce_104(val, _values, result)
    27852074        result = Array[val[0]]
     
    27892078.,.,
    27902079
    2791 module_eval(<<'.,.,', 'parser.y', 541)
     2080module_eval(<<'.,.,', 'parser.y', 540)
    27922081  def _reduce_105(val, _values, result)
    27932082        result = (val[0] << val[1])
     
    27972086.,.,
    27982087
    2799 module_eval(<<'.,.,', 'parser.y', 546)
     2088module_eval(<<'.,.,', 'parser.y', 545)
    28002089  def _reduce_106(val, _values, result)
    28012090        @@logger.debug("#{__FILE__}:#{__LINE__}: keyed_object = #{val[0]} at #{@filename}:#{@lineno}")
    2802     result = {:object_key => val[0], :object_block => val[1]}
    2803  
    2804     result
    2805   end
    2806 .,.,
    2807 
    2808 module_eval(<<'.,.,', 'parser.y', 552)
     2091    result = {:object_key => val[0], :object_block => val[2]}
     2092 
     2093    result
     2094  end
     2095.,.,
     2096
     2097module_eval(<<'.,.,', 'parser.y', 551)
    28092098  def _reduce_107(val, _values, result)
    28102099        @@logger.debug("object_key: [#{val[1]}] at #{@filename}:#{@lineno}")
     
    28152104.,.,
    28162105
    2817 module_eval(<<'.,.,', 'parser.y', 558)
     2106module_eval(<<'.,.,', 'parser.y', 557)
    28182107  def _reduce_108(val, _values, result)
    28192108        result = {:untyped_single_attr_object_block => val[0]}
     
    28232112.,.,
    28242113
    2825 module_eval(<<'.,.,', 'parser.y', 562)
     2114module_eval(<<'.,.,', 'parser.y', 561)
    28262115  def _reduce_109(val, _values, result)
    28272116        result = {:type_identifier => val[0], :untyped_single_attr_object_block => val[1]}
     
    28312120.,.,
    28322121
    2833 module_eval(<<'.,.,', 'parser.y', 567)
     2122module_eval(<<'.,.,', 'parser.y', 566)
    28342123  def _reduce_110(val, _values, result)
    28352124        @@logger.debug("#{__FILE__}:#{__LINE__}: single_attr_object_complex_head = #{val[0]} at #{@filename}:#{@lineno}")
     
    28402129.,.,
    28412130
    2842 module_eval(<<'.,.,', 'parser.y', 572)
     2131module_eval(<<'.,.,', 'parser.y', 571)
    28432132  def _reduce_111(val, _values, result)
    28442133        @@logger.debug("#{__FILE__}:#{__LINE__}: attr_vals = #{val[1]} at #{@filename}:#{@lineno}")
     
    28512140# reduce 112 omitted
    28522141
    2853 module_eval(<<'.,.,', 'parser.y', 578)
     2142module_eval(<<'.,.,', 'parser.y', 577)
    28542143  def _reduce_113(val, _values, result)
    28552144        @@logger.debug("#{__FILE__}:#{__LINE__}: untyped_primitive_object_block = #{val[0]} at #{@filename}:#{@lineno}")
     
    28602149.,.,
    28612150
    2862 module_eval(<<'.,.,', 'parser.y', 583)
     2151module_eval(<<'.,.,', 'parser.y', 582)
    28632152  def _reduce_114(val, _values, result)
    28642153        @@logger.debug("#{__FILE__}:#{__LINE__}: type_identifier = #{val[0]}, untyped_primitive_object_block = #{val[1]} at #{@filename}:#{@lineno}")
     
    28692158.,.,
    28702159
    2871 module_eval(<<'.,.,', 'parser.y', 588)
     2160module_eval(<<'.,.,', 'parser.y', 587)
    28722161  def _reduce_115(val, _values, result)
    28732162        @@logger.debug("#{__FILE__}:#{__LINE__}: primitive_object_block = <#{val[1]}> at #{@filename}:#{@lineno}")
     
    28782167.,.,
    28792168
    2880 module_eval(<<'.,.,', 'parser.y', 593)
     2169module_eval(<<'.,.,', 'parser.y', 592)
    28812170  def _reduce_116(val, _values, result)
    28822171        result = val[0]
     
    28862175.,.,
    28872176
    2888 module_eval(<<'.,.,', 'parser.y', 597)
     2177module_eval(<<'.,.,', 'parser.y', 596)
    28892178  def _reduce_117(val, _values, result)
    28902179        result = val[0]
     
    28942183.,.,
    28952184
    2896 module_eval(<<'.,.,', 'parser.y', 601)
     2185module_eval(<<'.,.,', 'parser.y', 600)
    28972186  def _reduce_118(val, _values, result)
    28982187        result = val[0]
     
    29022191.,.,
    29032192
    2904 module_eval(<<'.,.,', 'parser.y', 605)
     2193module_eval(<<'.,.,', 'parser.y', 604)
    29052194  def _reduce_119(val, _values, result)
    29062195        result = val[0]
     
    29102199.,.,
    29112200
    2912 module_eval(<<'.,.,', 'parser.y', 609)
     2201module_eval(<<'.,.,', 'parser.y', 608)
    29132202  def _reduce_120(val, _values, result)
    29142203        result = val[0]
     
    29182207.,.,
    29192208
    2920 module_eval(<<'.,.,', 'parser.y', 613)
     2209module_eval(<<'.,.,', 'parser.y', 612)
    29212210  def _reduce_121(val, _values, result)
    29222211        @@logger.debug("string_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    29272216.,.,
    29282217
    2929 module_eval(<<'.,.,', 'parser.y', 618)
     2218module_eval(<<'.,.,', 'parser.y', 617)
    29302219  def _reduce_122(val, _values, result)
    29312220        @@logger.debug("integer_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    29362225.,.,
    29372226
    2938 module_eval(<<'.,.,', 'parser.y', 623)
     2227module_eval(<<'.,.,', 'parser.y', 622)
    29392228  def _reduce_123(val, _values, result)
    29402229        @@logger.debug("real_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    29452234.,.,
    29462235
    2947 module_eval(<<'.,.,', 'parser.y', 628)
     2236module_eval(<<'.,.,', 'parser.y', 627)
    29482237  def _reduce_124(val, _values, result)
    29492238        @@logger.debug("boolean_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    29542243.,.,
    29552244
    2956 module_eval(<<'.,.,', 'parser.y', 633)
     2245module_eval(<<'.,.,', 'parser.y', 632)
    29572246  def _reduce_125(val, _values, result)
    29582247        @@logger.debug("character_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    29632252.,.,
    29642253
    2965 module_eval(<<'.,.,', 'parser.y', 638)
     2254module_eval(<<'.,.,', 'parser.y', 637)
    29662255  def _reduce_126(val, _values, result)
    29672256        @@logger.debug("date_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    29722261.,.,
    29732262
    2974 module_eval(<<'.,.,', 'parser.y', 643)
     2263module_eval(<<'.,.,', 'parser.y', 642)
    29752264  def _reduce_127(val, _values, result)
    29762265        @@logger.debug("time_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    29812270.,.,
    29822271
    2983 module_eval(<<'.,.,', 'parser.y', 648)
     2272module_eval(<<'.,.,', 'parser.y', 647)
    29842273  def _reduce_128(val, _values, result)
    29852274        @@logger.debug("date_time_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    29902279.,.,
    29912280
    2992 module_eval(<<'.,.,', 'parser.y', 653)
     2281module_eval(<<'.,.,', 'parser.y', 652)
    29932282  def _reduce_129(val, _values, result)
    29942283        @@logger.debug("duration_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    29992288.,.,
    30002289
    3001 module_eval(<<'.,.,', 'parser.y', 658)
     2290module_eval(<<'.,.,', 'parser.y', 657)
    30022291  def _reduce_130(val, _values, result)
    30032292        @@logger.debug("uri_value: #{val[0]} at #{@filename}:#{@lineno}")
     
    30382327# reduce 145 omitted
    30392328
    3040 module_eval(<<'.,.,', 'parser.y', 681)
     2329module_eval(<<'.,.,', 'parser.y', 680)
    30412330  def _reduce_146(val, _values, result)
    30422331        @@logger.debug("V_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
     
    30472336.,.,
    30482337
    3049 module_eval(<<'.,.,', 'parser.y', 686)
     2338module_eval(<<'.,.,', 'parser.y', 685)
    30502339  def _reduce_147(val, _values, result)
    30512340        @@logger.debug("V_GENERIC_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
     
    30562345.,.,
    30572346
    3058 module_eval(<<'.,.,', 'parser.y', 692)
     2347module_eval(<<'.,.,', 'parser.y', 691)
    30592348  def _reduce_148(val, _values, result)
    30602349        @@logger.debug("V_STRING: #{val[0]} at #{@filename}:#{@lineno}")
     
    30712360# reduce 151 omitted
    30722361
    3073 module_eval(<<'.,.,', 'parser.y', 702)
     2362module_eval(<<'.,.,', 'parser.y', 701)
    30742363  def _reduce_152(val, _values, result)
    30752364        begin
     
    30842373.,.,
    30852374
    3086 module_eval(<<'.,.,', 'parser.y', 711)
     2375module_eval(<<'.,.,', 'parser.y', 710)
    30872376  def _reduce_153(val, _values, result)
    30882377        begin
     
    30972386.,.,
    30982387
    3099 module_eval(<<'.,.,', 'parser.y', 720)
     2388module_eval(<<'.,.,', 'parser.y', 719)
    31002389  def _reduce_154(val, _values, result)
    31012390        begin
     
    31342423# reduce 166 omitted
    31352424
    3136 module_eval(<<'.,.,', 'parser.y', 746)
     2425module_eval(<<'.,.,', 'parser.y', 745)
    31372426  def _reduce_167(val, _values, result)
    31382427        begin
     
    31472436.,.,
    31482437
    3149 module_eval(<<'.,.,', 'parser.y', 755)
     2438module_eval(<<'.,.,', 'parser.y', 754)
    31502439  def _reduce_168(val, _values, result)
    31512440        begin
     
    31602449.,.,
    31612450
    3162 module_eval(<<'.,.,', 'parser.y', 764)
     2451module_eval(<<'.,.,', 'parser.y', 763)
    31632452  def _reduce_169(val, _values, result)
    31642453        begin
     
    31972486# reduce 181 omitted
    31982487
    3199 module_eval(<<'.,.,', 'parser.y', 789)
     2488module_eval(<<'.,.,', 'parser.y', 788)
    32002489  def _reduce_182(val, _values, result)
    32012490        result = true
     
    32052494.,.,
    32062495
    3207 module_eval(<<'.,.,', 'parser.y', 793)
     2496module_eval(<<'.,.,', 'parser.y', 792)
    32082497  def _reduce_183(val, _values, result)
    32092498        result = false
     
    32272516# reduce 190 omitted
    32282517
    3229 # reduce 191 omitted
     2518module_eval(<<'.,.,', 'parser.y', 807)
     2519  def _reduce_191(val, _values, result)
     2520        result = val[0]
     2521 
     2522    result
     2523  end
     2524.,.,
    32302525
    32312526# reduce 192 omitted
     
    33052600# reduce 229 omitted
    33062601
    3307 module_eval(<<'.,.,', 'parser.y', 856)
     2602module_eval(<<'.,.,', 'parser.y', 858)
    33082603  def _reduce_230(val, _values, result)
    33092604        @@logger.debug("V_ISO8601_DURATION: #{val[0]} at #{@filename}:#{@lineno}")
     
    33382633# reduce 242 omitted
    33392634
    3340 module_eval(<<'.,.,', 'parser.y', 876)
     2635module_eval(<<'.,.,', 'parser.y', 878)
    33412636  def _reduce_243(val, _values, result)
    33422637        @@logger.debug("#{__FILE__}:#{__LINE__}: V_QUALIFIED_TERM_CODE_REF = #{val[0]} at #{@filename}:#{@lineno}")
     
    33532648# reduce 246 omitted
    33542649
    3355 module_eval(<<'.,.,', 'parser.y', 886)
     2650module_eval(<<'.,.,', 'parser.y', 888)
    33562651  def _reduce_247(val, _values, result)
    33572652        @@logger.debug("#{__FILE__}:#{__LINE__}: V_URI = #{val[0]} at #{@filename}:#{@lineno}")
     
    34422737# reduce 287 omitted
    34432738
    3444 module_eval(<<'.,.,', 'parser.y', 956)
     2739module_eval(<<'.,.,', 'parser.y', 958)
    34452740  def _reduce_288(val, _values, result)
    34462741        @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}")
     
    34502745.,.,
    34512746
    3452 module_eval(<<'.,.,', 'parser.y', 960)
     2747module_eval(<<'.,.,', 'parser.y', 962)
    34532748  def _reduce_289(val, _values, result)
    34542749        @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}")
     
    34582753.,.,
    34592754
    3460 module_eval(<<'.,.,', 'parser.y', 971)
     2755module_eval(<<'.,.,', 'parser.y', 973)
    34612756  def _reduce_290(val, _values, result)
    34622757        result = Range.new(1,1)
     
    34662761.,.,
    34672762
    3468 module_eval(<<'.,.,', 'parser.y', 975)
     2763module_eval(<<'.,.,', 'parser.y', 977)
    34692764  def _reduce_291(val, _values, result)
    34702765        result = val[3]
     
    34742769.,.,
    34752770
    3476 module_eval(<<'.,.,', 'parser.y', 980)
     2771module_eval(<<'.,.,', 'parser.y', 982)
    34772772  def _reduce_292(val, _values, result)
    34782773        begin
     
    34872782.,.,
    34882783
    3489 module_eval(<<'.,.,', 'parser.y', 989)
     2784module_eval(<<'.,.,', 'parser.y', 991)
    34902785  def _reduce_293(val, _values, result)
    34912786        begin
     
    35012796.,.,
    35022797
    3503 module_eval(<<'.,.,', 'parser.y', 1000)
     2798module_eval(<<'.,.,', 'parser.y', 1002)
    35042799  def _reduce_294(val, _values, result)
    35052800        result = OpenEHR::AM::Archetype::Constraint_Model::CARDINALITY.new
     
    35252820# reduce 302 omitted
    35262821
    3527 module_eval(<<'.,.,', 'parser.y', 1014)
     2822module_eval(<<'.,.,', 'parser.y', 1016)
    35282823  def _reduce_303(val, _values, result)
    35292824        result = val[0]
     
    35332828.,.,
    35342829
    3535 module_eval(<<'.,.,', 'parser.y', 1018)
     2830module_eval(<<'.,.,', 'parser.y', 1020)
    35362831  def _reduce_304(val, _values, result)
    35372832        result = val[0]
     
    35432838# reduce 305 omitted
    35442839
    3545 module_eval(<<'.,.,', 'parser.y', 1025)
     2840module_eval(<<'.,.,', 'parser.y', 1027)
    35462841  def _reduce_306(val, _values, result)
    35472842        result = val[3]
     
    36432938# reduce 352 omitted
    36442939
    3645 module_eval(<<'.,.,', 'parser.y', 1095)
     2940module_eval(<<'.,.,', 'parser.y', 1097)
    36462941  def _reduce_353(val, _values, result)
    36472942        result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true)
     
    36512946.,.,
    36522947
    3653 module_eval(<<'.,.,', 'parser.y', 1099)
     2948module_eval(<<'.,.,', 'parser.y', 1101)
    36542949  def _reduce_354(val, _values, result)
    36552950        result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false)
     
    36592954.,.,
    36602955
    3661 module_eval(<<'.,.,', 'parser.y', 1103)
     2956module_eval(<<'.,.,', 'parser.y', 1105)
    36622957  def _reduce_355(val, _values, result)
    36632958        result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true,:false_valid => false)
     
    36672962.,.,
    36682963
    3669 module_eval(<<'.,.,', 'parser.y', 1107)
     2964module_eval(<<'.,.,', 'parser.y', 1109)
    36702965  def _reduce_356(val, _values, result)
    36712966        result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false,:false_valid => true)
     
    36752970.,.,
    36762971
    3677 module_eval(<<'.,.,', 'parser.y', 1112)
     2972module_eval(<<'.,.,', 'parser.y', 1114)
    36782973  def _reduce_357(val, _values, result)
    36792974        result = val[0]
     
    36832978.,.,
    36842979
    3685 module_eval(<<'.,.,', 'parser.y', 1116)
     2980module_eval(<<'.,.,', 'parser.y', 1118)
    36862981  def _reduce_358(val, _values, result)
    36872982        raise 'Not implemented yet'
     
    36912986.,.,
    36922987
    3693 module_eval(<<'.,.,', 'parser.y', 1120)
     2988module_eval(<<'.,.,', 'parser.y', 1122)
    36942989  def _reduce_359(val, _values, result)
    36952990        raise 'Not implemented yet'
     
    37093004# reduce 364 omitted
    37103005
    3711 module_eval(<<'.,.,', 'parser.y', 1132)
     3006module_eval(<<'.,.,', 'parser.y', 1134)
    37123007  def _reduce_365(val, _values, result)
    37133008        @in_interval = false
     
    37183013.,.,
    37193014
    3720 module_eval(<<'.,.,', 'parser.y', 1139)
     3015module_eval(<<'.,.,', 'parser.y', 1141)
    37213016  def _reduce_366(val, _values, result)
    37223017          result = val[0]
     
    37263021.,.,
    37273022
    3728 module_eval(<<'.,.,', 'parser.y', 1143)
     3023module_eval(<<'.,.,', 'parser.y', 1145)
    37293024  def _reduce_367(val, _values, result)
    37303025          result = val[0]
     
    37343029.,.,
    37353030
    3736 module_eval(<<'.,.,', 'parser.y', 1149)
     3031module_eval(<<'.,.,', 'parser.y', 1151)
    37373032  def _reduce_368(val, _values, result)
    37383033        @@logger.debug("#{__FILE__}:#{__LINE__}, START_TERM_CODE_CONSTRAINT = #{val[0]} at #{@filename}")
     
    37513046# reduce 371 omitted
    37523047
    3753 module_eval(<<'.,.,', 'parser.y', 1165)
     3048module_eval(<<'.,.,', 'parser.y', 1167)
    37543049  def _reduce_372(val, _values, result)
    37553050          result = val[0]
     
    37593054.,.,
    37603055
    3761 module_eval(<<'.,.,', 'parser.y', 1170)
     3056module_eval(<<'.,.,', 'parser.y', 1172)
    37623057  def _reduce_373(val, _values, result)
    37633058          result = val[0]
     
    37673062.,.,
    37683063
    3769 module_eval(<<'.,.,', 'parser.y', 1174)
     3064module_eval(<<'.,.,', 'parser.y', 1176)
    37703065  def _reduce_374(val, _values, result)
    37713066        @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{word} at #{@filename}")
     
    37763071.,.,
    37773072
    3778 module_eval(<<'.,.,', 'parser.y', 1185)
     3073module_eval(<<'.,.,', 'parser.y', 1187)
    37793074  def _reduce_375(val, _values, result)
    37803075        result = val[0]
Note: See TracChangeset for help on using the changeset viewer.