Changeset 307 for ruby/trunk/lib/adl_parser/lib/parser.y
- Timestamp:
- Sep 27, 2009, 9:24:19 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
ruby/trunk/lib/adl_parser/lib/parser.y
r283 r307 1 1 2 class OpenE HR::ADL::Parser2 class OpenEhr::ADL::Parser 3 3 4 4 #options omit_action_call … … 36 36 { 37 37 assert_at(__FILE__,__LINE__) do 38 val[4].instance_of?(OpenE HR::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)38 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) 39 39 end 40 40 … … 42 42 parent_archtype_id = val[1][:parent_archtype_id] if val[1] 43 43 adl_version = val[0][:arch_head][:arch_meta_data][:adl_version] 44 concept = val[2] 44 concept = val[2][:arch_concept] 45 45 language = val[3][:arch_language] 46 archetype = OpenE HR::AM::Archetype::ARCHETYPE.create(46 archetype = OpenEhr::AM::Archetype::ARCHETYPE.create( 47 47 :archetype_id => archetype_id, 48 48 :parent_archtype_id => parent_archtype_id, … … 138 138 | SYM_DESCRIPTION dadl_section 139 139 { 140 result = OpenE HR::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION.new(:details => val[1])140 result = OpenEhr::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION.new(:details => val[1]) 141 141 } 142 142 | SYM_DESCRIPTION error … … 154 154 cadl_section: c_complex_object 155 155 { 156 assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenE HR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT)}156 assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEhr::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT)} 157 157 @@logger.debug("#{__FILE__}:#{__LINE__}: c_complex_object = #{val[0]} at #{@filename}:#{@lineno}") 158 158 result = val[0] … … 167 167 c_complex_object: c_complx_object_head SYM_MATCHES START_REGEXP_BLOCK REGEXP_BODY END_REGEXP_BLOCK # added by akimichi 168 168 { 169 result = OpenE HR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|169 result = OpenEhr::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object| 170 170 c_complex_object.node_id = val[0][:c_complex_object_id][:local_term_code_ref] 171 171 c_complex_object.rm_type_name = val[0][:c_complex_object_id][:type_identifier] … … 175 175 | c_complex_object_head SYM_MATCHES SYM_START_CBLOCK c_complex_object_body SYM_END_CBLOCK 176 176 { 177 result = OpenE HR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|177 result = OpenEhr::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object| 178 178 c_complex_object.node_id = val[0][:c_complex_object_id][:local_term_code_ref] 179 179 c_complex_object.rm_type_name = val[0][:c_complex_object_id][:type_identifier] … … 201 201 | c_attributes 202 202 { 203 result = OpenE HR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new(:attributes => val[0])203 result = OpenEhr::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new(:attributes => val[0]) 204 204 } 205 205 … … 224 224 | archetype_internal_ref 225 225 { 226 result = OpenE HR::AM::Archetype::Constraint_Model::ARCHETYPE_INTERNAL_REF.create do |archetype_internal_ref|226 result = OpenEhr::AM::Archetype::Constraint_Model::ARCHETYPE_INTERNAL_REF.create do |archetype_internal_ref| 227 227 archetype_internal_ref.target_path = val[0][:absolute_path] 228 228 archetype_internal_ref.rm_type_name = val[0][:type_identifier] … … 236 236 | constraint_ref 237 237 { 238 result = OpenE HR::AM::Archetype::Constraint_Model::CONSTRAINT_REF.create do |constraint_ref|238 result = OpenEhr::AM::Archetype::Constraint_Model::CONSTRAINT_REF.create do |constraint_ref| 239 239 constraint_ref.reference = val[0] 240 240 end … … 256 256 result = val[0] 257 257 } 258 259 258 # | v_c_domain_type 260 259 # | V_C_DOMAIN_TYPE … … 265 264 # the buffer from the current point on and be able to fast-forward the 266 265 # cursor to the last character matched by the dADL scanner 266 ### ----------/* V_C_DOMAIN_TYPE - sections of dADL syntax */ ------------------------------------------------- ----------/* V_C_DOMAIN_TYPE - sections of dADL syntax */ ------------------------------------------------- 267 268 269 ### [A-Z][a-zA-Z0-9_]*[ \n]*< { -- match a pattern like 'Type_Identifier whitespace <' [A-Z][a-zA-Z0-9_]*[ \n]*< { -- match a pattern like 'Type_Identifier whitespace <' 270 ### set_start_condition (IN_C_DOMAIN_TYPE) set_start_condition (IN_C_DOMAIN_TYPE) 271 ### } } 272 273 ### <IN_C_DOMAIN_TYPE>[^}>]*>[ \n]*[^>}A-Z] { -- match up to next > not followed by a '}' or '>' <IN_C_DOMAIN_TYPE>[^}>]*>[ \n]*[^>}A-Z] { -- match up to next > not followed by a '}' or '>' 274 ### in_buffer.append_string (text) in_buffer.append_string (text) 275 ### } } 276 277 ### <IN_C_DOMAIN_TYPE>[^}>]*>+[ \n]*[}A-Z] { -- final section - '...> whitespace } or beginning of a type identifier' <IN_C_DOMAIN_TYPE>[^}>]*>+[ \n]*[}A-Z] { -- final section - '...> whitespace } or beginning of a type identifier' 278 279 ### <IN_C_DOMAIN_TYPE>[^}>]*[ \n]*} { -- match up to next '}' not preceded by a '>' <IN_C_DOMAIN_TYPE>[^}>]*[ \n]*} { -- match up to next '}' not preceded by a '>' 280 ### in_buffer.append_string (text) in_buffer.append_string (text) 281 ### } } 282 283 267 284 | ERR_C_DOMAIN_TYPE 268 285 | error … … 283 300 archetype_slot: c_archetype_slot_head SYM_MATCHES SYM_START_CBLOCK c_includes c_excludes SYM_END_CBLOCK 284 301 { 285 result = OpenE HR::AM::Archetype::Constraint_Model::ARCHETYPE_SLOT.create do |archetype_slot|302 result = OpenEhr::AM::Archetype::Constraint_Model::ARCHETYPE_SLOT.create do |archetype_slot| 286 303 archetype_slot.includes = val[3] 287 304 archetype_slot.excludes = val[4] … … 305 322 c_primitive_object: c_primitive 306 323 { 307 assert_at(__FILE__,__LINE__){val[0].kind_of?(OpenE HR::AM::Archetype::Constraint_Model::Primitive::C_PRIMITIVE)}308 result = OpenE HR::AM::Archetype::Constraint_Model::C_PRIMITIVE_OBJECT.create do |c_primitive_object|324 assert_at(__FILE__,__LINE__){val[0].kind_of?(OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_PRIMITIVE)} 325 result = OpenEhr::AM::Archetype::Constraint_Model::C_PRIMITIVE_OBJECT.create do |c_primitive_object| 309 326 c_primitive_object.item = val[0] 310 327 end … … 314 331 { 315 332 @@logger.debug("#{__FILE__}:#{__LINE__}: c_integer = #{val[0]} at #{@filename}:#{@lineno}") 316 result = OpenE HR::AM::Archetype::Constraint_Model::Primitive::C_INTEGER.create do |c_integer|333 result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_INTEGER.create do |c_integer| 317 334 c_integer.list 318 335 c_integer.range … … 323 340 { 324 341 @@logger.debug("#{__FILE__}:#{__LINE__}: c_real = #{val[0]} at #{@filename}:#{@lineno}") 325 result = OpenE HR::AM::Archetype::Constraint_Model::Primitive::C_REAL.new342 result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_REAL.new 326 343 } 327 344 | c_date 328 345 { 329 346 @@logger.debug("#{__FILE__}:#{__LINE__}: c_date = #{val[0]} at #{@filename}:#{@lineno}") 330 result = OpenE HR::AM::Archetype::Constraint_Model::Primitive::C_DATE.new347 result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_DATE.new 331 348 } 332 349 | c_time 333 350 { 334 351 @@logger.debug("#{__FILE__}:#{__LINE__}: c_time = #{val[0]} at #{@filename}:#{@lineno}") 335 result = OpenE HR::AM::Archetype::Constraint_Model::Primitive::C_TIME.new352 result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_TIME.new 336 353 } 337 354 | c_date_time 338 355 { 339 356 @@logger.debug("#{__FILE__}:#{__LINE__}: c_date_time = #{val[0]} at #{@filename}:#{@lineno}") 340 result = OpenE HR::AM::Archetype::Constraint_Model::Primitive::C_DATE_TIME.new357 result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_DATE_TIME.new 341 358 } 342 359 | c_duration 343 360 { 344 361 @@logger.debug("#{__FILE__}:#{__LINE__}: c_duration = #{val[0]} at #{@filename}:#{@lineno}") 345 result = OpenE HR::AM::Archetype::Constraint_Model::Primitive::C_DURATION.new362 result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_DURATION.new 346 363 } 347 364 | c_string 348 365 { 349 366 @@logger.debug("#{__FILE__}:#{__LINE__}: c_string = #{val[0]} at #{@filename}:#{@lineno}") 350 result = OpenE HR::AM::Archetype::Constraint_Model::Primitive::C_STRING.new367 result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_STRING.new 351 368 } 352 369 | c_boolean 353 370 { 354 assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenE HR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN)}371 assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN)} 355 372 @@logger.debug("#{__FILE__}:#{__LINE__}: c_boolean = #{val[0]} at #{@filename}:#{@lineno}") 356 373 result = val[0] … … 374 391 c_attribute: c_attr_head SYM_MATCHES SYM_START_CBLOCK c_attr_values SYM_END_CBLOCK 375 392 { 376 assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenE HR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}393 assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::Constraint_Model::C_ATTRIBUTE)} 377 394 c_attribute = val[0] 378 395 c_attribute.children = val[3] … … 381 398 | c_attr_head SYM_MATCHES START_REGEXP_BLOCK REGEXP_BODY END_REGEXP_BLOCK # added by akimichi 382 399 { 383 assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenE HR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}400 assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::Constraint_Model::C_ATTRIBUTE)} 384 401 result = val[0] 385 402 } 386 403 | c_attr_head SYM_MATCHES SYM_START_CBLOCK error SYM_END_CBLOCK 387 404 { 388 assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenE HR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}405 assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::Constraint_Model::C_ATTRIBUTE)} 389 406 result = val[0] 390 407 } … … 394 411 { 395 412 @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}, c_existence = #{val[1]} at #{@filename}") 396 result = OpenE HR::AM::Archetype::Constraint_Model::C_SINGLE_ATTRIBUTE.new(413 result = OpenEhr::AM::Archetype::Constraint_Model::C_SINGLE_ATTRIBUTE.new( 397 414 :rm_attribute_name => val[0], 398 415 :existence => val[1] … … 402 419 | V_ATTRIBUTE_IDENTIFIER c_existence c_cardinality 403 420 { 404 assert_at(__FILE__,__LINE__){ val[2].instance_of?(OpenE HR::AM::Archetype::Constraint_Model::CARDINALITY) }421 assert_at(__FILE__,__LINE__){ val[2].instance_of?(OpenEhr::AM::Archetype::Constraint_Model::CARDINALITY) } 405 422 @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER: #{val[0]}, c_existence = #{val[1]}, c_cardinality = #{val[2]} at #{@filename}") 406 result = OpenE HR::AM::Archetype::Constraint_Model::C_MULTIPLE_ATTRIBUTE.new(423 result = OpenEhr::AM::Archetype::Constraint_Model::C_MULTIPLE_ATTRIBUTE.new( 407 424 :rm_attribute_name => val[0], 408 425 :existence => val[1], … … 458 475 { 459 476 dadl_section = val[1] 460 result = OpenE HR::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY.new477 result = OpenEhr::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY.new 461 478 } 462 479 | SYM_ONTOLOGY error … … 464 481 465 482 ### dADL section 466 dadl_section: dadl_input 467 468 dadl_input: attr_vals 483 dadl_section: attr_vals 484 { 485 @@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section attr_vals = \n#{val[0].to_yaml}") 486 result = val[0] 487 } 469 488 | complex_object_block 489 { 490 @@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section complex_object_block = \n#{val[0].to_yaml}") 491 result = val[0] 492 } 470 493 # | error 471 494 … … 485 508 attr_val: attr_id SYM_EQ object_block 486 509 { 487 @@logger.debug("#{__FILE__}:#{__LINE__}: attr_id = #{val[0]} at #{@filename}:#{@lineno}")510 @@logger.debug("#{__FILE__}:#{__LINE__}:attr_val\n attr_id = #{val[0]}, object_block = #{val[1]}") 488 511 result = {:attr_id => val[0], :object_block => val[2]} 489 512 } … … 491 514 attr_id: V_ATTRIBUTE_IDENTIFIER 492 515 { 493 @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}:#{@lineno}")516 @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}") 494 517 result = val[0] 495 518 } … … 1001 1024 c_cardinality: SYM_CARDINALITY SYM_MATCHES SYM_START_CBLOCK cardinality_spec SYM_END_CBLOCK 1002 1025 { 1003 result = OpenE HR::AM::Archetype::Constraint_Model::CARDINALITY.new1026 result = OpenEhr::AM::Archetype::Constraint_Model::CARDINALITY.new 1004 1027 } 1005 1028 … … 1026 1049 | SYM_OCCURRENCES SYM_MATCHES SYM_START_CBLOCK occurrence_spec SYM_END_CBLOCK 1027 1050 { 1028 result = val[3] 1051 case val[3] 1052 when OpenEhr::RM::Support::AssumedTypes::Interval 1053 result = val[3] 1054 else 1055 result = val[3] 1056 end 1029 1057 } 1030 1058 | SYM_OCCURRENCES error 1031 1059 1032 1060 occurrence_spec: cardinality_limit_value #-- single integer or '*' 1061 { 1062 result = val[0] 1063 } 1033 1064 | V_INTEGER SYM_ELLIPSIS cardinality_limit_value 1065 { 1066 result = OpenEhr::RM::Support::AssumedTypes::Interval.new(val[0], val[2]) 1067 } 1034 1068 1035 1069 #---------------------- leaf constraint types ----------------------- … … 1096 1130 c_boolean_spec: SYM_TRUE 1097 1131 { 1098 result = OpenE HR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true)1132 result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true) 1099 1133 } 1100 1134 | SYM_FALSE 1101 1135 { 1102 result = OpenE HR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false)1136 result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false) 1103 1137 } 1104 1138 | SYM_TRUE Comma_code SYM_FALSE 1105 1139 { 1106 result = OpenE HR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true,:false_valid => false)1140 result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true,:false_valid => false) 1107 1141 } 1108 1142 | SYM_FALSE Comma_code SYM_TRUE 1109 1143 { 1110 result = OpenE HR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false,:false_valid => true)1144 result = OpenEhr::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false,:false_valid => true) 1111 1145 } 1112 1146 … … 1198 1232 require 'yaml' 1199 1233 require 'rubygems' 1200 require 'adl_parser.rb' 1201 require 'am.rb' 1202 require 'rm.rb' 1203 $DEBUG = false 1234 require 'open_ehr' 1235 #require 'adl_parser.rb' 1236 #require 'am.rb' 1237 #require 'rm.rb' 1238 #require 'rm/support/assumed_types.rb' 1239 #require 'assumed_library_types.rb' 1240 $DEBUG = true 1204 1241 1205 1242 … … 1283 1320 def scan 1284 1321 @@logger.debug("#{__FILE__}:#{__LINE__}: Entering scan at #{@filename}:#{@lineno}:") 1285 scanner = OpenE HR::ADL::Scanner::ADLScanner.new(@adl_type, @filename)1322 scanner = OpenEhr::ADL::Scanner::ADLScanner.new(@adl_type, @filename) 1286 1323 1287 1324 until @data.nil? do
Note:
See TracChangeset
for help on using the changeset viewer.