expressir 0.2.5 → 0.2.10

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.
Files changed (96) hide show
  1. checksums.yaml +4 -4
  2. data/.cross_rubies +30 -0
  3. data/.github/workflows/rake.yml +14 -15
  4. data/.github/workflows/release.yml +24 -16
  5. data/.gitignore +3 -1
  6. data/Gemfile +0 -2
  7. data/Rakefile +2 -8
  8. data/expressir.gemspec +7 -4
  9. data/ext/express-parser/express_parser.cpp +12 -10
  10. data/ext/express-parser/extconf.rb +48 -25
  11. data/lib/expressir/express_exp/formatter.rb +74 -23
  12. data/lib/expressir/express_exp/parser.rb +20 -2
  13. data/lib/expressir/express_exp/visitor.rb +201 -96
  14. data/lib/expressir/model.rb +3 -0
  15. data/lib/expressir/model/attribute.rb +3 -1
  16. data/lib/expressir/model/constant.rb +3 -1
  17. data/lib/expressir/model/entity.rb +12 -19
  18. data/lib/expressir/model/enumeration_item.rb +3 -1
  19. data/lib/expressir/model/expressions/aggregate_initializer.rb +2 -2
  20. data/lib/expressir/model/expressions/aggregate_item.rb +1 -1
  21. data/lib/expressir/model/expressions/attribute_reference.rb +1 -1
  22. data/lib/expressir/model/expressions/binary_expression.rb +1 -1
  23. data/lib/expressir/model/expressions/call.rb +2 -2
  24. data/lib/expressir/model/expressions/entity_constructor.rb +2 -2
  25. data/lib/expressir/model/expressions/group_reference.rb +1 -1
  26. data/lib/expressir/model/expressions/index_reference.rb +1 -1
  27. data/lib/expressir/model/expressions/interval.rb +1 -1
  28. data/lib/expressir/model/expressions/query_expression.rb +5 -3
  29. data/lib/expressir/model/expressions/simple_reference.rb +1 -1
  30. data/lib/expressir/model/expressions/unary_expression.rb +1 -1
  31. data/lib/expressir/model/function.rb +32 -38
  32. data/lib/expressir/model/identifier.rb +1 -0
  33. data/lib/expressir/model/informal_proposition.rb +13 -0
  34. data/lib/expressir/model/interface.rb +2 -2
  35. data/lib/expressir/model/literals/binary.rb +1 -1
  36. data/lib/expressir/model/literals/integer.rb +1 -1
  37. data/lib/expressir/model/literals/logical.rb +1 -1
  38. data/lib/expressir/model/literals/real.rb +1 -1
  39. data/lib/expressir/model/literals/string.rb +1 -1
  40. data/lib/expressir/model/model_element.rb +67 -0
  41. data/lib/expressir/model/parameter.rb +3 -1
  42. data/lib/expressir/model/procedure.rb +33 -39
  43. data/lib/expressir/model/renamed_ref.rb +1 -1
  44. data/lib/expressir/model/repository.rb +3 -3
  45. data/lib/expressir/model/rule.rb +35 -38
  46. data/lib/expressir/model/schema.rb +35 -46
  47. data/lib/expressir/model/scope.rb +49 -3
  48. data/lib/expressir/model/statements/alias.rb +4 -2
  49. data/lib/expressir/model/statements/assignment.rb +1 -1
  50. data/lib/expressir/model/statements/call.rb +2 -2
  51. data/lib/expressir/model/statements/case.rb +2 -2
  52. data/lib/expressir/model/statements/case_action.rb +2 -2
  53. data/lib/expressir/model/statements/compound.rb +2 -2
  54. data/lib/expressir/model/statements/escape.rb +1 -1
  55. data/lib/expressir/model/statements/if.rb +3 -3
  56. data/lib/expressir/model/statements/null.rb +1 -1
  57. data/lib/expressir/model/statements/repeat.rb +4 -2
  58. data/lib/expressir/model/statements/return.rb +1 -1
  59. data/lib/expressir/model/statements/skip.rb +1 -1
  60. data/lib/expressir/model/subtype_constraint.rb +3 -1
  61. data/lib/expressir/model/type.rb +13 -3
  62. data/lib/expressir/model/types/aggregate.rb +3 -1
  63. data/lib/expressir/model/types/array.rb +1 -1
  64. data/lib/expressir/model/types/bag.rb +1 -1
  65. data/lib/expressir/model/types/binary.rb +1 -1
  66. data/lib/expressir/model/types/boolean.rb +1 -1
  67. data/lib/expressir/model/types/enumeration.rb +3 -3
  68. data/lib/expressir/model/types/generic.rb +3 -1
  69. data/lib/expressir/model/types/generic_entity.rb +3 -1
  70. data/lib/expressir/model/types/integer.rb +1 -1
  71. data/lib/expressir/model/types/list.rb +1 -1
  72. data/lib/expressir/model/types/logical.rb +1 -1
  73. data/lib/expressir/model/types/number.rb +1 -1
  74. data/lib/expressir/model/types/real.rb +1 -1
  75. data/lib/expressir/model/types/select.rb +3 -3
  76. data/lib/expressir/model/types/set.rb +1 -1
  77. data/lib/expressir/model/types/string.rb +1 -1
  78. data/lib/expressir/model/unique.rb +4 -2
  79. data/lib/expressir/model/variable.rb +3 -1
  80. data/lib/expressir/model/where.rb +3 -1
  81. data/lib/expressir/version.rb +1 -1
  82. data/original/examples/syntax/remark.exp +64 -20
  83. data/original/examples/syntax/remark_formatted.exp +63 -24
  84. data/original/examples/syntax/simple.exp +3 -0
  85. data/original/examples/syntax/source.exp +16 -0
  86. data/original/examples/syntax/syntax.exp +194 -181
  87. data/original/examples/syntax/syntax_formatted.exp +354 -787
  88. data/rakelib/cross-ruby.rake +308 -0
  89. data/spec/expressir/express_exp/head_source_spec.rb +38 -0
  90. data/spec/expressir/express_exp/parse_multiple_spec.rb +32 -0
  91. data/spec/expressir/express_exp/parse_remark_spec.rb +122 -56
  92. data/spec/expressir/express_exp/parse_syntax_spec.rb +1619 -1569
  93. data/spec/expressir/express_exp/source_spec.rb +29 -0
  94. data/spec/expressir/model/model_element_spec.rb +59 -0
  95. data/spec/expressir/model/{find_spec.rb → scope_spec.rb} +20 -7
  96. metadata +45 -21
@@ -2,11 +2,15 @@ SCHEMA syntax_schema 'version';
2
2
  USE FROM contract_schema;
3
3
  USE FROM contract_schema
4
4
  (contract);
5
+ USE FROM contract_schema
6
+ (contract, contract2);
5
7
  USE FROM contract_schema
6
8
  (contract AS contract2);
7
9
  REFERENCE FROM contract_schema;
8
10
  REFERENCE FROM contract_schema
9
11
  (contract);
12
+ REFERENCE FROM contract_schema
13
+ (contract, contract2);
10
14
  REFERENCE FROM contract_schema
11
15
  (contract AS contract2);
12
16
  CONSTANT
@@ -14,254 +18,198 @@ CONSTANT
14
18
  END_CONSTANT;
15
19
  TYPE empty_type = BOOLEAN;
16
20
  END_TYPE;
17
-
18
21
  TYPE where_type = BOOLEAN;
19
22
  WHERE
20
23
  TRUE;
21
24
  END_TYPE;
22
-
23
25
  TYPE where_label_type = BOOLEAN;
24
26
  WHERE
25
27
  WR1 : TRUE;
26
28
  END_TYPE;
27
-
28
29
  ENTITY empty_entity;
29
30
  END_ENTITY;
30
-
31
31
  ENTITY abstract_entity
32
32
  ABSTRACT SUPERTYPE;
33
33
  END_ENTITY;
34
-
35
34
  ENTITY abstract_supertype_entity
36
35
  ABSTRACT SUPERTYPE;
37
36
  END_ENTITY;
38
-
39
37
  ENTITY abstract_supertype_constraint_entity
40
38
  ABSTRACT SUPERTYPE OF (empty_entity);
41
39
  END_ENTITY;
42
-
43
40
  ENTITY supertype_constraint_entity
44
41
  SUPERTYPE OF (empty_entity);
45
42
  END_ENTITY;
46
-
47
43
  ENTITY subtype_entity
48
44
  SUBTYPE OF (empty_entity);
49
45
  END_ENTITY;
50
-
51
46
  ENTITY supertype_constraint_subtype_entity
52
47
  SUPERTYPE OF (empty_entity)
53
48
  SUBTYPE OF (empty_entity);
54
49
  END_ENTITY;
55
-
56
50
  ENTITY attribute_entity;
