ifc-expressions 2.0.1-beta.7 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/dist/E.d.ts +3 -0
  2. package/dist/cjs/E.js +4 -0
  3. package/dist/cjs/E.js.map +1 -1
  4. package/dist/cjs/compiler/ExprCompiler.js +6 -0
  5. package/dist/cjs/compiler/ExprCompiler.js.map +1 -1
  6. package/dist/cjs/compiler/IfcExpressionValidationListener.js +6 -3
  7. package/dist/cjs/compiler/IfcExpressionValidationListener.js.map +1 -1
  8. package/dist/cjs/compiler/TypeManager.js +8 -0
  9. package/dist/cjs/compiler/TypeManager.js.map +1 -1
  10. package/dist/cjs/error/ExceptionToExprEvalErrorMapper.js +3 -0
  11. package/dist/cjs/error/ExceptionToExprEvalErrorMapper.js.map +1 -1
  12. package/dist/cjs/error/FunctionArgumentException.js +14 -0
  13. package/dist/cjs/error/FunctionArgumentException.js.map +1 -0
  14. package/dist/cjs/error/MissingFunctionArgumentException.js +5 -7
  15. package/dist/cjs/error/MissingFunctionArgumentException.js.map +1 -1
  16. package/dist/cjs/error/SpuriousFunctionArgumentException.js +12 -0
  17. package/dist/cjs/error/SpuriousFunctionArgumentException.js.map +1 -0
  18. package/dist/cjs/error/mapper/MissingFunctionArgumentExceptionMapper.js.map +1 -1
  19. package/dist/cjs/error/mapper/SpuriousFunctionArgumentExceptionMapper.js +12 -0
  20. package/dist/cjs/error/mapper/SpuriousFunctionArgumentExceptionMapper.js.map +1 -0
  21. package/dist/cjs/expression/ExprEvalResult.js +14 -4
  22. package/dist/cjs/expression/ExprEvalResult.js.map +1 -1
  23. package/dist/cjs/expression/ExprKind.js +5 -4
  24. package/dist/cjs/expression/ExprKind.js.map +1 -1
  25. package/dist/cjs/expression/boolean/AndExpr.js +3 -11
  26. package/dist/cjs/expression/boolean/AndExpr.js.map +1 -1
  27. package/dist/cjs/expression/boolean/BinaryBooleanOpExpr.js +23 -0
  28. package/dist/cjs/expression/boolean/BinaryBooleanOpExpr.js.map +1 -0
  29. package/dist/cjs/expression/boolean/LogicalLiteralExpr.js +35 -0
  30. package/dist/cjs/expression/boolean/LogicalLiteralExpr.js.map +1 -0
  31. package/dist/cjs/expression/boolean/NotExpr.js +3 -5
  32. package/dist/cjs/expression/boolean/NotExpr.js.map +1 -1
  33. package/dist/cjs/expression/boolean/OrExpr.js +3 -11
  34. package/dist/cjs/expression/boolean/OrExpr.js.map +1 -1
  35. package/dist/cjs/expression/boolean/XorExpr.js +4 -14
  36. package/dist/cjs/expression/boolean/XorExpr.js.map +1 -1
  37. package/dist/cjs/expression/comparison/EqualsExpr.js +1 -1
  38. package/dist/cjs/expression/comparison/EqualsExpr.js.map +1 -1
  39. package/dist/cjs/expression/comparison/NotEqualsExpr.js +1 -1
  40. package/dist/cjs/expression/comparison/NotEqualsExpr.js.map +1 -1
  41. package/dist/cjs/expression/function/Func.js +3 -5
  42. package/dist/cjs/expression/function/Func.js.map +1 -1
  43. package/dist/cjs/expression/function/IfcExpressionFunctions.js +6 -4
  44. package/dist/cjs/expression/function/IfcExpressionFunctions.js.map +1 -1
  45. package/dist/cjs/expression/function/arg/FuncArgLogicalOrBoolean.js +26 -0
  46. package/dist/cjs/expression/function/arg/FuncArgLogicalOrBoolean.js.map +1 -0
  47. package/dist/cjs/expression/function/impl/FuncBooleanBinary.js +7 -8
  48. package/dist/cjs/expression/function/impl/FuncBooleanBinary.js.map +1 -1
  49. package/dist/cjs/expression/function/impl/IF.js +54 -6
  50. package/dist/cjs/expression/function/impl/IF.js.map +1 -1
  51. package/dist/cjs/expression/function/impl/NOT.js +4 -6
  52. package/dist/cjs/expression/function/impl/NOT.js.map +1 -1
  53. package/dist/cjs/expression/function/impl/TOBOOLEAN.js +1 -1
  54. package/dist/cjs/expression/function/impl/TOBOOLEAN.js.map +1 -1
  55. package/dist/cjs/expression/function/impl/TOLOGICAL.js +39 -0
  56. package/dist/cjs/expression/function/impl/TOLOGICAL.js.map +1 -0
  57. package/dist/cjs/expression/function/impl/TONUMERIC.js +1 -1
  58. package/dist/cjs/expression/function/impl/TONUMERIC.js.map +1 -1
  59. package/dist/cjs/gen/parser/IfcExpressionLexer.js +75 -65
  60. package/dist/cjs/gen/parser/IfcExpressionLexer.js.map +1 -1
  61. package/dist/cjs/gen/parser/IfcExpressionListener.js.map +1 -1
  62. package/dist/cjs/gen/parser/IfcExpressionParser.js +195 -121
  63. package/dist/cjs/gen/parser/IfcExpressionParser.js.map +1 -1
  64. package/dist/cjs/gen/parser/IfcExpressionVisitor.js.map +1 -1
  65. package/dist/cjs/type/Types.js +6 -0
  66. package/dist/cjs/type/Types.js.map +1 -1
  67. package/dist/cjs/value/BooleanValue.js +65 -4
  68. package/dist/cjs/value/BooleanValue.js.map +1 -1
  69. package/dist/cjs/value/Logical.js +2 -0
  70. package/dist/cjs/value/Logical.js.map +1 -0
  71. package/dist/cjs/value/LogicalValue.js +110 -7
  72. package/dist/cjs/value/LogicalValue.js.map +1 -1
  73. package/dist/compiler/ExprCompiler.d.ts +2 -1
  74. package/dist/compiler/IfcExpressionValidationListener.d.ts +2 -1
  75. package/dist/compiler/TypeManager.d.ts +2 -0
  76. package/dist/error/FunctionArgumentException.d.ts +7 -0
  77. package/dist/error/MissingFunctionArgumentException.d.ts +3 -6
  78. package/dist/error/SpuriousFunctionArgumentException.d.ts +4 -0
  79. package/dist/error/mapper/MissingFunctionArgumentExceptionMapper.d.ts +2 -2
  80. package/dist/error/mapper/SpuriousFunctionArgumentExceptionMapper.d.ts +6 -0
  81. package/dist/expression/ExprEvalResult.d.ts +9 -2
  82. package/dist/expression/ExprKind.d.ts +5 -4
  83. package/dist/expression/boolean/AndExpr.d.ts +4 -8
  84. package/dist/expression/boolean/BinaryBooleanOpExpr.d.ts +14 -0
  85. package/dist/expression/boolean/LogicalLiteralExpr.d.ts +12 -0
  86. package/dist/expression/boolean/NotExpr.d.ts +4 -3
  87. package/dist/expression/boolean/OrExpr.d.ts +4 -8
  88. package/dist/expression/boolean/XorExpr.d.ts +4 -8
  89. package/dist/expression/function/Func.d.ts +2 -1
  90. package/dist/expression/function/arg/FuncArgLogicalOrBoolean.d.ts +12 -0
  91. package/dist/expression/function/impl/FuncBooleanBinary.d.ts +2 -2
  92. package/dist/expression/function/impl/IF.d.ts +5 -0
  93. package/dist/expression/function/impl/TOLOGICAL.d.ts +13 -0
  94. package/dist/gen/parser/IfcExpressionLexer.d.ts +8 -7
  95. package/dist/gen/parser/IfcExpressionListener.d.ts +11 -0
  96. package/dist/gen/parser/IfcExpressionParser.d.ts +20 -8
  97. package/dist/gen/parser/IfcExpressionVisitor.d.ts +7 -0
  98. package/dist/mjs/E.js +4 -0
  99. package/dist/mjs/E.js.map +1 -1
  100. package/dist/mjs/compiler/ExprCompiler.js +6 -0
  101. package/dist/mjs/compiler/ExprCompiler.js.map +1 -1
  102. package/dist/mjs/compiler/IfcExpressionValidationListener.js +6 -3
  103. package/dist/mjs/compiler/IfcExpressionValidationListener.js.map +1 -1
  104. package/dist/mjs/compiler/TypeManager.js +8 -0
  105. package/dist/mjs/compiler/TypeManager.js.map +1 -1
  106. package/dist/mjs/error/ExceptionToExprEvalErrorMapper.js +3 -0
  107. package/dist/mjs/error/ExceptionToExprEvalErrorMapper.js.map +1 -1
  108. package/dist/mjs/error/FunctionArgumentException.js +10 -0
  109. package/dist/mjs/error/FunctionArgumentException.js.map +1 -0
  110. package/dist/mjs/error/MissingFunctionArgumentException.js +5 -7
  111. package/dist/mjs/error/MissingFunctionArgumentException.js.map +1 -1
  112. package/dist/mjs/error/SpuriousFunctionArgumentException.js +8 -0
  113. package/dist/mjs/error/SpuriousFunctionArgumentException.js.map +1 -0
  114. package/dist/mjs/error/mapper/MissingFunctionArgumentExceptionMapper.js.map +1 -1
  115. package/dist/mjs/error/mapper/SpuriousFunctionArgumentExceptionMapper.js +8 -0
  116. package/dist/mjs/error/mapper/SpuriousFunctionArgumentExceptionMapper.js.map +1 -0
  117. package/dist/mjs/expression/ExprEvalResult.js +12 -3
  118. package/dist/mjs/expression/ExprEvalResult.js.map +1 -1
  119. package/dist/mjs/expression/ExprKind.js +5 -4
  120. package/dist/mjs/expression/ExprKind.js.map +1 -1
  121. package/dist/mjs/expression/boolean/AndExpr.js +3 -11
  122. package/dist/mjs/expression/boolean/AndExpr.js.map +1 -1
  123. package/dist/mjs/expression/boolean/BinaryBooleanOpExpr.js +19 -0
  124. package/dist/mjs/expression/boolean/BinaryBooleanOpExpr.js.map +1 -0
  125. package/dist/mjs/expression/boolean/LogicalLiteralExpr.js +31 -0
  126. package/dist/mjs/expression/boolean/LogicalLiteralExpr.js.map +1 -0
  127. package/dist/mjs/expression/boolean/NotExpr.js +3 -5
  128. package/dist/mjs/expression/boolean/NotExpr.js.map +1 -1
  129. package/dist/mjs/expression/boolean/OrExpr.js +3 -11
  130. package/dist/mjs/expression/boolean/OrExpr.js.map +1 -1
  131. package/dist/mjs/expression/boolean/XorExpr.js +4 -14
  132. package/dist/mjs/expression/boolean/XorExpr.js.map +1 -1
  133. package/dist/mjs/expression/comparison/EqualsExpr.js +1 -1
  134. package/dist/mjs/expression/comparison/EqualsExpr.js.map +1 -1
  135. package/dist/mjs/expression/comparison/NotEqualsExpr.js +1 -1
  136. package/dist/mjs/expression/comparison/NotEqualsExpr.js.map +1 -1
  137. package/dist/mjs/expression/function/Func.js +3 -5
  138. package/dist/mjs/expression/function/Func.js.map +1 -1
  139. package/dist/mjs/expression/function/IfcExpressionFunctions.js +6 -4
  140. package/dist/mjs/expression/function/IfcExpressionFunctions.js.map +1 -1
  141. package/dist/mjs/expression/function/arg/FuncArgLogicalOrBoolean.js +22 -0
  142. package/dist/mjs/expression/function/arg/FuncArgLogicalOrBoolean.js.map +1 -0
  143. package/dist/mjs/expression/function/impl/FuncBooleanBinary.js +8 -9
  144. package/dist/mjs/expression/function/impl/FuncBooleanBinary.js.map +1 -1
  145. package/dist/mjs/expression/function/impl/IF.js +56 -8
  146. package/dist/mjs/expression/function/impl/IF.js.map +1 -1
  147. package/dist/mjs/expression/function/impl/NOT.js +4 -6
  148. package/dist/mjs/expression/function/impl/NOT.js.map +1 -1
  149. package/dist/mjs/expression/function/impl/TOBOOLEAN.js +1 -1
  150. package/dist/mjs/expression/function/impl/TOBOOLEAN.js.map +1 -1
  151. package/dist/mjs/expression/function/impl/TOLOGICAL.js +35 -0
  152. package/dist/mjs/expression/function/impl/TOLOGICAL.js.map +1 -0
  153. package/dist/mjs/expression/function/impl/TONUMERIC.js +1 -1
  154. package/dist/mjs/expression/function/impl/TONUMERIC.js.map +1 -1
  155. package/dist/mjs/gen/parser/IfcExpressionLexer.js +75 -65
  156. package/dist/mjs/gen/parser/IfcExpressionLexer.js.map +1 -1
  157. package/dist/mjs/gen/parser/IfcExpressionListener.js.map +1 -1
  158. package/dist/mjs/gen/parser/IfcExpressionParser.js +193 -120
  159. package/dist/mjs/gen/parser/IfcExpressionParser.js.map +1 -1
  160. package/dist/mjs/gen/parser/IfcExpressionVisitor.js.map +1 -1
  161. package/dist/mjs/type/Types.js +6 -0
  162. package/dist/mjs/type/Types.js.map +1 -1
  163. package/dist/mjs/value/BooleanValue.js +65 -4
  164. package/dist/mjs/value/BooleanValue.js.map +1 -1
  165. package/dist/mjs/value/Logical.js +2 -0
  166. package/dist/mjs/value/Logical.js.map +1 -0
  167. package/dist/mjs/value/LogicalValue.js +110 -7
  168. package/dist/mjs/value/LogicalValue.js.map +1 -1
  169. package/dist/type/Types.d.ts +2 -0
  170. package/dist/value/BooleanValue.d.ts +15 -2
  171. package/dist/value/Logical.d.ts +0 -0
  172. package/dist/value/LogicalValue.d.ts +26 -9
  173. package/package.json +1 -1
