expressir 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/lib/expressir/express_exp/formatter.rb +1444 -0
  4. data/lib/expressir/express_exp/visitor.rb +288 -280
  5. data/lib/expressir/model.rb +13 -42
  6. data/lib/expressir/model/{derived.rb → attribute.rb} +13 -4
  7. data/lib/expressir/model/constant.rb +2 -1
  8. data/lib/expressir/model/entity.rb +22 -17
  9. data/lib/expressir/model/enumeration_item.rb +2 -1
  10. data/lib/expressir/model/expressions/aggregate_initializer.rb +9 -9
  11. data/lib/expressir/model/expressions/aggregate_item.rb +15 -0
  12. data/lib/expressir/model/expressions/{attribute_qualifier.rb → attribute_reference.rb} +3 -1
  13. data/lib/expressir/model/expressions/binary_expression.rb +40 -0
  14. data/lib/expressir/model/expressions/{function_call.rb → call.rb} +3 -3
  15. data/lib/expressir/model/expressions/entity_constructor.rb +11 -11
  16. data/lib/expressir/model/expressions/{group_qualifier.rb → group_reference.rb} +3 -1
  17. data/lib/expressir/model/expressions/{index_qualifier.rb → index_reference.rb} +3 -1
  18. data/lib/expressir/model/expressions/interval.rb +17 -17
  19. data/lib/expressir/model/expressions/query_expression.rb +26 -0
  20. data/lib/expressir/model/expressions/simple_reference.rb +13 -0
  21. data/lib/expressir/model/expressions/{expression.rb → unary_expression.rb} +7 -3
  22. data/lib/expressir/model/function.rb +14 -6
  23. data/lib/expressir/model/{reference.rb → interface.rb} +6 -1
  24. data/lib/expressir/model/literals/logical.rb +4 -0
  25. data/lib/expressir/model/parameter.rb +4 -3
  26. data/lib/expressir/model/procedure.rb +14 -6
  27. data/lib/expressir/model/repository.rb +1 -1
  28. data/lib/expressir/model/rule.rb +16 -8
  29. data/lib/expressir/model/schema.rb +22 -6
  30. data/lib/expressir/model/statements/alias.rb +3 -2
  31. data/lib/expressir/model/statements/{procedure_call.rb → call.rb} +3 -3
  32. data/lib/expressir/model/statements/case.rb +2 -2
  33. data/lib/expressir/model/statements/case_action.rb +2 -2
  34. data/lib/expressir/model/statements/repeat.rb +3 -2
  35. data/lib/expressir/model/subtype_constraint.rb +6 -5
  36. data/lib/expressir/model/type.rb +3 -2
  37. data/lib/expressir/model/types/aggregate.rb +2 -1
  38. data/lib/expressir/model/types/generic.rb +2 -1
  39. data/lib/expressir/model/types/generic_entity.rb +2 -1
  40. data/lib/expressir/model/unique.rb +2 -1
  41. data/lib/expressir/model/{local.rb → variable.rb} +3 -2
  42. data/lib/expressir/model/where.rb +2 -1
  43. data/lib/expressir/version.rb +1 -1
  44. data/original/examples/syntax/remark.exp +126 -108
  45. data/original/examples/syntax/remark_formatted.exp +172 -0
  46. data/original/examples/syntax/syntax.exp +287 -277
  47. data/original/examples/syntax/syntax_formatted.exp +1176 -0
  48. data/spec/expressir/express_exp/format_remark_spec.rb +28 -0
  49. data/spec/expressir/express_exp/format_syntax_spec.rb +28 -0
  50. data/spec/expressir/express_exp/{remark_spec.rb → parse_remark_spec.rb} +80 -36
  51. data/spec/expressir/express_exp/parse_syntax_spec.rb +2998 -0
  52. metadata +22 -46
  53. data/lib/expressir/model/explicit.rb +0 -19
  54. data/lib/expressir/model/expressions/aggregate_element.rb +0 -15
  55. data/lib/expressir/model/expressions/qualified_ref.rb +0 -15
  56. data/lib/expressir/model/expressions/query.rb +0 -25
  57. data/lib/expressir/model/inverse.rb +0 -19
  58. data/lib/expressir/model/operators/addition.rb +0 -8
  59. data/lib/expressir/model/operators/and.rb +0 -8
  60. data/lib/expressir/model/operators/andor.rb +0 -8
  61. data/lib/expressir/model/operators/combine.rb +0 -8
  62. data/lib/expressir/model/operators/equal.rb +0 -8
  63. data/lib/expressir/model/operators/exponentiation.rb +0 -8
  64. data/lib/expressir/model/operators/greater_than.rb +0 -8
  65. data/lib/expressir/model/operators/greater_than_or_equal.rb +0 -8
  66. data/lib/expressir/model/operators/in.rb +0 -8
  67. data/lib/expressir/model/operators/instance_equal.rb +0 -8
  68. data/lib/expressir/model/operators/instance_not_equal.rb +0 -8
  69. data/lib/expressir/model/operators/integer_division.rb +0 -8
  70. data/lib/expressir/model/operators/less_than.rb +0 -8
  71. data/lib/expressir/model/operators/less_than_or_equal.rb +0 -8
  72. data/lib/expressir/model/operators/like.rb +0 -8
  73. data/lib/expressir/model/operators/modulo.rb +0 -8
  74. data/lib/expressir/model/operators/multiplication.rb +0 -8
  75. data/lib/expressir/model/operators/not.rb +0 -8
  76. data/lib/expressir/model/operators/not_equal.rb +0 -8
  77. data/lib/expressir/model/operators/oneof.rb +0 -8
  78. data/lib/expressir/model/operators/or.rb +0 -8
  79. data/lib/expressir/model/operators/real_division.rb +0 -8
  80. data/lib/expressir/model/operators/subtraction.rb +0 -8
  81. data/lib/expressir/model/operators/unary_minus.rb +0 -8
  82. data/lib/expressir/model/operators/unary_plus.rb +0 -8
  83. data/lib/expressir/model/operators/xor.rb +0 -8
  84. data/lib/expressir/model/ref.rb +0 -11
  85. data/lib/expressir/model/use.rb +0 -13
  86. data/spec/expressir/express_exp/syntax_spec.rb +0 -2992
@@ -1,300 +1,310 @@
1
- SCHEMA syntaxSchema 'version';
1
+ SCHEMA syntax_schema 'version';
2
2
 
3
3
  -- interfaces
4
- USE FROM useInterface;
5
- USE FROM useItemInterface (test);
6
- USE FROM useItemRenameInterface (test AS test2);
7
- REFERENCE FROM referenceInterface;
8
- REFERENCE FROM referenceItemInterface (test);
9
- REFERENCE FROM referenceItemRenameInterface (test AS test2);
4
+ USE FROM contract_schema;
5
+ USE FROM contract_schema (contract);
6
+ USE FROM contract_schema (contract AS contract2);
7
+ REFERENCE FROM contract_schema;
8
+ REFERENCE FROM contract_schema (contract);
9
+ REFERENCE FROM contract_schema (contract AS contract2);
10
10
 
11
- CONSTANT
12
- -- literals
13
- binaryExpression : STRING := %011110000111100001111000;
14
- integerExpression : STRING := 999;
15
- trueLogicalExpression : STRING := TRUE;
16
- falseLogicalExpression : STRING := FALSE;
17
- unknownLogicalExpression : STRING := UNKNOWN;
18
- realExpression : STRING := 999.999;
19
- simpleStringExpression : STRING := 'xxx';
20
- encodedStringExpression : STRING := "000000780000007800000078";
11
+ -- constants
12
+ CONSTANT empty_constant : BOOLEAN := TRUE; END_CONSTANT;
21
13
 