57
51
  test : BOOLEAN;
58
52
  END_ENTITY;
59
-
60
53
  ENTITY attribute_optional_entity;
61
54
  test : OPTIONAL BOOLEAN;
62
55
  END_ENTITY;
63
-
64
56
  ENTITY attribute_multiple_entity;
65
57
  test : BOOLEAN;
66
58
  test2 : BOOLEAN;
67
59
  END_ENTITY;
68
-
69
60
  ENTITY attribute_multiple_shorthand_entity;
70
61
  test : BOOLEAN;
71
62
  test2 : BOOLEAN;
72
63
  END_ENTITY;
73
-
74
64
  ENTITY attribute_redeclared_entity;
75
65
  SELF\attribute_entity.test : BOOLEAN;
76
66
  END_ENTITY;
77
-
78
67
  ENTITY attribute_redeclared_renamed_entity;
79
68
  SELF\attribute_entity.test RENAMED test2 : BOOLEAN;
80
69
  END_ENTITY;
81
-
82
70
  ENTITY derived_attribute_entity;
83
71
  DERIVE
84
72
  test : BOOLEAN := TRUE;
85
73
  END_ENTITY;
86
-
87
74
  ENTITY derived_attribute_redeclared_entity;
88
75
  DERIVE
89
76
  SELF\attribute_entity.test : BOOLEAN := TRUE;
90
77
  END_ENTITY;
91
-
92
78
  ENTITY derived_attribute_redeclared_renamed_entity;
93
79
  DERIVE
94
80
  SELF\attribute_entity.test RENAMED test2 : BOOLEAN := TRUE;
95
81
  END_ENTITY;
96
-
97
82
  ENTITY inverse_attribute_entity;
98
83
  INVERSE
99
84
  test : attribute_entity FOR test;
100
85
  END_ENTITY;
101
-
102
86
  ENTITY inverse_attribute_entity_entity;
103
87
  INVERSE
104
88
  test : attribute_entity FOR attribute_entity.test;
105
89
  END_ENTITY;
106
-
107
90
  ENTITY inverse_attribute_set_entity;
108
91
  INVERSE
109
92
  test : SET OF attribute_entity FOR test;
110
93
  END_ENTITY;
111
-
112
94
  ENTITY inverse_attribute_set_bound_entity;
113
95
  INVERSE
114
96
  test : SET [1:9] OF attribute_entity FOR test;
115
97
  END_ENTITY;
116
-
117
98
  ENTITY inverse_attribute_bag_entity;
118
99
  INVERSE
119
100
  test : BAG OF attribute_entity FOR test;
120
101
  END_ENTITY;
121
-
122
102
  ENTITY inverse_attribute_bag_bound_entity;
123
103
  INVERSE
124
104
  test : BAG [1:9] OF attribute_entity FOR test;
125
105
  END_ENTITY;
126
-
127
106
  ENTITY inverse_attribute_redeclared_entity;
128
107
  INVERSE
129
108
  SELF\attribute_entity.test : attribute_entity FOR test;
130
109
  END_ENTITY;
131
-
132
110
  ENTITY inverse_attribute_redeclared_renamed_entity;
133
111
  INVERSE
134
112
  SELF\attribute_entity.test RENAMED test2 : attribute_entity FOR test;
135
113
  END_ENTITY;
136
-
137
114
  ENTITY unique_entity;
138
115
  test : BOOLEAN;
139
116
  UNIQUE
140
117
  test;
141
118
  END_ENTITY;
142
-
143
119
  ENTITY unique_label_entity;
144
120
  test : BOOLEAN;
145
121
  UNIQUE
146
122
  UR1 : test;
147
123
  END_ENTITY;
148
-
149
124
  ENTITY unique_qualified_entity;
150
125
  UNIQUE
151
126
  SELF\attribute_entity.test;
152
127
  END_ENTITY;
153
-
154
128
  ENTITY unique_label_qualified_entity;
155
129
  UNIQUE
156
130
  UR1 : SELF\attribute_entity.test;
157
131
  END_ENTITY;
158
-
159
132
  ENTITY where_entity;
160
133
  WHERE
161
134
  TRUE;
162
135
  END_ENTITY;
163
-
164
136
  ENTITY where_label_entity;
165
137
  WHERE
166
138
  WR1 : TRUE;
167
139
  END_ENTITY;
168
-
169
140
  SUBTYPE_CONSTRAINT empty_subtype_constraint FOR empty_entity;
170
141
  END_SUBTYPE_CONSTRAINT;
171
-
172
142
  SUBTYPE_CONSTRAINT abstract_supertype_subtype_constraint FOR empty_entity;
173
143
  ABSTRACT SUPERTYPE;
174
144
  END_SUBTYPE_CONSTRAINT;
175
-
176
145
  SUBTYPE_CONSTRAINT total_over_subtype_constraint FOR empty_entity;
177
146
  TOTAL_OVER(a);
178
147
  END_SUBTYPE_CONSTRAINT;
179
-
180
148
  SUBTYPE_CONSTRAINT supertype_expression_subtype_constraint FOR empty_entity;
181
149
  a;
182
150
  END_SUBTYPE_CONSTRAINT;
183
-
184
151
  SUBTYPE_CONSTRAINT supertype_expression_andor_subtype_constraint FOR empty_entity;
185
152
  a ANDOR b;
186
153
  END_SUBTYPE_CONSTRAINT;
187
-
188
154
  SUBTYPE_CONSTRAINT supertype_expression_and_subtype_constraint FOR empty_entity;
189
155
  a AND b;
190
156
  END_SUBTYPE_CONSTRAINT;
191
-
192
157
  SUBTYPE_CONSTRAINT supertype_expression_andor_and_subtype_constraint FOR empty_entity;
193
158
  a ANDOR b AND c;
194
159
  END_SUBTYPE_CONSTRAINT;
195
-
196
160
  SUBTYPE_CONSTRAINT supertype_expression_and_andor_subtype_constraint FOR empty_entity;
197
161
  a AND b ANDOR c;
198
162
  END_SUBTYPE_CONSTRAINT;
199
-
200
163
  SUBTYPE_CONSTRAINT supertype_expression_parenthesis_andor_and_subtype_constraint FOR empty_entity;
201
164
  (a ANDOR b) AND c;
202
165
  END_SUBTYPE_CONSTRAINT;
203
-
204
166
  SUBTYPE_CONSTRAINT supertype_expression_and_parenthesis_andor_subtype_constraint FOR empty_entity;
205
167
  a AND (b ANDOR c);
206
168
  END_SUBTYPE_CONSTRAINT;
207
-
208
169
  SUBTYPE_CONSTRAINT supertype_expression_oneof_subtype_constraint FOR empty_entity;
209
170
  ONEOF(a, b);
210
171
  END_SUBTYPE_CONSTRAINT;
211
-
212
172
  SUBTYPE_CONSTRAINT supertype_expression_and_oneof_subtype_constraint FOR empty_entity;
213
173
  a AND ONEOF(b, c);
214
174
  END_SUBTYPE_CONSTRAINT;
215
-
216
175
  SUBTYPE_CONSTRAINT supertype_expression_andor_oneof_subtype_constraint FOR empty_entity;
217
176
  a ANDOR ONEOF(b, c);
218
177
  END_SUBTYPE_CONSTRAINT;
219
-
220
178
  SUBTYPE_CONSTRAINT supertype_expression_oneof_and_subtype_constraint FOR empty_entity;
221
179
  ONEOF(a, b) AND c;
222
180
  END_SUBTYPE_CONSTRAINT;
223
-
224
181
  SUBTYPE_CONSTRAINT supertype_expression_oneof_andor_subtype_constraint FOR empty_entity;
225
182
  ONEOF(a, b) ANDOR c;
226
183
  END_SUBTYPE_CONSTRAINT;
227
-
228
184
  SUBTYPE_CONSTRAINT supertype_expression_oneof_and_oneof_subtype_constraint FOR empty_entity;
229
185
  ONEOF(a, b) AND ONEOF(c, d);
230
186
  END_SUBTYPE_CONSTRAINT;
231
-
232
187
  SUBTYPE_CONSTRAINT supertype_expression_oneof_andor_oneof_subtype_constraint FOR empty_entity;
233
188
  ONEOF(a, b) ANDOR ONEOF(c, d);
234
189
  END_SUBTYPE_CONSTRAINT;
235
-
236
190
  FUNCTION empty_function : BOOLEAN;
237
191
  ;
238
192
  END_FUNCTION;
239
-
240
193
  FUNCTION parameter_function(test : BOOLEAN) : BOOLEAN;
241
194
  ;
242
195
  END_FUNCTION;
243
-
244
196
  FUNCTION multiple_parameter_function(test : BOOLEAN; test2 : BOOLEAN) : BOOLEAN;
245
197
  ;
