openehr 1.1.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +3 -0
- data/README.rdoc +1 -1
- data/VERSION +1 -1
- data/lib/openehr.rb +0 -1
- data/lib/openehr/parser/adl_grammar.tt +3094 -10
- data/lib/openehr/parser/{adl.rb → adl_helper.rb} +41 -2
- data/lib/openehr/parser/adl_parser.rb +1 -1
- data/openehr.gemspec +4 -8
- data/spec/lib/openehr/parser/adl14/openEHR-EHR-OBSERVATION.apgar.v1.adl +1216 -545
- data/spec/lib/openehr/parser/openehr_apgar_spec.rb +16 -0
- metadata +41 -45
- data/lib/openehr/parser/cadl_grammar.tt +0 -1527
- data/lib/openehr/parser/cadl_node.rb +0 -44
- data/lib/openehr/parser/dadl.rb +0 -13
- data/lib/openehr/parser/dadl_grammar.tt +0 -358
- data/lib/openehr/parser/shared_token_grammar.tt +0 -1229
@@ -1,44 +0,0 @@
|
|
1
|
-
module OpenEHR
|
2
|
-
module Parser
|
3
|
-
module CADL
|
4
|
-
class ArchetypeNode
|
5
|
-
attr_reader :parent
|
6
|
-
attr_accessor :path, :id
|
7
|
-
|
8
|
-
def initialize(parent = nil)
|
9
|
-
@parent = parent
|
10
|
-
@path = '/' if parent.nil?
|
11
|
-
end
|
12
|
-
|
13
|
-
def root?
|
14
|
-
return parent.nil?
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
class CDvQuantityItems < Treetop::Runtime::SyntaxNode
|
19
|
-
def value(node)
|
20
|
-
property = prop.value unless prop.empty?
|
21
|
-
list = ql.value(node) unless ql.empty?
|
22
|
-
av = aqv.value unless aqv.empty?
|
23
|
-
OpenEHR::AM::OpenEHRProfile::DataTypes::Quantity::CDvQuantity.new(
|
24
|
-
:path => node.path, :rm_type_name => 'DvQuantity',
|
25
|
-
:occurrences => OpenEHR::AssumedLibraryTypes::Interval.new(
|
26
|
-
:upper => 1, :lower => 1),
|
27
|
-
:property => property, :list => list, :assumed_value => av)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
class AssumedValueItems < Treetop::Runtime::SyntaxNode
|
32
|
-
def value
|
33
|
-
magnitude, precision = nil
|
34
|
-
magnitude = mag.val.value unless mag.empty?
|
35
|
-
precision = prec.val.value unless prec.empty?
|
36
|
-
OpenEHR::RM::DataTypes::Quantity::DvQuantity.new(
|
37
|
-
:units => units.value,
|
38
|
-
:magnitude => magnitude,
|
39
|
-
:precision => precision)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
data/lib/openehr/parser/dadl.rb
DELETED
@@ -1,358 +0,0 @@
|
|
1
|
-
require 'shared_token_grammar'
|
2
|
-
require 'dadl'
|
3
|
-
|
4
|
-
module OpenEHR
|
5
|
-
module Parser
|
6
|
-
grammar DADLGrammar
|
7
|
-
|
8
|
-
include SharedToken
|
9
|
-
|
10
|
-
rule V_DADL_TEXT
|
11
|
-
attr_vals space {
|
12
|
-
def value
|
13
|
-
attr_vals.value
|
14
|
-
end
|
15
|
-
}
|
16
|
-
/ complex_object_block space {
|
17
|
-
def value
|
18
|
-
complex_object_block.value
|
19
|
-
end
|
20
|
-
}
|
21
|
-
end
|
22
|
-
|
23
|
-
rule attr_vals
|
24
|
-
first:attr_val second:(';'? space attr_val space)* {
|
25
|
-
def value
|
26
|
-
attrs.inject({ }) {|val, a| val.update a.value}
|
27
|
-
end
|
28
|
-
|
29
|
-
def attrs
|
30
|
-
[first] + second.elements.map {|e| e.attr_val}
|
31
|
-
end
|
32
|
-
}
|
33
|
-
end
|
34
|
-
|
35
|
-
rule attr_val
|
36
|
-
attr_id SYM_EQ object_block {
|
37
|
-
def value
|
38
|
-
{attr_id.value => object_block.value}
|
39
|
-
end
|
40
|
-
}
|
41
|
-
end
|
42
|
-
|
43
|
-
rule attr_id
|
44
|
-
id:V_ATTRIBUTE_IDENTIFIER white_space {
|
45
|
-
def value
|
46
|
-
id.value
|
47
|
-
end
|
48
|
-
}
|
49
|
-
end
|
50
|
-
|
51
|
-
rule object_block
|
52
|
-
complex_object_block space {
|
53
|
-
def value
|
54
|
-
complex_object_block.value
|
55
|
-
end
|
56
|
-
}
|
57
|
-
/ primitive_object_block space {
|
58
|
-
def value
|
59
|
-
primitive_object_block.value
|
60
|
-
end
|
61
|
-
}
|
62
|
-
end
|
63
|
-
|
64
|
-
rule complex_object_block
|
65
|
-
single_attr_object_block '' {
|
66
|
-
def value
|
67
|
-
single_attr_object_block.value
|
68
|
-
end
|
69
|
-
}
|
70
|
-
/ multiple_attr_object_block '' {
|
71
|
-
def value
|
72
|
-
multiple_attr_object_block.value
|
73
|
-
end
|
74
|
-
}
|
75
|
-
end
|
76
|
-
|
77
|
-
rule multiple_attr_object_block
|
78
|
-
type_identifier? untyped_multiple_attr_object_block {
|
79
|
-
def value
|
80
|
-
untyped_multiple_attr_object_block.value
|
81
|
-
end
|
82
|
-
}
|
83
|
-
end
|
84
|
-
|
85
|
-
rule untyped_multiple_attr_object_block
|
86
|
-
multiple_attr_object_block_head keyed_objects SYM_END_DBLOCK {
|
87
|
-
def value
|
88
|
-
keyed_objects.value
|
89
|
-
end
|
90
|
-
}
|
91
|
-
end
|
92
|
-
|
93
|
-
rule multiple_attr_object_block_head
|
94
|
-
SYM_START_DBLOCK
|
95
|
-
end
|
96
|
-
|
97
|
-
rule keyed_objects
|
98
|
-
keyed_object+ {
|
99
|
-
def value
|
100
|
-
elements.inject({ }) {|val, e| val.update e.value}
|
101
|
-
end
|
102
|
-
}
|
103
|
-
end
|
104
|
-
|
105
|
-
rule keyed_object
|
106
|
-
object_key SYM_EQ object_block {
|
107
|
-
def value
|
108
|
-
{object_key.value => object_block.value}
|
109
|
-
end
|
110
|
-
}
|
111
|
-
end
|
112
|
-
|
113
|
-
rule object_key
|
114
|
-
'[' simple_value ']' white_space {
|
115
|
-
def value
|
116
|
-
simple_value.value
|
117
|
-
end
|
118
|
-
}
|
119
|
-
end
|
120
|
-
|
121
|
-
rule single_attr_object_block
|
122
|
-
type_identifier? untyped_single_attr_object_block {
|
123
|
-
def value
|
124
|
-
untyped_single_attr_object_block.value
|
125
|
-
end
|
126
|
-
}
|
127
|
-
end
|
128
|
-
|
129
|
-
rule untyped_single_attr_object_block
|
130
|
-
single_attr_object_complex_head attr_vals SYM_END_DBLOCK {
|
131
|
-
def value
|
132
|
-
elements[1].value
|
133
|
-
end
|
134
|
-
}
|
135
|
-
/ single_attr_object_complex_head SYM_END_DBLOCK {
|
136
|
-
def value
|
137
|
-
nil
|
138
|
-
end
|
139
|
-
}
|
140
|
-
end
|
141
|
-
|
142
|
-
rule single_attr_object_complex_head
|
143
|
-
SYM_START_DBLOCK
|
144
|
-
end
|
145
|
-
|
146
|
-
rule primitive_object_block
|
147
|
-
type_identifier? untyped_primitive_object_block {
|
148
|
-
def value
|
149
|
-
untyped_primitive_object_block.value
|
150
|
-
end
|
151
|
-
}
|
152
|
-
end
|
153
|
-
|
154
|
-
rule untyped_primitive_object_block
|
155
|
-
SYM_START_DBLOCK primitive_object_value SYM_END_DBLOCK {
|
156
|
-
def value
|
157
|
-
primitive_object_value.value
|
158
|
-
end
|
159
|
-
}
|
160
|
-
end
|
161
|
-
|
162
|
-
rule primitive_object_value
|
163
|
-
term_code_list_value '' {
|
164
|
-
def value
|
165
|
-
term_code_list_value.value
|
166
|
-
end
|
167
|
-
}
|
168
|
-
/ term_code '' {
|
169
|
-
def value
|
170
|
-
term_code.value
|
171
|
-
end
|
172
|
-
}
|
173
|
-
/ simple_list_value '' {
|
174
|
-
def value
|
175
|
-
simple_list_value.value
|
176
|
-
end
|
177
|
-
}
|
178
|
-
/ simple_interval_value '' {
|
179
|
-
def value
|
180
|
-
simple_interval_value.value
|
181
|
-
end
|
182
|
-
}
|
183
|
-
/ simple_value '' {
|
184
|
-
def value
|
185
|
-
simple_value.value
|
186
|
-
end
|
187
|
-
}
|
188
|
-
end
|
189
|
-
|
190
|
-
rule simple_value
|
191
|
-
integer_value '' {
|
192
|
-
def value
|
193
|
-
integer_value.value
|
194
|
-
end
|
195
|
-
}
|
196
|
-
/ real_value '' {
|
197
|
-
def value
|
198
|
-
real_value.value
|
199
|
-
end
|
200
|
-
}
|
201
|
-
/ boolean_value '' {
|
202
|
-
def value
|
203
|
-
boolean_value.value
|
204
|
-
end
|
205
|
-
}
|
206
|
-
/ uri_value '' {
|
207
|
-
def value
|
208
|
-
uri_value.value
|
209
|
-
end
|
210
|
-
}
|
211
|
-
/ date_value '' {
|
212
|
-
def value
|
213
|
-
date_value.value
|
214
|
-
end
|
215
|
-
}
|
216
|
-
/ time_value '' {
|
217
|
-
def value
|
218
|
-
time_value.value
|
219
|
-
end
|
220
|
-
}
|
221
|
-
/ date_time_value '' {
|
222
|
-
def value
|
223
|
-
date_time_value.value
|
224
|
-
end
|
225
|
-
}
|
226
|
-
/ duration_value '' {
|
227
|
-
def value
|
228
|
-
duration_value.value
|
229
|
-
end
|
230
|
-
}
|
231
|
-
/ string_value '' {
|
232
|
-
def value
|
233
|
-
string_value.value
|
234
|
-
end
|
235
|
-
}
|
236
|
-
/ character_value '' {
|
237
|
-
def value
|
238
|
-
character_value.value
|
239
|
-
end
|
240
|
-
}
|
241
|
-
end
|
242
|
-
|
243
|
-
rule simple_list_value
|
244
|
-
integer_list_value '' {
|
245
|
-
def value
|
246
|
-
integer_list_value.value
|
247
|
-
end
|
248
|
-
}
|
249
|
-
/ real_list_value '' {
|
250
|
-
def value
|
251
|
-
real_list_value.value
|
252
|
-
end
|
253
|
-
}
|
254
|
-
/ boolean_list_value '' {
|
255
|
-
def value
|
256
|
-
boolean_list_value.value
|
257
|
-
end
|
258
|
-
}
|
259
|
-
/ character_list_value '' {
|
260
|
-
def value
|
261
|
-
character_list_value.value
|
262
|
-
end
|
263
|
-
}
|
264
|
-
/ date_list_value '' {
|
265
|
-
def value
|
266
|
-
date_list_value.value
|
267
|
-
end
|
268
|
-
}
|
269
|
-
/ time_list_value '' {
|
270
|
-
def value
|
271
|
-
time_list_value.value
|
272
|
-
end
|
273
|
-
}
|
274
|
-
/ date_time_list_value '' {
|
275
|
-
def value
|
276
|
-
date_time_list_value.value
|
277
|
-
end
|
278
|
-
}
|
279
|
-
/ duration_list_value '' {
|
280
|
-
def value
|
281
|
-
duration_list_value.value
|
282
|
-
end
|
283
|
-
}
|
284
|
-
/ string_list_value '' {
|
285
|
-
def value
|
286
|
-
string_list_value.value
|
287
|
-
end
|
288
|
-
}
|
289
|
-
end
|
290
|
-
|
291
|
-
rule simple_interval_value
|
292
|
-
integer_interval_value '' {
|
293
|
-
def value
|
294
|
-
integer_interval_value.value
|
295
|
-
end
|
296
|
-
}
|
297
|
-
/ real_interval_value '' {
|
298
|
-
def value
|
299
|
-
real_interval_value.value
|
300
|
-
end
|
301
|
-
}
|
302
|
-
/ date_interval_value '' {
|
303
|
-
def value
|
304
|
-
date_interval_value.value
|
305
|
-
end
|
306
|
-
}
|
307
|
-
/ time_interval_value '' {
|
308
|
-
def value
|
309
|
-
time_interval_value.value
|
310
|
-
end
|
311
|
-
}
|
312
|
-
/ date_time_interval_value '' {
|
313
|
-
def value
|
314
|
-
date_time_interval_value.value
|
315
|
-
end
|
316
|
-
}
|
317
|
-
/ duration_interval_value '' {
|
318
|
-
def value
|
319
|
-
duration_interval_value.value
|
320
|
-
end
|
321
|
-
}
|
322
|
-
end
|
323
|
-
|
324
|
-
rule term_code
|
325
|
-
vtref:V_QUALIFIED_TERM_CODE_REF '' {
|
326
|
-
def value
|
327
|
-
vtref.value
|
328
|
-
end
|
329
|
-
}
|
330
|
-
end
|
331
|
-
|
332
|
-
rule term_code_list_value
|
333
|
-
first:term_code more:(',' term_code)+ {
|
334
|
-
def value
|
335
|
-
term_codes.map {|t| t.value}
|
336
|
-
end
|
337
|
-
|
338
|
-
def term_codes
|
339
|
-
[first] + more.elements.map {|e| e.term_code}
|
340
|
-
end
|
341
|
-
}
|
342
|
-
/ term_code ',' SYM_LIST_CONTINUE {
|
343
|
-
def value
|
344
|
-
[term_code.value]
|
345
|
-
end
|
346
|
-
}
|
347
|
-
end
|
348
|
-
|
349
|
-
rule uri_value
|
350
|
-
uri:V_URI '' {
|
351
|
-
def value
|
352
|
-
uri.value
|
353
|
-
end
|
354
|
-
}
|
355
|
-
end
|
356
|
-
end
|
357
|
-
end
|
358
|
-
end
|
@@ -1,1229 +0,0 @@
|
|
1
|
-
require 'openehr/assumed_library_types'
|
2
|
-
require 'openehr/rm/data_types/quantity'
|
3
|
-
|
4
|
-
module OpenEHR
|
5
|
-
module Parser
|
6
|
-
grammar SharedToken
|
7
|
-
|
8
|
-
rule any_identifier
|
9
|
-
type_identifier '' {
|
10
|
-
def value
|
11
|
-
type_identifier.value
|
12
|
-
end
|
13
|
-
}
|
14
|
-
/ V_ATTRIBUTE_IDENTIFIER '' {
|
15
|
-
def value
|
16
|
-
V_ATTRIBUTE_IDENTIFIER.value
|
17
|
-
end
|
18
|
-
}
|
19
|
-
end
|
20
|
-
|
21
|
-
rule type_identifier
|
22
|
-
'(' id:V_GENERIC_TYPE_IDENTIFIER ')' white_space {
|
23
|
-
def value
|
24
|
-
id.value
|
25
|
-
end
|
26
|
-
}
|
27
|
-
/ id:V_GENERIC_TYPE_IDENTIFIER white_space {
|
28
|
-
def value
|
29
|
-
id.value
|
30
|
-
end
|
31
|
-
}
|
32
|
-
/ '(' id:V_TYPE_IDENTIFIER ')' white_space {
|
33
|
-
def value
|
34
|
-
id.value
|
35
|
-
end
|
36
|
-
}
|
37
|
-
/ id:V_TYPE_IDENTIFIER white_space {
|
38
|
-
def value
|
39
|
-
id.value
|
40
|
-
end
|
41
|
-
}
|
42
|
-
end
|
43
|
-
|
44
|
-
rule boolean_value
|
45
|
-
SYM_TRUE {
|
46
|
-
def value
|
47
|
-
true
|
48
|
-
end
|
49
|
-
}
|
50
|
-
/ SYM_FALSE {
|
51
|
-
def value
|
52
|
-
false
|
53
|
-
end
|
54
|
-
}
|
55
|
-
end
|
56
|
-
|
57
|
-
rule boolean_list_value
|
58
|
-
boolean_value (',' white_space more_bool:(boolean_value ''))+ {
|
59
|
-
def value
|
60
|
-
booelans.map {|b| b.value}
|
61
|
-
end
|
62
|
-
|
63
|
-
def booleans
|
64
|
-
[boolean_value] + more_bool.elements.map { |b| b.boolean_value }
|
65
|
-
end
|
66
|
-
}
|
67
|
-
/ boolean_value white_space SYM_LIST_CONTINUE {
|
68
|
-
def value
|
69
|
-
[boolean_value.value]
|
70
|
-
end
|
71
|
-
}
|
72
|
-
end
|
73
|
-
|
74
|
-
rule integer_value
|
75
|
-
[+-]? V_INTEGER '' {
|
76
|
-
def value
|
77
|
-
text_value.to_i
|
78
|
-
end
|
79
|
-
}
|
80
|
-
end
|
81
|
-
|
82
|
-
rule integer_list_value
|
83
|
-
integer_value more_i:(',' white_space integer_value)+ {
|
84
|
-
def value
|
85
|
-
integers.map { |i| i.value }
|
86
|
-
end
|
87
|
-
|
88
|
-
def integers
|
89
|
-
[integer_value] + more_i.elements.map { |i| i.integer_value }
|
90
|
-
end
|
91
|
-
}
|
92
|
-
/ integer_value ',' white_space SYM_LIST_CONTINUE {
|
93
|
-
def value
|
94
|
-
[integer_value.value]
|
95
|
-
end
|
96
|
-
}
|
97
|
-
end
|
98
|
-
|
99
|
-
rule integer_interval_value
|
100
|
-
SYM_INTERVAL_DELIM SYM_GT lo:integer_value SYM_ELLIPSIS SYM_LT up:integer_value SYM_INTERVAL_DELIM {
|
101
|
-
def value
|
102
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(:lower => lo.value,
|
103
|
-
:upper => up.value,
|
104
|
-
:lower_included => false,
|
105
|
-
:upper_included => false)
|
106
|
-
end
|
107
|
-
}
|
108
|
-
/ SYM_INTERVAL_DELIM SYM_GT lo:integer_value SYM_ELLIPSIS up:integer_value SYM_INTERVAL_DELIM {
|
109
|
-
def value
|
110
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(:lower => lo.value,
|
111
|
-
:upper => up.value,
|
112
|
-
:lower_included => false,
|
113
|
-
:upper_included => true)
|
114
|
-
end
|
115
|
-
}
|
116
|
-
/ SYM_INTERVAL_DELIM lo:integer_value SYM_ELLIPSIS SYM_LT up:integer_value SYM_INTERVAL_DELIM {
|
117
|
-
def value
|
118
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(:lower => lo.value,
|
119
|
-
:upper => up.value,
|
120
|
-
:lower_included => true,
|
121
|
-
:upper_included => false)
|
122
|
-
end
|
123
|
-
}
|
124
|
-
/ SYM_INTERVAL_DELIM lo:integer_value SYM_ELLIPSIS up:integer_value SYM_INTERVAL_DELIM {
|
125
|
-
def value
|
126
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(:lower => lo.value,
|
127
|
-
:upper => up.value,
|
128
|
-
:lower_included => true,
|
129
|
-
:upper_included => true)
|
130
|
-
end
|
131
|
-
}
|
132
|
-
/ SYM_INTERVAL_DELIM SYM_LT up:integer_value SYM_INTERVAL_DELIM {
|
133
|
-
def value
|
134
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
135
|
-
:upper => up.value,
|
136
|
-
:lower_unbounded => true,
|
137
|
-
:upper_included => false)
|
138
|
-
end
|
139
|
-
}
|
140
|
-
/ SYM_INTERVAL_DELIM SYM_LE up:integer_value SYM_INTERVAL_DELIM {
|
141
|
-
def value
|
142
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
143
|
-
:upper => up.value,
|
144
|
-
:lower_unbounded => true,
|
145
|
-
:upper_included => true)
|
146
|
-
end
|
147
|
-
}
|
148
|
-
/ SYM_INTERVAL_DELIM SYM_GT lo:integer_value SYM_INTERVAL_DELIM {
|
149
|
-
def value
|
150
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
151
|
-
:lower => lo.value,
|
152
|
-
:uppper_unbounded => true,
|
153
|
-
:lower_included => false)
|
154
|
-
end
|
155
|
-
}
|
156
|
-
/ SYM_INTERVAL_DELIM SYM_GE iv:integer_value SYM_INTERVAL_DELIM {
|
157
|
-
def value
|
158
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
159
|
-
:lower => iv.value,
|
160
|
-
:upper_unbounded => true,
|
161
|
-
:lower_included => true)
|
162
|
-
end
|
163
|
-
}
|
164
|
-
/ SYM_INTERVAL_DELIM val:integer_value SYM_INTERVAL_DELIM {
|
165
|
-
def value
|
166
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
167
|
-
:lower => val.value,
|
168
|
-
:upper => val.value,
|
169
|
-
:upper_included => true,
|
170
|
-
:lower_included => true)
|
171
|
-
end
|
172
|
-
}
|
173
|
-
end
|
174
|
-
|
175
|
-
rule real_value
|
176
|
-
('+' / '-')? V_REAL {
|
177
|
-
def value
|
178
|
-
text_value.to_f
|
179
|
-
end
|
180
|
-
}
|
181
|
-
end
|
182
|
-
|
183
|
-
rule real_list_value
|
184
|
-
real_value more_i:(',' white_space real_value)* {
|
185
|
-
def value
|
186
|
-
reals.map { |i| i.value }
|
187
|
-
end
|
188
|
-
|
189
|
-
def reals
|
190
|
-
[real_value] + more_i.elements.map { |i| i.real_value }
|
191
|
-
end
|
192
|
-
}
|
193
|
-
/ real_value ',' white_space SYM_LIST_CONTINUE {
|
194
|
-
def value
|
195
|
-
[real_value.value]
|
196
|
-
end
|
197
|
-
}
|
198
|
-
end
|
199
|
-
|
200
|
-
rule real_interval_value
|
201
|
-
SYM_INTERVAL_DELIM SYM_GT lo:real_value SYM_ELLIPSIS SYM_LT up:real_value SYM_INTERVAL_DELIM {
|
202
|
-
def value
|
203
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(:lower => lo.value,
|
204
|
-
:upper => up.value,
|
205
|
-
:lower_included => false,
|
206
|
-
:upper_included => false)
|
207
|
-
end
|
208
|
-
}
|
209
|
-
/ SYM_INTERVAL_DELIM SYM_GT lo:real_value SYM_ELLIPSIS up:real_value SYM_INTERVAL_DELIM {
|
210
|
-
def value
|
211
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(:lower => lo.value,
|
212
|
-
:upper => up.value,
|
213
|
-
:lower_included => false,
|
214
|
-
:upper_included => true)
|
215
|
-
end
|
216
|
-
}
|
217
|
-
/ SYM_INTERVAL_DELIM lo:real_value SYM_ELLIPSIS SYM_LT up:real_value SYM_INTERVAL_DELIM {
|
218
|
-
def value
|
219
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(:lower => lo.value,
|
220
|
-
:upper => up.value,
|
221
|
-
:lower_included => true,
|
222
|
-
:upper_included => false)
|
223
|
-
end
|
224
|
-
}
|
225
|
-
/ SYM_INTERVAL_DELIM lo:real_value SYM_ELLIPSIS up:real_value SYM_INTERVAL_DELIM {
|
226
|
-
def value
|
227
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(:lower => lo.value,
|
228
|
-
:upper => up.value,
|
229
|
-
:lower_included => true,
|
230
|
-
:upper_included => true)
|
231
|
-
end
|
232
|
-
}
|
233
|
-
/ SYM_INTERVAL_DELIM SYM_LT up:real_value SYM_INTERVAL_DELIM {
|
234
|
-
def value
|
235
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
236
|
-
:upper => up.value,
|
237
|
-
:lower_unbounded => true,
|
238
|
-
:upper_included => false)
|
239
|
-
end
|
240
|
-
}
|
241
|
-
/ SYM_INTERVAL_DELIM SYM_LE up:real_value SYM_INTERVAL_DELIM {
|
242
|
-
def value
|
243
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
244
|
-
:upper => up.value,
|
245
|
-
:lower_unbounded => true,
|
246
|
-
:upper_included => true)
|
247
|
-
end
|
248
|
-
}
|
249
|
-
/ SYM_INTERVAL_DELIM SYM_GT lo:real_value SYM_INTERVAL_DELIM {
|
250
|
-
def value
|
251
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
252
|
-
:lower => lo.value,
|
253
|
-
:uppper_unbounded => true,
|
254
|
-
:lower_included => false)
|
255
|
-
end
|
256
|
-
}
|
257
|
-
/ SYM_INTERVAL_DELIM SYM_GE lo:real_value SYM_INTERVAL_DELIM {
|
258
|
-
def value
|
259
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
260
|
-
:lower => lo.value,
|
261
|
-
:upper_unbounded => true,
|
262
|
-
:lower_included => true)
|
263
|
-
end
|
264
|
-
}
|
265
|
-
/ SYM_INTERVAL_DELIM val:real_value SYM_INTERVAL_DELIM {
|
266
|
-
def value
|
267
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
268
|
-
:lower => val.value,
|
269
|
-
:upper => val.value,
|
270
|
-
:upper_included => true,
|
271
|
-
:lower_included => true)
|
272
|
-
end
|
273
|
-
}
|
274
|
-
end
|
275
|
-
|
276
|
-
rule character_value
|
277
|
-
V_CHAR '' {
|
278
|
-
def value
|
279
|
-
text_value
|
280
|
-
end
|
281
|
-
}
|
282
|
-
end
|
283
|
-
|
284
|
-
rule character_list_value
|
285
|
-
character_value (',' white_space more_chars:(character_value))+ {
|
286
|
-
def value
|
287
|
-
characters.map {|c| c.value }
|
288
|
-
end
|
289
|
-
|
290
|
-
def characters
|
291
|
-
[character_value] + more_chars.elements.map {|c| c.character_value}
|
292
|
-
end
|
293
|
-
}
|
294
|
-
/ character_value ',' SYM_LIST_CONTINUE {
|
295
|
-
def value
|
296
|
-
[character_value.value]
|
297
|
-
end
|
298
|
-
}
|
299
|
-
end
|
300
|
-
|
301
|
-
rule string_value
|
302
|
-
str:V_STRING '' {
|
303
|
-
def value
|
304
|
-
str.value
|
305
|
-
end
|
306
|
-
}
|
307
|
-
end
|
308
|
-
|
309
|
-
rule string_list_value
|
310
|
-
first:string_value second:(',' white_space string_value)+ {
|
311
|
-
def value
|
312
|
-
strings.map {|s| s.value}
|
313
|
-
end
|
314
|
-
|
315
|
-
def strings
|
316
|
-
[first] + second.elements.map {|s| s.string_value}
|
317
|
-
end
|
318
|
-
}
|
319
|
-
/ str:V_STRING ',' white_space SYM_LIST_CONTINUE {
|
320
|
-
def value
|
321
|
-
[str.value]
|
322
|
-
end
|
323
|
-
}
|
324
|
-
end
|
325
|
-
|
326
|
-
rule date_value
|
327
|
-
ed:V_ISO8601_EXTENDED_DATE '' {
|
328
|
-
def value
|
329
|
-
::OpenEHR::RM::DataTypes::Quantity::DateTime::DvDate.new(
|
330
|
-
:value => ed.text_value)
|
331
|
-
end
|
332
|
-
}
|
333
|
-
end
|
334
|
-
|
335
|
-
rule date_list_value
|
336
|
-
date_value more_dates:(',' white_space date_value)+ {
|
337
|
-
def value
|
338
|
-
dates.map {|d| d.value}
|
339
|
-
end
|
340
|
-
|
341
|
-
def dates
|
342
|
-
[date_value] + more_dates.elements.map {|d| d.date_value}
|
343
|
-
end
|
344
|
-
}
|
345
|
-
/ date_value ',' white_space SYM_LIST_CONTINUE {
|
346
|
-
def value
|
347
|
-
[date_value.value]
|
348
|
-
end
|
349
|
-
}
|
350
|
-
end
|
351
|
-
|
352
|
-
rule date_interval_value
|
353
|
-
SYM_INTERVAL_DELIM SYM_GT lo:date_value SYM_ELLIPSIS SYM_LT up:date_value SYM_INTERVAL_DELIM {
|
354
|
-
def value
|
355
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(:lower => lo.value,
|
356
|
-
:upper => up.value,
|
357
|
-
:lower_included => false,
|
358
|
-
:upper_included => false)
|
359
|
-
end
|
360
|
-
}
|
361
|
-
/ SYM_INTERVAL_DELIM SYM_GT lo:date_value SYM_ELLIPSIS up:date_value SYM_INTERVAL_DELIM {
|
362
|
-
def value
|
363
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(:lower => lo.value,
|
364
|
-
:upper => up.value,
|
365
|
-
:lower_included => false,
|
366
|
-
:upper_included => true)
|
367
|
-
end
|
368
|
-
}
|
369
|
-
/ SYM_INTERVAL_DELIM lo:date_value SYM_ELLIPSIS SYM_LT up:date_value SYM_INTERVAL_DELIM {
|
370
|
-
def value
|
371
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(:lower => lo.value,
|
372
|
-
:upper => up.value,
|
373
|
-
:lower_included => true,
|
374
|
-
:upper_included => false)
|
375
|
-
end
|
376
|
-
}
|
377
|
-
/ SYM_INTERVAL_DELIM lo:date_value SYM_ELLIPSIS up:date_value SYM_INTERVAL_DELIM {
|
378
|
-
def value
|
379
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(:lower => lo.value,
|
380
|
-
:upper => up.value,
|
381
|
-
:lower_included => true,
|
382
|
-
:upper_included => true)
|
383
|
-
end
|
384
|
-
}
|
385
|
-
/ SYM_INTERVAL_DELIM SYM_LT up:date_value SYM_INTERVAL_DELIM {
|
386
|
-
def value
|
387
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
388
|
-
:upper => up.value,
|
389
|
-
:lower_unbounded => true,
|
390
|
-
:upper_included => false)
|
391
|
-
end
|
392
|
-
}
|
393
|
-
/ SYM_INTERVAL_DELIM SYM_LE up:date_value SYM_INTERVAL_DELIM {
|
394
|
-
def value
|
395
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
396
|
-
:upper => up.value,
|
397
|
-
:lower_unbounded => true,
|
398
|
-
:upper_included => true)
|
399
|
-
end
|
400
|
-
}
|
401
|
-
/ SYM_INTERVAL_DELIM SYM_GT lo:date_value SYM_INTERVAL_DELIM {
|
402
|
-
def value
|
403
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
404
|
-
:lower => lo.value,
|
405
|
-
:uppper_unbounded => true,
|
406
|
-
:lower_included => false)
|
407
|
-
end
|
408
|
-
}
|
409
|
-
/ SYM_INTERVAL_DELIM SYM_GE val:date_value SYM_INTERVAL_DELIM {
|
410
|
-
def value
|
411
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
412
|
-
:lower => val.value,
|
413
|
-
:upper_unbounded => true,
|
414
|
-
:lower_included => true)
|
415
|
-
end
|
416
|
-
}
|
417
|
-
/ SYM_INTERVAL_DELIM val:date_value SYM_INTERVAL_DELIM {
|
418
|
-
def value
|
419
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
420
|
-
:lower => val.value,
|
421
|
-
:upper => val.value,
|
422
|
-
:upper_included => true,
|
423
|
-
:lower_included => true)
|
424
|
-
end
|
425
|
-
}
|
426
|
-
end
|
427
|
-
|
428
|
-
rule time_value
|
429
|
-
ti:V_ISO8601_EXTENDED_TIME '' {
|
430
|
-
def value
|
431
|
-
::OpenEHR::RM::DataTypes::Quantity::DateTime::DvTime.new(
|
432
|
-
:value => ti.text_value)
|
433
|
-
end
|
434
|
-
}
|
435
|
-
end
|
436
|
-
|
437
|
-
rule time_list_value
|
438
|
-
time_value more_t:(',' white_space time_value)+ {
|
439
|
-
def value
|
440
|
-
times.map {|t| t.value}
|
441
|
-
end
|
442
|
-
|
443
|
-
def times
|
444
|
-
[time_value] + more_t.elements.map {|t| t.time_value}
|
445
|
-
end
|
446
|
-
}
|
447
|
-
/ time_value ',' white_space SYM_LIST_CONTINUE {
|
448
|
-
def value
|
449
|
-
[time_value.value]
|
450
|
-
end
|
451
|
-
}
|
452
|
-
end
|
453
|
-
|
454
|
-
rule time_interval_value
|
455
|
-
SYM_INTERVAL_DELIM SYM_GT lo:time_value SYM_ELLIPSIS SYM_LT up:time_value SYM_INTERVAL_DELIM {
|
456
|
-
def value
|
457
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(:lower => lo.value,
|
458
|
-
:upper => up.value,
|
459
|
-
:lower_included => false,
|
460
|
-
:upper_included => false)
|
461
|
-
end
|
462
|
-
}
|
463
|
-
/ SYM_INTERVAL_DELIM SYM_GT lo:time_value SYM_ELLIPSIS up:time_value SYM_INTERVAL_DELIM {
|
464
|
-
def value
|
465
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(:lower => lo.value,
|
466
|
-
:upper => up.value,
|
467
|
-
:lower_included => false,
|
468
|
-
:upper_included => true)
|
469
|
-
end
|
470
|
-
}
|
471
|
-
/ SYM_INTERVAL_DELIM lo:time_value SYM_ELLIPSIS SYM_LT up:time_value SYM_INTERVAL_DELIM {
|
472
|
-
def value
|
473
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(:lower => lo.value,
|
474
|
-
:upper => up.value,
|
475
|
-
:lower_included => true,
|
476
|
-
:upper_included => false)
|
477
|
-
end
|
478
|
-
}
|
479
|
-
/ SYM_INTERVAL_DELIM lo:time_value SYM_ELLIPSIS up:time_value SYM_INTERVAL_DELIM {
|
480
|
-
def value
|
481
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(:lower => lo.value,
|
482
|
-
:upper => up.value,
|
483
|
-
:lower_included => true,
|
484
|
-
:upper_included => true)
|
485
|
-
end
|
486
|
-
}
|
487
|
-
/ SYM_INTERVAL_DELIM SYM_LT up:time_value SYM_INTERVAL_DELIM {
|
488
|
-
def value
|
489
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
490
|
-
:upper => up.value,
|
491
|
-
:lower_unbounded => true,
|
492
|
-
:upper_included => false)
|
493
|
-
end
|
494
|
-
}
|
495
|
-
/ SYM_INTERVAL_DELIM SYM_LE up:time_value SYM_INTERVAL_DELIM {
|
496
|
-
def value
|
497
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
498
|
-
:upper => up.value,
|
499
|
-
:lower_unbounded => true,
|
500
|
-
:upper_included => true)
|
501
|
-
end
|
502
|
-
}
|
503
|
-
/ SYM_INTERVAL_DELIM SYM_GT lo:time_value SYM_INTERVAL_DELIM {
|
504
|
-
def value
|
505
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
506
|
-
:lower => lo.value,
|
507
|
-
:uppper_unbounded => true,
|
508
|
-
:lower_included => false)
|
509
|
-
end
|
510
|
-
}
|
511
|
-
/ SYM_INTERVAL_DELIM SYM_GE tv:time_value SYM_INTERVAL_DELIM {
|
512
|
-
def value
|
513
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
514
|
-
:lower => tv.value,
|
515
|
-
:upper_unbounded => true,
|
516
|
-
:lower_included => true)
|
517
|
-
end
|
518
|
-
}
|
519
|
-
/ SYM_INTERVAL_DELIM val:time_value SYM_INTERVAL_DELIM {
|
520
|
-
def value
|
521
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
522
|
-
:lower => val.value,
|
523
|
-
:upper => val.value,
|
524
|
-
:upper_included => true,
|
525
|
-
:lower_included => true)
|
526
|
-
end
|
527
|
-
}
|
528
|
-
end
|
529
|
-
|
530
|
-
rule date_time_value
|
531
|
-
dt:V_ISO8601_EXTENDED_DATE_TIME '' {
|
532
|
-
def value
|
533
|
-
::OpenEHR::RM::DataTypes::Quantity::DateTime::DvDateTime.new(
|
534
|
-
:value => dt.text_value)
|
535
|
-
end
|
536
|
-
}
|
537
|
-
end
|
538
|
-
|
539
|
-
rule date_time_list_value
|
540
|
-
date_time_value (',' more_dt:date_time_value)+ {
|
541
|
-
def value
|
542
|
-
date_times.map {|t| t.value}
|
543
|
-
end
|
544
|
-
|
545
|
-
def date_times
|
546
|
-
[date_time_value] + more_dt.elements.map {|dt| dt.date_time_value}
|
547
|
-
end
|
548
|
-
}
|
549
|
-
/ date_time_value ',' SYM_LIST_CONTINUE {
|
550
|
-
def value
|
551
|
-
[date_time_value.value]
|
552
|
-
end
|
553
|
-
}
|
554
|
-
end
|
555
|
-
|
556
|
-
rule date_time_interval_value
|
557
|
-
SYM_INTERVAL_DELIM SYM_GT lo:date_time_value SYM_ELLIPSIS SYM_LT up:date_time_value SYM_INTERVAL_DELIM {
|
558
|
-
def value
|
559
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(:lower => lo.value,
|
560
|
-
:upper => up.value,
|
561
|
-
:lower_included => false,
|
562
|
-
:upper_included => false)
|
563
|
-
end
|
564
|
-
}
|
565
|
-
/ SYM_INTERVAL_DELIM SYM_GT lo:date_time_value SYM_ELLIPSIS up:date_time_value SYM_INTERVAL_DELIM {
|
566
|
-
def value
|
567
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(:lower => lo.value,
|
568
|
-
:upper => up.value,
|
569
|
-
:lower_included => false,
|
570
|
-
:upper_included => true)
|
571
|
-
end
|
572
|
-
}
|
573
|
-
/ SYM_INTERVAL_DELIM lo:date_time_value SYM_ELLIPSIS SYM_LT up:date_time_value SYM_INTERVAL_DELIM {
|
574
|
-
def value
|
575
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(:lower => lo.value,
|
576
|
-
:upper => up.value,
|
577
|
-
:lower_included => true,
|
578
|
-
:upper_included => false)
|
579
|
-
end
|
580
|
-
}
|
581
|
-
/ SYM_INTERVAL_DELIM lo:date_time_value SYM_ELLIPSIS up:date_time_value SYM_INTERVAL_DELIM {
|
582
|
-
def value
|
583
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(:lower => lo.value,
|
584
|
-
:upper => up.value,
|
585
|
-
:lower_included => true,
|
586
|
-
:upper_included => true)
|
587
|
-
end
|
588
|
-
}
|
589
|
-
/ SYM_INTERVAL_DELIM SYM_LT up:date_time_value SYM_INTERVAL_DELIM {
|
590
|
-
def value
|
591
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
592
|
-
:upper => up.value,
|
593
|
-
:lower_unbounded => true,
|
594
|
-
:upper_included => false)
|
595
|
-
end
|
596
|
-
}
|
597
|
-
/ SYM_INTERVAL_DELIM SYM_LE up:date_time_value SYM_INTERVAL_DELIM {
|
598
|
-
def value
|
599
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
600
|
-
:upper => up.value,
|
601
|
-
:lower_unbounded => true,
|
602
|
-
:upper_included => true)
|
603
|
-
end
|
604
|
-
}
|
605
|
-
/ SYM_INTERVAL_DELIM SYM_GT lo:date_time_value SYM_INTERVAL_DELIM {
|
606
|
-
def value
|
607
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
608
|
-
:lower => lo.value,
|
609
|
-
:uppper_unbounded => true,
|
610
|
-
:lower_included => false)
|
611
|
-
end
|
612
|
-
}
|
613
|
-
/ SYM_INTERVAL_DELIM SYM_GE dt:date_time_value SYM_INTERVAL_DELIM {
|
614
|
-
def value
|
615
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
616
|
-
:lower => dt.value,
|
617
|
-
:upper_unbounded => true,
|
618
|
-
:lower_included => true)
|
619
|
-
end
|
620
|
-
}
|
621
|
-
/ SYM_INTERVAL_DELIM val:date_time_value SYM_INTERVAL_DELIM {
|
622
|
-
def value
|
623
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
624
|
-
:lower => val.value,
|
625
|
-
:upper => val.value,
|
626
|
-
:upper_included => true,
|
627
|
-
:lower_included => true)
|
628
|
-
end
|
629
|
-
}
|
630
|
-
end
|
631
|
-
|
632
|
-
rule duration_value
|
633
|
-
du:V_ISO8601_DURATION '' {
|
634
|
-
def value
|
635
|
-
::OpenEHR::RM::DataTypes::Quantity::DateTime::DvDuration.new(
|
636
|
-
:value => du.text_value)
|
637
|
-
end
|
638
|
-
}
|
639
|
-
end
|
640
|
-
|
641
|
-
rule duration_list_value
|
642
|
-
duration_value more_d:(',' duration_value)+ {
|
643
|
-
def value
|
644
|
-
durations.map {|d| d.value}
|
645
|
-
end
|
646
|
-
|
647
|
-
def durations
|
648
|
-
[duration_value] + more_d.elements.map {|d| d.duration_value}
|
649
|
-
end
|
650
|
-
}
|
651
|
-
/ duration_value ',' SYM_LIST_CONTINUE {
|
652
|
-
def value
|
653
|
-
[duration_value.value]
|
654
|
-
end
|
655
|
-
}
|
656
|
-
end
|
657
|
-
|
658
|
-
rule duration_interval_value
|
659
|
-
SYM_INTERVAL_DELIM SYM_GT lo:duration_value SYM_ELLIPSIS SYM_LT up:duration_value SYM_INTERVAL_DELIM {
|
660
|
-
def value
|
661
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(:lower => lo.value,
|
662
|
-
:upper => up.value,
|
663
|
-
:lower_included => false,
|
664
|
-
:upper_included => false)
|
665
|
-
end
|
666
|
-
}
|
667
|
-
/ SYM_INTERVAL_DELIM SYM_GT lo:duration_value SYM_ELLIPSIS up:duration_value SYM_INTERVAL_DELIM {
|
668
|
-
def value
|
669
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(:lower => lo.value,
|
670
|
-
:upper => up.value,
|
671
|
-
:lower_included => false,
|
672
|
-
:upper_included => true)
|
673
|
-
end
|
674
|
-
}
|
675
|
-
/ SYM_INTERVAL_DELIM lo:duration_value SYM_ELLIPSIS SYM_LT up:duration_value SYM_INTERVAL_DELIM {
|
676
|
-
def value
|
677
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(:lower => lo.value,
|
678
|
-
:upper => up.value,
|
679
|
-
:lower_included => true,
|
680
|
-
:upper_included => false)
|
681
|
-
end
|
682
|
-
}
|
683
|
-
/ SYM_INTERVAL_DELIM lo:duration_value SYM_ELLIPSIS up:duration_value SYM_INTERVAL_DELIM {
|
684
|
-
def value
|
685
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(:lower => lo.value,
|
686
|
-
:upper => up.value,
|
687
|
-
:lower_included => true,
|
688
|
-
:upper_included => true)
|
689
|
-
end
|
690
|
-
}
|
691
|
-
/ SYM_INTERVAL_DELIM SYM_LT up:duration_value SYM_INTERVAL_DELIM {
|
692
|
-
def value
|
693
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
694
|
-
:upper => up.value,
|
695
|
-
:lower_unbounded => true,
|
696
|
-
:upper_included => false)
|
697
|
-
end
|
698
|
-
}
|
699
|
-
/ SYM_INTERVAL_DELIM SYM_LE up:duration_value SYM_INTERVAL_DELIM {
|
700
|
-
def value
|
701
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
702
|
-
:upper => up.value,
|
703
|
-
:lower_unbounded => true,
|
704
|
-
:upper_included => true)
|
705
|
-
end
|
706
|
-
}
|
707
|
-
/ SYM_INTERVAL_DELIM SYM_GT lo:duration_value SYM_INTERVAL_DELIM {
|
708
|
-
def value
|
709
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
710
|
-
:lower => lo.value,
|
711
|
-
:uppper_unbounded => true,
|
712
|
-
:lower_included => false)
|
713
|
-
end
|
714
|
-
}
|
715
|
-
/ SYM_INTERVAL_DELIM SYM_GE val:duration_value SYM_INTERVAL_DELIM {
|
716
|
-
def value
|
717
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
718
|
-
:lower => val.value,
|
719
|
-
:upper_unbounded => true,
|
720
|
-
:lower_included => true)
|
721
|
-
end
|
722
|
-
}
|
723
|
-
/ SYM_INTERVAL_DELIM val:duration_value SYM_INTERVAL_DELIM {
|
724
|
-
def value
|
725
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
726
|
-
:upper => val.value,
|
727
|
-
:lower => val.value,
|
728
|
-
:upper_included => true,
|
729
|
-
:lower_included => true)
|
730
|
-
end
|
731
|
-
}
|
732
|
-
end
|
733
|
-
|
734
|
-
rule ALPHANUM
|
735
|
-
[a-zA-Z0-9]
|
736
|
-
end
|
737
|
-
|
738
|
-
rule IDCHAR
|
739
|
-
[a-zA-Z0-9_]
|
740
|
-
end
|
741
|
-
|
742
|
-
rule NAMECHAR
|
743
|
-
[a-zA-Z0-9\._\-]
|
744
|
-
end
|
745
|
-
|
746
|
-
rule NAMECHAR_SPACE
|
747
|
-
[a-zA-Z0-9\._\- ]
|
748
|
-
end
|
749
|
-
|
750
|
-
rule NAMECHAR_PAREN
|
751
|
-
[a-zA-Z0-9\._\-\(\)]
|
752
|
-
end
|
753
|
-
|
754
|
-
rule NAMESTR
|
755
|
-
[a-zA-Z] [a-zA-Z0-9_]+
|
756
|
-
end
|
757
|
-
|
758
|
-
rule space
|
759
|
-
COMMENT* white_space
|
760
|
-
end
|
761
|
-
|
762
|
-
rule COMMENT
|
763
|
-
white_space '--' [^\n]* "\n"
|
764
|
-
end
|
765
|
-
|
766
|
-
rule white_space
|
767
|
-
[ \t\r\n]*
|
768
|
-
end
|
769
|
-
|
770
|
-
rule Minus_code
|
771
|
-
'-'
|
772
|
-
end
|
773
|
-
|
774
|
-
rule Plus_Code
|
775
|
-
'+'
|
776
|
-
end
|
777
|
-
|
778
|
-
rule Star_code
|
779
|
-
'*'
|
780
|
-
end
|
781
|
-
|
782
|
-
rule Slash_code
|
783
|
-
'/'
|
784
|
-
end
|
785
|
-
|
786
|
-
rule Carret_code
|
787
|
-
'^'
|
788
|
-
end
|
789
|
-
|
790
|
-
rule Dot_code
|
791
|
-
'.'
|
792
|
-
end
|
793
|
-
|
794
|
-
rule Semicolon_code
|
795
|
-
';'
|
796
|
-
end
|
797
|
-
|
798
|
-
rule Colon_code
|
799
|
-
':'
|
800
|
-
end
|
801
|
-
|
802
|
-
rule Comma_code
|
803
|
-
','
|
804
|
-
end
|
805
|
-
|
806
|
-
rule Expclamation_code
|
807
|
-
'!'
|
808
|
-
end
|
809
|
-
|
810
|
-
rule Left_parenthesis_code
|
811
|
-
'('
|
812
|
-
end
|
813
|
-
|
814
|
-
rule Right_parenthesis_code
|
815
|
-
')'
|
816
|
-
end
|
817
|
-
|
818
|
-
rule Dollar_code
|
819
|
-
'$'
|
820
|
-
end
|
821
|
-
|
822
|
-
rule SYM_DT_UNKNOWN
|
823
|
-
'??'
|
824
|
-
end
|
825
|
-
|
826
|
-
rule Question_mark_code
|
827
|
-
'?'
|
828
|
-
end
|
829
|
-
|
830
|
-
rule SYM_INTERVAL_DELIM
|
831
|
-
'|'
|
832
|
-
end
|
833
|
-
|
834
|
-
rule Left_bracket_code
|
835
|
-
'[' space
|
836
|
-
end
|
837
|
-
|
838
|
-
rule Right_bracket_codde
|
839
|
-
']'
|
840
|
-
end
|
841
|
-
|
842
|
-
rule SYM_EQ
|
843
|
-
'=' white_space
|
844
|
-
end
|
845
|
-
|
846
|
-
rule SYM_GE
|
847
|
-
('=>' / '>=') white_space
|
848
|
-
end
|
849
|
-
|
850
|
-
rule SYM_LE
|
851
|
-
('<=' / '=>') white_space
|
852
|
-
end
|
853
|
-
|
854
|
-
rule SYM_LT
|
855
|
-
'<' white_space
|
856
|
-
end
|
857
|
-
|
858
|
-
rule SYM_GT
|
859
|
-
'>' white_space
|
860
|
-
end
|
861
|
-
|
862
|
-
rule SYM_START_DBLOCK
|
863
|
-
'<' space
|
864
|
-
end
|
865
|
-
|
866
|
-
rule SYM_END_DBLOCK
|
867
|
-
'>' space
|
868
|
-
end
|
869
|
-
|
870
|
-
rule SYM_START_CBLOCK
|
871
|
-
'{' space
|
872
|
-
end
|
873
|
-
|
874
|
-
rule SYM_END_CBLOCK
|
875
|
-
'}'
|
876
|
-
end
|
877
|
-
|
878
|
-
rule SYM_ELLIPSIS
|
879
|
-
'..'
|
880
|
-
end
|
881
|
-
|
882
|
-
rule SYM_LIST_CONTINUE
|
883
|
-
'...'
|
884
|
-
end
|
885
|
-
|
886
|
-
rule SYM_INFINITY
|
887
|
-
[Ii] [Nn] [Ff] [Ii] [Nn] [Ii] [Tt] [Yy] space
|
888
|
-
end
|
889
|
-
|
890
|
-
rule SYM_ARCHETYPE
|
891
|
-
[Aa] [Rr] [Cc] [Hh] [Ee] [Tt] [Yy] [Pp] [Ee] space
|
892
|
-
end
|
893
|
-
|
894
|
-
rule SYM_MATCHES
|
895
|
-
([Mm] [Aa] [Tt] [Cc] [Hh] [Ee] [Ss] / [Ii] [Ss] '_' [Ii] [Nn]) white_space
|
896
|
-
end
|
897
|
-
|
898
|
-
rule SYM_THEN
|
899
|
-
[Tt] [Hh] [Ee] [Nn] space
|
900
|
-
end
|
901
|
-
|
902
|
-
rule SYM_ELSE
|
903
|
-
[Ee] [Ll] [Ss] [Ee] space
|
904
|
-
end
|
905
|
-
|
906
|
-
rule SYM_AND
|
907
|
-
[Aa] [Nn] [Dd] space
|
908
|
-
end
|
909
|
-
|
910
|
-
rule SYM_OR
|
911
|
-
[Oo] [Rr] space
|
912
|
-
end
|
913
|
-
|
914
|
-
rule SYM_XOR
|
915
|
-
[Xx] [Oo] [Rr] space
|
916
|
-
end
|
917
|
-
|
918
|
-
rule SYM_NOT
|
919
|
-
[Nn] [Oo] [Tt] space
|
920
|
-
end
|
921
|
-
|
922
|
-
rule SYM_IMPLIES
|
923
|
-
[Ii] [Mm] [Pp] [Ll] [Ii] [Ee] [Ss] space
|
924
|
-
end
|
925
|
-
|
926
|
-
rule SYM_TRUE
|
927
|
-
[Tt] [Rr] [Uu] [Ee] space
|
928
|
-
end
|
929
|
-
|
930
|
-
rule SYM_FALSE
|
931
|
-
[Ff] [Aa] [Ll] [Ss] [Ee] space
|
932
|
-
end
|
933
|
-
|
934
|
-
rule SYM_FORALL
|
935
|
-
[Ff] [Oo] [Rr] '_' [Aa] [Ll] [Ll] space
|
936
|
-
end
|
937
|
-
|
938
|
-
rule SYM_EXISTS
|
939
|
-
[Ee] [Xx] [Ii] [Ss] [Tt] [Ss] space
|
940
|
-
end
|
941
|
-
|
942
|
-
rule SYM_EXISTENCE
|
943
|
-
[Ee] [Xx] [Ii] [Ss] [Tt] [Ee] [Nn] [Cc] [Ee] space
|
944
|
-
end
|
945
|
-
|
946
|
-
rule SYM_OCCURRENCES
|
947
|
-
[Oo] [Cc] [Cc] [Uu] [Rr] [Rr] [Ee] [Nn] [Cc] [Ee] [Ss] white_space
|
948
|
-
end
|
949
|
-
|
950
|
-
rule SYM_CARDINALITY
|
951
|
-
[Cc] [Aa] [Rr] [Dd] [Ii] [Nn] [Aa] [Ll] [Ii] [Tt] [Yy] white_space
|
952
|
-
end
|
953
|
-
|
954
|
-
rule SYM_ORDERED
|
955
|
-
[Oo] [Rr] [Dd] [Ee] [Rr] [Ee] [Dd] white_space
|
956
|
-
end
|
957
|
-
|
958
|
-
rule SYM_UNORDERD
|
959
|
-
[Uu] [Nn] [Oo] [Rr] [Dd] [Ee] [Rr] [Ee] [Dd] white_space
|
960
|
-
end
|
961
|
-
|
962
|
-
rule SYM_UNIQUE
|
963
|
-
[Uu] [Nn] [Ii] [Qq] [Uu] [Ee] space
|
964
|
-
end
|
965
|
-
|
966
|
-
rule SYM_INFINITY
|
967
|
-
[Ii] [Nn] [Ff] [Ii] [Nn] [Ii] [Tt] [Yy] space
|
968
|
-
end
|
969
|
-
|
970
|
-
rule SYM_USE_NODE
|
971
|
-
[Uu] [Ss] [Ee] '_' [Nn] [Oo] [Dd] [Ee] space
|
972
|
-
end
|
973
|
-
|
974
|
-
rule SYM_ALLOW_ARCHETYPE
|
975
|
-
([Aa] [Ll] [Ll] [Oo] [Ww] / [Uu] [Ss] [Ee]) '_' [Aa] [Rr] [Cc] [Hh] [Ee] [Tt] [Yy] [Pp] [Ee] space
|
976
|
-
end
|
977
|
-
|
978
|
-
rule SYM_INCLUDE
|
979
|
-
[Ii] [Nn] [Cc] [Ll] [Uu] [Dd] [Ee] space
|
980
|
-
end
|
981
|
-
|
982
|
-
rule SYM_EXCLUDE
|
983
|
-
[Ee] [Xx] [Cc] [Ll] [Uu] [Dd] [Ee] space
|
984
|
-
end
|
985
|
-
|
986
|
-
rule SYM_TEMPLATE_COMPONENT
|
987
|
-
[Tt] [Ee] [Mm] [Pp] [Ll] [Aa] [Tt] [Ee] ' _' [Cc] [Oo] [Mm] [Pp] [Oo] [Nn] [Ee] [Nn] [Tt] space
|
988
|
-
end
|
989
|
-
|
990
|
-
rule SYM_TEMPLATE
|
991
|
-
[Tt] [Ee] [Mm] [Pp] [Ll] [Aa] [Tt] [Ee] space
|
992
|
-
end
|
993
|
-
|
994
|
-
rule SYM_OPERATIONAL_TEMPLATE
|
995
|
-
[Oo] [Pp] [Ee] [Rr] [Aa] [Tt] [Ii] [Oo] [Nn] [Aa] [Ll] '_' [Tt] [Ee] [Mm] [Pp] [Ll] [Aa] [Tt] [Ee] space
|
996
|
-
end
|
997
|
-
|
998
|
-
rule SYM_ADL_VERSION
|
999
|
-
[Aa] [Dd] [Ll] '_' [Vv] [Ee] [Rr] [Ss] [Ii] [Oo] [Nn] space
|
1000
|
-
end
|
1001
|
-
|
1002
|
-
rule SYM_IS_CONTROLLED
|
1003
|
-
[Cc] [Oo] [Nn] [Tt] [Rr] [Oo] [Ll] [Ll] [Ee] [Dd] space
|
1004
|
-
end
|
1005
|
-
|
1006
|
-
rule SYM_IS_GENERATED
|
1007
|
-
[Gg] [Ee] [Nn] [Ee] [Rr] [Aa] [Tt] [Ee] [Dd] space
|
1008
|
-
end
|
1009
|
-
|
1010
|
-
rule SYM_SPECIALIZE
|
1011
|
-
[Ss] [Pp] [Ee] [Cc] [Ii] [Aa] [Ll] [Ii] [SsZz] [Ee] space
|
1012
|
-
end
|
1013
|
-
|
1014
|
-
rule SYM_CONCEPT
|
1015
|
-
[Cc] [Oo] [Nn] [Cc] [Ee] [Pp] [Tt] space
|
1016
|
-
end
|
1017
|
-
|
1018
|
-
rule SYM_LANGUAGE
|
1019
|
-
[Ll] [Aa] [Nn] [Gg] [Uu] [Aa] [Gg] [Ee] space
|
1020
|
-
end
|
1021
|
-
|
1022
|
-
rule SYM_DESCRIPTION
|
1023
|
-
[Dd] [Ee] [Ss] [Cc] [Rr] [Ii] [Pp] [Tt] [Ii] [Oo] [Nn] space
|
1024
|
-
end
|
1025
|
-
|
1026
|
-
rule SYM_DEFINITION
|
1027
|
-
[Dd] [Ee] [Ff] [Ii] [Nn] [Ii] [Tt] [Ii] [Oo] [Nn] space
|
1028
|
-
end
|
1029
|
-
|
1030
|
-
rule SYM_INVARIANT
|
1031
|
-
[Ii] [Nn] [Vv] [Aa] [Rr] [Ii] [Aa] [Nn] [Tt] space
|
1032
|
-
end
|
1033
|
-
|
1034
|
-
rule SYM_ONTOLOGY
|
1035
|
-
[Oo] [Nn] [Tt] [Oo] [Ll] [Oo] [Gg] [Yy] space
|
1036
|
-
end
|
1037
|
-
|
1038
|
-
rule SYM_ANNOTATIONS
|
1039
|
-
[Aa] [Nn] [Nn] [Oo] [Tt] [Aa] [Tt] [Ii] [Oo] [Nn] [Ss] space
|
1040
|
-
end
|
1041
|
-
|
1042
|
-
rule V_VERSION_STRING
|
1043
|
-
[0-9]+ '.' [0-9]+ ('.' [0-9]+)* {
|
1044
|
-
def value
|
1045
|
-
text_value
|
1046
|
-
end
|
1047
|
-
}
|
1048
|
-
end
|
1049
|
-
|
1050
|
-
rule V_ARCHETYPE_ID
|
1051
|
-
NAMESTR ('-' NAMESTR) 2..2 '.' NAMESTR ('-' NAMESTR)* '.v' [1-9] [0-9]* {
|
1052
|
-
def value
|
1053
|
-
text_value
|
1054
|
-
end
|
1055
|
-
}
|
1056
|
-
end
|
1057
|
-
|
1058
|
-
rule V_IDENTIFIER
|
1059
|
-
[a-zA-Z] [a-zA-Z0-9_]* {
|
1060
|
-
def value
|
1061
|
-
text_value
|
1062
|
-
end
|
1063
|
-
}
|
1064
|
-
end
|
1065
|
-
|
1066
|
-
rule V_URI
|
1067
|
-
[a-z]+ '://' [^<>|\\{}^~"\[\] ]* {
|
1068
|
-
def value
|
1069
|
-
text_value
|
1070
|
-
end
|
1071
|
-
}
|
1072
|
-
end
|
1073
|
-
|
1074
|
-
rule V_QUALIFIED_TERM_CODE_REF
|
1075
|
-
'[' ti:(NAMECHAR_PAREN+) '::' cs:(NAMECHAR+) ']' {
|
1076
|
-
def value
|
1077
|
-
term_id = OpenEHR::RM::Support::Identification::TerminologyID.new(
|
1078
|
-
:value => ti.text_value)
|
1079
|
-
OpenEHR::RM::DataTypes::Text::CodePhrase.new(
|
1080
|
-
:terminology_id => term_id, :code_string => cs.text_value)
|
1081
|
-
end
|
1082
|
-
}
|
1083
|
-
end
|
1084
|
-
|
1085
|
-
rule ERR_V_QUALIFIED_TERM_CODE_REF
|
1086
|
-
'[' er:(NAMECHAR_PAREN+ '::' NAMECHAR_SPACE+) ']' {
|
1087
|
-
def value
|
1088
|
-
er.text_value
|
1089
|
-
end
|
1090
|
-
}
|
1091
|
-
end
|
1092
|
-
|
1093
|
-
rule V_LOCAL_TERM_CODE_REF
|
1094
|
-
'[' lt:(ALPHANUM NAMECHAR*) ']' {
|
1095
|
-
def value
|
1096
|
-
lt.text_value
|
1097
|
-
end
|
1098
|
-
}
|
1099
|
-
end
|
1100
|
-
|
1101
|
-
rule V_LOCAL_CODE
|
1102
|
-
'a' [ct] [0-9\.]+ {
|
1103
|
-
def value
|
1104
|
-
text_value
|
1105
|
-
end
|
1106
|
-
}
|
1107
|
-
end
|
1108
|
-
|
1109
|
-
rule V_TERM_CODE
|
1110
|
-
'[' code:([a-zA-Z0-9()._\-]+) '::' white_space {
|
1111
|
-
def value
|
1112
|
-
::OpenEHR::RM::Support::Identification::TerminologyID.new(
|
1113
|
-
:value => code.text_value)
|
1114
|
-
end
|
1115
|
-
}
|
1116
|
-
end
|
1117
|
-
|
1118
|
-
rule V_ISO8601_EXTENDED_DATE_TIME
|
1119
|
-
([0-9] 4..4 '-' [0-1] [0-9] '-' [0-3] [0-9] 'T' [0-2] [0-9] ':' [0-6] [0-9] ':' [0-6] [0-9] (',' [0-9]+)? ('Z' / [+-] [0-9] 4..4)? ) / ([0-9] 4..4 '-' [0-1] [0-9] '-' [0-3] [0-9] 'T' [0-2] [0-9] ':' [0-6] [0-9] ('Z' / [+-] [0-9] 4..4)?) / ([0-9] 4..4 '-' [0-1] [0-9] '-' [0-3] [0-9] 'T' [0-2] [0-9] ('Z' / [+-] [0-9] 4..4)?)
|
1120
|
-
end
|
1121
|
-
|
1122
|
-
rule V_ISO8601_EXTENDED_TIME
|
1123
|
-
[0-2] [0-9] ':' [0-6] [0-9] ':' [0-6] [0-9] (',' [0-9]+)? ('Z' / [+-] [0-9] 4..4)? / [0-2] [0-9] ':' [0-6] [0-9] ('Z' / [+-] [0-9] 4..4)?
|
1124
|
-
end
|
1125
|
-
|
1126
|
-
rule V_ISO8601_EXTENDED_DATE
|
1127
|
-
[0-9] 4..4 '-' [0-1] [0-9] '-' [0-3] [0-9] / [0-9] 4..4 '-' [0-1] [0-9]
|
1128
|
-
end
|
1129
|
-
|
1130
|
-
rule V_ISO8601_DURATION
|
1131
|
-
'P' ([0-9]+ [yY])? ([0-9]+ [mM])? ([0-9]+ [wW])? ([0-9]+ [dD])? 'T' ([0-9]+ [hH]) ([0-9]+ [mM])? ([0-9]+ ('.' [0-9]+)? [sS])?
|
1132
|
-
/ 'P' ([0-9]+ [yY])? ([0-9]+ [mM])? ([0-9]+ [wW])? ([0-9]+ [dD])? 'T' ([0-9]+ [hH])? ([0-9]+ [mM]) ([0-9]+ ('.' [0-9]+)? [sS])?
|
1133
|
-
/ 'P' ([0-9]+ [yY])? ([0-9]+ [mM])? ([0-9]+ [wW])? ([0-9]+ [dD])? 'T' ([0-9]+ [hH])? ([0-9]+ [mM])? ([0-9]+ ('.' [0-9]+)? [sS])?
|
1134
|
-
/ 'P' ([0-9]+ [yY]) ([0-9]+ [mM])? ([0-9]+ [wW])? ([0-9]+ [dD])?
|
1135
|
-
/ 'P' ([0-9]+ [yY])? ([0-9]+ [mM]) ([0-9]+ [wW])? ([0-9]+ [dD])?
|
1136
|
-
/ 'P' ([0-9]+ [yY])? ([0-9]+ [mM])? ([0-9]+ [wW]) ([0-9]+ [dD])?
|
1137
|
-
/ 'P' ([0-9]+ [yY])? ([0-9]+ [mM])? ([0-9]+ [wW])? ([0-9]+ [dD])
|
1138
|
-
end
|
1139
|
-
|
1140
|
-
rule V_ISO8601_DATE_CONSTRAINT_PATTERN
|
1141
|
-
[yY] [yY] [yY] [yY] '-' [mM?X] [mM?X] '-' [dD?X] [dD?X]
|
1142
|
-
end
|
1143
|
-
|
1144
|
-
rule V_ISO8601_TIME_CONSTRAINT_PATTERN
|
1145
|
-
[hH] [hH] ':' [mM?X] [mM?X] ':' [sS?X] [sS?X]
|
1146
|
-
end
|
1147
|
-
|
1148
|
-
rule V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN
|
1149
|
-
[yY] [yY] [yY] [yY] '-' [mM?X] [mM?X] '-' [dD?X] [dD?X] [Tt ] [hH?X] [hH?X] ':' [mM?X] [mM?X] ':' [sS?X] [sS?X]
|
1150
|
-
end
|
1151
|
-
|
1152
|
-
rule V_ISO8601_DURATION_CONSTRAINT_PATTERN
|
1153
|
-
'P' [yY]? [mM]? [wW]? [dD]? 'T' [hH] [mM]? [sS]?
|
1154
|
-
/ 'P' [yY]? [mM]? [wW]? [dD]? 'T' [hH]? [mM] [sS]?
|
1155
|
-
/ 'P' [yY]? [mM]? [wW]? [dD]? 'T' [hH]? [mM]? [sS]
|
1156
|
-
/ 'P' [yY] [mM]? [wW]? [dD]?
|
1157
|
-
/ 'P' [yY]? [mM] [wW]? [dD]?
|
1158
|
-
/ 'P' [yY]? [mM]? [wW] [dD]?
|
1159
|
-
/ 'P' [yY]? [mM]? [wW]? [dD]
|
1160
|
-
end
|
1161
|
-
|
1162
|
-
rule V_TYPE_IDENTIFIER
|
1163
|
-
[A-Z] IDCHAR* {
|
1164
|
-
def value
|
1165
|
-
text_value
|
1166
|
-
end
|
1167
|
-
}
|
1168
|
-
end
|
1169
|
-
|
1170
|
-
rule V_GENERIC_TYPE_IDENTIFIER
|
1171
|
-
[A-Z] IDCHAR* '<' [a-zA-Z0-9,_]+ '>' { # <>
|
1172
|
-
def value
|
1173
|
-
text_value
|
1174
|
-
end
|
1175
|
-
}
|
1176
|
-
end
|
1177
|
-
|
1178
|
-
rule V_ATTRIBUTE_IDENTIFIER
|
1179
|
-
[a-z] IDCHAR* {
|
1180
|
-
def value
|
1181
|
-
text_value
|
1182
|
-
end
|
1183
|
-
}
|
1184
|
-
end
|
1185
|
-
|
1186
|
-
rule V_INTEGER
|
1187
|
-
[0-9]+ [eE] [+-]? [0-9] {
|
1188
|
-
def value
|
1189
|
-
text_value.to_i
|
1190
|
-
end
|
1191
|
-
}
|
1192
|
-
/ [1-9] [0-9]+ {
|
1193
|
-
def value
|
1194
|
-
text_value.to_i
|
1195
|
-
end
|
1196
|
-
}
|
1197
|
-
/ [0-9] {
|
1198
|
-
def value
|
1199
|
-
text_value.to_i
|
1200
|
-
end
|
1201
|
-
}
|
1202
|
-
end
|
1203
|
-
|
1204
|
-
rule V_REAL
|
1205
|
-
[0-9]+ '.' [0-9]+ [eE] [+-]? [0-9]+ / [1-9] [0-9]+ '.' [0-9]+ / [0-9] '.' [0-9]+ {
|
1206
|
-
def value
|
1207
|
-
text_value.to_f
|
1208
|
-
end
|
1209
|
-
}
|
1210
|
-
end
|
1211
|
-
|
1212
|
-
rule V_CHAR
|
1213
|
-
[^\\\n\"] {
|
1214
|
-
def value
|
1215
|
-
text_value
|
1216
|
-
end
|
1217
|
-
}
|
1218
|
-
end
|
1219
|
-
|
1220
|
-
rule V_STRING
|
1221
|
-
'"' str:(('\"' / !'"' .)*) '"' {
|
1222
|
-
def value
|
1223
|
-
str.text_value.tr_s('\\\\', '\\')
|
1224
|
-
end
|
1225
|
-
}
|
1226
|
-
end
|
1227
|
-
end
|
1228
|
-
end
|
1229
|
-
end
|