22
- -- constants
23
- constEExpression : STRING := CONST_E;
24
- indeterminateExpression : STRING := ?;
25
- piExpression : STRING := PI;
26
- selfExpression : STRING := SELF;
27
-
28
- -- functions
29
- absExpression : STRING := ABS(TRUE);
30
- acosExpression : STRING := ACOS(TRUE);
31
- asinExpression : STRING := ASIN(TRUE);
32
- atanExpression : STRING := ATAN(TRUE);
33
- blengthExpression : STRING := BLENGTH(TRUE);
34
- cosExpression : STRING := COS(TRUE);
35
- existsExpression : STRING := EXISTS(TRUE);
36
- expExpression : STRING := EXP(TRUE);
37
- formatExpression : STRING := FORMAT(TRUE);
38
- hiboundExpression : STRING := HIBOUND(TRUE);
39
- hiindexExpression : STRING := HIINDEX(TRUE);
40
- lengthExpression : STRING := LENGTH(TRUE);
41
- loboundExpression : STRING := LOBOUND(TRUE);
42
- loindexExpression : STRING := LOINDEX(TRUE);
43
- logExpression : STRING := LOG(TRUE);
44
- log2Expression : STRING := LOG2(TRUE);
45
- log10Expression : STRING := LOG10(TRUE);
46
- nvlExpression : STRING := NVL(TRUE);
47
- oddExpression : STRING := ODD(TRUE);
48
- rolesofExpression : STRING := ROLESOF(TRUE);
49
- sinExpression : STRING := SIN(TRUE);
50
- sizeofExpression : STRING := SIZEOF(TRUE);
51
- sqrtExpression : STRING := SQRT(TRUE);
52
- tanExpression : STRING := TAN(TRUE);
53
- typeofExpression : STRING := TYPEOF(TRUE);
54
- usedinExpression : STRING := USEDIN(TRUE);
55
- valueExpression : STRING := VALUE(TRUE);
56
- valueInExpression : STRING := VALUE_IN(TRUE);
57
- valueUniqueExpression : STRING := VALUE_UNIQUE(TRUE);
58
-
59
- -- operations
60
- unaryPlusExpression : STRING := +4;
61
- unaryMinusExpression : STRING := -4;
62
- additionExpression : STRING := 4 + 2;
63
- subtractionExpression : STRING := 4 - 2;
64
- multiplicationExpression : STRING := 4 * 2;
65
- realDivisionExpression : STRING := 4 / 2;
66
- integerDivisionExpression : STRING := 4 DIV 2;
67
- moduloExpression : STRING := 4 MOD 2;
68
- exponentiationExpression : STRING := 4 ** 2;
69
- additionAdditionExpression : STRING := 4 + 2 + 1;
70
- subtractionSubtractionExpression : STRING := 4 - 2 - 1;
71
- additionSubtractionExpression : STRING := 4 + 2 - 1;
72
- subtractionAdditionExpression : STRING := 4 - 2 + 1;
73
- additionMultiplicationExpression : STRING := 8 + 4 * 2;
74
- multiplicationAdditionExpression : STRING := 8 * 4 + 2;
75
- parenthesisAdditionMultiplicationExpression : STRING := (8 + 4) * 2;
76
- multiplicationParenthesisAdditionExpression : STRING := 8 * (4 + 2);
77
- equalExpression : STRING := 4 = 2;
78
- notEqualExpression : STRING := 4 <> 2;
79
- ltExpression : STRING := 4 < 2;
80
- gtExpression : STRING := 4 > 2;
81
- lteExpression : STRING := 4 <= 2;
82
- gteExpression : STRING := 4 >= 2;
83
- orExpression : STRING := TRUE OR FALSE;
84
- andExpression : STRING := TRUE AND FALSE;
85
- orOrExpression : STRING := TRUE OR FALSE OR TRUE;
86
- andAndExpression : STRING := TRUE AND FALSE AND TRUE;
87
- orAndExpression : STRING := TRUE OR FALSE AND TRUE;
88
- andOrExpression : STRING := TRUE AND FALSE OR TRUE;
89
- parenthesisOrAndExpression : STRING := (TRUE OR FALSE) AND TRUE;
90
- andParenthesisOrExpression : STRING := TRUE AND (FALSE OR TRUE);
91
- combineExpression : STRING := test || test;
92
- inExpression : STRING := TRUE IN [TRUE];
93
- likeExpression : STRING := 'xxx' LIKE 'xxx';
94
-
95
- -- aggregate initializers
96
- aggregateInitializerExpression : STRING := ['xxx'];
97
- repeatedAggregateInitializerExpression : STRING := ['xxx' : 2];
98
- complexAggregateInitializerExpression : STRING := [4 + 2];
99
- complexRepeatedAggregateInitializerExpression : STRING := [4 + 2 : 4 + 2];
14
+ -- types
15
+ TYPE empty_type = BOOLEAN; END_TYPE;
16
+ TYPE where_type = BOOLEAN; WHERE TRUE; END_TYPE;
17
+ TYPE where_label_type = BOOLEAN; WHERE WR1 : TRUE; END_TYPE;
100
18
 
101
- -- entity constructors
102
- entityConstructorExpression : STRING := explicitAttributeEntity(TRUE);
19
+ -- entities
20
+ ENTITY empty_entity; END_ENTITY;
21
+ ENTITY abstract_entity ABSTRACT; END_ENTITY;
22
+ ENTITY abstract_supertype_entity ABSTRACT SUPERTYPE; END_ENTITY;
23
+ ENTITY abstract_supertype_constraint_entity ABSTRACT SUPERTYPE OF (empty_entity); END_ENTITY;
24
+ ENTITY supertype_constraint_entity SUPERTYPE OF (empty_entity); END_ENTITY;
25
+ ENTITY subtype_entity SUBTYPE OF (empty_entity); END_ENTITY;
26
+ ENTITY supertype_constraint_subtype_entity SUPERTYPE OF (empty_entity) SUBTYPE OF (empty_entity); END_ENTITY;
27
+ ENTITY attribute_entity; test : BOOLEAN; END_ENTITY;
28
+ ENTITY attribute_optional_entity; test : OPTIONAL BOOLEAN; END_ENTITY;
29
+ ENTITY attribute_multiple_entity; test : BOOLEAN; test2 : BOOLEAN; END_ENTITY;
30
+ ENTITY attribute_multiple_shorthand_entity; test, test2 : BOOLEAN; END_ENTITY;
31
+ ENTITY attribute_redeclared_entity; SELF\attribute_entity.test : BOOLEAN; END_ENTITY;
32
+ ENTITY attribute_redeclared_renamed_entity; SELF\attribute_entity.test RENAMED test2 : BOOLEAN; END_ENTITY;
33
+ ENTITY derived_attribute_entity; DERIVE test : BOOLEAN := TRUE; END_ENTITY;
34
+ ENTITY derived_attribute_redeclared_entity; DERIVE SELF\attribute_entity.test : BOOLEAN := TRUE; END_ENTITY;
35
+ ENTITY derived_attribute_redeclared_renamed_entity; DERIVE SELF\attribute_entity.test RENAMED test2 : BOOLEAN := TRUE; END_ENTITY;
36
+ ENTITY inverse_attribute_entity; INVERSE test : attribute_entity FOR test; END_ENTITY;
37
+ ENTITY inverse_attribute_entity_entity; INVERSE test : attribute_entity FOR attribute_entity.test; END_ENTITY;
38
+ ENTITY inverse_attribute_set_entity; INVERSE test : SET OF attribute_entity FOR test; END_ENTITY;
39
+ ENTITY inverse_attribute_set_bound_entity; INVERSE test : SET [1:9] OF attribute_entity FOR test; END_ENTITY;
40
+ ENTITY inverse_attribute_bag_entity; INVERSE test : BAG OF attribute_entity FOR test; END_ENTITY;
41
+ ENTITY inverse_attribute_bag_bound_entity; INVERSE test : BAG [1:9] OF attribute_entity FOR test; END_ENTITY;
42
+ ENTITY inverse_attribute_redeclared_entity; INVERSE SELF\attribute_entity.test : attribute_entity FOR test; END_ENTITY;
43
+ ENTITY inverse_attribute_redeclared_renamed_entity; INVERSE SELF\attribute_entity.test RENAMED test2 : attribute_entity FOR test; END_ENTITY;
44
+ ENTITY unique_entity; test : BOOLEAN; UNIQUE test; END_ENTITY;
45
+ ENTITY unique_label_entity; test : BOOLEAN; UNIQUE UR1 : test; END_ENTITY;
46
+ ENTITY unique_qualified_entity; UNIQUE SELF\attribute_entity.test; END_ENTITY;
47
+ ENTITY unique_label_qualified_entity; UNIQUE UR1 : SELF\attribute_entity.test; END_ENTITY;
48
+ ENTITY where_entity; WHERE TRUE; END_ENTITY;
49
+ ENTITY where_label_entity; WHERE WR1 : TRUE; END_ENTITY;
103
50
 