246
198
  END_FUNCTION;
247
-
248
199
  FUNCTION multiple_shorthand_parameter_function(test : BOOLEAN; test2 : BOOLEAN) : BOOLEAN;
249
200
  ;
250
201
  END_FUNCTION;
251
-
252
202
  FUNCTION type_function : BOOLEAN;
253
203
  TYPE test = BOOLEAN;
254
204
  END_TYPE;
255
205
  ;
256
206
  END_FUNCTION;
257
-
258
207
  FUNCTION constant_function : BOOLEAN;
259
208
  CONSTANT
260
209
  test : BOOLEAN := TRUE;
261
210
  END_CONSTANT;
262
211
  ;
263
212
  END_FUNCTION;
264
-
265
213
  FUNCTION multiple_constant_function : BOOLEAN;
266
214
  CONSTANT
267
215
  test : BOOLEAN := TRUE;
@@ -269,14 +217,12 @@ FUNCTION multiple_constant_function : BOOLEAN;
269
217
  END_CONSTANT;
270
218
  ;
271
219
  END_FUNCTION;
272
-
273
220
  FUNCTION variable_function : BOOLEAN;
274
221
  LOCAL
275
222
  test : BOOLEAN;
276
223
  END_LOCAL;
277
224
  ;
278
225
  END_FUNCTION;
279
-
280
226
  FUNCTION multiple_variable_function : BOOLEAN;
281
227
  LOCAL
282
228
  test : BOOLEAN;
@@ -284,7 +230,6 @@ FUNCTION multiple_variable_function : BOOLEAN;
284
230
  END_LOCAL;
285
231
  ;
286
232
  END_FUNCTION;
287
-
288
233
  FUNCTION multiple_shorthand_variable_function : BOOLEAN;
289
234
  LOCAL
290
235
  test : BOOLEAN;
@@ -292,14 +237,12 @@ FUNCTION multiple_shorthand_variable_function : BOOLEAN;
292
237
  END_LOCAL;
293
238
  ;
294
239
  END_FUNCTION;
295
-
296
240
  FUNCTION variable_expression_function : BOOLEAN;
297
241
  LOCAL
298
242
  test : BOOLEAN := TRUE;
299
243
  END_LOCAL;
300
244
  ;
301
245
  END_FUNCTION;
302
-
303
246
  FUNCTION multiple_variable_expression_function : BOOLEAN;
304
247
  LOCAL
305
248
  test : BOOLEAN := TRUE;
@@ -307,7 +250,6 @@ FUNCTION multiple_variable_expression_function : BOOLEAN;
307
250
  END_LOCAL;
308
251
  ;
309
252
  END_FUNCTION;
310
-
311
253
  FUNCTION multiple_shorthand_variable_expression_function : BOOLEAN;
312
254
  LOCAL
313
255
  test : BOOLEAN := TRUE;
@@ -315,105 +257,430 @@ FUNCTION multiple_shorthand_variable_expression_function : BOOLEAN;
315
257
  END_LOCAL;
316
258
  ;
317
259
  END_FUNCTION;
318
-
319
260
  PROCEDURE empty_procedure;
320
261
  END_PROCEDURE;
321
-
322
262
  PROCEDURE parameter_procedure(test : BOOLEAN);
323
263
  END_PROCEDURE;
324
-
325
264
  PROCEDURE multiple_parameter_procedure(test : BOOLEAN; test2 : BOOLEAN);
326
265
  END_PROCEDURE;
327
-
328
266
  PROCEDURE multiple_shorthand_parameter_procedure(test : BOOLEAN; test2 : BOOLEAN);
329
267
  END_PROCEDURE;
330
-
331
268
  PROCEDURE variable_parameter_procedure(VAR test : BOOLEAN);
332
269
  END_PROCEDURE;
333
-
334
270
  PROCEDURE multiple_variable_parameter_procedure(VAR test : BOOLEAN; test2 : BOOLEAN);
335
271
  END_PROCEDURE;
336
-
337
272
  PROCEDURE multiple_variable_parameter2_procedure(test : BOOLEAN; VAR test2 : BOOLEAN);
338
273
  END_PROCEDURE;
339
-
340
274
  PROCEDURE multiple_shorthand_variable_parameter_procedure(VAR test : BOOLEAN; VAR test2 : BOOLEAN);
341
275
  END_PROCEDURE;
342
-
343
276
  PROCEDURE type_procedure;
344
277
  TYPE test = BOOLEAN;
345
278
  END_TYPE;
346
279
  END_PROCEDURE;
347
-
348
280
  PROCEDURE constant_procedure;
349
281
  CONSTANT
350
282
  test : BOOLEAN := TRUE;
351
283
  END_CONSTANT;
352
284
  END_PROCEDURE;
353
-
354
285
  PROCEDURE multiple_constant_procedure;
355
286
  CONSTANT
356
287
  test : BOOLEAN := TRUE;
357
288
  test2 : BOOLEAN := TRUE;
358
289
  END_CONSTANT;
359
290
  END_PROCEDURE;
360
-
361
291
  PROCEDURE variable_procedure;
362
292
  LOCAL
363
293
  test : BOOLEAN;
364
294
  END_LOCAL;
365
295
  END_PROCEDURE;
366
-
367
296
  PROCEDURE multiple_variable_procedure;
368
297
  LOCAL
369
298
  test : BOOLEAN;
370
299
  test2 : BOOLEAN;
371
300
  END_LOCAL;
372
301
  END_PROCEDURE;
373
-
374
302
  PROCEDURE multiple_shorthand_variable_procedure;
375
303
  LOCAL
376
304
  test : BOOLEAN;
377
305
  test2 : BOOLEAN;
378
306
  END_LOCAL;
379
307
  END_PROCEDURE;
380
-
381
308
  PROCEDURE variable_expression_procedure;
382
309
  LOCAL
383
310
  test : BOOLEAN := TRUE;
384
311
  END_LOCAL;
385
312
  END_PROCEDURE;
386
-
387
313
  PROCEDURE multiple_variable_expression_procedure;
388
314
  LOCAL
389
315
  test : BOOLEAN := TRUE;
390
316
  test2 : BOOLEAN := TRUE;
391
317
  END_LOCAL;
392
318
  END_PROCEDURE;
393
-
394
319
  PROCEDURE multiple_shorthand_variable_expression_procedure;
395
320
  LOCAL
396
321
  test : BOOLEAN := TRUE;
397
322
  test2 : BOOLEAN := TRUE;
398
323
  END_LOCAL;
399
324
  END_PROCEDURE;
400
-
401
325
  PROCEDURE statement_procedure;
402
326
  ;
403
327
  END_PROCEDURE;
