Ignore:
Timestamp:
Apr 26, 2008, 12:47:03 AM (16 years ago)
Author:
Tatsukawa, Akimichi
Message:

working on dADL language tag

File:
1 edited

Legend:

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

    r14 r16  
    7070arch_language: #-- empty is ok for ADL 1.4 tools
    7171    | SYM_LANGUAGE dadl_section
    72     | SYM_LANGUAGE error
     72  {
     73    result = {:language => val[1]}
     74  }
     75  | SYM_LANGUAGE error
    7376
    7477#arch_description: #-- no meta-data ok
     
    104107
    105108c_complex_object_id: type_identifier
     109  {
     110    result = {:c_complex_object_id => {:type_identifier => val[0]}}
     111  }
    106112  | type_identifier V_LOCAL_TERM_CODE_REF
     113  {
     114    result = {:c_complex_object_id => {:type_identifier => val[0], :V_LOCAL_TERM_CODE_REF => val[1]}}
     115  }
    107116
    108117c_complex_object_body: c_any #-- used to indicate that any value of a type is ok
     
    130139  | error
    131140
    132 v_c_domain_type: START_V_C_DOMAIN_TYPE v_c_domain_type_body END_V_C_DOMAIN_TYPE
    133 v_c_domain_type_body: dadl_section
     141v_c_domain_type: START_V_C_DOMAIN_TYPE_BLOCK dadl_section END_V_C_DOMAIN_TYPE_BLOCK
    134142
    135143# 'archetype_internal_ref' is a node that refers to a previously defined object node in the same archetype.
     
    246254single_attr_object_block: untyped_single_attr_object_block
    247255  | type_identifier untyped_single_attr_object_block
    248 untyped_single_attr_object_block: single_attr_object_complex_head SYM_END_DBLOCK
     256untyped_single_attr_object_block: single_attr_object_complex_head SYM_END_DBLOCK # <>
    249257  | single_attr_object_complex_head attr_vals SYM_END_DBLOCK
    250258single_attr_object_complex_head: SYM_START_DBLOCK
     
    763771#          @start_block_received = true
    764772          @adl_type.push(:dadl)
    765           yield :SYM_START_DBLOCK, :SYM_START_DBLOCK
     773          yield :SYM_START_DBLOCK,  $&
    766774        end
    767775      when /\A\>/   # >
     
    781789#        puts "Escaping #{adl_type}"
    782790        assert_at(__FILE__,__LINE__){adl_type == :cadl}
    783         yield :SYM_END_CBLOCK, :SYM_END_CBLOCK
     791        yield :SYM_END_CBLOCK, $&
    784792      when /\A\-/   # -
    785793        yield :Minus_code, :Minus_code
     
    917925        @in_c_domain_type = true
    918926        @adl_type.push(:dadl)
    919           yield :START_V_C_DOMAIN_TYPE_BLOCK, :START_V_C_DOMAIN_TYPE_BLOCK
     927          yield :START_V_C_DOMAIN_TYPE_BLOCK, $&
    920928###         else
    921929###           raise
     
    926934        else
    927935          @adl_type.push(:dadl)
    928           yield :SYM_START_DBLOCK, :SYM_START_DBLOCK
     936          yield :SYM_START_DBLOCK,  $&
    929937        end
    930938      when /\A\>/   # >
     
    11181126          @in_interval = false
    11191127          yield :SYM_GT, :SYM_GT
    1120         elsif @in_c_domain_type
    1121           @in_c_domain_type = false
     1128        elsif @in_c_domain_type == true
     1129          assert_at(__FILE__,__LINE__){@adl_type.last == :dadl}
    11221130          adl_type = @adl_type.pop
    1123           assert_at(__FILE__,__LINE__){adl_type == :dadl}
    1124           yield :END_V_C_DOMAIN_TYPE_BLOCK, :END_V_C_DOMAIN_TYPE_BLOCK
    1125         else
     1131          if @adl_type.last == :cadl
     1132            @in_c_domain_type = false
     1133            yield :END_V_C_DOMAIN_TYPE_BLOCK, $&
     1134          else
     1135            yield :SYM_END_DBLOCK, $&
     1136          end
     1137        elsif @in_c_domain_type == false
    11261138          adl_type = @adl_type.pop
    11271139#          puts "Escaping #{adl_type}"
    11281140          assert_at(__FILE__,__LINE__){adl_type == :dadl}
    1129           yield :SYM_END_DBLOCK, :SYM_END_DBLOCK
     1141          yield :SYM_END_DBLOCK, $&
     1142        else
     1143          raise
    11301144        end
    11311145      when /\A\-/   # -
     
    11661180        if @in_interval
    11671181          @in_interval = false
    1168 #        elsif @start_block_received
    1169 #          @start_block_received = false
    11701182        else
    11711183          @in_interval = false
    11721184        end
    11731185        yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
    1174       when /\A\[[a-zA-Z0-9()\._-]+::[a-zA-Z0-9\._-]+\]/
    1175 #      when /\A\[[a-zA-Z0-9()\._-]+\:\:[a-zA-Z0-9\._-]+\]/   #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
     1186      when /\A\[[a-zA-Z0-9()\._-]+::[a-zA-Z0-9\._-]+\]/   #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
    11761187        yield :V_QUALIFIED_TERM_CODE_REF, $&
     1188      when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
     1189        yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
     1190      when /\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/   #V_LOCAL_TERM_CODE_REF
     1191        yield :V_LOCAL_TERM_CODE_REF, $&
    11771192      when /\A\[/   # [
    11781193        yield :Left_bracket_code, :Left_bracket_code
    11791194      when /\A\]/   # ]
    11801195        yield :Right_bracket_code, :Right_bracket_code
    1181       when /\A[A-Z][a-zA-Z0-9_]*/
     1196      when /\A[A-Z][a-zA-Z0-9_-]*/
    11821197        yield :V_TYPE_IDENTIFIER, $&
    11831198      when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
     
    11901205          yield :V_ATTRIBUTE_IDENTIFIER, $&
    11911206        end
    1192       when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
    1193         yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
    1194       when /\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/   #V_LOCAL_TERM_CODE_REF
    1195         yield :V_LOCAL_TERM_CODE_REF, $&
    11961207      when /\Aa[ct][0-9.]+/   #V_LOCAL_CODE
    11971208        yield :V_LOCAL_CODE, $&
Note: See TracChangeset for help on using the changeset viewer.