104
- -- enumeration references
105
- enumerationReferenceExpression : STRING := test;
106
- attributeEnumerationReferenceExpression : STRING := test.test;
51
+ -- subtype constraints
52
+ SUBTYPE_CONSTRAINT empty_subtype_constraint FOR empty_entity; END_SUBTYPE_CONSTRAINT;
53
+ SUBTYPE_CONSTRAINT abstract_supertype_subtype_constraint FOR empty_entity; ABSTRACT SUPERTYPE; END_SUBTYPE_CONSTRAINT;
54
+ SUBTYPE_CONSTRAINT total_over_subtype_constraint FOR empty_entity; TOTAL_OVER(a); END_SUBTYPE_CONSTRAINT;
55
+ SUBTYPE_CONSTRAINT supertype_expression_subtype_constraint FOR empty_entity; a; END_SUBTYPE_CONSTRAINT;
56
+ SUBTYPE_CONSTRAINT supertype_expression_andor_subtype_constraint FOR empty_entity; a ANDOR b; END_SUBTYPE_CONSTRAINT;
57
+ SUBTYPE_CONSTRAINT supertype_expression_and_subtype_constraint FOR empty_entity; a AND b; END_SUBTYPE_CONSTRAINT;
58
+ SUBTYPE_CONSTRAINT supertype_expression_andor_and_subtype_constraint FOR empty_entity; a ANDOR b AND c; END_SUBTYPE_CONSTRAINT;
59
+ SUBTYPE_CONSTRAINT supertype_expression_and_andor_subtype_constraint FOR empty_entity; a AND b ANDOR c; END_SUBTYPE_CONSTRAINT;
60
+ SUBTYPE_CONSTRAINT supertype_expression_parenthesis_andor_and_subtype_constraint FOR empty_entity; (a ANDOR b) AND c; END_SUBTYPE_CONSTRAINT;
61
+ SUBTYPE_CONSTRAINT supertype_expression_and_parenthesis_andor_subtype_constraint FOR empty_entity; a AND (b ANDOR c); END_SUBTYPE_CONSTRAINT;
62
+ SUBTYPE_CONSTRAINT supertype_expression_oneof_subtype_constraint FOR empty_entity; ONEOF(a, b); END_SUBTYPE_CONSTRAINT;
63
+ SUBTYPE_CONSTRAINT supertype_expression_and_oneof_subtype_constraint FOR empty_entity; a AND ONEOF(b, c); END_SUBTYPE_CONSTRAINT;
64
+ SUBTYPE_CONSTRAINT supertype_expression_andor_oneof_subtype_constraint FOR empty_entity; a ANDOR ONEOF(b, c); END_SUBTYPE_CONSTRAINT;
65
+ SUBTYPE_CONSTRAINT supertype_expression_oneof_and_subtype_constraint FOR empty_entity; ONEOF(a, b) AND c; END_SUBTYPE_CONSTRAINT;
66
+ SUBTYPE_CONSTRAINT supertype_expression_oneof_andor_subtype_constraint FOR empty_entity; ONEOF(a, b) ANDOR c; END_SUBTYPE_CONSTRAINT;
67
+ SUBTYPE_CONSTRAINT supertype_expression_oneof_and_oneof_subtype_constraint FOR empty_entity; ONEOF(a, b) AND ONEOF(c, d); END_SUBTYPE_CONSTRAINT;
68
+ SUBTYPE_CONSTRAINT supertype_expression_oneof_andor_oneof_subtype_constraint FOR empty_entity; ONEOF(a, b) ANDOR ONEOF(c, d); END_SUBTYPE_CONSTRAINT;
107
69
 
108
- -- intervals
109
- ltLtIntervalExpression : STRING := {1 < 5 < 9};
110
- lteLtIntervalExpression : STRING := {1 <= 5 < 9};
111
- ltLteIntervalExpression : STRING := {1 < 5 <= 9};
112
- lteLteIntervalExpression : STRING := {1 <= 5 <= 9};
70
+ -- functions
71
+ FUNCTION empty_function : BOOLEAN; ; END_FUNCTION;
72
+ FUNCTION parameter_function(test : BOOLEAN) : BOOLEAN; ; END_FUNCTION;
73
+ FUNCTION multiple_parameter_function(test : BOOLEAN; test2 : BOOLEAN) : BOOLEAN; ; END_FUNCTION;
74
+ FUNCTION multiple_shorthand_parameter_function(test, test2 : BOOLEAN) : BOOLEAN; ; END_FUNCTION;
75
+ FUNCTION type_function : BOOLEAN; TYPE test = BOOLEAN; END_TYPE; ; END_FUNCTION;
76
+ FUNCTION constant_function : BOOLEAN; CONSTANT test : BOOLEAN := TRUE; END_CONSTANT; ; END_FUNCTION;
77
+ FUNCTION multiple_constant_function : BOOLEAN; CONSTANT test : BOOLEAN := TRUE; test2 : BOOLEAN := TRUE; END_CONSTANT; ; END_FUNCTION;
78
+ FUNCTION variable_function : BOOLEAN; LOCAL test : BOOLEAN; END_LOCAL; ; END_FUNCTION;
79
+ FUNCTION multiple_variable_function : BOOLEAN; LOCAL test : BOOLEAN; test2 : BOOLEAN; END_LOCAL; ; END_FUNCTION;
80
+ FUNCTION multiple_shorthand_variable_function : BOOLEAN; LOCAL test, test2 : BOOLEAN; END_LOCAL; ; END_FUNCTION;
81
+ FUNCTION variable_expression_function : BOOLEAN; LOCAL test : BOOLEAN := TRUE; END_LOCAL; ; END_FUNCTION;
82
+ FUNCTION multiple_variable_expression_function : BOOLEAN; LOCAL test : BOOLEAN := TRUE; test2 : BOOLEAN := TRUE; END_LOCAL; ; END_FUNCTION;
83
+ FUNCTION multiple_shorthand_variable_expression_function : BOOLEAN; LOCAL test, test2 : BOOLEAN := TRUE; END_LOCAL; ; END_FUNCTION;
113
84
 
114
- -- queries
115
- queryExpression : STRING := QUERY(test <* test2 | TRUE);
116
- END_CONSTANT;
85
+ -- procedures
86
+ PROCEDURE empty_procedure; END_PROCEDURE;
87
+ PROCEDURE parameter_procedure(test : BOOLEAN); END_PROCEDURE;
88
+ PROCEDURE multiple_parameter_procedure(test : BOOLEAN; test2 : BOOLEAN); END_PROCEDURE;
89
+ PROCEDURE multiple_shorthand_parameter_procedure(test, test2 : BOOLEAN); END_PROCEDURE;
90
+ PROCEDURE variable_parameter_procedure(VAR test : BOOLEAN); END_PROCEDURE;
91
+ PROCEDURE multiple_variable_parameter_procedure(VAR test : BOOLEAN; test2 : BOOLEAN); END_PROCEDURE;
92
+ PROCEDURE multiple_variable_parameter2_procedure(test : BOOLEAN; VAR test2 : BOOLEAN); END_PROCEDURE;
93
+ PROCEDURE multiple_shorthand_variable_parameter_procedure(VAR test, test2 : BOOLEAN); END_PROCEDURE;
94
+ PROCEDURE type_procedure; TYPE test = BOOLEAN; END_TYPE; END_PROCEDURE;
95
+ PROCEDURE constant_procedure; CONSTANT test : BOOLEAN := TRUE; END_CONSTANT; END_PROCEDURE;
96
+ PROCEDURE multiple_constant_procedure; CONSTANT test : BOOLEAN := TRUE; test2 : BOOLEAN := TRUE; END_CONSTANT; END_PROCEDURE;
97
+ PROCEDURE variable_procedure; LOCAL test : BOOLEAN; END_LOCAL; END_PROCEDURE;
98
+ PROCEDURE multiple_variable_procedure; LOCAL test : BOOLEAN; test2 : BOOLEAN; END_LOCAL; END_PROCEDURE;
99
+ PROCEDURE multiple_shorthand_variable_procedure; LOCAL test, test2 : BOOLEAN; END_LOCAL; END_PROCEDURE;
100
+ PROCEDURE variable_expression_procedure; LOCAL test : BOOLEAN := TRUE; END_LOCAL; END_PROCEDURE;
101
+ PROCEDURE multiple_variable_expression_procedure; LOCAL test : BOOLEAN := TRUE; test2 : BOOLEAN := TRUE; END_LOCAL; END_PROCEDURE;
102
+ PROCEDURE multiple_shorthand_variable_expression_procedure; LOCAL test, test2 : BOOLEAN := TRUE; END_LOCAL; END_PROCEDURE;
103
+ PROCEDURE statement_procedure; ; END_PROCEDURE;
117
104
 