404
-
328
+ PROCEDURE statements;
329
+ PROCEDURE alias_simple_reference_statement;
330
+ ALIAS test FOR test;
331
+ ;
332
+ END_ALIAS;
333
+ END_PROCEDURE;
334
+ PROCEDURE alias_attribute_reference_statement;
335
+ ALIAS test FOR test.test;
336
+ ;
337
+ END_ALIAS;
338
+ END_PROCEDURE;
339
+ PROCEDURE alias_group_reference_statement;
340
+ ALIAS test FOR test\test;
341
+ ;
342
+ END_ALIAS;
343
+ END_PROCEDURE;
344
+ PROCEDURE alias_index_reference_statement;
345
+ ALIAS test FOR test[1];
346
+ ;
347
+ END_ALIAS;
348
+ END_PROCEDURE;
349
+ PROCEDURE alias_index2_reference_statement;
350
+ ALIAS test FOR test[1:9];
351
+ ;
352
+ END_ALIAS;
353
+ END_PROCEDURE;
354
+ PROCEDURE assignment_simple_reference_statement;
355
+ test := TRUE;
356
+ END_PROCEDURE;
357
+ PROCEDURE assignment_attribute_reference_statement;
358
+ test.test := TRUE;
359
+ END_PROCEDURE;
360
+ PROCEDURE assignment_group_reference_statement;
361
+ test\test := TRUE;
362
+ END_PROCEDURE;
363
+ PROCEDURE assignment_index_reference_statement;
364
+ test[1] := TRUE;
365
+ END_PROCEDURE;
366
+ PROCEDURE assignment_index2_reference_statement;
367
+ test[1:9] := TRUE;
368
+ END_PROCEDURE;
369
+ PROCEDURE case_statement;
370
+ CASE test OF
371
+ TRUE :
372
+ ;
373
+ END_CASE;
374
+ END_PROCEDURE;
375
+ PROCEDURE case_multiple_statement;
376
+ CASE test OF
377
+ TRUE :
378
+ ;
379
+ TRUE :
380
+ ;
381
+ END_CASE;
382
+ END_PROCEDURE;
383
+ PROCEDURE case_multiple_shorthand_statement;
384
+ CASE test OF
385
+ TRUE, TRUE :
386
+ ;
387
+ END_CASE;
388
+ END_PROCEDURE;
389
+ PROCEDURE case_otherwise_statement;
390
+ CASE test OF
391
+ TRUE :
392
+ ;
393
+ OTHERWISE :
394
+ ;
395
+ END_CASE;
396
+ END_PROCEDURE;
397
+ PROCEDURE compound_statement;
398
+ BEGIN
399
+ ;
400
+ END;
401
+ END_PROCEDURE;
402
+ PROCEDURE escape_statement;
403
+ ESCAPE;
404
+ END_PROCEDURE;
405
+ PROCEDURE if_statement;
406
+ IF TRUE THEN
407
+ ;
408
+ END_IF;
409
+ END_PROCEDURE;
410
+ PROCEDURE if2_statement;
411
+ IF TRUE THEN
412
+ ;
413
+ ;
414
+ END_IF;
415
+ END_PROCEDURE;
416
+ PROCEDURE if_else_statement;
417
+ IF TRUE THEN
418
+ ;
419
+ ELSE
420
+ ;
421
+ END_IF;
422
+ END_PROCEDURE;
423
+ PROCEDURE if2_else_statement;
424
+ IF TRUE THEN
425
+ ;
426
+ ;
427
+ ELSE
428
+ ;
429
+ END_IF;
430
+ END_PROCEDURE;
431
+ PROCEDURE if_else2_statement;
432
+ IF TRUE THEN
433
+ ;
434
+ ELSE
435
+ ;
436
+ ;
437
+ END_IF;
438
+ END_PROCEDURE;
439
+ PROCEDURE if2_else2_statement;
440
+ IF TRUE THEN
441
+ ;
442
+ ;
443
+ ELSE
444
+ ;
445
+ ;
446
+ END_IF;
447
+ END_PROCEDURE;
448
+ PROCEDURE null_statement;
449
+ ;
450
+ END_PROCEDURE;
451
+ PROCEDURE call_statement;
452
+ empty_procedure;
453
+ END_PROCEDURE;
454
+ PROCEDURE call_parameter_statement;
455
+ empty_procedure(TRUE);
456
+ END_PROCEDURE;
457
+ PROCEDURE call_parameter2_statement;
458
+ empty_procedure(TRUE, TRUE);
459
+ END_PROCEDURE;
460
+ PROCEDURE call_insert_statement;
461
+ INSERT(TRUE);
462
+ END_PROCEDURE;
463
+ PROCEDURE call_remove_statement;
464
+ REMOVE(TRUE);
465
+ END_PROCEDURE;
466
+ PROCEDURE repeat_statement;
467
+ REPEAT;
468
+ ;
469
+ END_REPEAT;
470
+ END_PROCEDURE;
471
+ PROCEDURE repeat_variable_statement;
472
+ REPEAT test := 1 TO 9;
473
+ ;
474
+ END_REPEAT;
475
+ END_PROCEDURE;
476
+ PROCEDURE repeat_variable_increment_statement;
477
+ REPEAT test := 1 TO 9 BY 2;
478
+ ;
479
+ END_REPEAT;
480
+ END_PROCEDURE;
481
+ PROCEDURE repeat_while_statement;
482
+ REPEAT WHILE TRUE;
483
+ ;
484
+ END_REPEAT;
485
+ END_PROCEDURE;
486
+ PROCEDURE repeat_until_statement;
487
+ REPEAT UNTIL TRUE;
488
+ ;
489
+ END_REPEAT;
490
+ END_PROCEDURE;
491
+ PROCEDURE return_statement;
492
+ RETURN;
493
+ END_PROCEDURE;
494
+ PROCEDURE return_expression_statement;
495
+ RETURN (TRUE);
496
+ END_PROCEDURE;
497
+ PROCEDURE skip_statement;
498
+ SKIP;
499
+ END_PROCEDURE;
500
+ END_PROCEDURE;
501
+ PROCEDURE types;
502
+ TYPE binary_type = BINARY;
503
+ END_TYPE;
504
+ TYPE binary_width_type = BINARY (3);
505
+ END_TYPE;
506
+ TYPE binary_width_fixed_type = BINARY (3) FIXED;
507
+ END_TYPE;
508
+ TYPE boolean_type = BOOLEAN;
509
+ END_TYPE;
510
+ TYPE integer_type = INTEGER;
511
+ END_TYPE;
512
+ TYPE logical_type = LOGICAL;
513
+ END_TYPE;
514
+ TYPE number_type = NUMBER;
515
+ END_TYPE;
516
+ TYPE real_type = REAL;
517
+ END_TYPE;
518
+ TYPE real_precision_type = REAL (3);
519
+ END_TYPE;
520
+ TYPE string_type = STRING;
521
+ END_TYPE;
522
+ TYPE string_width_type = STRING (3);
523
+ END_TYPE;
524
+ TYPE string_width_fixed_type = STRING (3) FIXED;
525
+ END_TYPE;
526
+ TYPE array_type = ARRAY [1:9] OF STRING;
527
+ END_TYPE;
528
+ TYPE array_optional_type = ARRAY [1:9] OF OPTIONAL STRING;
529
+ END_TYPE;
530
+ TYPE array_unique_type = ARRAY [1:9] OF UNIQUE STRING;
531
+ END_TYPE;
532
+ TYPE array_optional_unique_type = ARRAY [1:9] OF OPTIONAL UNIQUE STRING;
533
+ END_TYPE;
534
+ TYPE bag_type = BAG OF STRING;
535
+ END_TYPE;
536
+ TYPE bag_bound_type = BAG [1:9] OF STRING;
537
+ END_TYPE;
538
+ TYPE list_type = LIST OF STRING;
539
+ END_TYPE;
540
+ TYPE list_bound_type = LIST [1:9] OF STRING;
541
+ END_TYPE;
542
+ TYPE list_unique_type = LIST OF UNIQUE STRING;
543
+ END_TYPE;
544
+ TYPE list_bound_unique_type = LIST [1:9] OF UNIQUE STRING;
545
+ END_TYPE;
546
+ TYPE set_type = SET OF STRING;
547
+ END_TYPE;
548
+ TYPE set_bound_type = SET [1:9] OF STRING;
549
+ END_TYPE;
550
+ TYPE select_type = SELECT;
551
+ END_TYPE;
552
+ TYPE select_extensible_type = EXTENSIBLE SELECT;
553
+ END_TYPE;
554
+ TYPE select_extensible_generic_entity_type = EXTENSIBLE GENERIC_ENTITY SELECT;
555
+ END_TYPE;
556
+ TYPE select_list_type = SELECT (empty_type);
557
+ END_TYPE;
558
+ TYPE select_extension_type_ref_type = SELECT BASED_ON select_type;
559
+ END_TYPE;
560
+ TYPE select_extension_type_ref_list_type = SELECT BASED_ON select_type WITH (empty_type);
561
+ END_TYPE;
562
+ TYPE enumeration_type = ENUMERATION;
563
+ END_TYPE;
564
+ TYPE enumeration_extensible_type = EXTENSIBLE ENUMERATION;
565
+ END_TYPE;
566
+ TYPE enumeration_list_type = ENUMERATION OF (test);
567
+ END_TYPE;
568
+ TYPE enumeration_extension_type_ref_type = ENUMERATION BASED_ON enumeration_type;
569
+ END_TYPE;
570
+ TYPE enumeration_extension_type_ref_list_type = ENUMERATION BASED_ON enumeration_type WITH (test);
571
+ END_TYPE;
572
+ END_PROCEDURE;
573
+ PROCEDURE expressions;
574
+ LOCAL
575
+ binary_expression : BOOLEAN := %011110000111100001111000;
576
+ integer_expression : BOOLEAN := 999;
577
+ true_logical_expression : BOOLEAN := TRUE;
578
+ false_logical_expression : BOOLEAN := FALSE;
579
+ unknown_logical_expression : BOOLEAN := UNKNOWN;
580
+ real_expression : BOOLEAN := 999.999;
581
+ simple_string_expression : BOOLEAN := 'xxx';
582
+ utf8_simple_string_expression : BOOLEAN := 'UTF8 test: Příliš žluťoučký kůň úpěl ďábelské ódy.';
583
+ encoded_string_expression : BOOLEAN := "000000780000007800000078";
584
+ const_e_expression : BOOLEAN := CONST_E;
585
+ indeterminate_expression : BOOLEAN := ?;
586
+ pi_expression : BOOLEAN := PI;
587
+ self_expression : BOOLEAN := SELF;
588
+ abs_expression : BOOLEAN := ABS(TRUE);
589
+ acos_expression : BOOLEAN := ACOS(TRUE);
590
+ asin_expression : BOOLEAN := ASIN(TRUE);
591
+ atan_expression : BOOLEAN := ATAN(TRUE);
592
+ blength_expression : BOOLEAN := BLENGTH(TRUE);
593
+ cos_expression : BOOLEAN := COS(TRUE);
594
+ exists_expression : BOOLEAN := EXISTS(TRUE);
595
+ exp_expression : BOOLEAN := EXP(TRUE);
596
+ format_expression : BOOLEAN := FORMAT(TRUE);
597
+ hibound_expression : BOOLEAN := HIBOUND(TRUE);
598
+ hiindex_expression : BOOLEAN := HIINDEX(TRUE);
599
+ length_expression : BOOLEAN := LENGTH(TRUE);
600
+ lobound_expression : BOOLEAN := LOBOUND(TRUE);
601
+ loindex_expression : BOOLEAN := LOINDEX(TRUE);
602
+ log_expression : BOOLEAN := LOG(TRUE);
603
+ log2_expression : BOOLEAN := LOG2(TRUE);
604
+ log10_expression : BOOLEAN := LOG10(TRUE);
605
+ nvl_expression : BOOLEAN := NVL(TRUE);
606
+ odd_expression : BOOLEAN := ODD(TRUE);
607
+ rolesof_expression : BOOLEAN := ROLESOF(TRUE);
608
+ sin_expression : BOOLEAN := SIN(TRUE);
609
+ sizeof_expression : BOOLEAN := SIZEOF(TRUE);
610
+ sqrt_expression : BOOLEAN := SQRT(TRUE);
611
+ tan_expression : BOOLEAN := TAN(TRUE);
612
+ typeof_expression : BOOLEAN := TYPEOF(TRUE);
613
+ usedin_expression : BOOLEAN := USEDIN(TRUE);
614
+ value_expression : BOOLEAN := VALUE(TRUE);
615
+ value_in_expression : BOOLEAN := VALUE_IN(TRUE);
616
+ value_unique_expression : BOOLEAN := VALUE_UNIQUE(TRUE);
617
+ plus_expression : BOOLEAN := +4;
618
+ plus_addition_expression : BOOLEAN := +(4 + 2);
619
+ minus_expression : BOOLEAN := -4;
620
+ minus_addition_expression : BOOLEAN := -(4 + 2);
621
+ addition_expression : BOOLEAN := 4 + 2;
622
+ subtraction_expression : BOOLEAN := 4 - 2;
623
+ multiplication_expression : BOOLEAN := 4 * 2;
624
+ real_division_expression : BOOLEAN := 4 / 2;
625
+ integer_division_expression : BOOLEAN := 4 DIV 2;
626
+ modulo_expression : BOOLEAN := 4 MOD 2;
627
+ exponentiation_expression : BOOLEAN := 4 ** 2;
628
+ addition_addition_expression : BOOLEAN := 4 + 2 + 1;
629
+ subtraction_subtraction_expression : BOOLEAN := 4 - 2 - 1;
630
+ addition_subtraction_expression : BOOLEAN := 4 + 2 - 1;
631
+ subtraction_addition_expression : BOOLEAN := 4 - 2 + 1;
632
+ addition_multiplication_expression : BOOLEAN := 8 + 4 * 2;
633
+ multiplication_addition_expression : BOOLEAN := 8 * 4 + 2;
634
+ parenthesis_addition_multiplication_expression : BOOLEAN := (8 + 4) * 2;
635
+ multiplication_parenthesis_addition_expression : BOOLEAN := 8 * (4 + 2);
636
+ equal_expression : BOOLEAN := 4 = 2;
637
+ not_equal_expression : BOOLEAN := 4 <> 2;
638
+ instance_equal_expression : BOOLEAN := 4 :=: 2;
639
+ instance_not_equal_expression : BOOLEAN := 4 :<>: 2;
640
+ lt_expression : BOOLEAN := 4 < 2;
641
+ gt_expression : BOOLEAN := 4 > 2;
642
+ lte_expression : BOOLEAN := 4 <= 2;
643
+ gte_expression : BOOLEAN := 4 >= 2;
644
+ not_expression : BOOLEAN := NOT TRUE;
645
+ not_or_expression : BOOLEAN := NOT (TRUE OR FALSE);
646
+ or_expression : BOOLEAN := TRUE OR FALSE;
647
+ and_expression : BOOLEAN := TRUE AND FALSE;
648
+ or_or_expression : BOOLEAN := TRUE OR FALSE OR TRUE;
649
+ and_and_expression : BOOLEAN := TRUE AND FALSE AND TRUE;
650
+ or_and_expression : BOOLEAN := TRUE OR FALSE AND TRUE;
651
+ and_or_expression : BOOLEAN := TRUE AND FALSE OR TRUE;
652
+ parenthesis_or_and_expression : BOOLEAN := (TRUE OR FALSE) AND TRUE;
653
+ and_parenthesis_or_expression : BOOLEAN := TRUE AND (FALSE OR TRUE);
654
+ combine_expression : BOOLEAN := test || test;
655
+ in_expression : BOOLEAN := TRUE IN [TRUE];
656
+ like_expression : BOOLEAN := 'xxx' LIKE 'xxx';
657
+ aggregate_initializer_expression : BOOLEAN := [4];
658
+ repeated_aggregate_initializer_expression : BOOLEAN := [4:2];
659
+ complex_aggregate_initializer_expression : BOOLEAN := [4 + 2];
660
+ complex_repeated_aggregate_initializer_expression : BOOLEAN := [4 + 2:4 + 2];
661
+ call_expression : BOOLEAN := parameter_function(TRUE);
662
+ simple_reference_expression : BOOLEAN := simple_string_expression;
663
+ attribute_reference_expression : BOOLEAN := simple_string_expression.test;
664
+ group_reference_expression : BOOLEAN := simple_string_expression\test;
665
+ index_reference_expression : BOOLEAN := simple_string_expression[1];
666
+ index2_reference_expression : BOOLEAN := simple_string_expression[1:9];
667
+ lt_lt_interval_expression : BOOLEAN := {1 < 5 < 9};
668
+ lte_lt_interval_expression : BOOLEAN := {1 <= 5 < 9};
669
+ lt_lte_interval_expression : BOOLEAN := {1 < 5 <= 9};
670
+ lte_lte_interval_expression : BOOLEAN := {1 <= 5 <= 9};
671
+ query_expression : BOOLEAN := QUERY(test <* test2 | TRUE);
672
+ END_LOCAL;
673
+ END_PROCEDURE;
405
674
  RULE empty_rule FOR (empty_entity);
