Changeset 22 for ruby/trunk/adl_parser/lib
- Timestamp:
- May 1, 2008, 1:34:51 AM (16 years ago)
- Location:
- ruby/trunk/adl_parser/lib
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
ruby/trunk/adl_parser/lib/parser.rb
r21 r22 27 27 class Parser < Racc::Parser 28 28 29 module_eval <<'..end lib/parser.y modeval..id0eaae3c06b', 'lib/parser.y', 758 29 module_eval <<'..end lib/parser.y modeval..idc7c14292e8', 'lib/parser.y', 1010 30 31 def assert_at(file,line, message = "") 32 unless yield 33 raise "Assertion failed !: #{file}, #{line}: #{message}" 34 end 35 end 30 36 31 37 @@log = Logger.new('log/parser.log','daily') … … 814 820 815 821 816 ..end lib/parser.y modeval..id 0eaae3c06b822 ..end lib/parser.y modeval..idc7c14292e8 817 823 818 824 ##### racc 1.4.5 generates ### … … 853 859 2, 115, :_reduce_32, 854 860 1, 114, :_reduce_none, 855 1, 114, :_reduce_ none,856 1, 120, :_reduce_ none,857 1, 120, :_reduce_ none,858 1, 120, :_reduce_ none,859 1, 120, :_reduce_ none,860 1, 120, :_reduce_ none,861 1, 120, :_reduce_ none,862 1, 120, :_reduce_ none,863 1, 120, :_reduce_ none,861 1, 114, :_reduce_34, 862 1, 120, :_reduce_35, 863 1, 120, :_reduce_36, 864 1, 120, :_reduce_37, 865 1, 120, :_reduce_38, 866 1, 120, :_reduce_39, 867 1, 120, :_reduce_40, 868 1, 120, :_reduce_41, 869 1, 120, :_reduce_42, 864 870 1, 120, :_reduce_none, 865 871 1, 120, :_reduce_none, … … 872 878 3, 132, :_reduce_none, 873 879 2, 132, :_reduce_none, 874 1, 127, :_reduce_ none,880 1, 127, :_reduce_53, 875 881 1, 133, :_reduce_54, 876 1, 133, :_reduce_ none,877 1, 133, :_reduce_ none,878 1, 133, :_reduce_ none,879 1, 133, :_reduce_ none,880 1, 133, :_reduce_ none,881 1, 133, :_reduce_ none,882 1, 133, :_reduce_ none,882 1, 133, :_reduce_55, 883 1, 133, :_reduce_56, 884 1, 133, :_reduce_57, 885 1, 133, :_reduce_58, 886 1, 133, :_reduce_59, 887 1, 133, :_reduce_60, 888 1, 133, :_reduce_61, 883 889 1, 118, :_reduce_none, 884 1, 119, :_reduce_ none,885 2, 119, :_reduce_ none,886 5, 142, :_reduce_ none,887 5, 142, :_reduce_ none,888 5, 142, :_reduce_ none,890 1, 119, :_reduce_63, 891 2, 119, :_reduce_64, 892 5, 142, :_reduce_65, 893 5, 142, :_reduce_66, 894 5, 142, :_reduce_67, 889 895 2, 143, :_reduce_68, 890 896 3, 143, :_reduce_69, 891 1, 144, :_reduce_ none,892 2, 144, :_reduce_ none,893 1, 144, :_reduce_ none,897 1, 144, :_reduce_70, 898 2, 144, :_reduce_71, 899 1, 144, :_reduce_72, 894 900 0, 130, :_reduce_none, 895 901 2, 130, :_reduce_none, … … 904 910 2, 103, :_reduce_none, 905 911 2, 103, :_reduce_none, 906 2, 104, :_reduce_ none,912 2, 104, :_reduce_85, 907 913 2, 104, :_reduce_none, 908 914 1, 109, :_reduce_none, … … 915 921 1, 155, :_reduce_94, 916 922 2, 155, :_reduce_none, 917 1, 156, :_reduce_ none,918 1, 156, :_reduce_ none,919 1, 153, :_reduce_ none,920 1, 153, :_reduce_ none,921 1, 159, :_reduce_ none,922 2, 159, :_reduce_ none,923 3, 160, :_reduce_ none,923 1, 156, :_reduce_96, 924 1, 156, :_reduce_97, 925 1, 153, :_reduce_98, 926 1, 153, :_reduce_99, 927 1, 159, :_reduce_100, 928 2, 159, :_reduce_101, 929 3, 160, :_reduce_102, 924 930 1, 161, :_reduce_103, 925 931 1, 162, :_reduce_none, … … 929 935 1, 158, :_reduce_none, 930 936 2, 158, :_reduce_none, 931 2, 166, :_reduce_ none,932 3, 166, :_reduce_ none,937 2, 166, :_reduce_110, 938 3, 166, :_reduce_111, 933 939 1, 167, :_reduce_none, 934 1, 157, :_reduce_ none,935 2, 157, :_reduce_ none,940 1, 157, :_reduce_113, 941 2, 157, :_reduce_114, 936 942 3, 168, :_reduce_115, 937 1, 169, :_reduce_ none,938 1, 169, :_reduce_ none,939 1, 169, :_reduce_ none,940 1, 169, :_reduce_ none,941 1, 169, :_reduce_ none,943 1, 169, :_reduce_116, 944 1, 169, :_reduce_117, 945 1, 169, :_reduce_118, 946 1, 169, :_reduce_119, 947 1, 169, :_reduce_120, 942 948 1, 165, :_reduce_121, 943 949 1, 165, :_reduce_122, … … 971 977 3, 184, :_reduce_none, 972 978 3, 184, :_reduce_none, 973 1, 175, :_reduce_ none,974 2, 175, :_reduce_ none,975 2, 175, :_reduce_ none,979 1, 175, :_reduce_152, 980 2, 175, :_reduce_153, 981 2, 175, :_reduce_154, 976 982 3, 185, :_reduce_none, 977 983 3, 185, :_reduce_none, … … 1109 1115 2, 206, :_reduce_288, 1110 1116 1, 206, :_reduce_289, 1111 0, 145, :_reduce_ none,1112 5, 145, :_reduce_ none,1113 1, 207, :_reduce_ none,1114 3, 207, :_reduce_ none,1115 5, 146, :_reduce_ none,1117 0, 145, :_reduce_290, 1118 5, 145, :_reduce_291, 1119 1, 207, :_reduce_292, 1120 3, 207, :_reduce_293, 1121 5, 146, :_reduce_294, 1116 1122 1, 208, :_reduce_none, 1117 1123 3, 208, :_reduce_none, … … 1172 1178 3, 140, :_reduce_none, 1173 1179 3, 140, :_reduce_none, 1174 1, 219, :_reduce_ none,1175 1, 219, :_reduce_ none,1176 3, 219, :_reduce_ none,1177 3, 219, :_reduce_ none,1178 1, 141, :_reduce_ none,1179 3, 141, :_reduce_ none,1180 3, 141, :_reduce_ none,1180 1, 219, :_reduce_353, 1181 1, 219, :_reduce_354, 1182 3, 219, :_reduce_355, 1183 3, 219, :_reduce_356, 1184 1, 141, :_reduce_357, 1185 3, 141, :_reduce_358, 1186 3, 141, :_reduce_359, 1181 1187 1, 126, :_reduce_none, 1182 1188 3, 126, :_reduce_none, … … 2023 2029 # reduce 2 omitted 2024 2030 2025 module_eval <<'.,.,', 'lib/parser.y', 4 12031 module_eval <<'.,.,', 'lib/parser.y', 46 2026 2032 def _reduce_3( val, _values, result ) 2033 assert_at(__FILE__,__LINE__) do 2034 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) 2035 end 2036 2027 2037 result = OpenEHR::AM::Archetype::ARCHETYPE.new( 2028 2038 :description => val[4], 2029 :definition => val[5] 2039 :definition => val[5], 2040 :ontology => val[7] 2030 2041 ) 2031 2042 result … … 2063 2074 # reduce 18 omitted 2064 2075 2065 module_eval <<'.,.,', 'lib/parser.y', 762076 module_eval <<'.,.,', 'lib/parser.y', 81 2066 2077 def _reduce_19( val, _values, result ) 2067 2078 result = {:language => val[1]} … … 2074 2085 # reduce 21 omitted 2075 2086 2076 module_eval <<'.,.,', 'lib/parser.y', 872087 module_eval <<'.,.,', 'lib/parser.y', 92 2077 2088 def _reduce_22( val, _values, result ) 2078 2089 result = OpenEHR::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION.new(:details => val[1]) … … 2083 2094 # reduce 23 omitted 2084 2095 2085 module_eval <<'.,.,', 'lib/parser.y', 952096 module_eval <<'.,.,', 'lib/parser.y', 100 2086 2097 def _reduce_24( val, _values, result ) 2087 2098 result = val[1] … … 2092 2103 # reduce 25 omitted 2093 2104 2094 module_eval <<'.,.,', 'lib/parser.y', 1 032105 module_eval <<'.,.,', 'lib/parser.y', 110 2095 2106 def _reduce_26( val, _values, result ) 2107 assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT)} 2108 2096 2109 result = val[0] 2097 2110 result … … 2101 2114 # reduce 27 omitted 2102 2115 2103 module_eval <<'.,.,', 'lib/parser.y', 11 12116 module_eval <<'.,.,', 'lib/parser.y', 118 2104 2117 def _reduce_28( val, _values, result ) 2105 2118 result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new … … 2108 2121 .,., 2109 2122 2110 module_eval <<'.,.,', 'lib/parser.y', 1 152123 module_eval <<'.,.,', 'lib/parser.y', 125 2111 2124 def _reduce_29( val, _values, result ) 2112 result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new 2125 result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new( 2126 :assumed_value => val[0], 2127 :attributes => val[2] 2128 ) 2113 2129 result 2114 2130 end … … 2117 2133 # reduce 30 omitted 2118 2134 2119 module_eval <<'.,.,', 'lib/parser.y', 1 242135 module_eval <<'.,.,', 'lib/parser.y', 134 2120 2136 def _reduce_31( val, _values, result ) 2121 result = {:c_complex_object_id => {:type_identifier => val[0]}}2122 result 2123 end 2124 .,., 2125 2126 module_eval <<'.,.,', 'lib/parser.y', 1 282137 result = val[0] 2138 result 2139 end 2140 .,., 2141 2142 module_eval <<'.,.,', 'lib/parser.y', 138 2127 2143 def _reduce_32( val, _values, result ) 2128 2144 result = {:c_complex_object_id => {:type_identifier => val[0], :V_LOCAL_TERM_CODE_REF => val[1]}} … … 2133 2149 # reduce 33 omitted 2134 2150 2135 # reduce 34 omitted 2136 2137 # reduce 35 omitted 2138 2139 # reduce 36 omitted 2140 2141 # reduce 37 omitted 2142 2143 # reduce 38 omitted 2144 2145 # reduce 39 omitted 2146 2147 # reduce 40 omitted 2148 2149 # reduce 41 omitted 2150 2151 # reduce 42 omitted 2151 module_eval <<'.,.,', 'lib/parser.y', 144 2152 def _reduce_34( val, _values, result ) 2153 result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new(:attributes => val[0]) 2154 result 2155 end 2156 .,., 2157 2158 module_eval <<'.,.,', 'lib/parser.y', 152 2159 def _reduce_35( val, _values, result ) 2160 result = val[0] 2161 result 2162 end 2163 .,., 2164 2165 module_eval <<'.,.,', 'lib/parser.y', 156 2166 def _reduce_36( val, _values, result ) 2167 result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new 2168 result 2169 end 2170 .,., 2171 2172 module_eval <<'.,.,', 'lib/parser.y', 160 2173 def _reduce_37( val, _values, result ) 2174 result = OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_INTERNAL_REF.new 2175 result 2176 end 2177 .,., 2178 2179 module_eval <<'.,.,', 'lib/parser.y', 164 2180 def _reduce_38( val, _values, result ) 2181 result = OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_SLOT.new 2182 result 2183 end 2184 .,., 2185 2186 module_eval <<'.,.,', 'lib/parser.y', 168 2187 def _reduce_39( val, _values, result ) 2188 result = OpenEHR::AM::Archetype::Constraint_Model::CONSTRAINT_REF.new 2189 result 2190 end 2191 .,., 2192 2193 module_eval <<'.,.,', 'lib/parser.y', 172 2194 def _reduce_40( val, _values, result ) 2195 result = val[0] 2196 result 2197 end 2198 .,., 2199 2200 module_eval <<'.,.,', 'lib/parser.y', 176 2201 def _reduce_41( val, _values, result ) 2202 result = val[0] 2203 result 2204 end 2205 .,., 2206 2207 module_eval <<'.,.,', 'lib/parser.y', 180 2208 def _reduce_42( val, _values, result ) 2209 result = val[0] 2210 result 2211 end 2212 .,., 2152 2213 2153 2214 # reduce 43 omitted … … 2171 2232 # reduce 52 omitted 2172 2233 2173 # reduce 53 omitted 2174 2175 module_eval <<'.,.,', 'lib/parser.y', 177 2234 module_eval <<'.,.,', 'lib/parser.y', 212 2235 def _reduce_53( val, _values, result ) 2236 assert_at(__FILE__,__LINE__){val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_PRIMITIVE)} 2237 result = OpenEHR::AM::Archetype::Constraint_Model::C_PRIMITIVE_OBJECT.new(:item => val[0]) 2238 result 2239 end 2240 .,., 2241 2242 module_eval <<'.,.,', 'lib/parser.y', 218 2176 2243 def _reduce_54( val, _values, result ) 2177 @@log.info("#{__FILE__}:#{__LINE__}: c_integer = #{val[0]} at #{@filename}") 2178 result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_Integer.new 2179 result 2180 end 2181 .,., 2182 2183 # reduce 55 omitted 2184 2185 # reduce 56 omitted 2186 2187 # reduce 57 omitted 2188 2189 # reduce 58 omitted 2190 2191 # reduce 59 omitted 2192 2193 # reduce 60 omitted 2194 2195 # reduce 61 omitted 2244 @@log.info("#{__FILE__}:#{__LINE__}: c_integer = #{val[0]} at #{@filename}:#{@lineno}") 2245 result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_INTEGER.new 2246 result 2247 end 2248 .,., 2249 2250 module_eval <<'.,.,', 'lib/parser.y', 223 2251 def _reduce_55( val, _values, result ) 2252 @@log.info("#{__FILE__}:#{__LINE__}: c_real = #{val[0]} at #{@filename}:#{@lineno}") 2253 result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_REAL.new 2254 result 2255 end 2256 .,., 2257 2258 module_eval <<'.,.,', 'lib/parser.y', 228 2259 def _reduce_56( val, _values, result ) 2260 @@log.info("#{__FILE__}:#{__LINE__}: c_date = #{val[0]} at #{@filename}:#{@lineno}") 2261 result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DATE.new 2262 result 2263 end 2264 .,., 2265 2266 module_eval <<'.,.,', 'lib/parser.y', 233 2267 def _reduce_57( val, _values, result ) 2268 @@log.info("#{__FILE__}:#{__LINE__}: c_time = #{val[0]} at #{@filename}:#{@lineno}") 2269 result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_TIME.new 2270 result 2271 end 2272 .,., 2273 2274 module_eval <<'.,.,', 'lib/parser.y', 238 2275 def _reduce_58( val, _values, result ) 2276 @@log.info("#{__FILE__}:#{__LINE__}: c_date_time = #{val[0]} at #{@filename}:#{@lineno}") 2277 result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DATE_TIME.new 2278 result 2279 end 2280 .,., 2281 2282 module_eval <<'.,.,', 'lib/parser.y', 243 2283 def _reduce_59( val, _values, result ) 2284 @@log.info("#{__FILE__}:#{__LINE__}: c_duration = #{val[0]} at #{@filename}:#{@lineno}") 2285 result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DURATION.new 2286 result 2287 end 2288 .,., 2289 2290 module_eval <<'.,.,', 'lib/parser.y', 248 2291 def _reduce_60( val, _values, result ) 2292 @@log.info("#{__FILE__}:#{__LINE__}: c_string = #{val[0]} at #{@filename}:#{@lineno}") 2293 result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_STRING.new 2294 result 2295 end 2296 .,., 2297 2298 module_eval <<'.,.,', 'lib/parser.y', 254 2299 def _reduce_61( val, _values, result ) 2300 assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN)} 2301 @@log.info("#{__FILE__}:#{__LINE__}: c_boolean = #{val[0]} at #{@filename}:#{@lineno}") 2302 result = val[0] 2303 result 2304 end 2305 .,., 2196 2306 2197 2307 # reduce 62 omitted 2198 2308 2199 # reduce 63 omitted 2200 2201 # reduce 64 omitted 2202 2203 # reduce 65 omitted 2204 2205 # reduce 66 omitted 2206 2207 # reduce 67 omitted 2208 2209 module_eval <<'.,.,', 'lib/parser.y', 203 2309 module_eval <<'.,.,', 'lib/parser.y', 264 2310 def _reduce_63( val, _values, result ) 2311 result = [val[0]] 2312 result 2313 end 2314 .,., 2315 2316 module_eval <<'.,.,', 'lib/parser.y', 268 2317 def _reduce_64( val, _values, result ) 2318 result = (val[0] << val[1]) 2319 result 2320 end 2321 .,., 2322 2323 module_eval <<'.,.,', 'lib/parser.y', 277 2324 def _reduce_65( val, _values, result ) 2325 assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)} 2326 c_attribute = val[0] 2327 c_attribute.children = val[3] 2328 result = c_attribute 2329 result 2330 end 2331 .,., 2332 2333 module_eval <<'.,.,', 'lib/parser.y', 282 2334 def _reduce_66( val, _values, result ) 2335 assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)} 2336 result = val[0] 2337 result 2338 end 2339 .,., 2340 2341 module_eval <<'.,.,', 'lib/parser.y', 287 2342 def _reduce_67( val, _values, result ) 2343 assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)} 2344 result = val[0] 2345 result 2346 end 2347 .,., 2348 2349 module_eval <<'.,.,', 'lib/parser.y', 298 2210 2350 def _reduce_68( val, _values, result ) 2211 2351 @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}, c_existence = #{val[1]} at #{@filename}") 2212 result 2213 end 2214 .,., 2215 2216 module_eval <<'.,.,', 'lib/parser.y', 207 2352 result = OpenEHR::AM::Archetype::Constraint_Model::C_SINGLE_ATTRIBUTE.new( 2353 :rm_attribute_name => val[0], 2354 :existence => val[1] 2355 ) 2356 result 2357 end 2358 .,., 2359 2360 module_eval <<'.,.,', 'lib/parser.y', 308 2217 2361 def _reduce_69( val, _values, result ) 2218 @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER: #{val[0]}, c_existence = #{val[1]}, c_cardinality = #{val[2]} at #{@filename}") 2219 result 2220 end 2221 .,., 2222 2223 # reduce 70 omitted 2224 2225 # reduce 71 omitted 2226 2227 # reduce 72 omitted 2362 assert_at(__FILE__,__LINE__){ val[2].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::CARDINALITY) } 2363 @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER: #{val[0]}, c_existence = #{val[1]}, c_cardinality = #{val[2]} at #{@filename}") 2364 result = OpenEHR::AM::Archetype::Constraint_Model::C_MULTIPLE_ATTRIBUTE.new( 2365 :rm_attribute_name => val[0], 2366 :existence => val[1], 2367 :cardinality => val[2] 2368 ) 2369 result 2370 end 2371 .,., 2372 2373 module_eval <<'.,.,', 'lib/parser.y', 313 2374 def _reduce_70( val, _values, result ) 2375 result = Array[val[0]] 2376 result 2377 end 2378 .,., 2379 2380 module_eval <<'.,.,', 'lib/parser.y', 317 2381 def _reduce_71( val, _values, result ) 2382 result = (val[0] << val[1]) 2383 result 2384 end 2385 .,., 2386 2387 module_eval <<'.,.,', 'lib/parser.y', 321 2388 def _reduce_72( val, _values, result ) 2389 result = Array[val[0]] 2390 result 2391 end 2392 .,., 2228 2393 2229 2394 # reduce 73 omitted … … 2251 2416 # reduce 84 omitted 2252 2417 2253 # reduce 85 omitted 2418 module_eval <<'.,.,', 'lib/parser.y', 351 2419 def _reduce_85( val, _values, result ) 2420 result = OpenEHR::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY.new 2421 result 2422 end 2423 .,., 2254 2424 2255 2425 # reduce 86 omitted … … 2267 2437 # reduce 92 omitted 2268 2438 2269 module_eval <<'.,.,', 'lib/parser.y', 2572439 module_eval <<'.,.,', 'lib/parser.y', 370 2270 2440 def _reduce_93( val, _values, result ) 2271 2441 @@log.info("#{__FILE__}:#{__LINE__}: attr_id = #{val[0]}, object_block = #{val[2]} at #{@filename}:#{@lineno}") … … 2274 2444 .,., 2275 2445 2276 module_eval <<'.,.,', 'lib/parser.y', 2622446 module_eval <<'.,.,', 'lib/parser.y', 376 2277 2447 def _reduce_94( val, _values, result ) 2278 2448 @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}:#{@lineno}") 2449 result = val[0] 2279 2450 result 2280 2451 end … … 2283 2454 # reduce 95 omitted 2284 2455 2285 # reduce 96 omitted 2286 2287 # reduce 97 omitted 2288 2289 # reduce 98 omitted 2290 2291 # reduce 99 omitted 2292 2293 # reduce 100 omitted 2294 2295 # reduce 101 omitted 2296 2297 # reduce 102 omitted 2298 2299 module_eval <<'.,.,', 'lib/parser.y', 279 2456 module_eval <<'.,.,', 'lib/parser.y', 382 2457 def _reduce_96( val, _values, result ) 2458 result = val[0] 2459 result 2460 end 2461 .,., 2462 2463 module_eval <<'.,.,', 'lib/parser.y', 386 2464 def _reduce_97( val, _values, result ) 2465 result = val[0] 2466 result 2467 end 2468 .,., 2469 2470 module_eval <<'.,.,', 'lib/parser.y', 391 2471 def _reduce_98( val, _values, result ) 2472 result = val[0] 2473 result 2474 end 2475 .,., 2476 2477 module_eval <<'.,.,', 'lib/parser.y', 395 2478 def _reduce_99( val, _values, result ) 2479 result = val[0] 2480 result 2481 end 2482 .,., 2483 2484 module_eval <<'.,.,', 'lib/parser.y', 400 2485 def _reduce_100( val, _values, result ) 2486 result = val[0] 2487 result 2488 end 2489 .,., 2490 2491 module_eval <<'.,.,', 'lib/parser.y', 404 2492 def _reduce_101( val, _values, result ) 2493 result = val[0] 2494 result 2495 end 2496 .,., 2497 2498 module_eval <<'.,.,', 'lib/parser.y', 409 2499 def _reduce_102( val, _values, result ) 2500 result = val[0] 2501 result 2502 end 2503 .,., 2504 2505 module_eval <<'.,.,', 'lib/parser.y', 415 2300 2506 def _reduce_103( val, _values, result ) 2301 2507 @@log.info("SYM_START_DBLOCK: #{val[0]} at #{@filename}:#{@lineno}") 2508 result = val[0] 2302 2509 result 2303 2510 end … … 2308 2515 # reduce 105 omitted 2309 2516 2310 module_eval <<'.,.,', 'lib/parser.y', 2872517 module_eval <<'.,.,', 'lib/parser.y', 423 2311 2518 def _reduce_106( val, _values, result ) 2312 2519 @@log.info("#{__FILE__}:#{__LINE__}: keyed_object = #{val[0]}, object_block = #{val[2]} at #{@filename}:#{@lineno}") … … 2315 2522 .,., 2316 2523 2317 module_eval <<'.,.,', 'lib/parser.y', 2922524 module_eval <<'.,.,', 'lib/parser.y', 429 2318 2525 def _reduce_107( val, _values, result ) 2319 2526 @@log.info("object_key: [#{val[1]}] at #{@filename}:#{@lineno}") 2527 result = val[1] 2320 2528 result 2321 2529 end … … 2326 2534 # reduce 109 omitted 2327 2535 2328 # reduce 110 omitted 2329 2330 # reduce 111 omitted 2536 module_eval <<'.,.,', 'lib/parser.y', 437 2537 def _reduce_110( val, _values, result ) 2538 @@log.info("#{__FILE__}:#{__LINE__}: single_attr_object_complex_head = #{val[0]} at #{@filename}:#{@lineno}") 2539 result = val[0] 2540 result 2541 end 2542 .,., 2543 2544 module_eval <<'.,.,', 'lib/parser.y', 442 2545 def _reduce_111( val, _values, result ) 2546 @@log.info("#{__FILE__}:#{__LINE__}: single_attr_object_complex_head = #{val[0]}, attr_vals = #{val[1]} at #{@filename}:#{@lineno}") 2547 result = val[0] 2548 result 2549 end 2550 .,., 2331 2551 2332 2552 # reduce 112 omitted 2333 2553 2334 # reduce 113 omitted 2335 2336 # reduce 114 omitted 2337 2338 module_eval <<'.,.,', 'lib/parser.y', 304 2554 module_eval <<'.,.,', 'lib/parser.y', 448 2555 def _reduce_113( val, _values, result ) 2556 @@log.info("#{__FILE__}:#{__LINE__}: untyped_primitive_object_block = #{val[0]} at #{@filename}:#{@lineno}") 2557 result = val[0] 2558 result 2559 end 2560 .,., 2561 2562 module_eval <<'.,.,', 'lib/parser.y', 453 2563 def _reduce_114( val, _values, result ) 2564 @@log.info("#{__FILE__}:#{__LINE__}: type_identifier = #{val[0]}, untyped_primitive_object_block = #{val[1]} at #{@filename}:#{@lineno}") 2565 result = val[0] 2566 result 2567 end 2568 .,., 2569 2570 module_eval <<'.,.,', 'lib/parser.y', 458 2339 2571 def _reduce_115( val, _values, result ) 2340 @@log.info("#{__FILE__}:#{__LINE__}: primitive_object_block = <#{val[2]}> at #{@filename}:#{@lineno}") 2341 result 2342 end 2343 .,., 2344 2345 # reduce 116 omitted 2346 2347 # reduce 117 omitted 2348 2349 # reduce 118 omitted 2350 2351 # reduce 119 omitted 2352 2353 # reduce 120 omitted 2354 2355 module_eval <<'.,.,', 'lib/parser.y', 313 2572 @@log.info("#{__FILE__}:#{__LINE__}: primitive_object_block = <#{val[1]}> at #{@filename}:#{@lineno}") 2573 result = val[1] 2574 result 2575 end 2576 .,., 2577 2578 module_eval <<'.,.,', 'lib/parser.y', 462 2579 def _reduce_116( val, _values, result ) 2580 result = val[0] 2581 result 2582 end 2583 .,., 2584 2585 module_eval <<'.,.,', 'lib/parser.y', 466 2586 def _reduce_117( val, _values, result ) 2587 result = val[0] 2588 result 2589 end 2590 .,., 2591 2592 module_eval <<'.,.,', 'lib/parser.y', 470 2593 def _reduce_118( val, _values, result ) 2594 result = val[0] 2595 result 2596 end 2597 .,., 2598 2599 module_eval <<'.,.,', 'lib/parser.y', 474 2600 def _reduce_119( val, _values, result ) 2601 result = val[0] 2602 result 2603 end 2604 .,., 2605 2606 module_eval <<'.,.,', 'lib/parser.y', 478 2607 def _reduce_120( val, _values, result ) 2608 result = val[0] 2609 result 2610 end 2611 .,., 2612 2613 module_eval <<'.,.,', 'lib/parser.y', 483 2356 2614 def _reduce_121( val, _values, result ) 2357 2615 @@log.info("string_value: #{val[0]} at #{@filename}:#{@lineno}") 2358 result 2359 end 2360 .,., 2361 2362 module_eval <<'.,.,', 'lib/parser.y', 317 2616 result = val[0] 2617 result 2618 end 2619 .,., 2620 2621 module_eval <<'.,.,', 'lib/parser.y', 488 2363 2622 def _reduce_122( val, _values, result ) 2364 2623 @@log.info("integer_value: #{val[0]} at #{@filename}:#{@lineno}") 2365 result 2366 end 2367 .,., 2368 2369 module_eval <<'.,.,', 'lib/parser.y', 321 2624 result = val[0] 2625 result 2626 end 2627 .,., 2628 2629 module_eval <<'.,.,', 'lib/parser.y', 493 2370 2630 def _reduce_123( val, _values, result ) 2371 2631 @@log.info("real_value: #{val[0]} at #{@filename}:#{@lineno}") 2372 result 2373 end 2374 .,., 2375 2376 module_eval <<'.,.,', 'lib/parser.y', 325 2632 result = val[0] 2633 result 2634 end 2635 .,., 2636 2637 module_eval <<'.,.,', 'lib/parser.y', 498 2377 2638 def _reduce_124( val, _values, result ) 2378 2639 @@log.info("boolean_value: #{val[0]} at #{@filename}:#{@lineno}") 2379 result 2380 end 2381 .,., 2382 2383 module_eval <<'.,.,', 'lib/parser.y', 329 2640 result = val[0] 2641 result 2642 end 2643 .,., 2644 2645 module_eval <<'.,.,', 'lib/parser.y', 503 2384 2646 def _reduce_125( val, _values, result ) 2385 2647 @@log.info("character_value: #{val[0]} at #{@filename}:#{@lineno}") 2386 result 2387 end 2388 .,., 2389 2390 module_eval <<'.,.,', 'lib/parser.y', 333 2648 result = val[0] 2649 result 2650 end 2651 .,., 2652 2653 module_eval <<'.,.,', 'lib/parser.y', 508 2391 2654 def _reduce_126( val, _values, result ) 2392 2655 @@log.info("date_value: #{val[0]} at #{@filename}:#{@lineno}") 2393 result 2394 end 2395 .,., 2396 2397 module_eval <<'.,.,', 'lib/parser.y', 337 2656 result = val[0] 2657 result 2658 end 2659 .,., 2660 2661 module_eval <<'.,.,', 'lib/parser.y', 513 2398 2662 def _reduce_127( val, _values, result ) 2399 2663 @@log.info("time_value: #{val[0]} at #{@filename}:#{@lineno}") 2400 result 2401 end 2402 .,., 2403 2404 module_eval <<'.,.,', 'lib/parser.y', 341 2664 result = val[0] 2665 result 2666 end 2667 .,., 2668 2669 module_eval <<'.,.,', 'lib/parser.y', 518 2405 2670 def _reduce_128( val, _values, result ) 2406 2671 @@log.info("date_time_value: #{val[0]} at #{@filename}:#{@lineno}") 2407 result 2408 end 2409 .,., 2410 2411 module_eval <<'.,.,', 'lib/parser.y', 345 2672 result = val[0] 2673 result 2674 end 2675 .,., 2676 2677 module_eval <<'.,.,', 'lib/parser.y', 523 2412 2678 def _reduce_129( val, _values, result ) 2413 2679 @@log.info("duration_value: #{val[0]} at #{@filename}:#{@lineno}") 2414 result 2415 end 2416 .,., 2417 2418 module_eval <<'.,.,', 'lib/parser.y', 349 2680 result = val[0] 2681 result 2682 end 2683 .,., 2684 2685 module_eval <<'.,.,', 'lib/parser.y', 528 2419 2686 def _reduce_130( val, _values, result ) 2420 2687 @@log.info("uri_value: #{val[0]} at #{@filename}:#{@lineno}") 2688 result = val[0] 2421 2689 result 2422 2690 end … … 2453 2721 # reduce 145 omitted 2454 2722 2455 module_eval <<'.,.,', 'lib/parser.y', 3702723 module_eval <<'.,.,', 'lib/parser.y', 551 2456 2724 def _reduce_146( val, _values, result ) 2457 2725 @@log.info("V_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}") 2458 result 2459 end 2460 .,., 2461 2462 module_eval <<'.,.,', 'lib/parser.y', 374 2726 result = val[0] 2727 result 2728 end 2729 .,., 2730 2731 module_eval <<'.,.,', 'lib/parser.y', 556 2463 2732 def _reduce_147( val, _values, result ) 2464 2733 @@log.info("V_GENERIC_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}") 2465 result 2466 end 2467 .,., 2468 2469 module_eval <<'.,.,', 'lib/parser.y', 379 2734 result = val[0] 2735 result 2736 end 2737 .,., 2738 2739 module_eval <<'.,.,', 'lib/parser.y', 562 2470 2740 def _reduce_148( val, _values, result ) 2471 2741 @@log.info("V_STRING: #{val[0]} at #{@filename}:#{@lineno}") 2742 result = val[0] 2472 2743 result 2473 2744 end … … 2480 2751 # reduce 151 omitted 2481 2752 2482 # reduce 152 omitted 2483 2484 # reduce 153 omitted 2485 2486 # reduce 154 omitted 2753 module_eval <<'.,.,', 'lib/parser.y', 576 2754 def _reduce_152( val, _values, result ) 2755 begin 2756 integer = Integer(val[0]) 2757 rescue 2758 raise 2759 end 2760 result = integer 2761 result 2762 end 2763 .,., 2764 2765 module_eval <<'.,.,', 'lib/parser.y', 585 2766 def _reduce_153( val, _values, result ) 2767 begin 2768 integer = Integer(val[0]) 2769 rescue 2770 raise 2771 end 2772 result = integer 2773 result 2774 end 2775 .,., 2776 2777 module_eval <<'.,.,', 'lib/parser.y', 594 2778 def _reduce_154( val, _values, result ) 2779 begin 2780 integer = Integer(val[0]) 2781 rescue 2782 raise 2783 end 2784 result = - integer 2785 result 2786 end 2787 .,., 2487 2788 2488 2789 # reduce 155 omitted … … 2636 2937 # reduce 229 omitted 2637 2938 2638 module_eval <<'.,.,', 'lib/parser.y', 4902939 module_eval <<'.,.,', 'lib/parser.y', 698 2639 2940 def _reduce_230( val, _values, result ) 2640 2941 @@log.info("V_ISO8601_DURATION: #{val[0]} at #{@filename}:#{@lineno}") 2942 result = val[0] 2641 2943 result 2642 2944 end … … 2667 2969 # reduce 242 omitted 2668 2970 2669 module_eval <<'.,.,', 'lib/parser.y', 5092971 module_eval <<'.,.,', 'lib/parser.y', 717 2670 2972 def _reduce_243( val, _values, result ) 2671 2973 @@log.info("#{__FILE__}:#{__LINE__}: V_QUALIFIED_TERM_CODE_REF = #{val[0]} at #{@filename}:#{@lineno}") … … 2680 2982 # reduce 246 omitted 2681 2983 2682 module_eval <<'.,.,', 'lib/parser.y', 5182984 module_eval <<'.,.,', 'lib/parser.y', 726 2683 2985 def _reduce_247( val, _values, result ) 2684 2986 @@log.info("#{__FILE__}:#{__LINE__}: V_URI = #{val[0]} at #{@filename}:#{@lineno}") … … 2767 3069 # reduce 287 omitted 2768 3070 2769 module_eval <<'.,.,', 'lib/parser.y', 5873071 module_eval <<'.,.,', 'lib/parser.y', 795 2770 3072 def _reduce_288( val, _values, result ) 2771 3073 @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}") … … 2774 3076 .,., 2775 3077 2776 module_eval <<'.,.,', 'lib/parser.y', 5913078 module_eval <<'.,.,', 'lib/parser.y', 799 2777 3079 def _reduce_289( val, _values, result ) 2778 3080 @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}") … … 2781 3083 .,., 2782 3084 2783 # reduce 290 omitted 2784 2785 # reduce 291 omitted 2786 2787 # reduce 292 omitted 2788 2789 # reduce 293 omitted 2790 2791 # reduce 294 omitted 3085 module_eval <<'.,.,', 'lib/parser.y', 810 3086 def _reduce_290( val, _values, result ) 3087 result = Range.new(1,1) 3088 result 3089 end 3090 .,., 3091 3092 module_eval <<'.,.,', 'lib/parser.y', 814 3093 def _reduce_291( val, _values, result ) 3094 result = val[3] 3095 result 3096 end 3097 .,., 3098 3099 module_eval <<'.,.,', 'lib/parser.y', 824 3100 def _reduce_292( val, _values, result ) 3101 begin 3102 integer = Integer(val[0]) 3103 rescue 3104 raise 3105 end 3106 result = integer 3107 result 3108 end 3109 .,., 3110 3111 module_eval <<'.,.,', 'lib/parser.y', 834 3112 def _reduce_293( val, _values, result ) 3113 begin 3114 from_integer = Integer(val[0]) 3115 to_integer = Integer(val[2]) 3116 rescue 3117 raise 3118 end 3119 result = Range.new(from_integer,to_integer) 3120 result 3121 end 3122 .,., 3123 3124 module_eval <<'.,.,', 'lib/parser.y', 839 3125 def _reduce_294( val, _values, result ) 3126 result = OpenEHR::AM::Archetype::Constraint_Model::CARDINALITY.new 3127 result 3128 end 3129 .,., 2792 3130 2793 3131 # reduce 295 omitted … … 2907 3245 # reduce 352 omitted 2908 3246 2909 # reduce 353 omitted 2910 2911 # reduce 354 omitted 2912 2913 # reduce 355 omitted 2914 2915 # reduce 356 omitted 2916 2917 # reduce 357 omitted 2918 2919 # reduce 358 omitted 2920 2921 # reduce 359 omitted 3247 module_eval <<'.,.,', 'lib/parser.y', 925 3248 def _reduce_353( val, _values, result ) 3249 result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true) 3250 result 3251 end 3252 .,., 3253 3254 module_eval <<'.,.,', 'lib/parser.y', 929 3255 def _reduce_354( val, _values, result ) 3256 result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false) 3257 result 3258 end 3259 .,., 3260 3261 module_eval <<'.,.,', 'lib/parser.y', 933 3262 def _reduce_355( val, _values, result ) 3263 result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true,:false_valid => false) 3264 result 3265 end 3266 .,., 3267 3268 module_eval <<'.,.,', 'lib/parser.y', 937 3269 def _reduce_356( val, _values, result ) 3270 result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false,:false_valid => true) 3271 result 3272 end 3273 .,., 3274 3275 module_eval <<'.,.,', 'lib/parser.y', 942 3276 def _reduce_357( val, _values, result ) 3277 result = val[0] 3278 result 3279 end 3280 .,., 3281 3282 module_eval <<'.,.,', 'lib/parser.y', 946 3283 def _reduce_358( val, _values, result ) 3284 raise 'Not implemented yet' 3285 result 3286 end 3287 .,., 3288 3289 module_eval <<'.,.,', 'lib/parser.y', 950 3290 def _reduce_359( val, _values, result ) 3291 raise 'Not implemented yet' 3292 result 3293 end 3294 .,., 2922 3295 2923 3296 # reduce 360 omitted … … 2931 3304 # reduce 364 omitted 2932 3305 2933 module_eval <<'.,.,', 'lib/parser.y', 7113306 module_eval <<'.,.,', 'lib/parser.y', 963 2934 3307 def _reduce_365( val, _values, result ) 2935 3308 @in_interval = false … … 2955 3328 # reduce 373 omitted 2956 3329 2957 module_eval <<'.,.,', 'lib/parser.y', 7333330 module_eval <<'.,.,', 'lib/parser.y', 985 2958 3331 def _reduce_374( val, _values, result ) 2959 3332 @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{word} at #{@filename}") -
ruby/trunk/adl_parser/lib/parser.y
r21 r22 35 35 archetype: arch_identification arch_specialisation arch_concept arch_language arch_description arch_definition arch_invariant arch_ontology 36 36 { 37 assert_at(__FILE__,__LINE__) do 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 end 40 37 41 result = OpenEHR::AM::Archetype::ARCHETYPE.new( 38 42 :description => val[4], 39 :definition => val[5] 43 :definition => val[5], 44 :ontology => val[7] 40 45 ) 41 46 } … … 100 105 cadl_section: c_complex_object 101 106 { 107 assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT)} 108 102 109 result = val[0] 103 110 } … … 112 119 | c_complex_object_head SYM_MATCHES SYM_START_CBLOCK c_complex_object_body SYM_END_CBLOCK 113 120 { 114 result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new 121 result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new( 122 :assumed_value => val[0], 123 :attributes => val[2] 124 ) 115 125 } 116 126 # | c_complex_object_head error SYM_END_CBLOCK … … 121 131 c_complex_object_id: type_identifier 122 132 { 123 result = {:c_complex_object_id => {:type_identifier => val[0]}}133 result = val[0] 124 134 } 125 135 | type_identifier V_LOCAL_TERM_CODE_REF … … 130 140 c_complex_object_body: c_any #-- used to indicate that any value of a type is ok 131 141 | c_attributes 142 { 143 result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new(:attributes => val[0]) 144 } 132 145 133 146 … … 135 148 136 149 c_object: v_c_domain_type 150 { 151 result = val[0] 152 } 137 153 | c_complex_object 154 { 155 result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new 156 } 138 157 | archetype_internal_ref 158 { 159 result = OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_INTERNAL_REF.new 160 } 139 161 | archetype_slot 162 { 163 result = OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_SLOT.new 164 } 140 165 | constraint_ref 166 { 167 result = OpenEHR::AM::Archetype::Constraint_Model::CONSTRAINT_REF.new 168 } 141 169 | c_code_phrase 170 { 171 result = val[0] 172 } 142 173 | c_ordinal 174 { 175 result = val[0] 176 } 143 177 | c_primitive_object 178 { 179 result = val[0] 180 } 144 181 # | v_c_domain_type 145 182 # | V_C_DOMAIN_TYPE … … 170 207 # 'c_primitive_object' is an node representing a constraint on a primitive object type. 171 208 c_primitive_object: c_primitive 209 { 210 assert_at(__FILE__,__LINE__){val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_PRIMITIVE)} 211 result = OpenEHR::AM::Archetype::Constraint_Model::C_PRIMITIVE_OBJECT.new(:item => val[0]) 212 } 172 213 173 214 c_primitive: c_integer 174 215 { 175 @@log.info("#{__FILE__}:#{__LINE__}: c_integer = #{val[0]} at #{@filename} ")176 result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_I nteger.new216 @@log.info("#{__FILE__}:#{__LINE__}: c_integer = #{val[0]} at #{@filename}:#{@lineno}") 217 result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_INTEGER.new 177 218 } 178 219 | c_real 220 { 221 @@log.info("#{__FILE__}:#{__LINE__}: c_real = #{val[0]} at #{@filename}:#{@lineno}") 222 result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_REAL.new 223 } 179 224 | c_date 225 { 226 @@log.info("#{__FILE__}:#{__LINE__}: c_date = #{val[0]} at #{@filename}:#{@lineno}") 227 result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DATE.new 228 } 180 229 | c_time 230 { 231 @@log.info("#{__FILE__}:#{__LINE__}: c_time = #{val[0]} at #{@filename}:#{@lineno}") 232 result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_TIME.new 233 } 181 234 | c_date_time 235 { 236 @@log.info("#{__FILE__}:#{__LINE__}: c_date_time = #{val[0]} at #{@filename}:#{@lineno}") 237 result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DATE_TIME.new 238 } 182 239 | c_duration 240 { 241 @@log.info("#{__FILE__}:#{__LINE__}: c_duration = #{val[0]} at #{@filename}:#{@lineno}") 242 result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DURATION.new 243 } 183 244 | c_string 245 { 246 @@log.info("#{__FILE__}:#{__LINE__}: c_string = #{val[0]} at #{@filename}:#{@lineno}") 247 result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_STRING.new 248 } 184 249 | c_boolean 250 { 251 assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN)} 252 @@log.info("#{__FILE__}:#{__LINE__}: c_boolean = #{val[0]} at #{@filename}:#{@lineno}") 253 result = val[0] 254 } 185 255 186 256 c_any: Star_code … … 190 260 191 261 c_attributes: c_attribute 262 { 263 result = [val[0]] 264 } 192 265 | c_attributes c_attribute 266 { 267 result = (val[0] << val[1]) 268 } 193 269 194 270 # 'c_attribute' is a node representing a constraint on an attribute in an object model. 195 271 c_attribute: c_attr_head SYM_MATCHES SYM_START_CBLOCK c_attr_values SYM_END_CBLOCK 272 { 273 assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)} 274 c_attribute = val[0] 275 c_attribute.children = val[3] 276 result = c_attribute 277 } 196 278 | c_attr_head SYM_MATCHES START_REGEXP_BLOCK REGEXP_BODY END_REGEXP_BLOCK # added by akimichi 279 { 280 assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)} 281 result = val[0] 282 } 197 283 | c_attr_head SYM_MATCHES SYM_START_CBLOCK error SYM_END_CBLOCK 284 { 285 assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)} 286 result = val[0] 287 } 198 288 199 289 … … 201 291 { 202 292 @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}, c_existence = #{val[1]} at #{@filename}") 293 result = OpenEHR::AM::Archetype::Constraint_Model::C_SINGLE_ATTRIBUTE.new( 294 :rm_attribute_name => val[0], 295 :existence => val[1] 296 ) 297 203 298 } 204 299 | V_ATTRIBUTE_IDENTIFIER c_existence c_cardinality 205 300 { 301 assert_at(__FILE__,__LINE__){ val[2].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::CARDINALITY) } 206 302 @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER: #{val[0]}, c_existence = #{val[1]}, c_cardinality = #{val[2]} at #{@filename}") 303 result = OpenEHR::AM::Archetype::Constraint_Model::C_MULTIPLE_ATTRIBUTE.new( 304 :rm_attribute_name => val[0], 305 :existence => val[1], 306 :cardinality => val[2] 307 ) 207 308 } 208 309 209 310 c_attr_values: c_object 311 { 312 result = Array[val[0]] 313 } 210 314 | c_attr_values c_object 315 { 316 result = (val[0] << val[1]) 317 } 211 318 | c_any # -- to allow a property to have any value 319 { 320 result = Array[val[0]] 321 } 212 322 213 323 ### c_includes: #-- Empty … … 237 347 238 348 arch_ontology: SYM_ONTOLOGY dadl_section 349 { 350 result = OpenEHR::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY.new 351 } 239 352 | SYM_ONTOLOGY error 240 353 … … 260 373 { 261 374 @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}:#{@lineno}") 375 result = val[0] 262 376 } 263 377 | V_ATTRIBUTE_IDENTIFIER error 264 378 265 379 object_block: complex_object_block 380 { 381 result = val[0] 382 } 266 383 | primitive_object_block 384 { 385 result = val[0] 386 } 267 387 268 388 complex_object_block: single_attr_object_block 389 { 390 result = val[0] 391 } 269 392 | multiple_attr_object_block 393 { 394 result = val[0] 395 } 270 396 271 397 multiple_attr_object_block: untyped_multiple_attr_object_block 398 { 399 result = val[0] 400 } 272 401 | type_identifier untyped_multiple_attr_object_block 402 { 403 result = val[0] 404 } 273 405 274 406 untyped_multiple_attr_object_block: multiple_attr_object_block_head keyed_objects SYM_END_DBLOCK 407 { 408 result = val[0] 409 } 275 410 276 411 multiple_attr_object_block_head: SYM_START_DBLOCK 277 { 412 { 278 413 @@log.info("SYM_START_DBLOCK: #{val[0]} at #{@filename}:#{@lineno}") 414 result = val[0] 279 415 } 280 416 … … 290 426 { 291 427 @@log.info("object_key: [#{val[1]}] at #{@filename}:#{@lineno}") 428 result = val[1] 292 429 } 293 430 … … 295 432 | type_identifier untyped_single_attr_object_block 296 433 untyped_single_attr_object_block: single_attr_object_complex_head SYM_END_DBLOCK # <> 434 { 435 @@log.info("#{__FILE__}:#{__LINE__}: single_attr_object_complex_head = #{val[0]} at #{@filename}:#{@lineno}") 436 result = val[0] 437 } 297 438 | single_attr_object_complex_head attr_vals SYM_END_DBLOCK 439 { 440 @@log.info("#{__FILE__}:#{__LINE__}: single_attr_object_complex_head = #{val[0]}, attr_vals = #{val[1]} at #{@filename}:#{@lineno}") 441 result = val[0] 442 } 298 443 single_attr_object_complex_head: SYM_START_DBLOCK 299 444 primitive_object_block: untyped_primitive_object_block 445 { 446 @@log.info("#{__FILE__}:#{__LINE__}: untyped_primitive_object_block = #{val[0]} at #{@filename}:#{@lineno}") 447 result = val[0] 448 } 300 449 | type_identifier untyped_primitive_object_block 450 { 451 @@log.info("#{__FILE__}:#{__LINE__}: type_identifier = #{val[0]}, untyped_primitive_object_block = #{val[1]} at #{@filename}:#{@lineno}") 452 result = val[0] 453 } 301 454 untyped_primitive_object_block: SYM_START_DBLOCK primitive_object_value SYM_END_DBLOCK 302 455 { 303 @@log.info("#{__FILE__}:#{__LINE__}: primitive_object_block = <#{val[2]}> at #{@filename}:#{@lineno}") 456 @@log.info("#{__FILE__}:#{__LINE__}: primitive_object_block = <#{val[1]}> at #{@filename}:#{@lineno}") 457 result = val[1] 304 458 } 305 459 primitive_object_value: simple_value 460 { 461 result = val[0] 462 } 306 463 | simple_list_value 464 { 465 result = val[0] 466 } 307 467 | simple_interval_value 468 { 469 result = val[0] 470 } 308 471 | term_code 472 { 473 result = val[0] 474 } 309 475 | term_code_list_value 476 { 477 result = val[0] 478 } 310 479 simple_value: string_value 311 480 { 312 481 @@log.info("string_value: #{val[0]} at #{@filename}:#{@lineno}") 482 result = val[0] 313 483 } 314 484 | integer_value 315 485 { 316 486 @@log.info("integer_value: #{val[0]} at #{@filename}:#{@lineno}") 487 result = val[0] 317 488 } 318 489 | real_value 319 490 { 320 491 @@log.info("real_value: #{val[0]} at #{@filename}:#{@lineno}") 492 result = val[0] 321 493 } 322 494 | boolean_value 323 495 { 324 496 @@log.info("boolean_value: #{val[0]} at #{@filename}:#{@lineno}") 497 result = val[0] 325 498 } 326 499 | character_value 327 500 { 328 501 @@log.info("character_value: #{val[0]} at #{@filename}:#{@lineno}") 502 result = val[0] 329 503 } 330 504 | date_value 331 505 { 332 506 @@log.info("date_value: #{val[0]} at #{@filename}:#{@lineno}") 507 result = val[0] 333 508 } 334 509 | time_value 335 510 { 336 511 @@log.info("time_value: #{val[0]} at #{@filename}:#{@lineno}") 512 result = val[0] 337 513 } 338 514 | date_time_value 339 515 { 340 516 @@log.info("date_time_value: #{val[0]} at #{@filename}:#{@lineno}") 517 result = val[0] 341 518 } 342 519 | duration_value 343 520 { 344 521 @@log.info("duration_value: #{val[0]} at #{@filename}:#{@lineno}") 522 result = val[0] 345 523 } 346 524 | uri_value 347 525 { 348 526 @@log.info("uri_value: #{val[0]} at #{@filename}:#{@lineno}") 349 } 527 result = val[0] 528 } 529 350 530 simple_list_value: string_list_value 351 531 | integer_list_value … … 368 548 { 369 549 @@log.info("V_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}") 550 result = val[0] 370 551 } 371 552 | V_GENERIC_TYPE_IDENTIFIER 372 553 { 373 554 @@log.info("V_GENERIC_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}") 555 result = val[0] 374 556 } 375 557 … … 377 559 { 378 560 @@log.info("V_STRING: #{val[0]} at #{@filename}:#{@lineno}") 561 result = val[0] 379 562 } 380 563 … … 384 567 385 568 integer_value: V_INTEGER 569 { 570 begin 571 integer = Integer(val[0]) 572 rescue 573 raise 574 end 575 result = integer 576 } 386 577 | Plus_code V_INTEGER 578 { 579 begin 580 integer = Integer(val[0]) 581 rescue 582 raise 583 end 584 result = integer 585 } 387 586 | Minus_code V_INTEGER 587 { 588 begin 589 integer = Integer(val[0]) 590 rescue 591 raise 592 end 593 result = - integer 594 } 388 595 ### | '+' V_INTEGER 389 596 ### | '-' V_INTEGER … … 488 695 { 489 696 @@log.info("V_ISO8601_DURATION: #{val[0]} at #{@filename}:#{@lineno}") 697 result = val[0] 490 698 } 491 699 … … 598 806 599 807 c_existence: #-- default to 1..1 600 | SYM_EXISTENCE SYM_MATCHES SYM_START_CBLOCK existence_spec SYM_END_CBLOCK 808 { 809 result = Range.new(1,1) 810 } 811 | SYM_EXISTENCE SYM_MATCHES SYM_START_CBLOCK existence_spec SYM_END_CBLOCK 812 { 813 result = val[3] 814 } 601 815 602 816 existence_spec: V_INTEGER #-- can only be 0 or 1 817 { 818 begin 819 integer = Integer(val[0]) 820 rescue 821 raise 822 end 823 result = integer 824 } 603 825 | V_INTEGER SYM_ELLIPSIS V_INTEGER #-- can only be 0..0, 0..1, 1..1 826 { 827 begin 828 from_integer = Integer(val[0]) 829 to_integer = Integer(val[2]) 830 rescue 831 raise 832 end 833 result = Range.new(from_integer,to_integer) 834 } 604 835 605 836 c_cardinality: SYM_CARDINALITY SYM_MATCHES SYM_START_CBLOCK cardinality_spec SYM_END_CBLOCK 837 { 838 result = OpenEHR::AM::Archetype::Constraint_Model::CARDINALITY.new 839 } 606 840 607 841 cardinality_spec: occurrence_spec … … 687 921 688 922 c_boolean_spec: SYM_TRUE 923 { 924 result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true) 925 } 689 926 | SYM_FALSE 927 { 928 result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false) 929 } 690 930 | SYM_TRUE Comma_code SYM_FALSE 931 { 932 result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true,:false_valid => false) 933 } 691 934 | SYM_FALSE Comma_code SYM_TRUE 935 { 936 result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false,:false_valid => true) 937 } 692 938 693 939 c_boolean: c_boolean_spec 940 { 941 result = val[0] 942 } 694 943 | c_boolean_spec Semicolon_code boolean_value 944 { 945 raise 'Not implemented yet' 946 } 695 947 | c_boolean_spec Semicolon_code error 696 # | c_boolean_spec ';' error 948 { 949 raise 'Not implemented yet' 950 } 697 951 698 952 c_ordinal: c_ordinal_spec 699 953 | c_ordinal_spec Semicolon_code integer_value 700 954 | c_ordinal_spec Semicolon_code error 701 # | c_ordinal_spec ';' error702 955 703 956 c_ordinal_spec: ordinal 704 957 | c_ordinal_spec Comma_code ordinal 705 # | c_ordinal_spec ',' ordinal706 958 707 959 ordinal: integer_value SYM_INTERVAL_DELIM V_QUALIFIED_TERM_CODE_REF … … 756 1008 757 1009 ---- inner 1010 1011 def assert_at(file,line, message = "") 1012 unless yield 1013 raise "Assertion failed !: #{file}, #{line}: #{message}" 1014 end 1015 end 758 1016 759 1017 @@log = Logger.new('log/parser.log','daily')
Note:
See TracChangeset
for help on using the changeset viewer.