expressir 0.2.17 → 0.2.25

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +5 -0
  3. data/.github/workflows/release.yml +31 -3
  4. data/README.adoc +3 -3
  5. data/exe/format +45 -29
  6. data/ext/express-parser/extconf.rb +2 -0
  7. data/lib/expressir/express_exp/cache.rb +48 -0
  8. data/lib/expressir/express_exp/formatter.rb +2 -2
  9. data/lib/expressir/express_exp/hyperlink_formatter.rb +10 -15
  10. data/lib/expressir/express_exp/model_visitor.rb +23 -0
  11. data/lib/expressir/express_exp/parser.rb +18 -3
  12. data/lib/expressir/express_exp/resolve_references_model_visitor.rb +33 -0
  13. data/lib/expressir/express_exp/visitor.rb +19 -18
  14. data/lib/expressir/model.rb +3 -1
  15. data/lib/expressir/model/attribute.rb +12 -5
  16. data/lib/expressir/model/cache.rb +13 -0
  17. data/lib/expressir/model/constant.rb +9 -2
  18. data/lib/expressir/model/entity.rb +10 -8
  19. data/lib/expressir/model/enumeration_item.rb +7 -0
  20. data/lib/expressir/model/expressions/aggregate_initializer.rb +1 -1
  21. data/lib/expressir/model/expressions/aggregate_item.rb +2 -2
  22. data/lib/expressir/model/expressions/attribute_reference.rb +2 -2
  23. data/lib/expressir/model/expressions/binary_expression.rb +3 -3
  24. data/lib/expressir/model/expressions/call.rb +2 -2
  25. data/lib/expressir/model/expressions/entity_constructor.rb +2 -2
  26. data/lib/expressir/model/expressions/group_reference.rb +2 -2
  27. data/lib/expressir/model/expressions/index_reference.rb +3 -3
  28. data/lib/expressir/model/expressions/interval.rb +5 -5
  29. data/lib/expressir/model/expressions/query_expression.rb +5 -3
  30. data/lib/expressir/model/expressions/simple_reference.rb +5 -1
  31. data/lib/expressir/model/expressions/unary_expression.rb +2 -2
  32. data/lib/expressir/model/function.rb +13 -11
  33. data/lib/expressir/model/identifier.rb +6 -3
  34. data/lib/expressir/model/interface.rb +3 -3
  35. data/lib/expressir/model/interface_item.rb +2 -2
  36. data/lib/expressir/model/interfaced_item.rb +9 -8
  37. data/lib/expressir/model/literals/binary.rb +1 -1
  38. data/lib/expressir/model/literals/integer.rb +1 -1
  39. data/lib/expressir/model/literals/logical.rb +1 -1
  40. data/lib/expressir/model/literals/real.rb +1 -1
  41. data/lib/expressir/model/literals/string.rb +2 -2
  42. data/lib/expressir/model/model_element.rb +46 -21
  43. data/lib/expressir/model/parameter.rb +9 -2
  44. data/lib/expressir/model/procedure.rb +12 -10
  45. data/lib/expressir/model/{informal_proposition.rb → remark_item.rb} +3 -6
  46. data/lib/expressir/model/repository.rb +1 -1
  47. data/lib/expressir/model/rule.rb +14 -12
  48. data/lib/expressir/model/schema.rb +13 -11
  49. data/lib/expressir/model/statements/alias.rb +5 -3
  50. data/lib/expressir/model/statements/assignment.rb +2 -2
  51. data/lib/expressir/model/statements/call.rb +2 -2
  52. data/lib/expressir/model/statements/case.rb +3 -3
  53. data/lib/expressir/model/statements/case_action.rb +2 -2
  54. data/lib/expressir/model/statements/compound.rb +1 -1
  55. data/lib/expressir/model/statements/if.rb +3 -3
  56. data/lib/expressir/model/statements/repeat.rb +9 -7
  57. data/lib/expressir/model/statements/return.rb +1 -1
  58. data/lib/expressir/model/subtype_constraint.rb +11 -4
  59. data/lib/expressir/model/type.rb +6 -4
  60. data/lib/expressir/model/types/aggregate.rb +8 -1
  61. data/lib/expressir/model/types/array.rb +5 -5
  62. data/lib/expressir/model/types/bag.rb +3 -3
  63. data/lib/expressir/model/types/binary.rb +2 -2
  64. data/lib/expressir/model/types/enumeration.rb +4 -4
  65. data/lib/expressir/model/types/generic.rb +7 -0
  66. data/lib/expressir/model/types/generic_entity.rb +7 -0
  67. data/lib/expressir/model/types/list.rb +4 -4
  68. data/lib/expressir/model/types/real.rb +1 -1
  69. data/lib/expressir/model/types/select.rb +5 -5
  70. data/lib/expressir/model/types/set.rb +3 -3
  71. data/lib/expressir/model/types/string.rb +2 -2
  72. data/lib/expressir/model/unique.rb +8 -1
  73. data/lib/expressir/model/variable.rb +9 -2
  74. data/lib/expressir/model/where.rb +8 -1
  75. data/lib/expressir/version.rb +1 -1
  76. data/original/examples/syntax/multiple.yaml +18 -0
  77. data/original/examples/syntax/remark.exp +12 -10
  78. data/original/examples/syntax/remark.yaml +24 -3
  79. data/original/examples/syntax/remark_formatted.exp +3 -1
  80. data/original/examples/syntax/single.exp +1 -0
  81. data/original/examples/syntax/single.yaml +7 -0
  82. data/original/examples/syntax/single_formatted.exp +4 -0
  83. data/original/examples/syntax/single_formatted.yaml +15 -0
  84. data/original/examples/syntax/syntax.yaml +82 -0
  85. data/original/examples/syntax/syntax_hyperlink_formatted.exp +902 -0
  86. data/spec/expressir/express_exp/cache_spec.rb +64 -0
  87. data/spec/expressir/express_exp/formatter_spec.rb +17 -0
  88. data/spec/expressir/express_exp/parser_spec.rb +9 -9
  89. data/spec/expressir/model/model_element_spec.rb +32 -29
  90. metadata +9 -3