118
- -- types
119
- TYPE integerType = INTEGER; END_TYPE;
120
- TYPE integerWhereType = INTEGER; WHERE TRUE; END_TYPE;
121
- TYPE integerWhereLabelType = INTEGER; WHERE WR1: TRUE; END_TYPE;
105
+ -- rules
106
+ RULE empty_rule FOR (empty_entity); WHERE TRUE; END_RULE;
107
+ RULE type_rule FOR (empty_entity); TYPE test = BOOLEAN; END_TYPE; WHERE TRUE; END_RULE;
108
+ RULE constant_rule FOR (empty_entity); CONSTANT test : BOOLEAN := TRUE; END_CONSTANT; WHERE TRUE; END_RULE;
109
+ RULE multiple_constant_rule FOR (empty_entity); CONSTANT test : BOOLEAN := TRUE; test2 : BOOLEAN := TRUE; END_CONSTANT; WHERE TRUE; END_RULE;
110
+ RULE variable_rule FOR (empty_entity); LOCAL test : BOOLEAN; END_LOCAL; WHERE TRUE; END_RULE;
111
+ RULE multiple_variable_rule FOR (empty_entity); LOCAL test : BOOLEAN; test2 : BOOLEAN; END_LOCAL; WHERE TRUE; END_RULE;
112
+ RULE multiple_shorthand_variable_rule FOR (empty_entity); LOCAL test, test2 : BOOLEAN; END_LOCAL; WHERE TRUE; END_RULE;
113
+ RULE variable_expression_rule FOR (empty_entity); LOCAL test : BOOLEAN := TRUE; END_LOCAL; WHERE TRUE; END_RULE;
114
+ RULE multiple_variable_expression_rule FOR (empty_entity); LOCAL test : BOOLEAN := TRUE; test2 : BOOLEAN := TRUE; END_LOCAL; WHERE TRUE; END_RULE;
115
+ RULE multiple_shorthand_variable_expression_rule FOR (empty_entity); LOCAL test, test2 : BOOLEAN := TRUE; END_LOCAL; WHERE TRUE; END_RULE;
116
+ RULE statement_rule FOR (empty_entity); ; WHERE TRUE; END_RULE;
122
117
 
123
118
  -- simple types
124
- TYPE binaryType = BINARY; END_TYPE;
125
- TYPE binaryWidthType = BINARY (3); END_TYPE;
126
- TYPE binaryWidthFixedType = BINARY (3) FIXED; END_TYPE;
127
- TYPE booleanType = BOOLEAN; END_TYPE;
128
- TYPE integerType = INTEGER; END_TYPE;
129
- TYPE integerWhereType = INTEGER; WHERE TRUE; END_TYPE;
130
- TYPE integerWhereLabelType = INTEGER; WHERE WR1: TRUE; END_TYPE;
131
- TYPE logicalType = LOGICAL; END_TYPE;
132
- TYPE numberType = NUMBER; END_TYPE;
133
- TYPE realType = REAL; END_TYPE;
134
- TYPE realPrecisionType = REAL (3); END_TYPE;
135
- TYPE stringType = STRING; END_TYPE;
136
- TYPE stringWidthType = STRING (3); END_TYPE;
137
- TYPE stringWidthFixedType = STRING (3) FIXED; END_TYPE;
119
+ TYPE binary_type = BINARY; END_TYPE;
120
+ TYPE binary_width_type = BINARY (3); END_TYPE;
121
+ TYPE binary_width_fixed_type = BINARY (3) FIXED; END_TYPE;
122
+ TYPE boolean_type = BOOLEAN; END_TYPE;
123
+ TYPE integer_type = INTEGER; END_TYPE;
124
+ TYPE logical_type = LOGICAL; END_TYPE;
125
+ TYPE number_type = NUMBER; END_TYPE;
126
+ TYPE real_type = REAL; END_TYPE;
127
+ TYPE real_precision_type = REAL (3); END_TYPE;
128
+ TYPE string_type = STRING; END_TYPE;
129
+ TYPE string_width_type = STRING (3); END_TYPE;
130
+ TYPE string_width_fixed_type = STRING (3) FIXED; END_TYPE;
138
131
 
139
132
  -- aggregation types
140
- TYPE arrayType = ARRAY [1:9] OF STRING; END_TYPE;
141
- TYPE arrayOptionalType = ARRAY [1:9] OF OPTIONAL STRING; END_TYPE;
142
- TYPE arrayUniqueType = ARRAY [1:9] OF UNIQUE STRING; END_TYPE;
143
- TYPE arrayOptionalUniqueType = ARRAY [1:9] OF OPTIONAL UNIQUE STRING; END_TYPE;
144
- TYPE bagType = BAG OF STRING; END_TYPE;
145
- TYPE bagBoundType = BAG [1:9] OF STRING; END_TYPE;
146
- TYPE listType = LIST OF STRING; END_TYPE;
147
- TYPE listBoundType = LIST [1:9] OF STRING; END_TYPE;
148
- TYPE listUniqueType = LIST OF UNIQUE STRING; END_TYPE;
149
- TYPE listBoundUniqueType = LIST [1:9] OF UNIQUE STRING; END_TYPE;
150
- TYPE setType = SET OF STRING; END_TYPE;
151
- TYPE setBoundType = SET [1:9] OF STRING; END_TYPE;
133
+ TYPE array_type = ARRAY [1:9] OF STRING; END_TYPE;
134
+ TYPE array_optional_type = ARRAY [1:9] OF OPTIONAL STRING; END_TYPE;
135
+ TYPE array_unique_type = ARRAY [1:9] OF UNIQUE STRING; END_TYPE;
136
+ TYPE array_optional_unique_type = ARRAY [1:9] OF OPTIONAL UNIQUE STRING; END_TYPE;
137
+ TYPE bag_type = BAG OF STRING; END_TYPE;
138
+ TYPE bag_bound_type = BAG [1:9] OF STRING; END_TYPE;
139
+ TYPE list_type = LIST OF STRING; END_TYPE;
140
+ TYPE list_bound_type = LIST [1:9] OF STRING; END_TYPE;
141
+ TYPE list_unique_type = LIST OF UNIQUE STRING; END_TYPE;
142
+ TYPE list_bound_unique_type = LIST [1:9] OF UNIQUE STRING; END_TYPE;
143
+ TYPE set_type = SET OF STRING; END_TYPE;
144
+ TYPE set_bound_type = SET [1:9] OF STRING; END_TYPE;
152
145
 
153
146
  -- constructed types
154
- TYPE selectType = SELECT; END_TYPE;
155
- TYPE selectExtensibleType = EXTENSIBLE SELECT; END_TYPE;
156
- TYPE selectExtensibleGenericEntityType = EXTENSIBLE GENERIC_ENTITY SELECT; END_TYPE;
157
- TYPE selectListType = SELECT (test); END_TYPE;
158
- TYPE selectExtensionTypeRefType = SELECT BASED_ON selectType; END_TYPE;
159
- TYPE selectExtensionTypeRefListType = SELECT BASED_ON selectType WITH (test); END_TYPE;
160
- TYPE enumerationType = ENUMERATION; END_TYPE;
161
- TYPE enumerationExtensibleType = EXTENSIBLE ENUMERATION; END_TYPE;
162
- TYPE enumerationListType = ENUMERATION OF (test); END_TYPE;
163
- TYPE enumerationExtensionTypeRefType = ENUMERATION BASED_ON enumerationType; END_TYPE;
164
- TYPE enumerationExtensionTypeRefListType = ENUMERATION BASED_ON enumerationType WITH (test); END_TYPE;
147
+ TYPE select_type = SELECT; END_TYPE;
148
+ TYPE select_extensible_type = EXTENSIBLE SELECT; END_TYPE;
149
+ TYPE select_extensible_generic_entity_type = EXTENSIBLE GENERIC_ENTITY SELECT; END_TYPE;
150
+ TYPE select_list_type = SELECT (empty_type); END_TYPE;
151
+ TYPE select_extension_type_ref_type = SELECT BASED_ON select_type; END_TYPE;
152
+ TYPE select_extension_type_ref_list_type = SELECT BASED_ON select_type WITH (empty_type); END_TYPE;
153
+ TYPE enumeration_type = ENUMERATION; END_TYPE;
154
+ TYPE enumeration_extensible_type = EXTENSIBLE ENUMERATION; END_TYPE;
155
+ TYPE enumeration_list_type = ENUMERATION OF (test); END_TYPE;
156
+ TYPE enumeration_extension_type_ref_type = ENUMERATION BASED_ON enumeration_type; END_TYPE;
157
+ TYPE enumeration_extension_type_ref_list_type = ENUMERATION BASED_ON enumeration_type WITH (test); END_TYPE;
165
158
 