@@ -2,7 +2,7 @@
2
2
  // Generated from IfcExpression.g4 by ANTLR 4.13.0
3
3
  // noinspection ES6UnusedImports,JSUnusedGlobalSymbols,JSUnusedLocalSymbols
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.VariableRefContext = exports.BooleanLiteralContext = exports.StringLiteralContext = exports.NumLiteralContext = exports.LiteralContext = exports.ArrayElementListContext = exports.ArrayExprContext = exports.ExprListContext = exports.FunctionCallContext = exports.MethodCallChainEndContext = exports.MethodCallChainInnerContext = exports.MethodCallChainContext = exports.SEMethodCallContext = exports.SEAddSubContext = exports.SEUnaryMinusContext = exports.SEUnaryMultipleMinusContext = exports.SEVariableRefContext = exports.SENotContext = exports.SEArrayExprContext = exports.SEFunctionCallContext = exports.SEBooleanBinaryOpContext = exports.SEPowerContext = exports.SEMulDivContext = exports.SEParenthesisContext = exports.SELiteralContext = exports.SEComparisonContext = exports.SingleExprContext = exports.ExprContext = void 0;
5
+ exports.VariableRefContext = exports.LogicalLiteralContext = exports.BooleanLiteralContext = exports.StringLiteralContext = exports.NumLiteralContext = exports.LiteralContext = exports.ArrayElementListContext = exports.ArrayExprContext = exports.ExprListContext = exports.FunctionCallContext = exports.MethodCallChainEndContext = exports.MethodCallChainInnerContext = exports.MethodCallChainContext = exports.SEMethodCallContext = exports.SEAddSubContext = exports.SEUnaryMinusContext = exports.SEUnaryMultipleMinusContext = exports.SEVariableRefContext = exports.SENotContext = exports.SEArrayExprContext = exports.SEFunctionCallContext = exports.SEBooleanBinaryOpContext = exports.SEPowerContext = exports.SEMulDivContext = exports.SEParenthesisContext = exports.SELiteralContext = exports.SEComparisonContext = exports.SingleExprContext = exports.ExprContext = void 0;
6
6
  const antlr4_1 = require("antlr4");
