Changeset 16 for ruby/trunk/adl_parser/lib/parser.y
- Timestamp:
- Apr 26, 2008, 12:47:03 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
ruby/trunk/adl_parser/lib/parser.y
r14 r16 70 70 arch_language: #-- empty is ok for ADL 1.4 tools 71 71 | SYM_LANGUAGE dadl_section 72 | SYM_LANGUAGE error 72 { 73 result = {:language => val[1]} 74 } 75 | SYM_LANGUAGE error 73 76 74 77 #arch_description: #-- no meta-data ok … … 104 107 105 108 c_complex_object_id: type_identifier 109 { 110 result = {:c_complex_object_id => {:type_identifier => val[0]}} 111 } 106 112 | 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 } 107 116 108 117 c_complex_object_body: c_any #-- used to indicate that any value of a type is ok … … 130 139 | error 131 140 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 141 v_c_domain_type: START_V_C_DOMAIN_TYPE_BLOCK dadl_section END_V_C_DOMAIN_TYPE_BLOCK 134 142 135 143 # 'archetype_internal_ref' is a node that refers to a previously defined object node in the same archetype. … … 246 254 single_attr_object_block: untyped_single_attr_object_block 247 255 | type_identifier untyped_single_attr_object_block 248 untyped_single_attr_object_block: single_attr_object_complex_head SYM_END_DBLOCK 256 untyped_single_attr_object_block: single_attr_object_complex_head SYM_END_DBLOCK # <> 249 257 | single_attr_object_complex_head attr_vals SYM_END_DBLOCK 250 258 single_attr_object_complex_head: SYM_START_DBLOCK … … 763 771 # @start_block_received = true 764 772 @adl_type.push(:dadl) 765 yield :SYM_START_DBLOCK, :SYM_START_DBLOCK773 yield :SYM_START_DBLOCK, $& 766 774 end 767 775 when /\A\>/ # > … … 781 789 # puts "Escaping #{adl_type}" 782 790 assert_at(__FILE__,__LINE__){adl_type == :cadl} 783 yield :SYM_END_CBLOCK, :SYM_END_CBLOCK791 yield :SYM_END_CBLOCK, $& 784 792 when /\A\-/ # - 785 793 yield :Minus_code, :Minus_code … … 917 925 @in_c_domain_type = true 918 926 @adl_type.push(:dadl) 919 yield :START_V_C_DOMAIN_TYPE_BLOCK, :START_V_C_DOMAIN_TYPE_BLOCK927 yield :START_V_C_DOMAIN_TYPE_BLOCK, $& 920 928 ### else 921 929 ### raise … … 926 934 else 927 935 @adl_type.push(:dadl) 928 yield :SYM_START_DBLOCK, :SYM_START_DBLOCK936 yield :SYM_START_DBLOCK, $& 929 937 end 930 938 when /\A\>/ # > … … 1118 1126 @in_interval = false 1119 1127 yield :SYM_GT, :SYM_GT 1120 elsif @in_c_domain_type 1121 @in_c_domain_type = false1128 elsif @in_c_domain_type == true 1129 assert_at(__FILE__,__LINE__){@adl_type.last == :dadl} 1122 1130 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 1126 1138 adl_type = @adl_type.pop 1127 1139 # puts "Escaping #{adl_type}" 1128 1140 assert_at(__FILE__,__LINE__){adl_type == :dadl} 1129 yield :SYM_END_DBLOCK, :SYM_END_DBLOCK 1141 yield :SYM_END_DBLOCK, $& 1142 else 1143 raise 1130 1144 end 1131 1145 when /\A\-/ # - … … 1166 1180 if @in_interval 1167 1181 @in_interval = false 1168 # elsif @start_block_received1169 # @start_block_received = false1170 1182 else 1171 1183 @in_interval = false 1172 1184 end 1173 1185 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] 1176 1187 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, $& 1177 1192 when /\A\[/ # [ 1178 1193 yield :Left_bracket_code, :Left_bracket_code 1179 1194 when /\A\]/ # ] 1180 1195 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_-]*/ 1182 1197 yield :V_TYPE_IDENTIFIER, $& 1183 1198 when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/ #V_GENERIC_TYPE_IDENTIFIER … … 1190 1205 yield :V_ATTRIBUTE_IDENTIFIER, $& 1191 1206 end 1192 when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/ #ERR_V_QUALIFIED_TERM_CODE_REF1193 yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&1194 when /\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/ #V_LOCAL_TERM_CODE_REF1195 yield :V_LOCAL_TERM_CODE_REF, $&1196 1207 when /\Aa[ct][0-9.]+/ #V_LOCAL_CODE 1197 1208 yield :V_LOCAL_CODE, $&
Note:
See TracChangeset
for help on using the changeset viewer.