166
- -- entities
167
- ENTITY emptyEntity; END_ENTITY;
168
- ENTITY abstractEntity ABSTRACT; END_ENTITY;
169
- ENTITY abstractSupertypeEntity ABSTRACT SUPERTYPE; END_ENTITY;
170
- ENTITY abstractSupertypeConstraintEntity ABSTRACT SUPERTYPE OF (emptyEntity); END_ENTITY;
171
- ENTITY supertypeConstraintEntity SUPERTYPE OF (emptyEntity); END_ENTITY;
172
- ENTITY subtypeEntity SUBTYPE OF (emptyEntity); END_ENTITY;
173
- ENTITY supertypeConstraintSubtypeEntity SUPERTYPE OF (emptyEntity) SUBTYPE OF (emptyEntity); END_ENTITY;
174
- ENTITY explicitAttributeEntity; test : BOOLEAN; END_ENTITY;
175
- ENTITY explicitAttributeOptionalEntity; test : OPTIONAL BOOLEAN; END_ENTITY;
176
- ENTITY explicitAttributeMultipleEntity; test : BOOLEAN; test2 : BOOLEAN; END_ENTITY;
177
- ENTITY explicitAttributeMultipleShorthandEntity; test, test2 : BOOLEAN; END_ENTITY;
178
- ENTITY explicitAttributeRedeclaredEntity; SELF\explicitAttributeEntity.test: BOOLEAN; END_ENTITY;
179
- ENTITY explicitAttributeRedeclaredRenamedEntity; SELF\explicitAttributeEntity.test RENAMED test2: BOOLEAN; END_ENTITY;
180
- ENTITY derivedAttributeEntity; DERIVE test : BOOLEAN := TRUE; END_ENTITY;
181
- ENTITY derivedAttributeRedeclaredEntity; DERIVE SELF\explicitAttributeEntity.test : BOOLEAN := TRUE; END_ENTITY;
182
- ENTITY derivedAttributeRedeclaredRenamedEntity; DERIVE SELF\explicitAttributeEntity.test RENAMED test2 : BOOLEAN := TRUE; END_ENTITY;
183
- ENTITY inverseAttributeEntity; INVERSE test : explicitAttributeEntity FOR test; END_ENTITY;
184
- ENTITY inverseAttributeEntityEntity; INVERSE test : explicitAttributeEntity FOR explicitAttributeEntity.test; END_ENTITY;
185
- ENTITY inverseAttributeSetEntity; INVERSE test : SET OF explicitAttributeEntity FOR test; END_ENTITY;
186
- ENTITY inverseAttributeSetBoundEntity; INVERSE test : SET [1:9] OF explicitAttributeEntity FOR test; END_ENTITY;
187
- ENTITY inverseAttributeBagEntity; INVERSE test : BAG OF explicitAttributeEntity FOR test; END_ENTITY;
188
- ENTITY inverseAttributeBagBoundEntity; INVERSE test : BAG [1:9] OF explicitAttributeEntity FOR test; END_ENTITY;
189
- ENTITY inverseAttributeRedeclaredEntity; INVERSE SELF\explicitAttributeEntity.test : explicitAttributeEntity FOR test; END_ENTITY;
190
- ENTITY inverseAttributeRedeclaredRenamedEntity; INVERSE SELF\explicitAttributeEntity.test RENAMED test2 : explicitAttributeEntity FOR test; END_ENTITY;
191
- ENTITY uniqueEntity; UNIQUE test; END_ENTITY;
192
- ENTITY uniqueLabelEntity; UNIQUE UR1: test; END_ENTITY;
193
- ENTITY uniqueQualifiedEntity; UNIQUE SELF\explicitAttributeEntity.test; END_ENTITY;
194
- ENTITY uniqueLabelQualifiedEntity; UNIQUE UR1: SELF\explicitAttributeEntity.test; END_ENTITY;
195
- ENTITY whereEntity; WHERE TRUE; END_ENTITY;
196
- ENTITY whereLabelEntity; WHERE WR1: TRUE; END_ENTITY;
159
+ -- statements
160
+ FUNCTION alias_simple_reference_statement : BOOLEAN; ALIAS test FOR test; ; END_ALIAS; END_FUNCTION;
161
+ FUNCTION alias_attribute_reference_statement : BOOLEAN; ALIAS test FOR test.test; ; END_ALIAS; END_FUNCTION;
162
+ FUNCTION alias_group_reference_statement : BOOLEAN; ALIAS test FOR test\test; ; END_ALIAS; END_FUNCTION;
163
+ FUNCTION alias_index_reference_statement : BOOLEAN; ALIAS test FOR test[1]; ; END_ALIAS; END_FUNCTION;
164
+ FUNCTION alias_index2_reference_statement : BOOLEAN; ALIAS test FOR test[1:9]; ; END_ALIAS; END_FUNCTION;
165
+ FUNCTION assignment_simple_reference_statement : BOOLEAN; test := TRUE; END_FUNCTION;
166
+ FUNCTION assignment_attribute_reference_statement : BOOLEAN; test.test := TRUE; END_FUNCTION;
167
+ FUNCTION assignment_group_reference_statement : BOOLEAN; test\test := TRUE; END_FUNCTION;
168
+ FUNCTION assignment_index_reference_statement : BOOLEAN; test[1] := TRUE; END_FUNCTION;
169
+ FUNCTION assignment_index2_reference_statement : BOOLEAN; test[1:9] := TRUE; END_FUNCTION;
170
+ FUNCTION case_statement : BOOLEAN; CASE test OF TRUE : ; END_CASE; END_FUNCTION;
171
+ FUNCTION case_multiple_statement : BOOLEAN; CASE test OF TRUE : ; TRUE : ; END_CASE; END_FUNCTION;
172
+ FUNCTION case_multiple_shorthand_statement : BOOLEAN; CASE test OF TRUE, TRUE : ; END_CASE; END_FUNCTION;
173
+ FUNCTION case_otherwise_statement : BOOLEAN; CASE test OF TRUE : ; OTHERWISE : ; END_CASE; END_FUNCTION;
174
+ FUNCTION compound_statement : BOOLEAN; BEGIN ; END; END_FUNCTION;
175
+ FUNCTION escape_statement : BOOLEAN; ESCAPE; END_FUNCTION;
176
+ FUNCTION if_statement : BOOLEAN; IF TRUE THEN ; END_IF; END_FUNCTION;
177
+ FUNCTION if2_statement : BOOLEAN; IF TRUE THEN ; ; END_IF; END_FUNCTION;
178
+ FUNCTION if_else_statement : BOOLEAN; IF TRUE THEN ; ELSE ; END_IF; END_FUNCTION;
179
+ FUNCTION if2_else_statement : BOOLEAN; IF TRUE THEN ; ; ELSE ; END_IF; END_FUNCTION;
180
+ FUNCTION if_else2_statement : BOOLEAN; IF TRUE THEN ; ELSE ; ; END_IF; END_FUNCTION;
181
+ FUNCTION if2_else2_statement : BOOLEAN; IF TRUE THEN ; ; ELSE ; ; END_IF; END_FUNCTION;
182
+ FUNCTION null_statement : BOOLEAN; ; END_FUNCTION;
183
+ FUNCTION call_statement : BOOLEAN; empty_procedure; END_FUNCTION;
184
+ FUNCTION call_parameter_statement : BOOLEAN; empty_procedure(TRUE); END_FUNCTION;
185
+ FUNCTION call_parameter2_statement : BOOLEAN; empty_procedure(TRUE, TRUE); END_FUNCTION;
186
+ FUNCTION call_insert_statement : BOOLEAN; INSERT(TRUE); END_FUNCTION;
187
+ FUNCTION call_remove_statement : BOOLEAN; REMOVE(TRUE); END_FUNCTION;
188
+ FUNCTION repeat_statement : BOOLEAN; REPEAT; ; END_REPEAT; END_FUNCTION;
189
+ FUNCTION repeat_variable_statement : BOOLEAN; REPEAT test := 1 TO 9; ; END_REPEAT; END_FUNCTION;
190
+ FUNCTION repeat_variable_increment_statement : BOOLEAN; REPEAT test := 1 TO 9 BY 2; ; END_REPEAT; END_FUNCTION;
191
+ FUNCTION repeat_while_statement : BOOLEAN; REPEAT WHILE TRUE; ; END_REPEAT; END_FUNCTION;
192
+ FUNCTION repeat_until_statement : BOOLEAN; REPEAT UNTIL TRUE; ; END_REPEAT; END_FUNCTION;
193
+ FUNCTION return_statement : BOOLEAN; RETURN; END_FUNCTION;
194
+ FUNCTION return_expression_statement : BOOLEAN; RETURN (TRUE); END_FUNCTION;
195
+ FUNCTION skip_statement : BOOLEAN; SKIP; END_FUNCTION;
197
196
 