7
7
  class IfcExpressionParser extends antlr4_1.Parser {
8
8
  get grammarFileName() { return "IfcExpression.g4"; }
@@ -24,9 +24,9 @@ class IfcExpressionParser extends antlr4_1.Parser {
24
24
  try {
25
25
  this.enterOuterAlt(localctx, 1);
26
26
  {
27
- this.state = 24;
27
+ this.state = 26;
28
28
  this.singleExpr(0);
29
- this.state = 25;
29
+ this.state = 27;
30
30
  this.match(IfcExpressionParser.EOF);
31
31
  }
32
32
  }
@@ -61,7 +61,7 @@ class IfcExpressionParser extends antlr4_1.Parser {
61
61
  let _alt;
62
62
  this.enterOuterAlt(localctx, 1);
63
63
  {
64
- this.state = 42;
64
+ this.state = 44;
65
65
  this._errHandler.sync(this);
66
66
  switch (this._input.LA(1)) {
67
67
  case 1:
@@ -69,9 +69,9 @@ class IfcExpressionParser extends antlr4_1.Parser {
69
69
  localctx = new SEUnaryMultipleMinusContext(this, localctx);
70
70
  this._ctx = localctx;
71
71
  _prevctx = localctx;
72
- this.state = 28;
72
+ this.state = 30;
73
73
  this.match(IfcExpressionParser.T__0);
74
- this.state = 29;
74
+ this.state = 31;
75
75
  localctx._sub = this.singleExpr(14);
76
76
  }
77
77
  break;
@@ -80,11 +80,11 @@ class IfcExpressionParser extends antlr4_1.Parser {
80
80
  localctx = new SEParenthesisContext(this, localctx);
81
81
  this._ctx = localctx;
82
82
  _prevctx = localctx;
83
- this.state = 30;
83
+ this.state = 32;
84
84
  this.match(IfcExpressionParser.T__1);
85
- this.state = 31;
85
+ this.state = 33;
86
86
  localctx._sub = this.singleExpr(0);
87
- this.state = 32;
87
+ this.state = 34;
88
88
  this.match(IfcExpressionParser.T__2);
89
89
  }
90
90
  break;
@@ -93,9 +93,9 @@ class IfcExpressionParser extends antlr4_1.Parser {
93
93
  localctx = new SEUnaryMinusContext(this, localctx);
94
94
  this._ctx = localctx;
95
95
  _prevctx = localctx;
96
- this.state = 34;
96
+ this.state = 36;
97
97
  this.match(IfcExpressionParser.T__3);
98
- this.state = 35;
98
+ this.state = 37;
99
99
  localctx._sub = this.singleExpr(12);
100
100
  }
101
101
  break;
@@ -104,9 +104,9 @@ class IfcExpressionParser extends antlr4_1.Parser {
104
104
  localctx = new SENotContext(this, localctx);
105
105
  this._ctx = localctx;
106
106
  _prevctx = localctx;
107
- this.state = 36;
107
+ this.state = 38;
108
108
  this.match(IfcExpressionParser.T__8);
109
- this.state = 37;
109
+ this.state = 39;
110
110
  localctx._sub = this.singleExpr(6);
111
111
  }
112
112
  break;
@@ -115,28 +115,29 @@ class IfcExpressionParser extends antlr4_1.Parser {
115
115
  localctx = new SEVariableRefContext(this, localctx);
116
116
  this._ctx = localctx;
117
117
  _prevctx = localctx;
118
- this.state = 38;
118
+ this.state = 40;
119
119
  localctx._sub = this.variableRef();
120
120
  }
121
121
  break;
122
- case 19:
122
+ case 20:
123
123
  {
124
124
  localctx = new SEFunctionCallContext(this, localctx);
125
125
  this._ctx = localctx;
126
126
  _prevctx = localctx;
127
- this.state = 39;
127
+ this.state = 41;
128
128
  localctx._sub = this.functionCall();
129
129
  }
130
130
  break;
131
131
  case 14:
132
132
  case 15:
133
133
  case 16:
134
- case 18:
134
+ case 17:
135
+ case 19:
135
136
  {
136
137
  localctx = new SELiteralContext(this, localctx);
137
138
  this._ctx = localctx;
138
139
  _prevctx = localctx;
139
- this.state = 40;
140
+ this.state = 42;
140
141
  localctx._sub = this.literal();
141
142
  }
142
143
  break;
@@ -145,7 +146,7 @@ class IfcExpressionParser extends antlr4_1.Parser {
145
146
  localctx = new SEArrayExprContext(this, localctx);
146
147
  this._ctx = localctx;
147
148
  _prevctx = localctx;
148
- this.state = 41;
149
+ this.state = 43;
149
150
  localctx._sub = this.arrayExpr();
150
151
  }
151
152
  break;
@@ -153,7 +154,7 @@ class IfcExpressionParser extends antlr4_1.Parser {
153
154
  throw new antlr4_1.NoViableAltException(this);
154
155
  }
155
156
  this._ctx.stop = this._input.LT(-1);
156
- this.state = 63;
157
+ this.state = 65;
157
158
  this._errHandler.sync(this);
158
159
  _alt = this._interp.adaptivePredict(this._input, 2, this._ctx);
159
160
  while (_alt !== 2 && _alt !== antlr4_1.ATN.INVALID_ALT_NUMBER) {
@@ -163,7 +164,7 @@ class IfcExpressionParser extends antlr4_1.Parser {
163
164
  }
164
165
  _prevctx = localctx;
165
166
  {
166
- this.state = 61;
167
+ this.state = 63;
167
168
  this._errHandler.sync(this);
168
169
  switch (this._interp.adaptivePredict(this._input, 1, this._ctx)) {
169
170
  case 1:
@@ -171,13 +172,13 @@ class IfcExpressionParser extends antlr4_1.Parser {
171
172
  localctx = new SEPowerContext(this, new SingleExprContext(this, _parentctx, _parentState));
172
173
  localctx._left = _prevctx;
173
174
  this.pushNewRecursionContext(localctx, _startState, IfcExpressionParser.RULE_singleExpr);
174
- this.state = 44;
175
+ this.state = 46;
175
176
  if (!(this.precpred(this._ctx, 11))) {
176
177
  throw this.createFailedPredicateException("this.precpred(this._ctx, 11)");
177
178
  }
178
- this.state = 45;
179
+ this.state = 47;
179
180
  localctx._op = this.match(IfcExpressionParser.T__4);
180
- this.state = 46;
181
+ this.state = 48;
181
182
  localctx._right = this.singleExpr(11);
182
183
  }
183
184
  break;
@@ -186,11 +187,11 @@ class IfcExpressionParser extends antlr4_1.Parser {
186
187
  localctx = new SEMulDivContext(this, new SingleExprContext(this, _parentctx, _parentState));
187
188
  localctx._left = _prevctx;
188
189
  this.pushNewRecursionContext(localctx, _startState, IfcExpressionParser.RULE_singleExpr);
189
- this.state = 47;
190
+ this.state = 49;
190
191
  if (!(this.precpred(this._ctx, 9))) {
191
192
  throw this.createFailedPredicateException("this.precpred(this._ctx, 9)");
192
193
  }
193
- this.state = 48;
194
+ this.state = 50;
194
195
  localctx._op = this._input.LT(1);
195
196
  _la = this._input.LA(1);
196
197
  if (!(_la === 6 || _la === 7)) {
@@ -200,7 +201,7 @@ class IfcExpressionParser extends antlr4_1.Parser {
200
201
  this._errHandler.reportMatch(this);
201
202
  this.consume();
202
203
  }
203
- this.state = 49;
204
+ this.state = 51;
204
205
  localctx._right = this.singleExpr(10);
205
206
  }
206
207
  break;
@@ -209,11 +210,11 @@ class IfcExpressionParser extends antlr4_1.Parser {
209
210
  localctx = new SEAddSubContext(this, new SingleExprContext(this, _parentctx, _parentState));
210
211
  localctx._left = _prevctx;
211
212
  this.pushNewRecursionContext(localctx, _startState, IfcExpressionParser.RULE_singleExpr);
212
- this.state = 50;
213
+ this.state = 52;
213
214
  if (!(this.precpred(this._ctx, 8))) {
214
215
  throw this.createFailedPredicateException("this.precpred(this._ctx, 8)");
215
216
  }
216
- this.state = 51;
217
+ this.state = 53;
217
218
  localctx._op = this._input.LT(1);
218
219
  _la = this._input.LA(1);
219
220
  if (!(_la === 4 || _la === 8)) {
@@ -223,7 +224,7 @@ class IfcExpressionParser extends antlr4_1.Parser {
223
224
  this._errHandler.reportMatch(this);
224
225
  this.consume();
225
226
  }
226
- this.state = 52;
227
+ this.state = 54;
227
228
  localctx._right = this.singleExpr(9);
228
229
  }
229
230
  break;
@@ -232,13 +233,13 @@ class IfcExpressionParser extends antlr4_1.Parser {
232
233
  localctx = new SEComparisonContext(this, new SingleExprContext(this, _parentctx, _parentState));
233
234
  localctx._left = _prevctx;
234
235
  this.pushNewRecursionContext(localctx, _startState, IfcExpressionParser.RULE_singleExpr);
235
- this.state = 53;
236
+ this.state = 55;
236
237
  if (!(this.precpred(this._ctx, 7))) {
237
238
  throw this.createFailedPredicateException("this.precpred(this._ctx, 7)");
238
239
  }
239
- this.state = 54;
240
+ this.state = 56;
240
241
  this.match(IfcExpressionParser.CMP_OP);
241
- this.state = 55;
242
+ this.state = 57;
242
243
  localctx._right = this.singleExpr(8);
243
244
  }
244
245
  break;
@@ -247,13 +248,13 @@ class IfcExpressionParser extends antlr4_1.Parser {
247
248
  localctx = new SEBooleanBinaryOpContext(this, new SingleExprContext(this, _parentctx, _parentState));
248
249
  localctx._left = _prevctx;
249
250
  this.pushNewRecursionContext(localctx, _startState, IfcExpressionParser.RULE_singleExpr);
250
- this.state = 56;
251
+ this.state = 58;
251
252
  if (!(this.precpred(this._ctx, 5))) {
252
253
  throw this.createFailedPredicateException("this.precpred(this._ctx, 5)");
253
254
  }
254
- this.state = 57;
255
+ this.state = 59;
255
256
  localctx._op = this.match(IfcExpressionParser.BOOLEAN_BINARY_OP);
256
- this.state = 58;
257
+ this.state = 60;
257
258
  localctx._right = this.singleExpr(6);
258
259
  }
259
260
  break;
@@ -262,18 +263,18 @@ class IfcExpressionParser extends antlr4_1.Parser {
262
263
  localctx = new SEMethodCallContext(this, new SingleExprContext(this, _parentctx, _parentState));
263
264
  localctx._target = _prevctx;
264
265
  this.pushNewRecursionContext(localctx, _startState, IfcExpressionParser.RULE_singleExpr);
265
- this.state = 59;
266
+ this.state = 61;
266
267
  if (!(this.precpred(this._ctx, 10))) {
267
268
  throw this.createFailedPredicateException("this.precpred(this._ctx, 10)");
268
269
  }
269
- this.state = 60;
270
+ this.state = 62;
270
271
  localctx._call = this.methodCallChain();
271
272
  }
272
273
  break;
273
274
  }
274
275
  }
275
276
  }
276
- this.state = 65;
277
+ this.state = 67;
277
278
  this._errHandler.sync(this);
278
279
  _alt = this._interp.adaptivePredict(this._input, 2, this._ctx);
279
280
  }
@@ -299,18 +300,18 @@ class IfcExpressionParser extends antlr4_1.Parser {
299
300
  let localctx = new MethodCallChainContext(this, this._ctx, this.state);
300
301
  this.enterRule(localctx, 4, IfcExpressionParser.RULE_methodCallChain);
301
302
  try {
302
- this.state = 72;
303
+ this.state = 74;
303
304
  this._errHandler.sync(this);
304
305
  switch (this._interp.adaptivePredict(this._input, 3, this._ctx)) {
305
306
  case 1:
306
307
  localctx = new MethodCallChainInnerContext(this, localctx);
307
308
  this.enterOuterAlt(localctx, 1);
308
309
  {
309
- this.state = 66;
310
+ this.state = 68;
310
311
  this.match(IfcExpressionParser.DOT);
311
- this.state = 67;
312
+ this.state = 69;
312
313
  localctx._target = this.functionCall();
313
- this.state = 68;
314
+ this.state = 70;
314
315
  localctx._call = this.methodCallChain();
315
316
  }
316
317
  break;
@@ -318,9 +319,9 @@ class IfcExpressionParser extends antlr4_1.Parser {
318
319
  localctx = new MethodCallChainEndContext(this, localctx);
319
320
  this.enterOuterAlt(localctx, 2);
320
321
  {
321
- this.state = 70;
322
+ this.state = 72;
322
323
  this.match(IfcExpressionParser.DOT);
323
- this.state = 71;
324
+ this.state = 73;
324
325
  localctx._call = this.functionCall();
325
326
  }
326
327
  break;
@@ -349,20 +350,20 @@ class IfcExpressionParser extends antlr4_1.Parser {
349
350
  try {
350
351
  this.enterOuterAlt(localctx, 1);
351
352
  {
352
- this.state = 74;
353
+ this.state = 76;
353
354
  this.match(IfcExpressionParser.IDENTIFIER);
354
- this.state = 75;
355
- this.match(IfcExpressionParser.T__1);
356
355
  this.state = 77;
356
+ this.match(IfcExpressionParser.T__1);
357
+ this.state = 79;
357
358
  this._errHandler.sync(this);
358
359
  _la = this._input.LA(1);
359
- if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 911894) !== 0)) {
360
+ if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1829398) !== 0)) {
360
361
  {
361
- this.state = 76;
362
+ this.state = 78;
362
363
  localctx._sub = this.exprList();
363
364
  }
364
365
  }
365
- this.state = 79;
366
+ this.state = 81;
366
367
  this.match(IfcExpressionParser.T__2);
367
368
  }
368
369
  }
@@ -386,24 +387,24 @@ class IfcExpressionParser extends antlr4_1.Parser {
386
387
  let localctx = new ExprListContext(this, this._ctx, this.state);
387
388
  this.enterRule(localctx, 8, IfcExpressionParser.RULE_exprList);
388
389
  try {
389
- this.state = 86;
390
+ this.state = 88;
390
391
  this._errHandler.sync(this);
391
392
  switch (this._interp.adaptivePredict(this._input, 5, this._ctx)) {
392
393
  case 1:
393
394
  this.enterOuterAlt(localctx, 1);
394
395
  {
395
- this.state = 81;
396
+ this.state = 83;
396
397
  this.singleExpr(0);
397
398
  }
398
399
  break;
399
400
  case 2:
400
401
  this.enterOuterAlt(localctx, 2);
401
402
  {
402
- this.state = 82;
403
+ this.state = 84;
403
404
  this.singleExpr(0);
404
- this.state = 83;
405
+ this.state = 85;
405
406
  this.match(IfcExpressionParser.T__9);
406
- this.state = 84;
407
+ this.state = 86;
407
408
  this.exprList();
408
409
  }
409
410
  break;
@@ -432,18 +433,18 @@ class IfcExpressionParser extends antlr4_1.Parser {
432
433
  try {
433
434
  this.enterOuterAlt(localctx, 1);
434
435
  {
435
- this.state = 88;
436
- this.match(IfcExpressionParser.T__10);
437
436
  this.state = 90;
437
+ this.match(IfcExpressionParser.T__10);
438
+ this.state = 92;
438
439
  this._errHandler.sync(this);
439
440
  _la = this._input.LA(1);
440
- if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 911894) !== 0)) {
441
+ if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1829398) !== 0)) {
441
442
  {
442
- this.state = 89;
443
+ this.state = 91;
443
444
  localctx._sub = this.arrayElementList();
444
445
  }
445
446
  }
446
- this.state = 92;
447
+ this.state = 94;
447
448
  this.match(IfcExpressionParser.T__11);
448
449
  }
449
450
  }
@@ -467,24 +468,24 @@ class IfcExpressionParser extends antlr4_1.Parser {
467
468
  let localctx = new ArrayElementListContext(this, this._ctx, this.state);
468
469
  this.enterRule(localctx, 12, IfcExpressionParser.RULE_arrayElementList);
469
470
  try {
470
- this.state = 99;
471
+ this.state = 101;
471
472
  this._errHandler.sync(this);
472
473
  switch (this._interp.adaptivePredict(this._input, 7, this._ctx)) {
473
474
  case 1:
474
475
  this.enterOuterAlt(localctx, 1);
475
476
  {
476
- this.state = 94;
477
+ this.state = 96;
477
478
  this.singleExpr(0);
478
479
  }
479
480
  break;
480
481
  case 2:
481
482
  this.enterOuterAlt(localctx, 2);
482
483
  {
483
- this.state = 95;
484
+ this.state = 97;
484
485
  this.singleExpr(0);
485
- this.state = 96;
486
+ this.state = 98;
486
487
  this.match(IfcExpressionParser.T__9);
487
- this.state = 97;
488
+ this.state = 99;
488
489
  this.arrayElementList();
489
490
  }
490
491
  break;
@@ -510,31 +511,38 @@ class IfcExpressionParser extends antlr4_1.Parser {
510
511
  let localctx = new LiteralContext(this, this._ctx, this.state);
511
512
  this.enterRule(localctx, 14, IfcExpressionParser.RULE_literal);
512
513
  try {
513
- this.state = 104;
514
+ this.state = 107;
514
515
  this._errHandler.sync(this);
515
516
  switch (this._input.LA(1)) {
516
517
  case 14:
517
518
  case 15:
518
519
  this.enterOuterAlt(localctx, 1);
519
520
  {
520
- this.state = 101;
521
+ this.state = 103;
521
522
  this.numLiteral();
522
523
  }
523
524
  break;
524
- case 18:
525
+ case 19:
525
526
  this.enterOuterAlt(localctx, 2);
526
527
  {
527
- this.state = 102;
528
+ this.state = 104;
528
529
  this.stringLiteral();
529
530
  }
530
531
  break;
531
532
  case 16:
532
533
  this.enterOuterAlt(localctx, 3);
533
534
  {
534
- this.state = 103;
535
+ this.state = 105;
535
536
  this.booleanLiteral();
536
537
  }
537
538
  break;
539
+ case 17:
540
+ this.enterOuterAlt(localctx, 4);
541
+ {
542
+ this.state = 106;
543
+ this.logicalLiteral();
544
+ }
545
+ break;
538
546
  default:
539
547
  throw new antlr4_1.NoViableAltException(this);
540
548
  }
@@ -562,7 +570,7 @@ class IfcExpressionParser extends antlr4_1.Parser {
562
570
  try {
563
571
  this.enterOuterAlt(localctx, 1);
564
572
  {
565
- this.state = 106;
573
+ this.state = 109;
566
574
  _la = this._input.LA(1);
567
575
  if (!(_la === 14 || _la === 15)) {
568
576
  this._errHandler.recoverInline(this);
@@ -595,7 +603,7 @@ class IfcExpressionParser extends antlr4_1.Parser {
595
603
  try {
596
604
  this.enterOuterAlt(localctx, 1);
597
605
  {
598
- this.state = 108;
606
+ this.state = 111;
599
607
  this.match(IfcExpressionParser.QUOTED_STRING);
600
608
  }
601
609
  }
@@ -621,7 +629,7 @@ class IfcExpressionParser extends antlr4_1.Parser {
621
629
  try {
622
630
  this.enterOuterAlt(localctx, 1);
623
631
  {
624
- this.state = 110;
632
+ this.state = 113;
625
633
  this.match(IfcExpressionParser.BOOLEAN);
626
634
  }
627
635
  }
@@ -641,15 +649,41 @@ class IfcExpressionParser extends antlr4_1.Parser {
641
649
  return localctx;
642
650
  }
643
651
  // @RuleVersion(0)
652
+ logicalLiteral() {
653
+ let localctx = new LogicalLiteralContext(this, this._ctx, this.state);
654
+ this.enterRule(localctx, 22, IfcExpressionParser.RULE_logicalLiteral);
655
+ try {
656
+ this.enterOuterAlt(localctx, 1);
657
+ {
658
+ this.state = 115;
659
+ this.match(IfcExpressionParser.LOGICAL_UNKNOWN);
660
+ }
661
+ }
662
+ catch (re) {
663
+ if (re instanceof antlr4_1.RecognitionException) {
664
+ localctx.exception = re;
665
+ this._errHandler.reportError(this, re);
666
+ this._errHandler.recover(this, re);
667
+ }
668
+ else {
669
+ throw re;
670
+ }
671
+ }
672
+ finally {
673
+ this.exitRule();
674
+ }
675
+ return localctx;
676
+ }
677
+ // @RuleVersion(0)
644
678
  variableRef() {
645
679
  let localctx = new VariableRefContext(this, this._ctx, this.state);
646
- this.enterRule(localctx, 22, IfcExpressionParser.RULE_variableRef);
680
+ this.enterRule(localctx, 24, IfcExpressionParser.RULE_variableRef);
647
681
  try {
648
682
  this.enterOuterAlt(localctx, 1);
649
683
  {
650
- this.state = 112;
684
+ this.state = 117;
651
685
  this.match(IfcExpressionParser.T__12);
652
- this.state = 113;
686
+ this.state = 118;
653
687
  this.match(IfcExpressionParser.IDENTIFIER);
654
688
  }
655
689
  }
@@ -715,13 +749,14 @@ IfcExpressionParser.T__12 = 13;
715
749
  IfcExpressionParser.INT = 14;
716
750
  IfcExpressionParser.FLOAT = 15;
717
751
  IfcExpressionParser.BOOLEAN = 16;
718
- IfcExpressionParser.DOT = 17;
719
- IfcExpressionParser.QUOTED_STRING = 18;
720
- IfcExpressionParser.IDENTIFIER = 19;
721
- IfcExpressionParser.WS = 20;
722
- IfcExpressionParser.NEWLINE = 21;
723
- IfcExpressionParser.BOOLEAN_BINARY_OP = 22;
724
- IfcExpressionParser.CMP_OP = 23;
752
+ IfcExpressionParser.LOGICAL_UNKNOWN = 17;
753
+ IfcExpressionParser.DOT = 18;
754
+ IfcExpressionParser.QUOTED_STRING = 19;
755
+ IfcExpressionParser.IDENTIFIER = 20;
756
+ IfcExpressionParser.WS = 21;
757
+ IfcExpressionParser.NEWLINE = 22;
758
+ IfcExpressionParser.BOOLEAN_BINARY_OP = 23;
759
+ IfcExpressionParser.CMP_OP = 24;
725
760
  IfcExpressionParser.EOF = antlr4_1.Token.EOF;
726
761
  IfcExpressionParser.RULE_expr = 0;
727
762
  IfcExpressionParser.RULE_singleExpr = 1;
@@ -734,7 +769,8 @@ IfcExpressionParser.RULE_literal = 7;
734
769
  IfcExpressionParser.RULE_numLiteral = 8;
735
770
  IfcExpressionParser.RULE_stringLiteral = 9;
736
771
  IfcExpressionParser.RULE_booleanLiteral = 10;
737
- IfcExpressionParser.RULE_variableRef = 11;
772
+ IfcExpressionParser.RULE_logicalLiteral = 11;
773
+ IfcExpressionParser.RULE_variableRef = 12;
738
774
  IfcExpressionParser.literalNames = [null, "'--'",
739
775
  "'('", "')'",
740
776
  "'-'", "'^'",
@@ -743,7 +779,8 @@ IfcExpressionParser.literalNames = [null, "'--'",
743
779
  "','", "'['",
744
780
  "']'", "'$'",
745
781
  null, null,
746
- null, "'.'"];
782
+ null, null,
783
+ "'.'"];
747
784
  IfcExpressionParser.symbolicNames = [null, null,
748
785
  null, null,
749
786
  null, null,
@@ -753,6 +790,7 @@ IfcExpressionParser.symbolicNames = [null, null,
753
790
  null, null,
754
791
  "INT", "FLOAT",
755
792
  "BOOLEAN",
793
+ "LOGICAL_UNKNOWN",
756
794
  "DOT", "QUOTED_STRING",
757
795
  "IDENTIFIER",
758
796
  "WS", "NEWLINE",
@@ -762,43 +800,44 @@ IfcExpressionParser.symbolicNames = [null, null,
762
800
  IfcExpressionParser.ruleNames = [
763
801
  "expr", "singleExpr", "methodCallChain", "functionCall", "exprList", "arrayExpr",
764
802
  "arrayElementList", "literal", "numLiteral", "stringLiteral", "booleanLiteral",
765
- "variableRef",
803
+ "logicalLiteral", "variableRef",
766
804
  ];
767
- IfcExpressionParser._serializedATN = [4, 1, 23, 116, 2, 0, 7, 0, 2,
805
+ IfcExpressionParser._serializedATN = [4, 1, 24, 121, 2, 0, 7, 0, 2,
768
806
  1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2,
769
- 10, 7, 10, 2, 11, 7, 11, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
770
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 43, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
771
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 62, 8, 1, 10, 1, 12, 1, 65, 9, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1,
772
- 2, 1, 2, 3, 2, 73, 8, 2, 1, 3, 1, 3, 1, 3, 3, 3, 78, 8, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4,
773
- 87, 8, 4, 1, 5, 1, 5, 3, 5, 91, 8, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 100, 8, 6, 1, 7, 1,
774
- 7, 1, 7, 3, 7, 105, 8, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 0, 1, 2, 12,
775
- 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 0, 3, 1, 0, 6, 7, 2, 0, 4, 4, 8, 8, 1, 0, 14, 15, 123, 0,
776
- 24, 1, 0, 0, 0, 2, 42, 1, 0, 0, 0, 4, 72, 1, 0, 0, 0, 6, 74, 1, 0, 0, 0, 8, 86, 1, 0, 0, 0, 10, 88, 1,
777
- 0, 0, 0, 12, 99, 1, 0, 0, 0, 14, 104, 1, 0, 0, 0, 16, 106, 1, 0, 0, 0, 18, 108, 1, 0, 0, 0, 20, 110,
778
- 1, 0, 0, 0, 22, 112, 1, 0, 0, 0, 24, 25, 3, 2, 1, 0, 25, 26, 5, 0, 0, 1, 26, 1, 1, 0, 0, 0, 27, 28, 6,
779
- 1, -1, 0, 28, 29, 5, 1, 0, 0, 29, 43, 3, 2, 1, 14, 30, 31, 5, 2, 0, 0, 31, 32, 3, 2, 1, 0, 32, 33, 5,
780
- 3, 0, 0, 33, 43, 1, 0, 0, 0, 34, 35, 5, 4, 0, 0, 35, 43, 3, 2, 1, 12, 36, 37, 5, 9, 0, 0, 37, 43, 3,
781
- 2, 1, 6, 38, 43, 3, 22, 11, 0, 39, 43, 3, 6, 3, 0, 40, 43, 3, 14, 7, 0, 41, 43, 3, 10, 5, 0, 42, 27,
782
- 1, 0, 0, 0, 42, 30, 1, 0, 0, 0, 42, 34, 1, 0, 0, 0, 42, 36, 1, 0, 0, 0, 42, 38, 1, 0, 0, 0, 42, 39, 1,
783
- 0, 0, 0, 42, 40, 1, 0, 0, 0, 42, 41, 1, 0, 0, 0, 43, 63, 1, 0, 0, 0, 44, 45, 10, 11, 0, 0, 45, 46, 5,
784
- 5, 0, 0, 46, 62, 3, 2, 1, 11, 47, 48, 10, 9, 0, 0, 48, 49, 7, 0, 0, 0, 49, 62, 3, 2, 1, 10, 50, 51,
785
- 10, 8, 0, 0, 51, 52, 7, 1, 0, 0, 52, 62, 3, 2, 1, 9, 53, 54, 10, 7, 0, 0, 54, 55, 5, 23, 0, 0, 55, 62,
786
- 3, 2, 1, 8, 56, 57, 10, 5, 0, 0, 57, 58, 5, 22, 0, 0, 58, 62, 3, 2, 1, 6, 59, 60, 10, 10, 0, 0, 60,
787
- 62, 3, 4, 2, 0, 61, 44, 1, 0, 0, 0, 61, 47, 1, 0, 0, 0, 61, 50, 1, 0, 0, 0, 61, 53, 1, 0, 0, 0, 61, 56,
788
- 1, 0, 0, 0, 61, 59, 1, 0, 0, 0, 62, 65, 1, 0, 0, 0, 63, 61, 1, 0, 0, 0, 63, 64, 1, 0, 0, 0, 64, 3, 1,
789
- 0, 0, 0, 65, 63, 1, 0, 0, 0, 66, 67, 5, 17, 0, 0, 67, 68, 3, 6, 3, 0, 68, 69, 3, 4, 2, 0, 69, 73, 1,
790
- 0, 0, 0, 70, 71, 5, 17, 0, 0, 71, 73, 3, 6, 3, 0, 72, 66, 1, 0, 0, 0, 72, 70, 1, 0, 0, 0, 73, 5, 1, 0,
791
- 0, 0, 74, 75, 5, 19, 0, 0, 75, 77, 5, 2, 0, 0, 76, 78, 3, 8, 4, 0, 77, 76, 1, 0, 0, 0, 77, 78, 1, 0,
792
- 0, 0, 78, 79, 1, 0, 0, 0, 79, 80, 5, 3, 0, 0, 80, 7, 1, 0, 0, 0, 81, 87, 3, 2, 1, 0, 82, 83, 3, 2, 1,
793
- 0, 83, 84, 5, 10, 0, 0, 84, 85, 3, 8, 4, 0, 85, 87, 1, 0, 0, 0, 86, 81, 1, 0, 0, 0, 86, 82, 1, 0, 0,
794
- 0, 87, 9, 1, 0, 0, 0, 88, 90, 5, 11, 0, 0, 89, 91, 3, 12, 6, 0, 90, 89, 1, 0, 0, 0, 90, 91, 1, 0, 0,
795
- 0, 91, 92, 1, 0, 0, 0, 92, 93, 5, 12, 0, 0, 93, 11, 1, 0, 0, 0, 94, 100, 3, 2, 1, 0, 95, 96, 3, 2, 1,
796
- 0, 96, 97, 5, 10, 0, 0, 97, 98, 3, 12, 6, 0, 98, 100, 1, 0, 0, 0, 99, 94, 1, 0, 0, 0, 99, 95, 1, 0,
797
- 0, 0, 100, 13, 1, 0, 0, 0, 101, 105, 3, 16, 8, 0, 102, 105, 3, 18, 9, 0, 103, 105, 3, 20, 10, 0,
798
- 104, 101, 1, 0, 0, 0, 104, 102, 1, 0, 0, 0, 104, 103, 1, 0, 0, 0, 105, 15, 1, 0, 0, 0, 106, 107,
799
- 7, 2, 0, 0, 107, 17, 1, 0, 0, 0, 108, 109, 5, 18, 0, 0, 109, 19, 1, 0, 0, 0, 110, 111, 5, 16, 0, 0,
800
- 111, 21, 1, 0, 0, 0, 112, 113, 5, 13, 0, 0, 113, 114, 5, 19, 0, 0, 114, 23, 1, 0, 0, 0, 9, 42, 61,
801
- 63, 72, 77, 86, 90, 99, 104];
807
+ 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
808
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 45, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
809
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 64, 8, 1, 10, 1, 12, 1, 67, 9, 1, 1, 2, 1, 2,
810
+ 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 75, 8, 2, 1, 3, 1, 3, 1, 3, 3, 3, 80, 8, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1,
811
+ 4, 1, 4, 3, 4, 89, 8, 4, 1, 5, 1, 5, 3, 5, 93, 8, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 102,
812
+ 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 108, 8, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12,
813
+ 1, 12, 1, 12, 1, 12, 0, 1, 2, 13, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 0, 3, 1, 0, 6, 7, 2,
814
+ 0, 4, 4, 8, 8, 1, 0, 14, 15, 128, 0, 26, 1, 0, 0, 0, 2, 44, 1, 0, 0, 0, 4, 74, 1, 0, 0, 0, 6, 76, 1, 0,
815
+ 0, 0, 8, 88, 1, 0, 0, 0, 10, 90, 1, 0, 0, 0, 12, 101, 1, 0, 0, 0, 14, 107, 1, 0, 0, 0, 16, 109, 1, 0,
816
+ 0, 0, 18, 111, 1, 0, 0, 0, 20, 113, 1, 0, 0, 0, 22, 115, 1, 0, 0, 0, 24, 117, 1, 0, 0, 0, 26, 27, 3,
817
+ 2, 1, 0, 27, 28, 5, 0, 0, 1, 28, 1, 1, 0, 0, 0, 29, 30, 6, 1, -1, 0, 30, 31, 5, 1, 0, 0, 31, 45, 3, 2,
818
+ 1, 14, 32, 33, 5, 2, 0, 0, 33, 34, 3, 2, 1, 0, 34, 35, 5, 3, 0, 0, 35, 45, 1, 0, 0, 0, 36, 37, 5, 4,
819
+ 0, 0, 37, 45, 3, 2, 1, 12, 38, 39, 5, 9, 0, 0, 39, 45, 3, 2, 1, 6, 40, 45, 3, 24, 12, 0, 41, 45, 3,
820
+ 6, 3, 0, 42, 45, 3, 14, 7, 0, 43, 45, 3, 10, 5, 0, 44, 29, 1, 0, 0, 0, 44, 32, 1, 0, 0, 0, 44, 36, 1,
821
+ 0, 0, 0, 44, 38, 1, 0, 0, 0, 44, 40, 1, 0, 0, 0, 44, 41, 1, 0, 0, 0, 44, 42, 1, 0, 0, 0, 44, 43, 1, 0,
822
+ 0, 0, 45, 65, 1, 0, 0, 0, 46, 47, 10, 11, 0, 0, 47, 48, 5, 5, 0, 0, 48, 64, 3, 2, 1, 11, 49, 50, 10,
823
+ 9, 0, 0, 50, 51, 7, 0, 0, 0, 51, 64, 3, 2, 1, 10, 52, 53, 10, 8, 0, 0, 53, 54, 7, 1, 0, 0, 54, 64, 3,
824
+ 2, 1, 9, 55, 56, 10, 7, 0, 0, 56, 57, 5, 24, 0, 0, 57, 64, 3, 2, 1, 8, 58, 59, 10, 5, 0, 0, 59, 60,
825
+ 5, 23, 0, 0, 60, 64, 3, 2, 1, 6, 61, 62, 10, 10, 0, 0, 62, 64, 3, 4, 2, 0, 63, 46, 1, 0, 0, 0, 63, 49,
826
+ 1, 0, 0, 0, 63, 52, 1, 0, 0, 0, 63, 55, 1, 0, 0, 0, 63, 58, 1, 0, 0, 0, 63, 61, 1, 0, 0, 0, 64, 67, 1,
827
+ 0, 0, 0, 65, 63, 1, 0, 0, 0, 65, 66, 1, 0, 0, 0, 66, 3, 1, 0, 0, 0, 67, 65, 1, 0, 0, 0, 68, 69, 5, 18,
828
+ 0, 0, 69, 70, 3, 6, 3, 0, 70, 71, 3, 4, 2, 0, 71, 75, 1, 0, 0, 0, 72, 73, 5, 18, 0, 0, 73, 75, 3, 6,
829
+ 3, 0, 74, 68, 1, 0, 0, 0, 74, 72, 1, 0, 0, 0, 75, 5, 1, 0, 0, 0, 76, 77, 5, 20, 0, 0, 77, 79, 5, 2, 0,
830
+ 0, 78, 80, 3, 8, 4, 0, 79, 78, 1, 0, 0, 0, 79, 80, 1, 0, 0, 0, 80, 81, 1, 0, 0, 0, 81, 82, 5, 3, 0, 0,
831
+ 82, 7, 1, 0, 0, 0, 83, 89, 3, 2, 1, 0, 84, 85, 3, 2, 1, 0, 85, 86, 5, 10, 0, 0, 86, 87, 3, 8, 4, 0, 87,
832
+ 89, 1, 0, 0, 0, 88, 83, 1, 0, 0, 0, 88, 84, 1, 0, 0, 0, 89, 9, 1, 0, 0, 0, 90, 92, 5, 11, 0, 0, 91, 93,
833
+ 3, 12, 6, 0, 92, 91, 1, 0, 0, 0, 92, 93, 1, 0, 0, 0, 93, 94, 1, 0, 0, 0, 94, 95, 5, 12, 0, 0, 95, 11,
834
+ 1, 0, 0, 0, 96, 102, 3, 2, 1, 0, 97, 98, 3, 2, 1, 0, 98, 99, 5, 10, 0, 0, 99, 100, 3, 12, 6, 0, 100,
835
+ 102, 1, 0, 0, 0, 101, 96, 1, 0, 0, 0, 101, 97, 1, 0, 0, 0, 102, 13, 1, 0, 0, 0, 103, 108, 3, 16, 8,
836
+ 0, 104, 108, 3, 18, 9, 0, 105, 108, 3, 20, 10, 0, 106, 108, 3, 22, 11, 0, 107, 103, 1, 0, 0, 0,
837
+ 107, 104, 1, 0, 0, 0, 107, 105, 1, 0, 0, 0, 107, 106, 1, 0, 0, 0, 108, 15, 1, 0, 0, 0, 109, 110,
838
+ 7, 2, 0, 0, 110, 17, 1, 0, 0, 0, 111, 112, 5, 19, 0, 0, 112, 19, 1, 0, 0, 0, 113, 114, 5, 16, 0, 0,
839
+ 114, 21, 1, 0, 0, 0, 115, 116, 5, 17, 0, 0, 116, 23, 1, 0, 0, 0, 117, 118, 5, 13, 0, 0, 118, 119,
840
+ 5, 20, 0, 0, 119, 25, 1, 0, 0, 0, 9, 44, 63, 65, 74, 79, 88, 92, 101, 107];
802
841
  IfcExpressionParser.DecisionsToDFA = IfcExpressionParser._ATN.decisionToState.map((ds, index) => new antlr4_1.DFA(ds, index));
803
842
  exports.default = IfcExpressionParser;
804
843
  class ExprContext extends antlr4_1.ParserRuleContext {
@@ -1510,6 +1549,9 @@ class LiteralContext extends antlr4_1.ParserRuleContext {
1510
1549
  booleanLiteral() {
1511
1550
  return this.getTypedRuleContext(BooleanLiteralContext, 0);
1512
1551
  }
1552
+ logicalLiteral() {
1553
+ return this.getTypedRuleContext(LogicalLiteralContext, 0);
1554
+ }
1513
1555
  get ruleIndex() {
1514
1556
  return IfcExpressionParser.RULE_literal;
1515
1557
  }
@@ -1633,6 +1675,38 @@ class BooleanLiteralContext extends antlr4_1.ParserRuleContext {
1633
1675
  }
1634
1676
  }
1635
1677
  exports.BooleanLiteralContext = BooleanLiteralContext;
1678
+ class LogicalLiteralContext extends antlr4_1.ParserRuleContext {
1679
+ constructor(parser, parent, invokingState) {
1680
+ super(parent, invokingState);
1681
+ this.parser = parser;
1682
+ }
1683
+ LOGICAL_UNKNOWN() {
1684
+ return this.getToken(IfcExpressionParser.LOGICAL_UNKNOWN, 0);
1685
+ }
1686
+ get ruleIndex() {
1687
+ return IfcExpressionParser.RULE_logicalLiteral;
1688
+ }
1689
+ enterRule(listener) {
1690
+ if (listener.enterLogicalLiteral) {
1691
+ listener.enterLogicalLiteral(this);
1692
+ }
1693
+ }
1694
+ exitRule(listener) {
1695
+ if (listener.exitLogicalLiteral) {
1696
+ listener.exitLogicalLiteral(this);
1697
+ }
1698
+ }
1699
+ // @Override
1700
+ accept(visitor) {
1701
+ if (visitor.visitLogicalLiteral) {
1702
+ return visitor.visitLogicalLiteral(this);
1703
+ }
1704
+ else {
1705
+ return visitor.visitChildren(this);
1706
+ }
1707
+ }
1708
+ }
1709
+ exports.LogicalLiteralContext = LogicalLiteralContext;
1636
1710
  class VariableRefContext extends antlr4_1.ParserRuleContext {
1637
1711
  constructor(parser, parent, invokingState) {
1638
1712
  super(parent, invokingState);