source: ruby/branches/0.5/doc/open_ehr/dadl.bnf@ 169

Last change on this file since 169 was 169, checked in by KOBAYASHI, Shinji, 15 years ago

adjust hierarchy

File size: 8.2 KB
Line 
1
2input: attr_vals -- anonymous object
3 | complex_object_block
4 | error
5
6---------------------- body ---------------------
7
8attr_vals: attr_val
9 | attr_vals attr_val
10 | attr_vals ';' attr_val
11
12
13attr_val: attr_id SYM_EQ object_block -- could be a single or multiple attr
14
15attr_id: V_ATTRIBUTE_IDENTIFIER
16 | V_ATTRIBUTE_IDENTIFIER error
17
18--
19-- An object_block is any block enclosed in <> with optional leading type name
20--
21object_block: complex_object_block
22 | primitive_object_block
23
24complex_object_block: single_attr_object_block
25 | multiple_attr_object_block
26
27--
28-- --------------------------- multiple attr objects -------------------------------
29--
30multiple_attr_object_block: untyped_multiple_attr_object_block
31 | type_identifier untyped_multiple_attr_object_block
32
33untyped_multiple_attr_object_block: multiple_attr_object_block_head keyed_objects SYM_END_DBLOCK
34
35multiple_attr_object_block_head: SYM_START_DBLOCK
36
37keyed_objects: keyed_object
38 | keyed_objects keyed_object
39
40keyed_object: object_key SYM_EQ object_block
41
42object_key: '[' simple_value ']'
43
44--
45-- --------------------------- single attr objects -------------------------------
46--
47
48single_attr_object_block: untyped_single_attr_object_block
49 | type_identifier untyped_single_attr_object_block
50
51--
52-- An untyped_single_attr_object_block is any block of the form:
53-- <
54-- attr1 = <...>
55-- attr2 = <...>
56-- attrN = <...>
57-- >
58--
59untyped_single_attr_object_block: single_attr_object_complex_head SYM_END_DBLOCK
60 | single_attr_object_complex_head attr_vals SYM_END_DBLOCK
61 ;
62
63single_attr_object_complex_head: SYM_START_DBLOCK
64
65
66--
67-- ------------------------- primitive objects ---------------------
68--
69primitive_object_block: untyped_primitive_object_block
70 | type_identifier untyped_primitive_object_block
71
72untyped_primitive_object_block: SYM_START_DBLOCK primitive_object_value SYM_END_DBLOCK
73
74primitive_object_value: simple_value
75 | simple_list_value
76 | simple_interval_value
77 | term_code
78 | term_code_list_value
79
80simple_value: string_value
81 | integer_value
82 | real_value
83 | boolean_value
84 | character_value
85 | date_value
86 | time_value
87 | date_time_value
88 | duration_value
89 | uri_value
90
91simple_list_value: string_list_value
92 | integer_list_value
93 | real_list_value
94 | boolean_list_value
95 | character_list_value
96 | date_list_value
97 | time_list_value
98 | date_time_list_value
99 | duration_list_value
100
101simple_interval_value: integer_interval_value
102 | real_interval_value
103 | date_interval_value
104 | time_interval_value
105 | date_time_interval_value
106 | duration_interval_value
107
108---------------------- BASIC DATA VALUES -----------------------
109
110type_identifier: V_TYPE_IDENTIFIER
111 | V_GENERIC_TYPE_IDENTIFIER
112
113string_value: V_STRING
114
115string_list_value: V_STRING ',' V_STRING
116 | string_list_value ',' V_STRING
117 | V_STRING ',' SYM_LIST_CONTINUE
118
119integer_value: V_INTEGER {
120 | '+' V_INTEGER {
121 | '-' V_INTEGER {
122
123integer_list_value: integer_value ',' integer_value
124 | integer_list_value ',' integer_value
125 | integer_value ',' SYM_LIST_CONTINUE
126
127integer_interval_value: SYM_INTERVAL_DELIM integer_value SYM_ELLIPSIS integer_value SYM_INTERVAL_DELIM
128 | SYM_INTERVAL_DELIM SYM_GT integer_value SYM_ELLIPSIS integer_value SYM_INTERVAL_DELIM
129 | SYM_INTERVAL_DELIM integer_value SYM_ELLIPSIS SYM_LT integer_value SYM_INTERVAL_DELIM
130 | SYM_INTERVAL_DELIM SYM_GT integer_value SYM_ELLIPSIS SYM_LT integer_value SYM_INTERVAL_DELIM
131 | SYM_INTERVAL_DELIM SYM_LT integer_value SYM_INTERVAL_DELIM
132 | SYM_INTERVAL_DELIM SYM_LE integer_value SYM_INTERVAL_DELIM
133 | SYM_INTERVAL_DELIM SYM_GT integer_value SYM_INTERVAL_DELIM
134 | SYM_INTERVAL_DELIM SYM_GE integer_value SYM_INTERVAL_DELIM
135 | SYM_INTERVAL_DELIM integer_value SYM_INTERVAL_DELIM
136
137real_value: V_REAL
138 | '+' V_REAL
139 | '-' V_REAL
140
141real_list_value: real_value ',' real_value
142 | real_list_value ',' real_value
143 | real_value ',' SYM_LIST_CONTINUE
144
145real_interval_value: SYM_INTERVAL_DELIM real_value SYM_ELLIPSIS real_value SYM_INTERVAL_DELIM
146 | SYM_INTERVAL_DELIM SYM_GT real_value SYM_ELLIPSIS real_value SYM_INTERVAL_DELIM
147 | SYM_INTERVAL_DELIM real_value SYM_ELLIPSIS SYM_LT real_value SYM_INTERVAL_DELIM
148 | SYM_INTERVAL_DELIM SYM_GT real_value SYM_ELLIPSIS SYM_LT real_value SYM_INTERVAL_DELIM
149 | SYM_INTERVAL_DELIM SYM_LT real_value SYM_INTERVAL_DELIM
150 | SYM_INTERVAL_DELIM SYM_LE real_value SYM_INTERVAL_DELIM
151 | SYM_INTERVAL_DELIM SYM_GT real_value SYM_INTERVAL_DELIM
152 | SYM_INTERVAL_DELIM SYM_GE real_value SYM_INTERVAL_DELIM
153 | SYM_INTERVAL_DELIM real_value SYM_INTERVAL_DELIM
154
155boolean_value: SYM_TRUE
156 | SYM_FALSE
157
158boolean_list_value: boolean_value ',' boolean_value
159 | boolean_list_value ',' boolean_value
160 | boolean_value ',' SYM_LIST_CONTINUE
161
162character_value: V_CHARACTER
163
164character_list_value: character_value ',' character_value
165 | character_list_value ',' character_value
166 | character_value ',' SYM_LIST_CONTINUE
167
168date_value: V_ISO8601_EXTENDED_DATE -- in ISO8601 form yyyy-MM-dd
169
170date_list_value: date_value ',' date_value
171 | date_list_value ',' date_value
172 | date_value ',' SYM_LIST_CONTINUE
173
174date_interval_value: SYM_INTERVAL_DELIM date_value SYM_ELLIPSIS date_value SYM_INTERVAL_DELIM
175 | SYM_INTERVAL_DELIM SYM_GT date_value SYM_ELLIPSIS date_value SYM_INTERVAL_DELIM
176 | SYM_INTERVAL_DELIM date_value SYM_ELLIPSIS SYM_LT date_value SYM_INTERVAL_DELIM
177 | SYM_INTERVAL_DELIM SYM_GT date_value SYM_ELLIPSIS SYM_LT date_value SYM_INTERVAL_DELIM
178 | SYM_INTERVAL_DELIM SYM_LT date_value SYM_INTERVAL_DELIM
179 | SYM_INTERVAL_DELIM SYM_LE date_value SYM_INTERVAL_DELIM
180 | SYM_INTERVAL_DELIM SYM_GT date_value SYM_INTERVAL_DELIM
181 | SYM_INTERVAL_DELIM SYM_GE date_value SYM_INTERVAL_DELIM
182 | SYM_INTERVAL_DELIM date_value SYM_INTERVAL_DELIM
183
184time_value: V_ISO8601_EXTENDED_TIME
185
186time_list_value: time_value ',' time_value
187 | time_list_value ',' time_value
188 | time_value ',' SYM_LIST_CONTINUE
189
190time_interval_value: SYM_INTERVAL_DELIM time_value SYM_ELLIPSIS time_value SYM_INTERVAL_DELIM
191 | SYM_INTERVAL_DELIM SYM_GT time_value SYM_ELLIPSIS time_value SYM_INTERVAL_DELIM
192 | SYM_INTERVAL_DELIM time_value SYM_ELLIPSIS SYM_LT time_value SYM_INTERVAL_DELIM
193 | SYM_INTERVAL_DELIM SYM_GT time_value SYM_ELLIPSIS SYM_LT time_value SYM_INTERVAL_DELIM
194 | SYM_INTERVAL_DELIM SYM_LT time_value SYM_INTERVAL_DELIM
195 | SYM_INTERVAL_DELIM SYM_LE time_value SYM_INTERVAL_DELIM
196 | SYM_INTERVAL_DELIM SYM_GT time_value SYM_INTERVAL_DELIM
197 | SYM_INTERVAL_DELIM SYM_GE time_value SYM_INTERVAL_DELIM
198 | SYM_INTERVAL_DELIM time_value SYM_INTERVAL_DELIM
199
200date_time_value: V_ISO8601_EXTENDED_DATE_TIME
201
202date_time_list_value: date_time_value ',' date_time_value
203 | date_time_list_value ',' date_time_value
204 | date_time_value ',' SYM_LIST_CONTINUE
205
206date_time_interval_value: SYM_INTERVAL_DELIM date_time_value SYM_ELLIPSIS date_time_value SYM_INTERVAL_DELIM
207 | SYM_INTERVAL_DELIM SYM_GT date_time_value SYM_ELLIPSIS date_time_value SYM_INTERVAL_DELIM
208 | SYM_INTERVAL_DELIM date_time_value SYM_ELLIPSIS SYM_LT date_time_value SYM_INTERVAL_DELIM
209 | SYM_INTERVAL_DELIM SYM_GT date_time_value SYM_ELLIPSIS SYM_LT date_time_value SYM_INTERVAL_DELIM
210 | SYM_INTERVAL_DELIM SYM_LT date_time_value SYM_INTERVAL_DELIM
211 | SYM_INTERVAL_DELIM SYM_LE date_time_value SYM_INTERVAL_DELIM
212 | SYM_INTERVAL_DELIM SYM_GT date_time_value SYM_INTERVAL_DELIM
213 | SYM_INTERVAL_DELIM SYM_GE date_time_value SYM_INTERVAL_DELIM
214 | SYM_INTERVAL_DELIM date_time_value SYM_INTERVAL_DELIM
215
216duration_value: V_ISO8601_DURATION
217
218duration_list_value: duration_value ',' duration_value
219 | duration_list_value ',' duration_value
220 | duration_value ',' SYM_LIST_CONTINUE
221
222duration_interval_value: SYM_INTERVAL_DELIM duration_value SYM_ELLIPSIS duration_value SYM_INTERVAL_DELIM
223 | SYM_INTERVAL_DELIM SYM_GT duration_value SYM_ELLIPSIS duration_value SYM_INTERVAL_DELIM
224 | SYM_INTERVAL_DELIM duration_value SYM_ELLIPSIS SYM_LT duration_value SYM_INTERVAL_DELIM
225 | SYM_INTERVAL_DELIM SYM_GT duration_value SYM_ELLIPSIS SYM_LT duration_value SYM_INTERVAL_DELIM
226 | SYM_INTERVAL_DELIM SYM_LT duration_value SYM_INTERVAL_DELIM
227 | SYM_INTERVAL_DELIM SYM_LE duration_value SYM_INTERVAL_DELIM
228 | SYM_INTERVAL_DELIM SYM_GT duration_value SYM_INTERVAL_DELIM
229 | SYM_INTERVAL_DELIM SYM_GE duration_value SYM_INTERVAL_DELIM
230 | SYM_INTERVAL_DELIM duration_value SYM_INTERVAL_DELIM
231
232term_code: V_QUALIFIED_TERM_CODE_REF
233 | ERR_V_QUALIFIED_TERM_CODE_REF
234
235term_code_list_value: term_code ',' term_code
236 | term_code_list_value ',' term_code
237 | term_code ',' SYM_LIST_CONTINUE
238
239uri_value: V_URI
240
Note: See TracBrowser for help on using the repository browser.