198
- -- subtype constraints
199
- SUBTYPE_CONSTRAINT emptySubtypeConstraint FOR emptyEntity; END_SUBTYPE_CONSTRAINT;
200
- SUBTYPE_CONSTRAINT abstractSupertypeSubtypeConstraint FOR emptyEntity; ABSTRACT SUPERTYPE; END_SUBTYPE_CONSTRAINT;
201
- SUBTYPE_CONSTRAINT totalOverSubtypeConstraint FOR emptyEntity; TOTAL_OVER (a); END_SUBTYPE_CONSTRAINT;
202
- SUBTYPE_CONSTRAINT supertypeExpressionSubtypeConstraint FOR emptyEntity; a; END_SUBTYPE_CONSTRAINT;
203
- SUBTYPE_CONSTRAINT supertypeExpressionAndorSubtypeConstraint FOR emptyEntity; a ANDOR b; END_SUBTYPE_CONSTRAINT;
204
- SUBTYPE_CONSTRAINT supertypeExpressionAndSubtypeConstraint FOR emptyEntity; a AND b; END_SUBTYPE_CONSTRAINT;
205
- SUBTYPE_CONSTRAINT supertypeExpressionAndorAndSubtypeConstraint FOR emptyEntity; a ANDOR b AND c; END_SUBTYPE_CONSTRAINT;
206
- SUBTYPE_CONSTRAINT supertypeExpressionAndAndorSubtypeConstraint FOR emptyEntity; a AND b ANDOR c; END_SUBTYPE_CONSTRAINT;
207
- SUBTYPE_CONSTRAINT supertypeExpressionParenthesisAndorAndSubtypeConstraint FOR emptyEntity; (a ANDOR b) AND c; END_SUBTYPE_CONSTRAINT;
208
- SUBTYPE_CONSTRAINT supertypeExpressionAndParenthesisAndorSubtypeConstraint FOR emptyEntity; a AND (b ANDOR c); END_SUBTYPE_CONSTRAINT;
209
- SUBTYPE_CONSTRAINT supertypeExpressionOneofSubtypeConstraint FOR emptyEntity; ONEOF(a, b); END_SUBTYPE_CONSTRAINT;
210
- SUBTYPE_CONSTRAINT supertypeExpressionAndOneofSubtypeConstraint FOR emptyEntity; a AND ONEOF(b, c); END_SUBTYPE_CONSTRAINT;
211
- SUBTYPE_CONSTRAINT supertypeExpressionAndorOneofSubtypeConstraint FOR emptyEntity; a ANDOR ONEOF(b, c); END_SUBTYPE_CONSTRAINT;
212
- SUBTYPE_CONSTRAINT supertypeExpressionOneofAndSubtypeConstraint FOR emptyEntity; ONEOF(a, b) AND c; END_SUBTYPE_CONSTRAINT;
213
- SUBTYPE_CONSTRAINT supertypeExpressionOneofAndorSubtypeConstraint FOR emptyEntity; ONEOF(a, b) ANDOR c; END_SUBTYPE_CONSTRAINT;
214
- SUBTYPE_CONSTRAINT supertypeExpressionOneofAndOneofSubtypeConstraint FOR emptyEntity; ONEOF(a, b) AND ONEOF(c, d); END_SUBTYPE_CONSTRAINT;
215
- SUBTYPE_CONSTRAINT supertypeExpressionOneofAndorOneofSubtypeConstraint FOR emptyEntity; ONEOF(a, b) ANDOR ONEOF(c, d); END_SUBTYPE_CONSTRAINT;
197
+ -- literal expressions
198
+ FUNCTION binary_expression : BOOLEAN; RETURN (%011110000111100001111000); END_FUNCTION;
199
+ FUNCTION integer_expression : BOOLEAN; RETURN (999); END_FUNCTION;
200
+ FUNCTION true_logical_expression : BOOLEAN; RETURN (TRUE); END_FUNCTION;
201
+ FUNCTION false_logical_expression : BOOLEAN; RETURN (FALSE); END_FUNCTION;
202
+ FUNCTION unknown_logical_expression : BOOLEAN; RETURN (UNKNOWN); END_FUNCTION;
203
+ FUNCTION real_expression : BOOLEAN; RETURN (999.999); END_FUNCTION;
204
+ FUNCTION simple_string_expression : BOOLEAN; RETURN ('xxx'); END_FUNCTION;
205
+ FUNCTION encoded_string_expression : BOOLEAN; RETURN ("000000780000007800000078"); END_FUNCTION;
216
206
 
217
- -- functions
218
- FUNCTION emptyFunction : BOOLEAN; ; END_FUNCTION;
219
- FUNCTION parameterFunction (test : BOOLEAN) : BOOLEAN; ; END_FUNCTION;
220
- FUNCTION multipleParameterFunction (test : BOOLEAN; test2 : BOOLEAN) : BOOLEAN; ; END_FUNCTION;
221
- FUNCTION multipleShorthandParameterFunction (test, test2 : BOOLEAN) : BOOLEAN; ; END_FUNCTION;
222
- FUNCTION typeFunction : BOOLEAN; TYPE integerType = INTEGER; END_TYPE; ; END_FUNCTION;
223
- FUNCTION constantFunction : BOOLEAN; CONSTANT test : STRING := 'xxx'; END_CONSTANT; ; END_FUNCTION;
224
- FUNCTION multipleConstantFunction : BOOLEAN; CONSTANT test : STRING := 'xxx'; test2 : STRING := 'xxx'; END_CONSTANT; ; END_FUNCTION;
225
- FUNCTION localFunction : BOOLEAN; LOCAL test : STRING; END_LOCAL; ; END_FUNCTION;
226
- FUNCTION multipleLocalFunction : BOOLEAN; LOCAL test : STRING; test2 : STRING; END_LOCAL; ; END_FUNCTION;
227
- FUNCTION multipleShorthandLocalFunction : BOOLEAN; LOCAL test, test2 : STRING; END_LOCAL; ; END_FUNCTION;
228
- FUNCTION localExpressionFunction : BOOLEAN; LOCAL test : STRING := 'xxx'; END_LOCAL; ; END_FUNCTION;
229
- FUNCTION multipleLocalExpressionFunction : BOOLEAN; LOCAL test : STRING := 'xxx'; test2 : STRING := 'xxx'; END_LOCAL; ; END_FUNCTION;
230
- FUNCTION multipleShorthandLocalExpressionFunction : BOOLEAN; LOCAL test, test2 : STRING := 'xxx'; END_LOCAL; ; END_FUNCTION;
207
+ -- constant expressions
208
+ FUNCTION const_e_expression : BOOLEAN; RETURN (CONST_E); END_FUNCTION;
209
+ FUNCTION indeterminate_expression : BOOLEAN; RETURN (?); END_FUNCTION;
210
+ FUNCTION pi_expression : BOOLEAN; RETURN (PI); END_FUNCTION;
211
+ FUNCTION self_expression : BOOLEAN; RETURN (SELF); END_FUNCTION;
231
212
 