@@ -0,0 +1,902 @@
1
+ SCHEMA syntax_schema 'version';
2
+
3
+ USE FROM contract_schema;
4
+ USE FROM contract_schema
5
+ (contract);
6
+ USE FROM contract_schema
7
+ (contract,
8
+ contract2);
9
+ USE FROM contract_schema
10
+ (contract AS contract2);
11
+ REFERENCE FROM contract_schema;
12
+ REFERENCE FROM contract_schema
13
+ (contract);
14
+ REFERENCE FROM contract_schema
15
+ (contract,
16
+ contract2);
17
+ REFERENCE FROM contract_schema
18
+ (contract AS contract2);
19
+
20
+ CONSTANT
21
+ empty_constant : BOOLEAN := TRUE;
22
+ END_CONSTANT;
23
+
24
+ TYPE empty_type = BOOLEAN;
25
+ END_TYPE;
26
+
27
+ TYPE where_type = BOOLEAN;
28
+ WHERE
29
+ TRUE;
30
+ END_TYPE;
31
+
32
+ TYPE where_label_type = BOOLEAN;
33
+ WHERE
34
+ WR1: TRUE;
35
+ END_TYPE;
36
+
37
+ ENTITY empty_entity;
38
+ END_ENTITY;
39
+
40
+ ENTITY abstract_entity
41
+ ABSTRACT SUPERTYPE;
42
+ END_ENTITY;
43
+
44
+ ENTITY abstract_supertype_entity
45
+ ABSTRACT SUPERTYPE;
46
+ END_ENTITY;
47
+
48
+ ENTITY abstract_supertype_constraint_entity
49
+ ABSTRACT SUPERTYPE OF ({{{<<express:syntax_schema.empty_entity,empty_entity>>}}});
50
+ END_ENTITY;
51
+
52
+ ENTITY supertype_constraint_entity
53
+ SUPERTYPE OF ({{{<<express:syntax_schema.empty_entity,empty_entity>>}}});
54
+ END_ENTITY;
55
+
56
+ ENTITY subtype_entity
57
+ SUBTYPE OF ({{{<<express:syntax_schema.empty_entity,empty_entity>>}}});
58
+ END_ENTITY;
59
+
60
+ ENTITY supertype_constraint_subtype_entity
61
+ SUPERTYPE OF ({{{<<express:syntax_schema.empty_entity,empty_entity>>}}})
62
+ SUBTYPE OF ({{{<<express:syntax_schema.empty_entity,empty_entity>>}}});
63
+ END_ENTITY;
64
+
65
+ ENTITY attribute_entity;
66
+ test : BOOLEAN;
67
+ END_ENTITY;
68
+
69
+ ENTITY attribute_optional_entity;
70
+ test : OPTIONAL BOOLEAN;
71
+ END_ENTITY;
72
+
73
+ ENTITY attribute_multiple_entity;
74
+ test : BOOLEAN;
75
+ test2 : BOOLEAN;
76
+ END_ENTITY;
77
+
78
+ ENTITY attribute_multiple_shorthand_entity;
79
+ test : BOOLEAN;
80
+ test2 : BOOLEAN;
81
+ END_ENTITY;
82
+
83
+ ENTITY attribute_redeclared_entity
84
+ SUBTYPE OF ({{{<<express:syntax_schema.attribute_entity,attribute_entity>>}}});
85
+ SELF\{{{<<express:syntax_schema.attribute_entity,attribute_entity>>}}}.test : BOOLEAN;
86
+ END_ENTITY;
87
+
88
+ ENTITY attribute_redeclared_renamed_entity
89
+ SUBTYPE OF ({{{<<express:syntax_schema.attribute_entity,attribute_entity>>}}});
90
+ SELF\{{{<<express:syntax_schema.attribute_entity,attribute_entity>>}}}.test RENAMED test2 : BOOLEAN;
91
+ END_ENTITY;
92
+
93
+ ENTITY derived_attribute_entity;
94
+ DERIVE
95
+ test : BOOLEAN := TRUE;
96
+ END_ENTITY;
97
+
98
+ ENTITY derived_attribute_redeclared_entity
99
+ SUBTYPE OF ({{{<<express:syntax_schema.attribute_entity,attribute_entity>>}}});
100
+ DERIVE
101
+ SELF\{{{<<express:syntax_schema.attribute_entity,attribute_entity>>}}}.test : BOOLEAN := TRUE;
102
+ END_ENTITY;
103
+
104
+ ENTITY derived_attribute_redeclared_renamed_entity
105
+ SUBTYPE OF ({{{<<express:syntax_schema.attribute_entity,attribute_entity>>}}});
106
+ DERIVE
107
+ SELF\{{{<<express:syntax_schema.attribute_entity,attribute_entity>>}}}.test RENAMED test2 : BOOLEAN := TRUE;
108
+ END_ENTITY;
109
+
110
+ ENTITY inverse_attribute_entity;
111
+ INVERSE
112
+ test : {{{<<express:syntax_schema.attribute_entity,attribute_entity>>}}} FOR test;
113
+ END_ENTITY;
114
+
115
+ ENTITY inverse_attribute_entity_entity;
116
+ INVERSE
117
+ test : {{{<<express:syntax_schema.attribute_entity,attribute_entity>>}}} FOR attribute_entity.test;
118
+ END_ENTITY;
119
+
120
+ ENTITY inverse_attribute_set_entity;
121
+ INVERSE
122
+ test : SET OF {{{<<express:syntax_schema.attribute_entity,attribute_entity>>}}} FOR test;
123
+ END_ENTITY;
124
+
125
+ ENTITY inverse_attribute_set_bound_entity;
126
+ INVERSE
127
+ test : SET [1:9] OF {{{<<express:syntax_schema.attribute_entity,attribute_entity>>}}} FOR test;
128
+ END_ENTITY;
129
+
130
+ ENTITY inverse_attribute_bag_entity;
131
+ INVERSE
132
+ test : BAG OF {{{<<express:syntax_schema.attribute_entity,attribute_entity>>}}} FOR test;
133
+ END_ENTITY;
134
+
135
+ ENTITY inverse_attribute_bag_bound_entity;
136
+ INVERSE
137
+ test : BAG [1:9] OF {{{<<express:syntax_schema.attribute_entity,attribute_entity>>}}} FOR test;
138
+ END_ENTITY;
139
+
140
+ ENTITY inverse_attribute_redeclared_entity
141
+ SUBTYPE OF ({{{<<express:syntax_schema.attribute_entity,attribute_entity>>}}});
142
+ INVERSE
143
+ SELF\{{{<<express:syntax_schema.attribute_entity,attribute_entity>>}}}.test : {{{<<express:syntax_schema.attribute_entity,attribute_entity>>}}} FOR test;
144
+ END_ENTITY;
145
+
146
+ ENTITY inverse_attribute_redeclared_renamed_entity
147
+ SUBTYPE OF ({{{<<express:syntax_schema.attribute_entity,attribute_entity>>}}});
148
+ INVERSE
149
+ SELF\{{{<<express:syntax_schema.attribute_entity,attribute_entity>>}}}.test RENAMED test2 : {{{<<express:syntax_schema.attribute_entity,attribute_entity>>}}} FOR test;
150
+ END_ENTITY;
151
+
152
+ ENTITY unique_entity;
153
+ test : BOOLEAN;
154
+ UNIQUE
155
+ test;
156
+ END_ENTITY;
157
+
158
+ ENTITY unique_label_entity;
159
+ test : BOOLEAN;
160
+ UNIQUE
161
+ UR1: test;
162
+ END_ENTITY;
163
+
164
+ ENTITY unique_redeclared_entity
165
+ SUBTYPE OF ({{{<<express:syntax_schema.attribute_entity,attribute_entity>>}}});
166
+ UNIQUE
167
+ SELF\{{{<<express:syntax_schema.attribute_entity,attribute_entity>>}}}.test;
168
+ END_ENTITY;
169
+
170
+ ENTITY unique_label_redeclared_entity
171
+ SUBTYPE OF ({{{<<express:syntax_schema.attribute_entity,attribute_entity>>}}});
172
+ UNIQUE
173
+ UR1: SELF\{{{<<express:syntax_schema.attribute_entity,attribute_entity>>}}}.test;
174
+ END_ENTITY;
175
+
176
+ ENTITY where_entity;
177
+ WHERE
178
+ TRUE;
179
+ END_ENTITY;
180
+
181
+ ENTITY where_label_entity;
182
+ WHERE
183
+ WR1: TRUE;
184
+ END_ENTITY;
185
+
186
+ SUBTYPE_CONSTRAINT empty_subtype_constraint FOR {{{<<express:syntax_schema.empty_entity,empty_entity>>}}};
187
+ END_SUBTYPE_CONSTRAINT;
188
+
189
+ SUBTYPE_CONSTRAINT abstract_supertype_subtype_constraint FOR {{{<<express:syntax_schema.empty_entity,empty_entity>>}}};
190
+ ABSTRACT SUPERTYPE;
191
+ END_SUBTYPE_CONSTRAINT;
192
+
193
+ SUBTYPE_CONSTRAINT total_over_subtype_constraint FOR {{{<<express:syntax_schema.empty_entity,empty_entity>>}}};
194
+ TOTAL_OVER(a);
195
+ END_SUBTYPE_CONSTRAINT;
196
+
197
+ SUBTYPE_CONSTRAINT supertype_expression_subtype_constraint FOR {{{<<express:syntax_schema.empty_entity,empty_entity>>}}};
198
+ a;
199
+ END_SUBTYPE_CONSTRAINT;
200
+
201
+ SUBTYPE_CONSTRAINT supertype_expression_andor_subtype_constraint FOR {{{<<express:syntax_schema.empty_entity,empty_entity>>}}};
202
+ a ANDOR b;
203
+ END_SUBTYPE_CONSTRAINT;
204
+
205
+ SUBTYPE_CONSTRAINT supertype_expression_and_subtype_constraint FOR {{{<<express:syntax_schema.empty_entity,empty_entity>>}}};
206
+ a AND b;
207
+ END_SUBTYPE_CONSTRAINT;
208
+
209
+ SUBTYPE_CONSTRAINT supertype_expression_andor_and_subtype_constraint FOR {{{<<express:syntax_schema.empty_entity,empty_entity>>}}};
210
+ a ANDOR b AND c;
211
+ END_SUBTYPE_CONSTRAINT;
212
+
213
+ SUBTYPE_CONSTRAINT supertype_expression_and_andor_subtype_constraint FOR {{{<<express:syntax_schema.empty_entity,empty_entity>>}}};
214
+ a AND b ANDOR c;
215
+ END_SUBTYPE_CONSTRAINT;
216
+
217
+ SUBTYPE_CONSTRAINT supertype_expression_parenthesis_andor_and_subtype_constraint FOR {{{<<express:syntax_schema.empty_entity,empty_entity>>}}};
218
+ (a ANDOR b) AND c;
219
+ END_SUBTYPE_CONSTRAINT;
220
+
221
+ SUBTYPE_CONSTRAINT supertype_expression_and_parenthesis_andor_subtype_constraint FOR {{{<<express:syntax_schema.empty_entity,empty_entity>>}}};
222
+ a AND (b ANDOR c);
223
+ END_SUBTYPE_CONSTRAINT;
224
+
225
+ SUBTYPE_CONSTRAINT supertype_expression_oneof_subtype_constraint FOR {{{<<express:syntax_schema.empty_entity,empty_entity>>}}};
226
+ ONEOF(a, b);
227
+ END_SUBTYPE_CONSTRAINT;
228
+
229
+ SUBTYPE_CONSTRAINT supertype_expression_and_oneof_subtype_constraint FOR {{{<<express:syntax_schema.empty_entity,empty_entity>>}}};
230
+ a AND ONEOF(b, c);
231
+ END_SUBTYPE_CONSTRAINT;
232
+
233
+ SUBTYPE_CONSTRAINT supertype_expression_andor_oneof_subtype_constraint FOR {{{<<express:syntax_schema.empty_entity,empty_entity>>}}};
234
+ a ANDOR ONEOF(b, c);
235
+ END_SUBTYPE_CONSTRAINT;
236
+
237
+ SUBTYPE_CONSTRAINT supertype_expression_oneof_and_subtype_constraint FOR {{{<<express:syntax_schema.empty_entity,empty_entity>>}}};
238
+ ONEOF(a, b) AND c;
239
+ END_SUBTYPE_CONSTRAINT;
240
+
241
+ SUBTYPE_CONSTRAINT supertype_expression_oneof_andor_subtype_constraint FOR {{{<<express:syntax_schema.empty_entity,empty_entity>>}}};
242
+ ONEOF(a, b) ANDOR c;
243
+ END_SUBTYPE_CONSTRAINT;
244
+
245
+ SUBTYPE_CONSTRAINT supertype_expression_oneof_and_oneof_subtype_constraint FOR {{{<<express:syntax_schema.empty_entity,empty_entity>>}}};
246
+ ONEOF(a, b) AND ONEOF(c, d);
247
+ END_SUBTYPE_CONSTRAINT;
248
+
249
+ SUBTYPE_CONSTRAINT supertype_expression_oneof_andor_oneof_subtype_constraint FOR {{{<<express:syntax_schema.empty_entity,empty_entity>>}}};
250
+ ONEOF(a, b) ANDOR ONEOF(c, d);
251
+ END_SUBTYPE_CONSTRAINT;
252
+
253
+ FUNCTION empty_function : BOOLEAN;
254
+ ;
255
+ END_FUNCTION;
256
+
257
+ FUNCTION parameter_function(test : BOOLEAN) : BOOLEAN;
258
+ ;
259
+ END_FUNCTION;
260
+
261
+ FUNCTION multiple_parameter_function(test : BOOLEAN;
262
+ test2 : BOOLEAN) : BOOLEAN;
263
+ ;
264
+ END_FUNCTION;
265
+
266
+ FUNCTION multiple_shorthand_parameter_function(test : BOOLEAN;
267
+ test2 : BOOLEAN) : BOOLEAN;
268
+ ;
269
+ END_FUNCTION;
270
+
271
+ FUNCTION type_function : BOOLEAN;
272
+ TYPE test = BOOLEAN;
273
+ END_TYPE;
274
+ ;
275
+ END_FUNCTION;
276
+
277
+ FUNCTION constant_function : BOOLEAN;
278
+ CONSTANT
279
+ test : BOOLEAN := TRUE;
280
+ END_CONSTANT;
281
+ ;
282
+ END_FUNCTION;
283
+
284
+ FUNCTION multiple_constant_function : BOOLEAN;
285
+ CONSTANT
286
+ test : BOOLEAN := TRUE;
287
+ test2 : BOOLEAN := TRUE;
288
+ END_CONSTANT;
289
+ ;
290
+ END_FUNCTION;
291
+
292
+ FUNCTION variable_function : BOOLEAN;
293
+ LOCAL
294
+ test : BOOLEAN;
295
+ END_LOCAL;
296
+ ;
297
+ END_FUNCTION;
298
+
299
+ FUNCTION multiple_variable_function : BOOLEAN;
300
+ LOCAL
301
+ test : BOOLEAN;
302
+ test2 : BOOLEAN;
303
+ END_LOCAL;
304
+ ;
305
+ END_FUNCTION;
306
+
307
+ FUNCTION multiple_shorthand_variable_function : BOOLEAN;
308
+ LOCAL
309
+ test : BOOLEAN;
310
+ test2 : BOOLEAN;
311
+ END_LOCAL;
312
+ ;
313
+ END_FUNCTION;
314
+
315
+ FUNCTION variable_expression_function : BOOLEAN;
316
+ LOCAL
317
+ test : BOOLEAN := TRUE;
318
+ END_LOCAL;
319
+ ;
320
+ END_FUNCTION;
321
+
322
+ FUNCTION multiple_variable_expression_function : BOOLEAN;
323
+ LOCAL
324
+ test : BOOLEAN := TRUE;
325
+ test2 : BOOLEAN := TRUE;
326
+ END_LOCAL;
327
+ ;
328
+ END_FUNCTION;
329
+
330
+ FUNCTION multiple_shorthand_variable_expression_function : BOOLEAN;
331
+ LOCAL
332
+ test : BOOLEAN := TRUE;
333
+ test2 : BOOLEAN := TRUE;
334
+ END_LOCAL;
335
+ ;
336
+ END_FUNCTION;
337
+
338
+ RULE empty_rule FOR ({{{<<express:syntax_schema.empty_entity,empty_entity>>}}});
339
+ WHERE
340
+ TRUE;
341
+ END_RULE;
342
+
343
+ RULE type_rule FOR ({{{<<express:syntax_schema.empty_entity,empty_entity>>}}});
344
+ TYPE test = BOOLEAN;
345
+ END_TYPE;
346
+ WHERE
347
+ TRUE;
348
+ END_RULE;
349
+
350
+ RULE constant_rule FOR ({{{<<express:syntax_schema.empty_entity,empty_entity>>}}});
351
+ CONSTANT
352
+ test : BOOLEAN := TRUE;
353
+ END_CONSTANT;
354
+ WHERE
355
+ TRUE;
356
+ END_RULE;
357
+
358
+ RULE multiple_constant_rule FOR ({{{<<express:syntax_schema.empty_entity,empty_entity>>}}});
359
+ CONSTANT
360
+ test : BOOLEAN := TRUE;
361
+ test2 : BOOLEAN := TRUE;
362
+ END_CONSTANT;
363
+ WHERE
364
+ TRUE;
365
+ END_RULE;
366
+
367
+ RULE variable_rule FOR ({{{<<express:syntax_schema.empty_entity,empty_entity>>}}});
368
+ LOCAL
369
+ test : BOOLEAN;
370
+ END_LOCAL;
371
+ WHERE
372
+ TRUE;
373
+ END_RULE;
374
+
375
+ RULE multiple_variable_rule FOR ({{{<<express:syntax_schema.empty_entity,empty_entity>>}}});
376
+ LOCAL
377
+ test : BOOLEAN;
378
+ test2 : BOOLEAN;
379
+ END_LOCAL;
380
+ WHERE
381
+ TRUE;
382
+ END_RULE;
383
+
384
+ RULE multiple_shorthand_variable_rule FOR ({{{<<express:syntax_schema.empty_entity,empty_entity>>}}});
385
+ LOCAL
386
+ test : BOOLEAN;
387
+ test2 : BOOLEAN;
388
+ END_LOCAL;
389
+ WHERE
390
+ TRUE;
391
+ END_RULE;
392
+
393
+ RULE variable_expression_rule FOR ({{{<<express:syntax_schema.empty_entity,empty_entity>>}}});
394
+ LOCAL
395
+ test : BOOLEAN := TRUE;
396
+ END_LOCAL;
397
+ WHERE
398
+ TRUE;
399
+ END_RULE;
400
+
401
+ RULE multiple_variable_expression_rule FOR ({{{<<express:syntax_schema.empty_entity,empty_entity>>}}});
402
+ LOCAL
403
+ test : BOOLEAN := TRUE;
404
+ test2 : BOOLEAN := TRUE;
405
+ END_LOCAL;
406
+ WHERE
407
+ TRUE;
408
+ END_RULE;
409
+
410
+ RULE multiple_shorthand_variable_expression_rule FOR ({{{<<express:syntax_schema.empty_entity,empty_entity>>}}});
411
+ LOCAL
412
+ test : BOOLEAN := TRUE;
413
+ test2 : BOOLEAN := TRUE;
414
+ END_LOCAL;
415
+ WHERE
416
+ TRUE;
417
+ END_RULE;
418
+
419
+ RULE statement_rule FOR ({{{<<express:syntax_schema.empty_entity,empty_entity>>}}});
420
+ ;
421
+ WHERE
422
+ TRUE;
423
+ END_RULE;
424
+
425
+ RULE where_label_rule FOR ({{{<<express:syntax_schema.empty_entity,empty_entity>>}}});
426
+ WHERE
427
+ WR1: TRUE;
428
+ END_RULE;
429
+
430
+ PROCEDURE empty_procedure;
431
+ END_PROCEDURE;
432
+
433
+ PROCEDURE parameter_procedure(test : BOOLEAN);
434
+ END_PROCEDURE;
435
+
436
+ PROCEDURE multiple_parameter_procedure(test : BOOLEAN;
437
+ test2 : BOOLEAN);
438
+ END_PROCEDURE;
439
+
440
+ PROCEDURE multiple_shorthand_parameter_procedure(test : BOOLEAN;
441
+ test2 : BOOLEAN);
442
+ END_PROCEDURE;
443
+
444
+ PROCEDURE variable_parameter_procedure(VAR test : BOOLEAN);
445
+ END_PROCEDURE;
446
+
447
+ PROCEDURE multiple_variable_parameter_procedure(VAR test : BOOLEAN;
448
+ test2 : BOOLEAN);
449
+ END_PROCEDURE;
450
+
451
+ PROCEDURE multiple_variable_parameter2_procedure(test : BOOLEAN;
452
+ VAR test2 : BOOLEAN);
453
+ END_PROCEDURE;
454
+
455
+ PROCEDURE multiple_shorthand_variable_parameter_procedure(VAR test : BOOLEAN;
456
+ VAR test2 : BOOLEAN);
457
+ END_PROCEDURE;
458
+
459
+ PROCEDURE type_procedure;
460
+ TYPE test = BOOLEAN;
461
+ END_TYPE;
462
+ END_PROCEDURE;
463
+
464
+ PROCEDURE constant_procedure;
465
+ CONSTANT
466
+ test : BOOLEAN := TRUE;
467
+ END_CONSTANT;
468
+ END_PROCEDURE;
469
+
470
+ PROCEDURE multiple_constant_procedure;
471
+ CONSTANT
472
+ test : BOOLEAN := TRUE;
473
+ test2 : BOOLEAN := TRUE;
474
+ END_CONSTANT;
475
+ END_PROCEDURE;
476
+
477
+ PROCEDURE variable_procedure;
478
+ LOCAL
479
+ test : BOOLEAN;
480
+ END_LOCAL;
481
+ END_PROCEDURE;
482
+
483
+ PROCEDURE multiple_variable_procedure;
484
+ LOCAL
485
+ test : BOOLEAN;
486
+ test2 : BOOLEAN;
487
+ END_LOCAL;
488
+ END_PROCEDURE;
489
+
490
+ PROCEDURE multiple_shorthand_variable_procedure;
491
+ LOCAL
492
+ test : BOOLEAN;
493
+ test2 : BOOLEAN;
494
+ END_LOCAL;
495
+ END_PROCEDURE;
496
+
497
+ PROCEDURE variable_expression_procedure;
498
+ LOCAL
499
+ test : BOOLEAN := TRUE;
500
+ END_LOCAL;
501
+ END_PROCEDURE;
502
+
503
+ PROCEDURE multiple_variable_expression_procedure;
504
+ LOCAL
505
+ test : BOOLEAN := TRUE;
506
+ test2 : BOOLEAN := TRUE;
507
+ END_LOCAL;
508
+ END_PROCEDURE;
509
+
510
+ PROCEDURE multiple_shorthand_variable_expression_procedure;
511
+ LOCAL
512
+ test : BOOLEAN := TRUE;
513
+ test2 : BOOLEAN := TRUE;
514
+ END_LOCAL;
515
+ END_PROCEDURE;
516
+
517
+ PROCEDURE statement_procedure;
518
+ ;
519
+ END_PROCEDURE;
520
+
521
+ PROCEDURE statements;
522
+ PROCEDURE alias_simple_reference_statement;
523
+ ALIAS test FOR test;
524
+ ;
525
+ END_ALIAS;
526
+ END_PROCEDURE;
527
+ PROCEDURE alias_group_reference_statement;
528
+ ALIAS test FOR test\test2;
529
+ ;
530
+ END_ALIAS;
531
+ END_PROCEDURE;
532
+ PROCEDURE alias_index_reference_statement;
533
+ ALIAS test FOR test[1];
534
+ ;
535
+ END_ALIAS;
536
+ END_PROCEDURE;
537
+ PROCEDURE alias_index2_reference_statement;
538
+ ALIAS test FOR test[1:9];
539
+ ;
540
+ END_ALIAS;
541
+ END_PROCEDURE;
542
+ PROCEDURE alias_attribute_reference_statement;
543
+ ALIAS test FOR test.test2;
544
+ ;
545
+ END_ALIAS;
546
+ END_PROCEDURE;
547
+ PROCEDURE assignment_simple_reference_statement;
548
+ test := TRUE;
549
+ END_PROCEDURE;
550
+ PROCEDURE assignment_group_reference_statement;
551
+ test\test2 := TRUE;
552
+ END_PROCEDURE;
553
+ PROCEDURE assignment_index_reference_statement;
554
+ test[1] := TRUE;
555
+ END_PROCEDURE;
556
+ PROCEDURE assignment_index2_reference_statement;
557
+ test[1:9] := TRUE;
558
+ END_PROCEDURE;
559
+ PROCEDURE assignment_attribute_reference_statement;
560
+ test.test2 := TRUE;
561
+ END_PROCEDURE;
562
+ PROCEDURE case_statement;
563
+ CASE test OF
564
+ TRUE :
565
+ ;
566
+ END_CASE;
567
+ END_PROCEDURE;
568
+ PROCEDURE case_multiple_statement;
569
+ CASE test OF
570
+ TRUE :
571
+ ;
572
+ TRUE :
573
+ ;
574
+ END_CASE;
575
+ END_PROCEDURE;
576
+ PROCEDURE case_multiple_shorthand_statement;
577
+ CASE test OF
578
+ TRUE, TRUE :
579
+ ;
580
+ END_CASE;
581
+ END_PROCEDURE;
582
+ PROCEDURE case_otherwise_statement;
583
+ CASE test OF
584
+ TRUE :
585
+ ;
586
+ OTHERWISE :
587
+ ;
588
+ END_CASE;
589
+ END_PROCEDURE;
590
+ PROCEDURE compound_statement;
591
+ BEGIN
592
+ ;
593
+ END;
594
+ END_PROCEDURE;
595
+ PROCEDURE escape_statement;
596
+ ESCAPE;
597
+ END_PROCEDURE;
598
+ PROCEDURE if_statement;
599
+ IF TRUE THEN
600
+ ;
601
+ END_IF;
602
+ END_PROCEDURE;
603
+ PROCEDURE if2_statement;
604
+ IF TRUE THEN
605
+ ;
606
+ ;
607
+ END_IF;
608
+ END_PROCEDURE;
609
+ PROCEDURE if_else_statement;
610
+ IF TRUE THEN
611
+ ;
612
+ ELSE
613
+ ;
614
+ END_IF;
615
+ END_PROCEDURE;
616
+ PROCEDURE if2_else_statement;
617
+ IF TRUE THEN
618
+ ;
619
+ ;
620
+ ELSE
621
+ ;
622
+ END_IF;
623
+ END_PROCEDURE;
624
+ PROCEDURE if_else2_statement;
625
+ IF TRUE THEN
626
+ ;
627
+ ELSE
628
+ ;
629
+ ;
630
+ END_IF;
631
+ END_PROCEDURE;
632
+ PROCEDURE if2_else2_statement;
633
+ IF TRUE THEN
634
+ ;
635
+ ;
636
+ ELSE
637
+ ;
638
+ ;
639
+ END_IF;
640
+ END_PROCEDURE;
641
+ PROCEDURE null_statement;
642
+ ;
643
+ END_PROCEDURE;
644
+ PROCEDURE call_statement;
645
+ {{{<<express:syntax_schema.empty_procedure,empty_procedure>>}}};
646
+ END_PROCEDURE;
647
+ PROCEDURE call_parameter_statement;
648
+ {{{<<express:syntax_schema.empty_procedure,empty_procedure>>}}}(TRUE);
649
+ END_PROCEDURE;
650
+ PROCEDURE call_parameter2_statement;
651
+ {{{<<express:syntax_schema.empty_procedure,empty_procedure>>}}}(TRUE, TRUE);
652
+ END_PROCEDURE;
653
+ PROCEDURE call_insert_statement;
654
+ INSERT(TRUE);
655
+ END_PROCEDURE;
656
+ PROCEDURE call_remove_statement;
657
+ REMOVE(TRUE);
658
+ END_PROCEDURE;
659
+ PROCEDURE repeat_statement;
660
+ REPEAT;
661
+ ;
662
+ END_REPEAT;
663
+ END_PROCEDURE;
664
+ PROCEDURE repeat_variable_statement;
665
+ REPEAT test := 1 TO 9;
666
+ ;
667
+ END_REPEAT;
668
+ END_PROCEDURE;
669
+ PROCEDURE repeat_variable_increment_statement;
670
+ REPEAT test := 1 TO 9 BY 2;
671
+ ;
672
+ END_REPEAT;
673
+ END_PROCEDURE;
674
+ PROCEDURE repeat_while_statement;
675
+ REPEAT WHILE TRUE;
676
+ ;
677
+ END_REPEAT;
678
+ END_PROCEDURE;
679
+ PROCEDURE repeat_until_statement;
680
+ REPEAT UNTIL TRUE;
681
+ ;
682
+ END_REPEAT;
683
+ END_PROCEDURE;
684
+ PROCEDURE return_statement;
685
+ RETURN;
686
+ END_PROCEDURE;
687
+ PROCEDURE return_expression_statement;
688
+ RETURN (TRUE);
689
+ END_PROCEDURE;
690
+ PROCEDURE skip_statement;
691
+ SKIP;
692
+ END_PROCEDURE;
693
+ END_PROCEDURE;
694
+
695
+ PROCEDURE types;
696
+ TYPE binary_type = BINARY;
697
+ END_TYPE;
698
+ TYPE binary_width_type = BINARY (3);
699
+ END_TYPE;
700
+ TYPE binary_width_fixed_type = BINARY (3) FIXED;
701
+ END_TYPE;
702
+ TYPE boolean_type = BOOLEAN;
703
+ END_TYPE;
704
+ TYPE integer_type = INTEGER;
705
+ END_TYPE;
706
+ TYPE logical_type = LOGICAL;
707
+ END_TYPE;
708
+ TYPE number_type = NUMBER;
709
+ END_TYPE;
710
+ TYPE real_type = REAL;
711
+ END_TYPE;
712
+ TYPE real_precision_type = REAL (3);
713
+ END_TYPE;
714
+ TYPE string_type = STRING;
715
+ END_TYPE;
716
+ TYPE string_width_type = STRING (3);
717
+ END_TYPE;
718
+ TYPE string_width_fixed_type = STRING (3) FIXED;
719
+ END_TYPE;
720
+ TYPE array_type = ARRAY [1:9] OF STRING;
721
+ END_TYPE;
722
+ TYPE array_optional_type = ARRAY [1:9] OF OPTIONAL STRING;
723
+ END_TYPE;
724
+ TYPE array_unique_type = ARRAY [1:9] OF UNIQUE STRING;
725
+ END_TYPE;
726
+ TYPE array_optional_unique_type = ARRAY [1:9] OF OPTIONAL UNIQUE STRING;
727
+ END_TYPE;
728
+ TYPE bag_type = BAG OF STRING;
729
+ END_TYPE;
730
+ TYPE bag_bound_type = BAG [1:9] OF STRING;
731
+ END_TYPE;
732
+ TYPE list_type = LIST OF STRING;
733
+ END_TYPE;
734
+ TYPE list_bound_type = LIST [1:9] OF STRING;
735
+ END_TYPE;
736
+ TYPE list_unique_type = LIST OF UNIQUE STRING;
737
+ END_TYPE;
738
+ TYPE list_bound_unique_type = LIST [1:9] OF UNIQUE STRING;
739
+ END_TYPE;
740
+ TYPE set_type = SET OF STRING;
741
+ END_TYPE;
742
+ TYPE set_bound_type = SET [1:9] OF STRING;
743
+ END_TYPE;
744
+ TYPE select_type = SELECT;
745
+ END_TYPE;
746
+ TYPE select_extensible_type = EXTENSIBLE SELECT;
747
+ END_TYPE;
748
+ TYPE select_extensible_generic_entity_type = EXTENSIBLE GENERIC_ENTITY SELECT;
749
+ END_TYPE;
750
+ TYPE select_list_type = SELECT
751
+ ({{{<<express:syntax_schema.empty_type,empty_type>>}}});
752
+ END_TYPE;
753
+ TYPE select_list_multiple_type = SELECT
754
+ ({{{<<express:syntax_schema.empty_type,empty_type>>}}},
755
+ {{{<<express:syntax_schema.empty_type,empty_type>>}}});
756
+ END_TYPE;
757
+ TYPE select_extension_type_ref_type = SELECT BASED_ON select_type;
758
+ END_TYPE;
759
+ TYPE select_extension_type_ref_list_type = SELECT BASED_ON select_type WITH
760
+ ({{{<<express:syntax_schema.empty_type,empty_type>>}}});
761
+ END_TYPE;
762
+ TYPE select_extension_type_ref_list_multiple_type = SELECT BASED_ON select_type WITH
763
+ ({{{<<express:syntax_schema.empty_type,empty_type>>}}},
764
+ {{{<<express:syntax_schema.empty_type,empty_type>>}}});
765
+ END_TYPE;
766
+ TYPE enumeration_type = ENUMERATION;
767
+ END_TYPE;
768
+ TYPE enumeration_extensible_type = EXTENSIBLE ENUMERATION;
769
+ END_TYPE;
770
+ TYPE enumeration_list_type = ENUMERATION OF
771
+ (test);
772
+ END_TYPE;
773
+ TYPE enumeration_list_multiple_type = ENUMERATION OF
774
+ (test,
775
+ test2);
776
+ END_TYPE;
777
+ TYPE enumeration_extension_type_ref_type = ENUMERATION BASED_ON enumeration_type;
778
+ END_TYPE;
779
+ TYPE enumeration_extension_type_ref_list_type = ENUMERATION BASED_ON enumeration_type WITH
780
+ (test);
781
+ END_TYPE;
782
+ TYPE enumeration_extension_type_ref_list_multiple_type = ENUMERATION BASED_ON enumeration_type WITH
783
+ (test,
784
+ test2);
785
+ END_TYPE;
786
+ FUNCTION generic_type : GENERIC;
787
+ ;
788
+ END_FUNCTION;
789
+ FUNCTION generic_label_type : GENERIC:label;
790
+ ;
791
+ END_FUNCTION;
792
+ FUNCTION generic_entity_type : GENERIC_ENTITY;
793
+ ;
794
+ END_FUNCTION;
795
+ FUNCTION generic_entity_label_type : GENERIC_ENTITY:label;
796
+ ;
797
+ END_FUNCTION;
798
+ END_PROCEDURE;
799
+
800
+ PROCEDURE expressions;
801
+ LOCAL
802
+ binary_expression : BOOLEAN := %011110000111100001111000;
803
+ integer_expression : BOOLEAN := 999;
804
+ true_logical_expression : BOOLEAN := TRUE;
805
+ false_logical_expression : BOOLEAN := FALSE;
806
+ unknown_logical_expression : BOOLEAN := UNKNOWN;
807
+ real_expression : BOOLEAN := 999.999;
808
+ simple_string_expression : BOOLEAN := 'xxx';
809
+ utf8_simple_string_expression : BOOLEAN := 'UTF8 test: Příliš žluťoučký kůň úpěl ďábelské ódy.';
810
+ encoded_string_expression : BOOLEAN := "000000780000007800000078";
811
+ const_e_expression : BOOLEAN := CONST_E;
812
+ indeterminate_expression : BOOLEAN := ?;
813
+ pi_expression : BOOLEAN := PI;
814
+ self_expression : BOOLEAN := SELF;
815
+ abs_expression : BOOLEAN := ABS(TRUE);
816
+ acos_expression : BOOLEAN := ACOS(TRUE);
817
+ asin_expression : BOOLEAN := ASIN(TRUE);
818
+ atan_expression : BOOLEAN := ATAN(TRUE);
819
+ blength_expression : BOOLEAN := BLENGTH(TRUE);
820
+ cos_expression : BOOLEAN := COS(TRUE);
821
+ exists_expression : BOOLEAN := EXISTS(TRUE);
822
+ exp_expression : BOOLEAN := EXP(TRUE);
823
+ format_expression : BOOLEAN := FORMAT(TRUE);
824
+ hibound_expression : BOOLEAN := HIBOUND(TRUE);
825
+ hiindex_expression : BOOLEAN := HIINDEX(TRUE);
826
+ length_expression : BOOLEAN := LENGTH(TRUE);
827
+ lobound_expression : BOOLEAN := LOBOUND(TRUE);
828
+ loindex_expression : BOOLEAN := LOINDEX(TRUE);
829
+ log_expression : BOOLEAN := LOG(TRUE);
830
+ log2_expression : BOOLEAN := LOG2(TRUE);
831
+ log10_expression : BOOLEAN := LOG10(TRUE);
832
+ nvl_expression : BOOLEAN := NVL(TRUE);
833
+ odd_expression : BOOLEAN := ODD(TRUE);
834
+ rolesof_expression : BOOLEAN := ROLESOF(TRUE);
835
+ sin_expression : BOOLEAN := SIN(TRUE);
836
+ sizeof_expression : BOOLEAN := SIZEOF(TRUE);
837
+ sqrt_expression : BOOLEAN := SQRT(TRUE);
838
+ tan_expression : BOOLEAN := TAN(TRUE);
839
+ typeof_expression : BOOLEAN := TYPEOF(TRUE);
840
+ usedin_expression : BOOLEAN := USEDIN(TRUE);
841
+ value_expression : BOOLEAN := VALUE(TRUE);
842
+ value_in_expression : BOOLEAN := VALUE_IN(TRUE);
843
+ value_unique_expression : BOOLEAN := VALUE_UNIQUE(TRUE);
844
+ plus_expression : BOOLEAN := +4;
845
+ plus_addition_expression : BOOLEAN := +(4 + 2);
846
+ minus_expression : BOOLEAN := -4;
847
+ minus_addition_expression : BOOLEAN := -(4 + 2);
848
+ addition_expression : BOOLEAN := 4 + 2;
849
+ subtraction_expression : BOOLEAN := 4 - 2;
850
+ multiplication_expression : BOOLEAN := 4 * 2;
851
+ real_division_expression : BOOLEAN := 4 / 2;
852
+ integer_division_expression : BOOLEAN := 4 DIV 2;
853
+ modulo_expression : BOOLEAN := 4 MOD 2;
854
+ exponentiation_expression : BOOLEAN := 4 ** 2;
855
+ addition_addition_expression : BOOLEAN := 4 + 2 + 1;
856
+ subtraction_subtraction_expression : BOOLEAN := 4 - 2 - 1;
857
+ addition_subtraction_expression : BOOLEAN := 4 + 2 - 1;
858
+ subtraction_addition_expression : BOOLEAN := 4 - 2 + 1;
859
+ addition_multiplication_expression : BOOLEAN := 8 + 4 * 2;
860
+ multiplication_addition_expression : BOOLEAN := 8 * 4 + 2;
861
+ parenthesis_addition_multiplication_expression : BOOLEAN := (8 + 4) * 2;
862
+ multiplication_parenthesis_addition_expression : BOOLEAN := 8 * (4 + 2);
863
+ equal_expression : BOOLEAN := 4 = 2;
864
+ not_equal_expression : BOOLEAN := 4 <> 2;
865
+ instance_equal_expression : BOOLEAN := 4 :=: 2;
866
+ instance_not_equal_expression : BOOLEAN := 4 :<>: 2;
867
+ lt_expression : BOOLEAN := 4 < 2;
868
+ gt_expression : BOOLEAN := 4 > 2;
869
+ lte_expression : BOOLEAN := 4 <= 2;
870
+ gte_expression : BOOLEAN := 4 >= 2;
871
+ not_expression : BOOLEAN := NOT TRUE;
872
+ not_or_expression : BOOLEAN := NOT (TRUE OR FALSE);
873
+ or_expression : BOOLEAN := TRUE OR FALSE;
874
+ and_expression : BOOLEAN := TRUE AND FALSE;
875
+ or_or_expression : BOOLEAN := TRUE OR FALSE OR TRUE;
876
+ and_and_expression : BOOLEAN := TRUE AND FALSE AND TRUE;
877
+ or_and_expression : BOOLEAN := TRUE OR FALSE AND TRUE;
878
+ and_or_expression : BOOLEAN := TRUE AND FALSE OR TRUE;
879
+ parenthesis_or_and_expression : BOOLEAN := (TRUE OR FALSE) AND TRUE;
880
+ and_parenthesis_or_expression : BOOLEAN := TRUE AND (FALSE OR TRUE);
881
+ combine_expression : BOOLEAN := test || test2;
882
+ in_expression : BOOLEAN := TRUE IN [TRUE];
883
+ like_expression : BOOLEAN := 'xxx' LIKE 'xxx';
884
+ aggregate_initializer_expression : BOOLEAN := [4];
885
+ repeated_aggregate_initializer_expression : BOOLEAN := [4:2];
886
+ complex_aggregate_initializer_expression : BOOLEAN := [4 + 2];
887
+ complex_repeated_aggregate_initializer_expression : BOOLEAN := [4 + 2:4 + 2];
888
+ call_expression : BOOLEAN := {{{<<express:syntax_schema.parameter_function,parameter_function>>}}}(TRUE);
889
+ simple_reference_expression : BOOLEAN := test;
890
+ group_reference_expression : BOOLEAN := test\test2;
891
+ index_reference_expression : BOOLEAN := test[1];
892
+ index2_reference_expression : BOOLEAN := test[1:9];
893
+ attribute_reference_expression : BOOLEAN := test.test2;
894
+ lt_lt_interval_expression : BOOLEAN := {1 < 5 < 9};
895
+ lte_lt_interval_expression : BOOLEAN := {1 <= 5 < 9};
896
+ lt_lte_interval_expression : BOOLEAN := {1 < 5 <= 9};
897
+ lte_lte_interval_expression : BOOLEAN := {1 <= 5 <= 9};
898
+ query_expression : BOOLEAN := QUERY(test <* test2 | TRUE);
899
+ END_LOCAL;
900
+ END_PROCEDURE;
901
+
902
+ END_SCHEMA;