406
675
  WHERE
407
676
  TRUE;
408
677
  END_RULE;
409
-
410
678
  RULE type_rule FOR (empty_entity);
411
679
  TYPE test = BOOLEAN;
412
680
  END_TYPE;
413
681
  WHERE
414
682
  TRUE;
415
683
  END_RULE;
416
-
417
684
  RULE constant_rule FOR (empty_entity);
418
685
  CONSTANT
419
686
  test : BOOLEAN := TRUE;
@@ -421,7 +688,6 @@ RULE constant_rule FOR (empty_entity);
421
688
  WHERE
422
689
  TRUE;
423
690
  END_RULE;
424
-
425
691
  RULE multiple_constant_rule FOR (empty_entity);
426
692
  CONSTANT
427
693
  test : BOOLEAN := TRUE;
@@ -430,7 +696,6 @@ RULE multiple_constant_rule FOR (empty_entity);
430
696
  WHERE
431
697
  TRUE;
432
698
  END_RULE;
433
-
434
699
  RULE variable_rule FOR (empty_entity);
435
700
  LOCAL
436
701
  test : BOOLEAN;
@@ -438,7 +703,6 @@ RULE variable_rule FOR (empty_entity);
438
703
  WHERE
439
704
  TRUE;
440
705
  END_RULE;
441
-
442
706
  RULE multiple_variable_rule FOR (empty_entity);
443
707
  LOCAL
444
708
  test : BOOLEAN;
@@ -447,7 +711,6 @@ RULE multiple_variable_rule FOR (empty_entity);
447
711
  WHERE
448
712
  TRUE;
449
713
  END_RULE;
450
-
451
714
  RULE multiple_shorthand_variable_rule FOR (empty_entity);
452
715
  LOCAL
453
716
  test : BOOLEAN;
@@ -456,7 +719,6 @@ RULE multiple_shorthand_variable_rule FOR (empty_entity);
456
719
  WHERE
457
720
  TRUE;
458
721
  END_RULE;
459
-
460
722
  RULE variable_expression_rule FOR (empty_entity);
461
723
  LOCAL
462
724
  test : BOOLEAN := TRUE;
@@ -464,7 +726,6 @@ RULE variable_expression_rule FOR (empty_entity);
464
726
  WHERE
465
727
  TRUE;
466
728
  END_RULE;
467
-
468
729
  RULE multiple_variable_expression_rule FOR (empty_entity);