232
- -- procedures
233
- PROCEDURE emptyProcedure; END_PROCEDURE;
234
- PROCEDURE parameterProcedure (test : BOOLEAN); END_PROCEDURE;
235
- PROCEDURE multipleParameterProcedure (test : BOOLEAN; test2 : BOOLEAN); END_PROCEDURE;
236
- PROCEDURE multipleShorthandParameterProcedure (test, test2 : BOOLEAN); END_PROCEDURE;
237
- PROCEDURE variableParameterProcedure (VAR test : BOOLEAN); END_PROCEDURE;
238
- PROCEDURE multipleVariableParameterProcedure (VAR test : BOOLEAN; test2 : BOOLEAN); END_PROCEDURE;
239
- PROCEDURE multipleVariableParameter2Procedure (test : BOOLEAN; VAR test2 : BOOLEAN); END_PROCEDURE;
240
- PROCEDURE multipleShorthandVariableParameterProcedure (VAR test, test2 : BOOLEAN); END_PROCEDURE;
241
- PROCEDURE typeProcedure; TYPE integerType = INTEGER; END_TYPE; END_PROCEDURE;
242
- PROCEDURE constantProcedure; CONSTANT test : STRING := 'xxx'; END_CONSTANT; END_PROCEDURE;
243
- PROCEDURE multipleConstantProcedure; CONSTANT test : STRING := 'xxx'; test2 : STRING := 'xxx'; END_CONSTANT; END_PROCEDURE;
244
- PROCEDURE localProcedure; LOCAL test : STRING; END_LOCAL; END_PROCEDURE;
245
- PROCEDURE multipleLocalProcedure; LOCAL test : STRING; test2 : STRING; END_LOCAL; END_PROCEDURE;
246
- PROCEDURE multipleShorthandLocalProcedure; LOCAL test, test2 : STRING; END_LOCAL; END_PROCEDURE;
247
- PROCEDURE localExpressionProcedure; LOCAL test : STRING := 'xxx'; END_LOCAL; END_PROCEDURE;
248
- PROCEDURE multipleLocalExpressionProcedure; LOCAL test : STRING := 'xxx'; test2 : STRING := 'xxx'; END_LOCAL; END_PROCEDURE;
249
- PROCEDURE multipleShorthandLocalExpressionProcedure; LOCAL test, test2 : STRING := 'xxx'; END_LOCAL; END_PROCEDURE;
213
+ -- function expressions
214
+ FUNCTION abs_expression : BOOLEAN; RETURN (ABS(TRUE)); END_FUNCTION;
215
+ FUNCTION acos_expression : BOOLEAN; RETURN (ACOS(TRUE)); END_FUNCTION;
216
+ FUNCTION asin_expression : BOOLEAN; RETURN (ASIN(TRUE)); END_FUNCTION;
217
+ FUNCTION atan_expression : BOOLEAN; RETURN (ATAN(TRUE)); END_FUNCTION;
218
+ FUNCTION blength_expression : BOOLEAN; RETURN (BLENGTH(TRUE)); END_FUNCTION;
219
+ FUNCTION cos_expression : BOOLEAN; RETURN (COS(TRUE)); END_FUNCTION;
220
+ FUNCTION exists_expression : BOOLEAN; RETURN (EXISTS(TRUE)); END_FUNCTION;
221
+ FUNCTION exp_expression : BOOLEAN; RETURN (EXP(TRUE)); END_FUNCTION;
222
+ FUNCTION format_expression : BOOLEAN; RETURN (FORMAT(TRUE)); END_FUNCTION;
223
+ FUNCTION hibound_expression : BOOLEAN; RETURN (HIBOUND(TRUE)); END_FUNCTION;
224
+ FUNCTION hiindex_expression : BOOLEAN; RETURN (HIINDEX(TRUE)); END_FUNCTION;
225
+ FUNCTION length_expression : BOOLEAN; RETURN (LENGTH(TRUE)); END_FUNCTION;
226
+ FUNCTION lobound_expression : BOOLEAN; RETURN (LOBOUND(TRUE)); END_FUNCTION;
227
+ FUNCTION loindex_expression : BOOLEAN; RETURN (LOINDEX(TRUE)); END_FUNCTION;
228
+ FUNCTION log_expression : BOOLEAN; RETURN (LOG(TRUE)); END_FUNCTION;
229
+ FUNCTION log2_expression : BOOLEAN; RETURN (LOG2(TRUE)); END_FUNCTION;
230
+ FUNCTION log10_expression : BOOLEAN; RETURN (LOG10(TRUE)); END_FUNCTION;
231
+ FUNCTION nvl_expression : BOOLEAN; RETURN (NVL(TRUE)); END_FUNCTION;
232
+ FUNCTION odd_expression : BOOLEAN; RETURN (ODD(TRUE)); END_FUNCTION;
233
+ FUNCTION rolesof_expression : BOOLEAN; RETURN (ROLESOF(TRUE)); END_FUNCTION;
234
+ FUNCTION sin_expression : BOOLEAN; RETURN (SIN(TRUE)); END_FUNCTION;
235
+ FUNCTION sizeof_expression : BOOLEAN; RETURN (SIZEOF(TRUE)); END_FUNCTION;
236
+ FUNCTION sqrt_expression : BOOLEAN; RETURN (SQRT(TRUE)); END_FUNCTION;
237
+ FUNCTION tan_expression : BOOLEAN; RETURN (TAN(TRUE)); END_FUNCTION;
238
+ FUNCTION typeof_expression : BOOLEAN; RETURN (TYPEOF(TRUE)); END_FUNCTION;
239
+ FUNCTION usedin_expression : BOOLEAN; RETURN (USEDIN(TRUE)); END_FUNCTION;
240
+ FUNCTION value_expression : BOOLEAN; RETURN (VALUE(TRUE)); END_FUNCTION;
241
+ FUNCTION value_in_expression : BOOLEAN; RETURN (VALUE_IN(TRUE)); END_FUNCTION;
242
+ FUNCTION value_unique_expression : BOOLEAN; RETURN (VALUE_UNIQUE(TRUE)); END_FUNCTION;
250
243
 
251
- -- rules
252
- RULE emptyRule FOR (emptyEntity); WHERE TRUE; END_RULE;
253
- RULE typeRule FOR (emptyEntity); TYPE integerType = INTEGER; END_TYPE; WHERE TRUE; END_RULE;
254
- RULE constantRule FOR (emptyEntity); CONSTANT test : STRING := 'xxx'; END_CONSTANT; WHERE TRUE; END_RULE;
255
- RULE multipleConstantRule FOR (emptyEntity); CONSTANT test : STRING := 'xxx'; test2 : STRING := 'xxx'; END_CONSTANT; WHERE TRUE; END_RULE;
256
- RULE localRule FOR (emptyEntity); LOCAL test : STRING; END_LOCAL; WHERE TRUE; END_RULE;
257
- RULE multipleLocalRule FOR (emptyEntity); LOCAL test : STRING; test2 : STRING; END_LOCAL; WHERE TRUE; END_RULE;
258
- RULE multipleShorthandLocalRule FOR (emptyEntity); LOCAL test, test2 : STRING; END_LOCAL; WHERE TRUE; END_RULE;
259
- RULE localExpressionRule FOR (emptyEntity); LOCAL test : STRING := 'xxx'; END_LOCAL; WHERE TRUE; END_RULE;
260
- RULE multipleLocalExpressionRule FOR (emptyEntity); LOCAL test : STRING := 'xxx'; test2 : STRING := 'xxx'; END_LOCAL; WHERE TRUE; END_RULE;
261
- RULE multipleShorthandLocalExpressionRule FOR (emptyEntity); LOCAL test, test2 : STRING := 'xxx'; END_LOCAL; WHERE TRUE; END_RULE;
244
+ -- operator expressions
245
+ FUNCTION plus_expression : BOOLEAN; RETURN (+4); END_FUNCTION;
246
+ FUNCTION plus_addition_expression : BOOLEAN; RETURN (+(4 + 2)); END_FUNCTION;
247
+ FUNCTION minus_expression : BOOLEAN; RETURN (-4); END_FUNCTION;
248
+ FUNCTION minus_addition_expression : BOOLEAN; RETURN (-(4 + 2)); END_FUNCTION;
249
+ FUNCTION addition_expression : BOOLEAN; RETURN (4 + 2); END_FUNCTION;
250
+ FUNCTION subtraction_expression : BOOLEAN; RETURN (4 - 2); END_FUNCTION;
251
+ FUNCTION multiplication_expression : BOOLEAN; RETURN (4 * 2); END_FUNCTION;
252
+ FUNCTION real_division_expression : BOOLEAN; RETURN (4 / 2); END_FUNCTION;
253
+ FUNCTION integer_division_expression : BOOLEAN; RETURN (4 DIV 2); END_FUNCTION;
254
+ FUNCTION modulo_expression : BOOLEAN; RETURN (4 MOD 2); END_FUNCTION;
255
+ FUNCTION exponentiation_expression : BOOLEAN; RETURN (4 ** 2); END_FUNCTION;
256
+ FUNCTION addition_addition_expression : BOOLEAN; RETURN (4 + 2 + 1); END_FUNCTION;
257
+ FUNCTION subtraction_subtraction_expression : BOOLEAN; RETURN (4 - 2 - 1); END_FUNCTION;
258
+ FUNCTION addition_subtraction_expression : BOOLEAN; RETURN (4 + 2 - 1); END_FUNCTION;
259
+ FUNCTION subtraction_addition_expression : BOOLEAN; RETURN (4 - 2 + 1); END_FUNCTION;
260
+ FUNCTION addition_multiplication_expression : BOOLEAN; RETURN (8 + 4 * 2); END_FUNCTION;
261
+ FUNCTION multiplication_addition_expression : BOOLEAN; RETURN (8 * 4 + 2); END_FUNCTION;
262
+ FUNCTION parenthesis_addition_multiplication_expression : BOOLEAN; RETURN ((8 + 4) * 2); END_FUNCTION;
263
+ FUNCTION multiplication_parenthesis_addition_expression : BOOLEAN; RETURN (8 * (4 + 2)); END_FUNCTION;
264
+ FUNCTION equal_expression : BOOLEAN; RETURN (4 = 2); END_FUNCTION;
265
+ FUNCTION not_equal_expression : BOOLEAN; RETURN (4 <> 2); END_FUNCTION;
266
+ FUNCTION instance_equal_expression : BOOLEAN; RETURN (4 :=: 2); END_FUNCTION;
267
+ FUNCTION instance_not_equal_expression : BOOLEAN; RETURN (4 :<>: 2); END_FUNCTION;
268
+ FUNCTION lt_expression : BOOLEAN; RETURN (4 < 2); END_FUNCTION;
269
+ FUNCTION gt_expression : BOOLEAN; RETURN (4 > 2); END_FUNCTION;
270
+ FUNCTION lte_expression : BOOLEAN; RETURN (4 <= 2); END_FUNCTION;
271
+ FUNCTION gte_expression : BOOLEAN; RETURN (4 >= 2); END_FUNCTION;
272
+ FUNCTION not_expression : BOOLEAN; RETURN (NOT TRUE); END_FUNCTION;
273
+ FUNCTION not_or_expression : BOOLEAN; RETURN (NOT (TRUE OR FALSE)); END_FUNCTION;
274
+ FUNCTION or_expression : BOOLEAN; RETURN (TRUE OR FALSE); END_FUNCTION;
275
+ FUNCTION and_expression : BOOLEAN; RETURN (TRUE AND FALSE); END_FUNCTION;
276
+ FUNCTION or_or_expression : BOOLEAN; RETURN (TRUE OR FALSE OR TRUE); END_FUNCTION;
277
+ FUNCTION and_and_expression : BOOLEAN; RETURN (TRUE AND FALSE AND TRUE); END_FUNCTION;
278
+ FUNCTION or_and_expression : BOOLEAN; RETURN (TRUE OR FALSE AND TRUE); END_FUNCTION;
279
+ FUNCTION and_or_expression : BOOLEAN; RETURN (TRUE AND FALSE OR TRUE); END_FUNCTION;
280
+ FUNCTION parenthesis_or_and_expression : BOOLEAN; RETURN ((TRUE OR FALSE) AND TRUE); END_FUNCTION;
281
+ FUNCTION and_parenthesis_or_expression : BOOLEAN; RETURN (TRUE AND (FALSE OR TRUE)); END_FUNCTION;
282
+ FUNCTION combine_expression : BOOLEAN; RETURN (test || test); END_FUNCTION;
283
+ FUNCTION in_expression : BOOLEAN; RETURN (TRUE IN [TRUE]); END_FUNCTION;
284
+ FUNCTION like_expression : BOOLEAN; RETURN ('xxx' LIKE 'xxx'); END_FUNCTION;
262
285
 
