Ignore:
Timestamp:
Apr 29, 2008, 3:04:36 AM (16 years ago)
Author:
Tatsukawa, Akimichi
Message:

successful parsing 25 archtypes

File:
1 edited

Legend:

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

    r18 r19  
    4949
    5050arch_meta_data_items: arch_meta_data_item
    51   | arch_meta_data_items ';' arch_meta_data_item
     51  | arch_meta_data_items Semicolon_code arch_meta_data_item
     52#  | arch_meta_data_items ';' arch_meta_data_item
    5253
    5354arch_meta_data_item: SYM_ADL_VERSION SYM_EQ V_VERSION_STRING
     
    120121#------------------------- node types -----------------------
    121122
    122 c_object: c_complex_object
     123c_object: v_c_domain_type
     124  | c_complex_object
    123125  | archetype_internal_ref
    124126  | archetype_slot
     
    127129  | c_ordinal
    128130  | c_primitive_object
    129   | v_c_domain_type
     131#  | v_c_domain_type
    130132#  | V_C_DOMAIN_TYPE
    131133  #   this is an attempt to match a dADL section inside cADL. It will
     
    180182
    181183c_attr_head: V_ATTRIBUTE_IDENTIFIER c_existence
     184  {
     185    @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}, c_existence = #{val[1]} at #{@filename}")
     186  }
    182187  | V_ATTRIBUTE_IDENTIFIER c_existence c_cardinality
     188  {
     189    @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER: #{val[0]}, c_existence = #{val[1]}, c_cardinality = #{val[2]} at #{@filename}")
     190  }
    183191
    184192c_attr_values: c_object
     
    224232attr_vals: attr_val
    225233  | attr_vals attr_val
    226   | attr_vals ';' attr_val
     234  | attr_vals Semicolon_code attr_val
     235#  | attr_vals ';' attr_val
    227236
    228237attr_val: attr_id SYM_EQ object_block
     238  {
     239    @@log.info("#{__FILE__}:#{__LINE__}: attr_id = #{val[0]}, object_block = #{val[1]} at #{@filename}:#{@lineno}")
     240  }
    229241
    230242attr_id: V_ATTRIBUTE_IDENTIFIER
    231243  {
    232     @@log.info("dADL::V_ATTRIBUTE_IDENTIFIER: #{val[0]} at #{@filename}")
     244    @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}:#{@lineno}")
    233245  }
    234246  | V_ATTRIBUTE_IDENTIFIER error
     
    253265
    254266object_key: Left_bracket_code simple_value Right_bracket_code
     267  {
     268    @@log.info("object_key: [#{val[1]}] at #{@filename}:#{@lineno}")
     269  }
    255270
    256271single_attr_object_block: untyped_single_attr_object_block
     
    268283  | term_code_list_value
    269284simple_value: string_value
     285  {
     286    @@log.info("string_value: #{val[0]} at #{@filename}:#{@lineno}")
     287  }
    270288  | integer_value
     289  {
     290    @@log.info("integer_value: #{val[0]} at #{@filename}:#{@lineno}")
     291  }
    271292  | real_value
     293  {
     294    @@log.info("real_value: #{val[0]} at #{@filename}:#{@lineno}")
     295  }
    272296  | boolean_value
     297  {
     298    @@log.info("boolean_value: #{val[0]} at #{@filename}:#{@lineno}")
     299  }
    273300  | character_value
     301  {
     302    @@log.info("character_value: #{val[0]} at #{@filename}:#{@lineno}")
     303  }
    274304  | date_value
     305  {
     306    @@log.info("date_value: #{val[0]} at #{@filename}:#{@lineno}")
     307  }
    275308  | time_value
     309  {
     310    @@log.info("time_value: #{val[0]} at #{@filename}:#{@lineno}")
     311  }
    276312  | date_time_value
     313  {
     314    @@log.info("date_time_value: #{val[0]} at #{@filename}:#{@lineno}")
     315  }
    277316  | duration_value
     317  {
     318    @@log.info("duration_value: #{val[0]} at #{@filename}:#{@lineno}")
     319  }
    278320  | uri_value
     321  {
     322    @@log.info("uri_value: #{val[0]} at #{@filename}:#{@lineno}")
     323  }
    279324simple_list_value: string_list_value
    280325  | integer_list_value
     
    295340
    296341type_identifier: V_TYPE_IDENTIFIER
     342  {
     343    @@log.info("V_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
     344  }
    297345  | V_GENERIC_TYPE_IDENTIFIER
     346  {
     347    @@log.info("V_GENERIC_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
     348  }
    298349
    299350string_value: V_STRING
    300351  {
    301     @@log.info("V_STRING: #{val[0]} at #{@filename}")
     352    @@log.info("V_STRING: #{val[0]} at #{@filename}:#{@lineno}")
    302353  }
    303354
     
    409460
    410461duration_value: V_ISO8601_DURATION
     462  {
     463    @@log.info("V_ISO8601_DURATION: #{val[0]} at #{@filename}:#{@lineno}")
     464  }
    411465
    412466duration_list_value: duration_value Comma_code duration_value
     
    497551
    498552path_segment: V_ATTRIBUTE_IDENTIFIER V_LOCAL_TERM_CODE_REF
     553  {
     554    @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}")
     555  }
    499556  | V_ATTRIBUTE_IDENTIFIER
     557  {
     558    @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}")
     559  }
    500560
    501561
     
    601661c_boolean: c_boolean_spec
    602662  | c_boolean_spec Semicolon_code boolean_value
    603   | c_boolean_spec ';' error
     663  | c_boolean_spec Semicolon_code error
     664#  | c_boolean_spec ';' error
    604665
    605666c_ordinal: c_ordinal_spec
    606667  | c_ordinal_spec Semicolon_code integer_value
    607   | c_ordinal_spec ';' error
     668  | c_ordinal_spec Semicolon_code error
     669#  | c_ordinal_spec ';' error
    608670
    609671c_ordinal_spec: ordinal
     
    631693any_identifier: type_identifier
    632694  | V_ATTRIBUTE_IDENTIFIER
     695  {
     696    @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{word} at #{@filename}")
     697  }
    633698
    634699
     
    647712require 'lib/util.rb'
    648713require 'lib/scanner.rb'
     714require 'lib/model.rb'
    649715$DEBUG = true
    650716
     
    655721@@log = Logger.new('log/parser.log','daily')
    656722@@dadl_scanner = OpenEHR::ADL::Scanner::DADL::RootScanner.new
     723@@cadl_scanner = OpenEHR::ADL::Scanner::CADL::RootScanner.new
    657724
    658725###----------/* keywords */ ---------------------------------------------
     
    755822      when /\A--.*\n/ # single line comment
    756823        @lineno += 1
     824        @@log.info("#{__FILE__}:#{__LINE__}: scan_adl: COMMENT = #{$&} at #{@filename}:#{@lineno}")
    757825        ;
    758826      when /\Adescription/   # description
     
    770838        word = $&
    771839        if @@adl_reserved[word]
    772           @@log.info("@@adl_reserved: #{@@adl_reserved[word]} at #{@filename}")
     840          @@log.info("#{__FILE__}:#{__LINE__}: scan_adl: @@adl_reserved = #{@@adl_reserved[word]} at #{@filename}:#{@lineno}")
    773841          yield @@adl_reserved[word], @@adl_reserved[word]
    774842        elsif #/\A[A-Z][a-zA-Z0-9_]*/
     843          @@log.info("#{__FILE__}:#{__LINE__}: scan_adl: V_ATTRIBUTE_IDENTIFIER = #{$&} at #{@filename}:#{@lineno}")
    775844          yield :V_ATTRIBUTE_IDENTIFIER, $&
    776845        end
     
    801870      when /\A\{/   # {
    802871        @adl_type.push(:cadl)
     872        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: entering cADL at #{@filename}:#{@lineno}")
    803873        yield :SYM_START_CBLOCK, :SYM_START_CBLOCK
    804874      when /\A\}/   # }
     
    806876#        puts "Escaping #{adl_type}"
    807877        assert_at(__FILE__,__LINE__){adl_type == :cadl}
     878        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: exiting cADL at #{@filename}:#{@lineno}")
    808879        yield :SYM_END_CBLOCK, $&
    809880      when /\A\-/   # -
     
    923994    when :cadl
    924995#      puts "Entering scan_cadl"
     996      case scanned = @@cadl_scanner.parse(data)
     997      when Yaparc::Result::OK
     998        if scanned.value[0] == :START_V_C_DOMAIN_TYPE_BLOCK
     999          @in_c_domain_type = true
     1000          @adl_type.push(:dadl)
     1001          yield scanned.value
     1002        else
     1003          yield scanned.value
     1004        end
     1005        data = scanned.input
     1006      end
     1007
    9251008      case data
    9261009      when /\A\n/ # carriage return
     
    9311014      when /\A--.*\n/ # single line comment
    9321015        @lineno += 1
     1016        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: COMMENT = #{$&} at #{@filename}:#{@lineno}")
    9331017        ;
    9341018        ###----------/* symbols */ -------------------------------------------------
     
    9391023      when /\A\<=/   # <=
    9401024        yield :SYM_LE, :SYM_LE
    941       when /\A[A-Z][a-zA-Z0-9_]*[ \n]*\</   # V_C_DOMAIN_TYPE
    942         @in_c_domain_type = true
    943         @adl_type.push(:dadl)
    944           yield :START_V_C_DOMAIN_TYPE_BLOCK, $&
    945 ###         else
    946 ###           raise
    947 ###         end
     1025###       when /\A[A-Z][a-zA-Z0-9_]*[ \n]*\</   # V_C_DOMAIN_TYPE
     1026###         @in_c_domain_type = true
     1027###         @adl_type.push(:dadl)
     1028###         yield :START_V_C_DOMAIN_TYPE_BLOCK, $&
    9481029      when /\A\</   # <
    9491030        if @in_interval
     
    10011082      when /\A\{/   # {
    10021083        @adl_type.push(:cadl)
     1084        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: entering cADL at #{@filename}:#{@lineno}")
    10031085        yield :SYM_START_CBLOCK, :SYM_START_CBLOCK
    10041086      when /\A\}/   # }
     
    10061088#        puts "Escaping #{adl_type}"
    10071089        assert_at(__FILE__,__LINE__){adl_type == :cadl}
     1090        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: exiting cADL at #{@filename}:#{@lineno}")
    10081091        yield :SYM_END_CBLOCK, :SYM_END_CBLOCK
    10091092      when /\A\$/   # $
     
    10211104        end
    10221105        yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
     1106
    10231107      when /\A\[[a-zA-Z0-9._\-]+::[a-zA-Z0-9._\-]+\]/   #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
    10241108        yield :V_QUALIFIED_TERM_CODE_REF, $&
    10251109      when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
    10261110        yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
    1027 #      when /\A\[([a-zA-Z0-9()._\-]+::[a-zA-Z0-9._\_-]+)\]/
    1028 #        yield :V_TERM_CODE_CONSTRAINT, :V_TERM_CODE_CONSTRAINT
     1111      when /\A\[([a-zA-Z0-9()._\-]+::[a-zA-Z0-9._\_-]+)\]/
     1112        yield :V_TERM_CODE_CONSTRAINT, :V_TERM_CODE_CONSTRAINT
    10291113      when /\A\[[a-zA-Z0-9\(\)\._\-]+::[ \t\n]*/
    10301114        @adl_type.push(:term_constraint)
     
    10491133          yield @@cadl_reserved[word.downcase], @@cadl_reserved[word.downcase]
    10501134        else
     1135          @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: V_ATTRIBUTE_IDENTIFIER = #{word} at #{@filename}:#{@lineno}")
    10511136          yield :V_ATTRIBUTE_IDENTIFIER, word #V_ATTRIBUTE_IDENTIFIER /\A[a-z][a-zA-Z0-9_]*/
    10521137        end
     
    10701155      when /\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+ /   #V_REAL
    10711156        yield :V_REAL, $&
    1072         #    when /\A"((?:[^"\\]+|\\.)*)"/ #V_STRING
     1157           when /\A"((?:[^"\\]+|\\.)*)"/ #V_STRING
    10731158      when /\A"([^"]*)"/m #V_STRING
    10741159        yield :V_STRING, $1
    10751160      when /\A[a-z]+:\/\/[^<>|\\{}^~"\[\] ]*/ #V_URI
    10761161        yield :V_URI, $&
    1077       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
    1078         yield :V_ISO8601_DURATION, $&
     1162###       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
     1163###         yield :V_ISO8601_DURATION, $&
    10791164      when /\A\S/ #UTF8CHAR
    10801165        yield :UTF8CHAR, $&
     
    11181203        yield scanned.value
    11191204        data = scanned.input
    1120 ###       when Yaparc::Result::Fail
    1121 ###         raise "Scan Failed: #{scanned}"
    1122 ###       when Yaparc::Result::Error
    1123 ###         raise "Scan Error: #{scanned}"
    11241205      else
    1125        
    11261206      end
    11271207
     
    11341214      when /\A--.*\n/ # single line comment
    11351215        @lineno += 1
     1216        @@log.info("#{__FILE__}:#{__LINE__}: scan_dadl: COMMENT = #{$&} at #{@filename}:#{@lineno}")
    11361217        ;
    11371218        ###----------/* symbols */ -------------------------------------------------
     
    12531334      when /\A[a-z]+:\/\/[^<>|\\{}^~"\[\] ]*/ #V_URI
    12541335        yield :V_URI, $&
    1255       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
    1256         yield :V_ISO8601_DURATION, $&
     1336###       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
     1337###         yield :V_ISO8601_DURATION, $&
    12571338      when /\A\S/ #UTF8CHAR
    12581339        yield :UTF8CHAR, $&
     
    13511432      when /\A--.*$/ # single line comment
    13521433        @lineno += 1
     1434        @@log.info("#{__FILE__}:#{__LINE__}: scan_term_constraint: COMMENT = #{$&} at #{@filename}:#{@lineno}")
    13531435        ;
    13541436      when /\A[a-zA-Z0-9\._\-]+[ \t]*,/ # match any line, with ',' termination
Note: See TracChangeset for help on using the changeset viewer.