469
730
  LOCAL
470
731
  test : BOOLEAN := TRUE;
@@ -473,7 +734,6 @@ RULE multiple_variable_expression_rule FOR (empty_entity);
473
734
  WHERE
474
735
  TRUE;
475
736
  END_RULE;
476
-
477
737
  RULE multiple_shorthand_variable_expression_rule FOR (empty_entity);
478
738
  LOCAL
479
739
  test : BOOLEAN := TRUE;
@@ -482,706 +742,13 @@ RULE multiple_shorthand_variable_expression_rule FOR (empty_entity);
482
742
  WHERE
483
743
  TRUE;
484
744
  END_RULE;
485
-
486
745
  RULE statement_rule FOR (empty_entity);
487
746
  ;
488
747
  WHERE
489
748
  TRUE;
490
749
  END_RULE;
491
-
492
- TYPE binary_type = BINARY;
493
- END_TYPE;
494
-
495
- TYPE binary_width_type = BINARY (3);
496
- END_TYPE;
497
-
498
- TYPE binary_width_fixed_type = BINARY (3) FIXED;
499
- END_TYPE;
500
-
501
- TYPE boolean_type = BOOLEAN;
502
- END_TYPE;
503
-
504
- TYPE integer_type = INTEGER;
505
- END_TYPE;
506
-
507
- TYPE logical_type = LOGICAL;
508
- END_TYPE;
509
-
510
- TYPE number_type = NUMBER;
511
- END_TYPE;
512
-
513
- TYPE real_type = REAL;
514
- END_TYPE;
515
-
516
- TYPE real_precision_type = REAL (3);
517
- END_TYPE;
518
-
519
- TYPE string_type = STRING;
520
- END_TYPE;
521
-
522
- TYPE string_width_type = STRING (3);
523
- END_TYPE;
524
-
525
- TYPE string_width_fixed_type = STRING (3) FIXED;
526
- END_TYPE;
527
-
528
- TYPE array_type = ARRAY [1:9] OF STRING;
529
- END_TYPE;
530
-
531
- TYPE array_optional_type = ARRAY [1:9] OF OPTIONAL STRING;
532
- END_TYPE;
533
-
534
- TYPE array_unique_type = ARRAY [1:9] OF UNIQUE STRING;
535
- END_TYPE;
536
-
537
- TYPE array_optional_unique_type = ARRAY [1:9] OF OPTIONAL UNIQUE STRING;
538
- END_TYPE;
539
-
540
- TYPE bag_type = BAG OF STRING;
541
- END_TYPE;
542
-
543
- TYPE bag_bound_type = BAG [1:9] OF STRING;
544
- END_TYPE;
545
-
546
- TYPE list_type = LIST OF STRING;
547
- END_TYPE;
548
-
549
- TYPE list_bound_type = LIST [1:9] OF STRING;
550
- END_TYPE;
551
-
552
- TYPE list_unique_type = LIST OF UNIQUE STRING;
553
- END_TYPE;
554
-
555
- TYPE list_bound_unique_type = LIST [1:9] OF UNIQUE STRING;
556
- END_TYPE;
557
-
558
- TYPE set_type = SET OF STRING;
559
- END_TYPE;
560
-
561
- TYPE set_bound_type = SET [1:9] OF STRING;
562
- END_TYPE;
563
-
564
- TYPE select_type = SELECT;
565
- END_TYPE;
566
-
567
- TYPE select_extensible_type = EXTENSIBLE SELECT;
568
- END_TYPE;
569
-
570
- TYPE select_extensible_generic_entity_type = EXTENSIBLE GENERIC_ENTITY SELECT;
571
- END_TYPE;
572
-
573
- TYPE select_list_type = SELECT (empty_type);
574
- END_TYPE;
575
-
576
- TYPE select_extension_type_ref_type = SELECT BASED_ON select_type;
577
- END_TYPE;
578
-
579
- TYPE select_extension_type_ref_list_type = SELECT BASED_ON select_type WITH (empty_type);
580
- END_TYPE;
581
-
582
- TYPE enumeration_type = ENUMERATION;
583
- END_TYPE;
584
-
585
- TYPE enumeration_extensible_type = EXTENSIBLE ENUMERATION;
586
- END_TYPE;
587
-
588
- TYPE enumeration_list_type = ENUMERATION OF (test);
589
- END_TYPE;
590
-
591
- TYPE enumeration_extension_type_ref_type = ENUMERATION BASED_ON enumeration_type;
592
- END_TYPE;
593
-
594
- TYPE enumeration_extension_type_ref_list_type = ENUMERATION BASED_ON enumeration_type WITH (test);
595
- END_TYPE;
596
-
597
- FUNCTION alias_simple_reference_statement : BOOLEAN;
598
- ALIAS test FOR test;
599
- ;
600
- END_ALIAS;
601
- END_FUNCTION;
602
-
603
- FUNCTION alias_attribute_reference_statement : BOOLEAN;
604
- ALIAS test FOR test.test;
605
- ;
606
- END_ALIAS;
607
- END_FUNCTION;
608
-
609
- FUNCTION alias_group_reference_statement : BOOLEAN;
610
- ALIAS test FOR test\test;
611
- ;
612
- END_ALIAS;
613
- END_FUNCTION;
614
-
615
- FUNCTION alias_index_reference_statement : BOOLEAN;
616
- ALIAS test FOR test[1];
617
- ;
618
- END_ALIAS;
619
- END_FUNCTION;
620
-
621
- FUNCTION alias_index2_reference_statement : BOOLEAN;
622
- ALIAS test FOR test[1:9];
623
- ;
624
- END_ALIAS;
625
- END_FUNCTION;
626
-
627
- FUNCTION assignment_simple_reference_statement : BOOLEAN;
628
- test := TRUE;
629
- END_FUNCTION;
630
-
631
- FUNCTION assignment_attribute_reference_statement : BOOLEAN;
632
- test.test := TRUE;
633
- END_FUNCTION;
634
-
635
- FUNCTION assignment_group_reference_statement : BOOLEAN;
636
- test\test := TRUE;
637
- END_FUNCTION;
638
-
639
- FUNCTION assignment_index_reference_statement : BOOLEAN;
640
- test[1] := TRUE;
641
- END_FUNCTION;
642
-
643
- FUNCTION assignment_index2_reference_statement : BOOLEAN;
644
- test[1:9] := TRUE;
645
- END_FUNCTION;
646
-
647
- FUNCTION case_statement : BOOLEAN;
648
- CASE test OF
649
- TRUE :
650
- ;
651
- END_CASE;
652
- END_FUNCTION;
653
-
654
- FUNCTION case_multiple_statement : BOOLEAN;
655
- CASE test OF
656
- TRUE :
657
- ;
658
- TRUE :
659
- ;
660
- END_CASE;
661
- END_FUNCTION;
662
-
663
- FUNCTION case_multiple_shorthand_statement : BOOLEAN;
664
- CASE test OF
665
- TRUE, TRUE :
666
- ;
667
- END_CASE;
668
- END_FUNCTION;
669
-
670
- FUNCTION case_otherwise_statement : BOOLEAN;
671
- CASE test OF
672
- TRUE :
673
- ;
674
- OTHERWISE :
675
- ;
676
- END_CASE;
677
- END_FUNCTION;
678
-
679
- FUNCTION compound_statement : BOOLEAN;
680
- BEGIN
681
- ;
682
- END;
683
- END_FUNCTION;
684
-
685
- FUNCTION escape_statement : BOOLEAN;
686
- ESCAPE;
687
- END_FUNCTION;
688
-
689
- FUNCTION if_statement : BOOLEAN;
690
- IF TRUE THEN
691
- ;
692
- END_IF;
693
- END_FUNCTION;
694
-
695
- FUNCTION if2_statement : BOOLEAN;
696
- IF TRUE THEN
697
- ;
698
- ;
699
- END_IF;
700
- END_FUNCTION;
701
-
702
- FUNCTION if_else_statement : BOOLEAN;
703
- IF TRUE THEN
704
- ;
705
- ELSE
706
- ;
707
- END_IF;
708
- END_FUNCTION;
709
-
710
- FUNCTION if2_else_statement : BOOLEAN;
711
- IF TRUE THEN
712
- ;
713
- ;
714
- ELSE
715
- ;
716
- END_IF;
717
- END_FUNCTION;
718
-
719
- FUNCTION if_else2_statement : BOOLEAN;
720
- IF TRUE THEN
721
- ;
722
- ELSE
723
- ;
724
- ;
725
- END_IF;
726
- END_FUNCTION;
727
-
728
- FUNCTION if2_else2_statement : BOOLEAN;
729
- IF TRUE THEN
730
- ;
731
- ;
732
- ELSE
733
- ;
734
- ;
735
- END_IF;
736
- END_FUNCTION;
737
-
738
- FUNCTION null_statement : BOOLEAN;
739
- ;
740
- END_FUNCTION;
741
-
742
- FUNCTION call_statement : BOOLEAN;
743
- empty_procedure;
744
- END_FUNCTION;
745
-
746
- FUNCTION call_parameter_statement : BOOLEAN;
747
- empty_procedure(TRUE);
748
- END_FUNCTION;
749
-
750
- FUNCTION call_parameter2_statement : BOOLEAN;
751
- empty_procedure(TRUE, TRUE);
752
- END_FUNCTION;
753
-
754
- FUNCTION call_insert_statement : BOOLEAN;
755
- INSERT(TRUE);
756
- END_FUNCTION;
757
-
758
- FUNCTION call_remove_statement : BOOLEAN;
759
- REMOVE(TRUE);
760
- END_FUNCTION;
761
-
762
- FUNCTION repeat_statement : BOOLEAN;
763
- REPEAT;
764
- ;
765
- END_REPEAT;
766
- END_FUNCTION;
767
-
768
- FUNCTION repeat_variable_statement : BOOLEAN;
769
- REPEAT test := 1 TO 9;
770
- ;
771
- END_REPEAT;
772
- END_FUNCTION;
773
-
774
- FUNCTION repeat_variable_increment_statement : BOOLEAN;
775
- REPEAT test := 1 TO 9 BY 2;
776
- ;
777
- END_REPEAT;
778
- END_FUNCTION;
779
-
780
- FUNCTION repeat_while_statement : BOOLEAN;
781
- REPEAT WHILE TRUE;
782
- ;
783
- END_REPEAT;
784
- END_FUNCTION;
785
-
786
- FUNCTION repeat_until_statement : BOOLEAN;
787
- REPEAT UNTIL TRUE;
788
- ;
789
- END_REPEAT;
790
- END_FUNCTION;
791
-
792
- FUNCTION return_statement : BOOLEAN;
793
- RETURN;
794
- END_FUNCTION;
795
-
796
- FUNCTION return_expression_statement : BOOLEAN;
797
- RETURN (TRUE);
798
- END_FUNCTION;
799
-
800
- FUNCTION skip_statement : BOOLEAN;
801
- SKIP;
802
- END_FUNCTION;
803
-
804
- FUNCTION binary_expression : BOOLEAN;
805
- RETURN (%011110000111100001111000);
806
- END_FUNCTION;
807
-
808
- FUNCTION integer_expression : BOOLEAN;
809
- RETURN (999);
810
- END_FUNCTION;
811
-
812
- FUNCTION true_logical_expression : BOOLEAN;
813
- RETURN (TRUE);
814
- END_FUNCTION;
815
-
816
- FUNCTION false_logical_expression : BOOLEAN;
817
- RETURN (FALSE);
818
- END_FUNCTION;
819
-
820
- FUNCTION unknown_logical_expression : BOOLEAN;
821
- RETURN (UNKNOWN);
822
- END_FUNCTION;
823
-
824
- FUNCTION real_expression : BOOLEAN;
825
- RETURN (999.999);
826
- END_FUNCTION;
827
-
828
- FUNCTION simple_string_expression : BOOLEAN;
829
- RETURN ('xxx');
830
- END_FUNCTION;
831
-
832
- FUNCTION encoded_string_expression : BOOLEAN;
833
- RETURN ("000000780000007800000078");
834
- END_FUNCTION;
835
-
836
- FUNCTION const_e_expression : BOOLEAN;
837
- RETURN (CONST_E);
838
- END_FUNCTION;
839
-
840
- FUNCTION indeterminate_expression : BOOLEAN;
841
- RETURN (?);
842
- END_FUNCTION;
843
-
844
- FUNCTION pi_expression : BOOLEAN;
845
- RETURN (PI);
846
- END_FUNCTION;
847
-
848
- FUNCTION self_expression : BOOLEAN;
849
- RETURN (SELF);
850
- END_FUNCTION;
851
-
852
- FUNCTION abs_expression : BOOLEAN;
853
- RETURN (ABS(TRUE));
854
- END_FUNCTION;
855
-
856
- FUNCTION acos_expression : BOOLEAN;
857
- RETURN (ACOS(TRUE));
858
- END_FUNCTION;
859
-
860
- FUNCTION asin_expression : BOOLEAN;
861
- RETURN (ASIN(TRUE));
862
- END_FUNCTION;
863
-
864
- FUNCTION atan_expression : BOOLEAN;
865
- RETURN (ATAN(TRUE));
866
- END_FUNCTION;
867
-
868
- FUNCTION blength_expression : BOOLEAN;
869
- RETURN (BLENGTH(TRUE));
870
- END_FUNCTION;
871
-
872
- FUNCTION cos_expression : BOOLEAN;
873
- RETURN (COS(TRUE));
874
- END_FUNCTION;
875
-
876
- FUNCTION exists_expression : BOOLEAN;
877
- RETURN (EXISTS(TRUE));
878
- END_FUNCTION;
879
-
880
- FUNCTION exp_expression : BOOLEAN;
881
- RETURN (EXP(TRUE));
882
- END_FUNCTION;
883
-
884
- FUNCTION format_expression : BOOLEAN;
885
- RETURN (FORMAT(TRUE));
886
- END_FUNCTION;
887
-
888
- FUNCTION hibound_expression : BOOLEAN;
889
- RETURN (HIBOUND(TRUE));
890
- END_FUNCTION;
891
-
892
- FUNCTION hiindex_expression : BOOLEAN;
893
- RETURN (HIINDEX(TRUE));
894
- END_FUNCTION;
895
-
896
- FUNCTION length_expression : BOOLEAN;
897
- RETURN (LENGTH(TRUE));
898
- END_FUNCTION;
899
-
900
- FUNCTION lobound_expression : BOOLEAN;
901
- RETURN (LOBOUND(TRUE));
902
- END_FUNCTION;
903
-
904
- FUNCTION loindex_expression : BOOLEAN;
905
- RETURN (LOINDEX(TRUE));
906
- END_FUNCTION;
907
-
908
- FUNCTION log_expression : BOOLEAN;
909
- RETURN (LOG(TRUE));
910
- END_FUNCTION;
911
-
912
- FUNCTION log2_expression : BOOLEAN;
913
- RETURN (LOG2(TRUE));
914
- END_FUNCTION;
915
-
916
- FUNCTION log10_expression : BOOLEAN;
917
- RETURN (LOG10(TRUE));
918
- END_FUNCTION;
919
-
920
- FUNCTION nvl_expression : BOOLEAN;
921
- RETURN (NVL(TRUE));
922
- END_FUNCTION;
923
-
924
- FUNCTION odd_expression : BOOLEAN;
925
- RETURN (ODD(TRUE));
926
- END_FUNCTION;
927
-
928
- FUNCTION rolesof_expression : BOOLEAN;
929
- RETURN (ROLESOF(TRUE));
930
- END_FUNCTION;
931
-
932
- FUNCTION sin_expression : BOOLEAN;
933
- RETURN (SIN(TRUE));
934
- END_FUNCTION;
935
-
936
- FUNCTION sizeof_expression : BOOLEAN;
937
- RETURN (SIZEOF(TRUE));
938
- END_FUNCTION;
939
-
940
- FUNCTION sqrt_expression : BOOLEAN;
941
- RETURN (SQRT(TRUE));
942
- END_FUNCTION;
943
-
944
- FUNCTION tan_expression : BOOLEAN;
945
- RETURN (TAN(TRUE));
946
- END_FUNCTION;
947
-
948
- FUNCTION typeof_expression : BOOLEAN;
949
- RETURN (TYPEOF(TRUE));
950
- END_FUNCTION;
951
-
952
- FUNCTION usedin_expression : BOOLEAN;
953
- RETURN (USEDIN(TRUE));
954
- END_FUNCTION;
955
-
956
- FUNCTION value_expression : BOOLEAN;
957
- RETURN (VALUE(TRUE));
958
- END_FUNCTION;
959
-
960
- FUNCTION value_in_expression : BOOLEAN;
961
- RETURN (VALUE_IN(TRUE));
962
- END_FUNCTION;
963
-
964
- FUNCTION value_unique_expression : BOOLEAN;
965
- RETURN (VALUE_UNIQUE(TRUE));
966
- END_FUNCTION;
967
-
968
- FUNCTION plus_expression : BOOLEAN;
969
- RETURN (+4);
970
- END_FUNCTION;
971
-
972
- FUNCTION plus_addition_expression : BOOLEAN;
973
- RETURN (+(4 + 2));
974
- END_FUNCTION;
975
-
976
- FUNCTION minus_expression : BOOLEAN;
977
- RETURN (-4);
978
- END_FUNCTION;
979
-
980
- FUNCTION minus_addition_expression : BOOLEAN;
981
- RETURN (-(4 + 2));
982
- END_FUNCTION;
983
-
984
- FUNCTION addition_expression : BOOLEAN;
985
- RETURN (4 + 2);
986
- END_FUNCTION;
987
-
988
- FUNCTION subtraction_expression : BOOLEAN;
989
- RETURN (4 - 2);
990
- END_FUNCTION;
991
-
992
- FUNCTION multiplication_expression : BOOLEAN;
993
- RETURN (4 * 2);
994
- END_FUNCTION;
995
-
996
- FUNCTION real_division_expression : BOOLEAN;
997
- RETURN (4 / 2);
998
- END_FUNCTION;
999
-
1000
- FUNCTION integer_division_expression : BOOLEAN;
1001
- RETURN (4 DIV 2);
1002
- END_FUNCTION;
1003
-
1004
- FUNCTION modulo_expression : BOOLEAN;
1005
- RETURN (4 MOD 2);
1006
- END_FUNCTION;
1007
-
1008
- FUNCTION exponentiation_expression : BOOLEAN;
1009
- RETURN (4 ** 2);
1010
- END_FUNCTION;
1011
-
1012
- FUNCTION addition_addition_expression : BOOLEAN;
1013
- RETURN (4 + 2 + 1);
1014
- END_FUNCTION;
1015
-
1016
- FUNCTION subtraction_subtraction_expression : BOOLEAN;
1017
- RETURN (4 - 2 - 1);
1018
- END_FUNCTION;
1019
-
1020
- FUNCTION addition_subtraction_expression : BOOLEAN;
1021
- RETURN (4 + 2 - 1);
1022
- END_FUNCTION;
1023
-
1024
- FUNCTION subtraction_addition_expression : BOOLEAN;
1025
- RETURN (4 - 2 + 1);
1026
- END_FUNCTION;
1027
-
1028
- FUNCTION addition_multiplication_expression : BOOLEAN;
1029
- RETURN (8 + 4 * 2);
1030
- END_FUNCTION;
1031
-
1032
- FUNCTION multiplication_addition_expression : BOOLEAN;
1033
- RETURN (8 * 4 + 2);
1034
- END_FUNCTION;
1035
-
1036
- FUNCTION parenthesis_addition_multiplication_expression : BOOLEAN;
1037
- RETURN ((8 + 4) * 2);
1038
- END_FUNCTION;
1039
-
1040
- FUNCTION multiplication_parenthesis_addition_expression : BOOLEAN;
1041
- RETURN (8 * (4 + 2));
1042
- END_FUNCTION;
1043
-
1044
- FUNCTION equal_expression : BOOLEAN;
1045
- RETURN (4 = 2);
1046
- END_FUNCTION;
1047
-
1048
- FUNCTION not_equal_expression : BOOLEAN;
1049
- RETURN (4 <> 2);
1050
- END_FUNCTION;
1051
-
1052
- FUNCTION instance_equal_expression : BOOLEAN;
1053
- RETURN (4 :=: 2);
1054
- END_FUNCTION;
1055
-
1056
- FUNCTION instance_not_equal_expression : BOOLEAN;
1057
- RETURN (4 :<>: 2);
1058
- END_FUNCTION;
1059
-
1060
- FUNCTION lt_expression : BOOLEAN;
1061
- RETURN (4 < 2);
1062
- END_FUNCTION;
1063
-
1064
- FUNCTION gt_expression : BOOLEAN;
1065
- RETURN (4 > 2);
1066
- END_FUNCTION;
1067
-
1068
- FUNCTION lte_expression : BOOLEAN;
1069
- RETURN (4 <= 2);
1070
- END_FUNCTION;
1071
-
1072
- FUNCTION gte_expression : BOOLEAN;
1073
- RETURN (4 >= 2);
1074
- END_FUNCTION;
1075
-
1076
- FUNCTION not_expression : BOOLEAN;
1077
- RETURN (NOT TRUE);
1078
- END_FUNCTION;
1079
-
1080
- FUNCTION not_or_expression : BOOLEAN;
1081
- RETURN (NOT (TRUE OR FALSE));
1082
- END_FUNCTION;
1083
-
1084
- FUNCTION or_expression : BOOLEAN;
1085
- RETURN (TRUE OR FALSE);
1086
- END_FUNCTION;
1087
-
1088
- FUNCTION and_expression : BOOLEAN;
1089
- RETURN (TRUE AND FALSE);
1090
- END_FUNCTION;
1091
-
1092
- FUNCTION or_or_expression : BOOLEAN;
1093
- RETURN (TRUE OR FALSE OR TRUE);
1094
- END_FUNCTION;
1095
-
1096
- FUNCTION and_and_expression : BOOLEAN;
1097
- RETURN (TRUE AND FALSE AND TRUE);
1098
- END_FUNCTION;
1099
-
1100
- FUNCTION or_and_expression : BOOLEAN;
1101
- RETURN (TRUE OR FALSE AND TRUE);
1102
- END_FUNCTION;
1103
-
1104
- FUNCTION and_or_expression : BOOLEAN;
1105
- RETURN (TRUE AND FALSE OR TRUE);
1106
- END_FUNCTION;
1107
-
1108
- FUNCTION parenthesis_or_and_expression : BOOLEAN;
1109
- RETURN ((TRUE OR FALSE) AND TRUE);
1110
- END_FUNCTION;
1111
-
1112
- FUNCTION and_parenthesis_or_expression : BOOLEAN;
1113
- RETURN (TRUE AND (FALSE OR TRUE));
1114
- END_FUNCTION;
1115
-
1116
- FUNCTION combine_expression : BOOLEAN;
1117
- RETURN (test || test);
1118
- END_FUNCTION;
1119
-
1120
- FUNCTION in_expression : BOOLEAN;
1121
- RETURN (TRUE IN [TRUE]);
1122
- END_FUNCTION;
1123
-
1124
- FUNCTION like_expression : BOOLEAN;
1125
- RETURN ('xxx' LIKE 'xxx');
1126
- END_FUNCTION;
1127
-
1128
- FUNCTION aggregate_initializer_expression : BOOLEAN;
1129
- RETURN ([4]);
1130
- END_FUNCTION;
1131
-
1132
- FUNCTION repeated_aggregate_initializer_expression : BOOLEAN;
1133
- RETURN ([4:2]);
1134
- END_FUNCTION;
1135
-
1136
- FUNCTION complex_aggregate_initializer_expression : BOOLEAN;
1137
- RETURN ([4 + 2]);
1138
- END_FUNCTION;
1139
-
1140
- FUNCTION complex_repeated_aggregate_initializer_expression : BOOLEAN;
1141
- RETURN ([4 + 2:4 + 2]);
1142
- END_FUNCTION;
1143
-
1144
- FUNCTION call_expression : BOOLEAN;
1145
- RETURN (parameter_function(TRUE));
1146
- END_FUNCTION;
1147
-
1148
- FUNCTION simple_reference_expression : BOOLEAN;
1149
- RETURN (simple_string_expression);
1150
- END_FUNCTION;
1151
-
1152
- FUNCTION attribute_reference_expression : BOOLEAN;
1153
- RETURN (simple_string_expression.test);
1154
- END_FUNCTION;
1155
-
1156
- FUNCTION group_reference_expression : BOOLEAN;
1157
- RETURN (simple_string_expression\test);
1158
- END_FUNCTION;
1159
-
1160
- FUNCTION index_reference_expression : BOOLEAN;
1161
- RETURN (simple_string_expression[1]);
1162
- END_FUNCTION;
1163
-
1164
- FUNCTION index2_reference_expression : BOOLEAN;
1165
- RETURN (simple_string_expression[1:9]);
1166
- END_FUNCTION;
1167
-
1168
- FUNCTION lt_lt_interval_expression : BOOLEAN;
1169
- RETURN ({1 < 5 < 9});
1170
- END_FUNCTION;
1171
-
1172
- FUNCTION lte_lt_interval_expression : BOOLEAN;
1173
- RETURN ({1 <= 5 < 9});
1174
- END_FUNCTION;
1175
-
1176
- FUNCTION lt_lte_interval_expression : BOOLEAN;
1177
- RETURN ({1 < 5 <= 9});
1178
- END_FUNCTION;
1179
-
1180
- FUNCTION lte_lte_interval_expression : BOOLEAN;
1181
- RETURN ({1 <= 5 <= 9});
1182
- END_FUNCTION;
1183
-
1184
- FUNCTION query_expression : BOOLEAN;
1185
- RETURN (QUERY(test <* test2 | TRUE));
1186
- END_FUNCTION;
750
+ RULE where_label_rule FOR (empty_entity);
751
+ WHERE
752
+ WR1 : TRUE;
753
+ END_RULE;
1187
754
  END_SCHEMA;