263
- -- statements
264
- FUNCTION aliasStatement : BOOLEAN; ALIAS test FOR test; ; END_ALIAS; END_FUNCTION;
265
- FUNCTION aliasAttributeStatement : BOOLEAN; ALIAS test FOR test.test; ; END_ALIAS; END_FUNCTION;
266
- FUNCTION aliasGroupStatement : BOOLEAN; ALIAS test FOR test\test; ; END_ALIAS; END_FUNCTION;
267
- FUNCTION aliasIndexStatement : BOOLEAN; ALIAS test FOR test[1]; ; END_ALIAS; END_FUNCTION;
268
- FUNCTION aliasIndex2Statement : BOOLEAN; ALIAS test FOR test[1:9]; ; END_ALIAS; END_FUNCTION;
269
- FUNCTION assignmentStatement : BOOLEAN; test := TRUE; END_FUNCTION;
270
- FUNCTION assignmentAttributeStatement : BOOLEAN; test.test := TRUE; END_FUNCTION;
271
- FUNCTION assignmentGroupStatement : BOOLEAN; test\test := TRUE; END_FUNCTION;
272
- FUNCTION assignmentIndexStatement : BOOLEAN; test[1] := TRUE; END_FUNCTION;
273
- FUNCTION assignmentIndex2Statement : BOOLEAN; test[1:9] := TRUE; END_FUNCTION;
274
- FUNCTION caseStatement : BOOLEAN; CASE test OF TRUE : ; END_CASE; END_FUNCTION;
275
- FUNCTION caseMultipleStatement : BOOLEAN; CASE test OF TRUE : ; TRUE : ; END_CASE; END_FUNCTION;
276
- FUNCTION caseMultipleShorthandStatement : BOOLEAN; CASE test OF TRUE, TRUE : ; END_CASE; END_FUNCTION;
277
- FUNCTION caseOtherwiseStatement : BOOLEAN; CASE test OF TRUE : ; OTHERWISE : ; END_CASE; END_FUNCTION;
278
- FUNCTION compoundStatement : BOOLEAN; BEGIN ; END; END_FUNCTION;
279
- FUNCTION escapeStatement : BOOLEAN; ESCAPE; END_FUNCTION;
280
- FUNCTION ifStatement : BOOLEAN; IF TRUE THEN ; END_IF; END_FUNCTION;
281
- FUNCTION if2Statement : BOOLEAN; IF TRUE THEN ; ; END_IF; END_FUNCTION;
282
- FUNCTION ifElseStatement : BOOLEAN; IF TRUE THEN ; ELSE ; END_IF; END_FUNCTION;
283
- FUNCTION if2ElseStatement : BOOLEAN; IF TRUE THEN ; ; ELSE ; END_IF; END_FUNCTION;
284
- FUNCTION ifElse2Statement : BOOLEAN; IF TRUE THEN ; ELSE ; ; END_IF; END_FUNCTION;
285
- FUNCTION if2Else2Statement : BOOLEAN; IF TRUE THEN ; ; ELSE ; ; END_IF; END_FUNCTION;
286
- FUNCTION nullStatement : BOOLEAN; ; END_FUNCTION;
287
- FUNCTION procedureCallStatement : BOOLEAN; emptyProcedure; END_FUNCTION;
288
- FUNCTION procedureCallParameterStatement : BOOLEAN; emptyProcedure(true); END_FUNCTION;
289
- FUNCTION procedureCallParameter2Statement : BOOLEAN; emptyProcedure(true, true); END_FUNCTION;
290
- FUNCTION procedureCallInsertStatement : BOOLEAN; INSERT; END_FUNCTION;
291
- FUNCTION procedureCallRemoveStatement : BOOLEAN; REMOVE; END_FUNCTION;
292
- FUNCTION repeatStatement : BOOLEAN; REPEAT; ; END_REPEAT; END_FUNCTION;
293
- FUNCTION repeatVariableStatement : BOOLEAN; REPEAT test := 1 TO 9; ; END_REPEAT; END_FUNCTION;
294
- FUNCTION repeatVariableIncrementStatement : BOOLEAN; REPEAT test := 1 TO 9 BY 2; ; END_REPEAT; END_FUNCTION;
295
- FUNCTION repeatWhileStatement : BOOLEAN; REPEAT WHILE TRUE; ; END_REPEAT; END_FUNCTION;
296
- FUNCTION repeatUntilStatement : BOOLEAN; REPEAT UNTIL TRUE; ; END_REPEAT; END_FUNCTION;
297
- FUNCTION returnStatement : BOOLEAN; RETURN (TRUE); END_FUNCTION;
298
- FUNCTION skipStatement : BOOLEAN; SKIP; END_FUNCTION;
286
+ -- aggregate initializer expressions
287
+ FUNCTION aggregate_initializer_expression : BOOLEAN; RETURN ([4]); END_FUNCTION;
288
+ FUNCTION repeated_aggregate_initializer_expression : BOOLEAN; RETURN ([4:2]); END_FUNCTION;
289
+ FUNCTION complex_aggregate_initializer_expression : BOOLEAN; RETURN ([4 + 2]); END_FUNCTION;
290
+ FUNCTION complex_repeated_aggregate_initializer_expression : BOOLEAN; RETURN ([4 + 2:4 + 2]); END_FUNCTION;
291
+
292
+ -- function call or entity constructor expressions
293
+ FUNCTION call_expression : BOOLEAN; RETURN (parameter_function(TRUE)); END_FUNCTION;
294
+
295
+ -- reference expressions
296
+ FUNCTION simple_reference_expression : BOOLEAN; RETURN (simple_string_expression); END_FUNCTION;
297
+ FUNCTION attribute_reference_expression : BOOLEAN; RETURN (simple_string_expression.test); END_FUNCTION;
298
+ FUNCTION group_reference_expression : BOOLEAN; RETURN (simple_string_expression\test); END_FUNCTION;
299
+ FUNCTION index_reference_expression : BOOLEAN; RETURN (simple_string_expression[1]); END_FUNCTION;
300
+ FUNCTION index2_reference_expression : BOOLEAN; RETURN (simple_string_expression[1:9]); END_FUNCTION;
301
+
302
+ -- interval expressions
303
+ FUNCTION lt_lt_interval_expression : BOOLEAN; RETURN ({1 < 5 < 9}); END_FUNCTION;
304
+ FUNCTION lte_lt_interval_expression : BOOLEAN; RETURN ({1 <= 5 < 9}); END_FUNCTION;
305
+ FUNCTION lt_lte_interval_expression : BOOLEAN; RETURN ({1 < 5 <= 9}); END_FUNCTION;
306
+ FUNCTION lte_lte_interval_expression : BOOLEAN; RETURN ({1 <= 5 <= 9}); END_FUNCTION;
299
307
 
308
+ -- query expressions
309
+ FUNCTION query_expression : BOOLEAN; RETURN (QUERY(test <* test2 | TRUE)); END_FUNCTION;
300
310
  END_SCHEMA;