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
@@ -1,26 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FuncBooleanBinary = void 0;
4
- const BooleanValue_js_1 = require("../../../value/BooleanValue.js");
5
4
  const Func_js_1 = require("../Func.js");
6
- const FuncArgBoolean_js_1 = require("../arg/FuncArgBoolean.js");
7
5
  const ExprEvalResult_js_1 = require("../../ExprEvalResult.js");
8
6
  const Types_js_1 = require("../../../type/Types.js");
7
+ const FuncArgLogicalOrBoolean_js_1 = require("../arg/FuncArgLogicalOrBoolean.js");
9
8
  class FuncBooleanBinary extends Func_js_1.Func {
10
- constructor(name, fun) {
9
+ constructor(name, methodName) {
11
10
  super(name, [
12
- new FuncArgBoolean_js_1.FuncArgBoolean(true, FuncBooleanBinary.KEY_LEFT),
13
- new FuncArgBoolean_js_1.FuncArgBoolean(true, FuncBooleanBinary.KEY_RIGHT),
11
+ new FuncArgLogicalOrBoolean_js_1.FuncArgLogicalOrBoolean(true, FuncBooleanBinary.KEY_LEFT),
12
+ new FuncArgLogicalOrBoolean_js_1.FuncArgLogicalOrBoolean(true, FuncBooleanBinary.KEY_RIGHT),
14
13
  ]);
15
- this.actualCalculation = fun;
14
+ this.methodName = methodName;
16
15
  }
17
16
  getReturnType(argumentTypes) {
18
- return Types_js_1.Type.BOOLEAN;
17
+ return Types_js_1.Types.or(...argumentTypes);
19
18
  }
20
19
  calculateResult(callingExpr, evaluatedArguments) {
21
20
  const left = evaluatedArguments.get(FuncBooleanBinary.KEY_LEFT);
22
21
  const right = evaluatedArguments.get(FuncBooleanBinary.KEY_RIGHT);
23
- return new ExprEvalResult_js_1.ExprEvalSuccessObj(BooleanValue_js_1.BooleanValue.of(this.actualCalculation(left.getValue(), right.getValue())));
22
+ return new ExprEvalResult_js_1.ExprEvalSuccessObj(left[this.methodName].call(left, right));
24
23
  }
25
24
  }
26
25
  exports.FuncBooleanBinary = FuncBooleanBinary;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/function/impl/FuncBooleanBinary.ts"],"names":[],"mappings":";;;AAAA,oEAA8D;AAC9D,wCAAkC;AAClC,gEAA0D;AAE1D,+DAA6E;AAC7E,qDAA8C;AAI9C,MAAa,iBAAkB,SAAQ,cAAI;IAKzC,YAAY,IAAY,EAAE,GAAwC;QAChE,KAAK,CAAC,IAAI,EAAE;YACV,IAAI,kCAAc,CAAC,IAAI,EAAE,iBAAiB,CAAC,QAAQ,CAAC;YACpD,IAAI,kCAAc,CAAC,IAAI,EAAE,iBAAiB,CAAC,SAAS,CAAC;SACtD,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC;IAC/B,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,eAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAES,eAAe,CACvB,WAAyB,EACzB,kBAAgD;QAEhD,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CACjC,iBAAiB,CAAC,QAAQ,CACX,CAAC;QAClB,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAClC,iBAAiB,CAAC,SAAS,CACZ,CAAC;QAClB,OAAO,IAAI,sCAAkB,CAC3B,8BAAY,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAC3E,CAAC;IACJ,CAAC;;AA9BH,8CA+BC;AA9ByB,0BAAQ,GAAG,MAAM,CAAC;AAClB,2BAAS,GAAG,OAAO,CAAC","file":"expression/function/impl/FuncBooleanBinary.js","sourcesContent":["import { BooleanValue } from \"../../../value/BooleanValue.js\";\nimport { Func } from \"../Func.js\";\nimport { FuncArgBoolean } from \"../arg/FuncArgBoolean.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport { ExprEvalResult, ExprEvalSuccessObj } from \"../../ExprEvalResult.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\n\nexport class FuncBooleanBinary extends Func {\n private static readonly KEY_LEFT = \"left\";\n private static readonly KEY_RIGHT = \"right\";\n private readonly actualCalculation: (l: boolean, r: boolean) => boolean;\n\n constructor(name: string, fun: (l: boolean, r: boolean) => boolean) {\n super(name, [\n new FuncArgBoolean(true, FuncBooleanBinary.KEY_LEFT),\n new FuncArgBoolean(true, FuncBooleanBinary.KEY_RIGHT),\n ]);\n this.actualCalculation = fun;\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Type.BOOLEAN;\n }\n\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const left = evaluatedArguments.get(\n FuncBooleanBinary.KEY_LEFT\n ) as BooleanValue;\n const right = evaluatedArguments.get(\n FuncBooleanBinary.KEY_RIGHT\n ) as BooleanValue;\n return new ExprEvalSuccessObj(\n BooleanValue.of(this.actualCalculation(left.getValue(), right.getValue()))\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/function/impl/FuncBooleanBinary.ts"],"names":[],"mappings":";;;AACA,wCAAkC;AAGlC,+DAA6E;AAC7E,qDAAqD;AAGrD,kFAA4E;AAG5E,MAAa,iBAAkB,SAAQ,cAAI;IAKzC,YAAY,IAAY,EAAE,UAAkB;QAC1C,KAAK,CAAC,IAAI,EAAE;YACV,IAAI,oDAAuB,CAAC,IAAI,EAAE,iBAAiB,CAAC,QAAQ,CAAC;YAC7D,IAAI,oDAAuB,CAAC,IAAI,EAAE,iBAAiB,CAAC,SAAS,CAAC;SAC/D,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,gBAAK,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC;IACpC,CAAC;IAES,eAAe,CACvB,WAAyB,EACzB,kBAAgD;QAEhD,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAE9C,CAAC;QACjB,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,CAAC,SAAS,CAEhD,CAAC;QACjB,OAAO,IAAI,sCAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACzE,CAAC;;AA5BH,8CA6BC;AA5ByB,0BAAQ,GAAG,MAAM,CAAC;AAClB,2BAAS,GAAG,OAAO,CAAC","file":"expression/function/impl/FuncBooleanBinary.js","sourcesContent":["import { BooleanValue } from \"../../../value/BooleanValue.js\";\nimport { Func } from \"../Func.js\";\nimport { FuncArgBoolean } from \"../arg/FuncArgBoolean.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport { ExprEvalResult, ExprEvalSuccessObj } from \"../../ExprEvalResult.js\";\nimport { Type, Types } from \"../../../type/Types.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { FuncArgLogicalOrBoolean } from \"../arg/FuncArgLogicalOrBoolean\";\nimport { Logical, LogicalValue } from \"../../../value/LogicalValue\";\n\nexport class FuncBooleanBinary extends Func {\n private static readonly KEY_LEFT = \"left\";\n private static readonly KEY_RIGHT = \"right\";\n private readonly methodName: string;\n\n constructor(name: string, methodName: string) {\n super(name, [\n new FuncArgLogicalOrBoolean(true, FuncBooleanBinary.KEY_LEFT),\n new FuncArgLogicalOrBoolean(true, FuncBooleanBinary.KEY_RIGHT),\n ]);\n this.methodName = methodName;\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Types.or(...argumentTypes);\n }\n\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const left = evaluatedArguments.get(FuncBooleanBinary.KEY_LEFT) as\n | BooleanValue\n | LogicalValue;\n const right = evaluatedArguments.get(FuncBooleanBinary.KEY_RIGHT) as\n | BooleanValue\n | LogicalValue;\n return new ExprEvalSuccessObj(left[this.methodName].call(left, right));\n }\n}\n"]}
@@ -4,31 +4,79 @@ exports.IF = void 0;
4
4
  const Func_js_1 = require("../Func.js");
5
5
  const ExprEvalResult_js_1 = require("../../ExprEvalResult.js");
6
6
  const Types_js_1 = require("../../../type/Types.js");
7
- const FuncArgBoolean_js_1 = require("../arg/FuncArgBoolean.js");
8
7
  const FuncArgAny_js_1 = require("../arg/FuncArgAny.js");
8
+ const FuncArgLogicalOrBoolean_js_1 = require("../arg/FuncArgLogicalOrBoolean.js");
9
+ const ExprKind_js_1 = require("../../ExprKind.js");
10
+ const SpuriousFunctionArgumentException_js_1 = require("../../../error/SpuriousFunctionArgumentException.js");
11
+ const MissingFunctionArgumentException_js_1 = require("../../../error/MissingFunctionArgumentException.js");
12
+ const LogicalValue_js_1 = require("../../../value/LogicalValue.js");
9
13
  class IF extends Func_js_1.Func {
10
14
  constructor() {
11
15
  super("IF", [
12
- new FuncArgBoolean_js_1.FuncArgBoolean(true, IF.ARG_NAME_CONDITION),
16
+ new FuncArgLogicalOrBoolean_js_1.FuncArgLogicalOrBoolean(true, IF.ARG_NAME_CONDITION),
13
17
  new FuncArgAny_js_1.FuncArgAny(true, IF.ARG_NAME_THEN),
14
18
  new FuncArgAny_js_1.FuncArgAny(true, IF.ARG_NAME_ELSE),
19
+ new FuncArgAny_js_1.FuncArgAny(false, IF.ARG_NAME_UNKNOWN),
15
20
  ]);
16
21
  }
17
22
  getReturnType(argumentTypes) {
18
- return Types_js_1.Types.or(argumentTypes[1], argumentTypes[2]);
23
+ if (argumentTypes.length == 3) {
24
+ return Types_js_1.Types.or(argumentTypes[1], argumentTypes[2]);
25
+ }
26
+ if (argumentTypes.length == 4) {
27
+ return Types_js_1.Types.or(argumentTypes[1], argumentTypes[2], argumentTypes[3]);
28
+ }
29
+ throw new Error("Unexpected argument types: " + JSON.stringify(argumentTypes));
30
+ }
31
+ checkArgumentTypes(providedArgumentTypes, ctx) {
32
+ super.checkArgumentTypes(providedArgumentTypes, ctx);
33
+ //extra check: if our value to be checked is a Logical, the unknownValue must be provided
34
+ if (providedArgumentTypes[0][1].isSameTypeAs(Types_js_1.Type.LOGICAL)) {
35
+ if (providedArgumentTypes.length < 4) {
36
+ throw new MissingFunctionArgumentException_js_1.MissingFunctionArgumentException(this.name, IF.ARG_NAME_UNKNOWN, 3, ctx, `Argument ${IF.ARG_NAME_UNKNOWN} is required if the argument ${IF.ARG_NAME_CONDITION} is of type logical (i.e., can be true, false or unknown)`);
37
+ }
38
+ }
39
+ else if (providedArgumentTypes[0][1].isSameTypeAs(Types_js_1.Type.BOOLEAN)) {
40
+ if (providedArgumentTypes.length > 3) {
41
+ throw new SpuriousFunctionArgumentException_js_1.SpuriousFunctionArgumentException(this.name, IF.ARG_NAME_UNKNOWN, 3, providedArgumentTypes[3][0], `Argument ${IF.ARG_NAME_UNKNOWN} is not allowed if the argument ${IF.ARG_NAME_CONDITION} is of type boolean (i.e., can only be true or false)`);
42
+ }
43
+ }
44
+ }
45
+ transformArguments(callingExpr, evaluatedArguments) {
46
+ const cond = evaluatedArguments.get(IF.ARG_NAME_CONDITION);
47
+ if ((0, ExprEvalResult_js_1.isExprEvalSuccess)(cond)) {
48
+ if (cond.result.getType().isSameTypeAs(Types_js_1.Type.LOGICAL)) {
49
+ if (evaluatedArguments.size < 4) {
50
+ evaluatedArguments.set(IF.ARG_NAME_UNKNOWN, new ExprEvalResult_js_1.ExprEvalMissingRequiredFunctionArgumentErrorObj(ExprKind_js_1.ExprKind.FUNCTION_ARGUMENTS, `Argument ${IF.ARG_NAME_UNKNOWN} is required if the argument ${IF.ARG_NAME_CONDITION} is of type logical (i.e., can be true, false or unknown)`, this.name, IF.ARG_NAME_UNKNOWN, 3, callingExpr.getTextSpan()));
51
+ }
52
+ }
53
+ else if (cond.result.getType().isSameTypeAs(Types_js_1.Type.BOOLEAN)) {
54
+ if (evaluatedArguments.size > 3) {
55
+ evaluatedArguments.set(IF.ARG_NAME_UNKNOWN, new ExprEvalResult_js_1.ExprEvalSpuriousFunctionArgumentErrorObj(`Argument ${IF.ARG_NAME_UNKNOWN} is not allowed if the argument ${IF.ARG_NAME_CONDITION} is of type boolean (i.e., can only be true or false)`, this.name, IF.ARG_NAME_UNKNOWN, 3, callingExpr.getTextSpan()));
56
+ }
57
+ }
58
+ }
19
59
  }
20
60
  calculateResult(callingExpr, evaluatedArguments) {
21
61
  const condition = evaluatedArguments.get(IF.ARG_NAME_CONDITION);
22
- if (condition.getValue()) {
62
+ if (condition.isTrue()) {
23
63
  const thenValue = evaluatedArguments.get(IF.ARG_NAME_THEN);
24
64
  return new ExprEvalResult_js_1.ExprEvalSuccessObj(thenValue);
25
65
  }
26
- const elseValue = evaluatedArguments.get(IF.ARG_NAME_ELSE);
27
- return new ExprEvalResult_js_1.ExprEvalSuccessObj(elseValue);
66
+ else if (condition.isFalse()) {
67
+ const elseValue = evaluatedArguments.get(IF.ARG_NAME_ELSE);
68
+ return new ExprEvalResult_js_1.ExprEvalSuccessObj(elseValue);
69
+ }
70
+ else if (LogicalValue_js_1.LogicalValue.isUnknown(condition.getValue())) {
71
+ const unknownValue = evaluatedArguments.get(IF.ARG_NAME_UNKNOWN);
72
+ return new ExprEvalResult_js_1.ExprEvalSuccessObj(unknownValue);
73
+ }
74
+ return new ExprEvalResult_js_1.ExprEvalFunctionEvaluationErrorObj(ExprKind_js_1.ExprKind.FUNCTION, ExprEvalResult_js_1.ExprEvalStatus.ERROR, "Cannot handle value of condtition: " + JSON.stringify(condition), this.name, callingExpr.getTextSpan());
28
75
  }
29
76
  }
30
77
  exports.IF = IF;
31
78
  IF.ARG_NAME_CONDITION = "condition";
32
79
  IF.ARG_NAME_THEN = "thenValue";
33
80
  IF.ARG_NAME_ELSE = "elseValue";
81
+ IF.ARG_NAME_UNKNOWN = "unknownValue";
34
82
  //# sourceMappingURL=IF.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/function/impl/IF.ts"],"names":[],"mappings":";;;AAAA,wCAAkC;AAElC,+DAA6E;AAG7E,qDAA+C;AAE/C,gEAA0D;AAC1D,wDAAkD;AAElD,MAAa,EAAG,SAAQ,cAAI;IAK1B;QACE,KAAK,CAAC,IAAI,EAAE;YACV,IAAI,kCAAc,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC;YAC/C,IAAI,0BAAU,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC;YACtC,IAAI,0BAAU,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC;SACvC,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,gBAAK,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IAES,eAAe,CACvB,WAAyB,EACzB,kBAAgD;QAEhD,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CACtC,EAAE,CAAC,kBAAkB,CACN,CAAC;QAClB,IAAI,SAAS,CAAC,QAAQ,EAAE,EAAE;YACxB,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;YAC3D,OAAO,IAAI,sCAAkB,CAAC,SAAS,CAAC,CAAC;SAC1C;QACD,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;QAC3D,OAAO,IAAI,sCAAkB,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;;AA9BH,gBA+BC;AA9ByB,qBAAkB,GAAG,WAAW,CAAC;AACjC,gBAAa,GAAG,WAAW,CAAC;AAC5B,gBAAa,GAAG,WAAW,CAAC","file":"expression/function/impl/IF.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport { ExprEvalResult, ExprEvalSuccessObj } from \"../../ExprEvalResult.js\";\nimport { BooleanValue } from \"../../../value/BooleanValue.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { Types } from \"../../../type/Types.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { FuncArgBoolean } from \"../arg/FuncArgBoolean.js\";\nimport { FuncArgAny } from \"../arg/FuncArgAny.js\";\n\nexport class IF extends Func {\n private static readonly ARG_NAME_CONDITION = \"condition\";\n private static readonly ARG_NAME_THEN = \"thenValue\";\n private static readonly ARG_NAME_ELSE = \"elseValue\";\n\n constructor() {\n super(\"IF\", [\n new FuncArgBoolean(true, IF.ARG_NAME_CONDITION),\n new FuncArgAny(true, IF.ARG_NAME_THEN),\n new FuncArgAny(true, IF.ARG_NAME_ELSE),\n ]);\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Types.or(argumentTypes[1], argumentTypes[2]);\n }\n\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const condition = evaluatedArguments.get(\n IF.ARG_NAME_CONDITION\n ) as BooleanValue;\n if (condition.getValue()) {\n const thenValue = evaluatedArguments.get(IF.ARG_NAME_THEN);\n return new ExprEvalSuccessObj(thenValue);\n }\n const elseValue = evaluatedArguments.get(IF.ARG_NAME_ELSE);\n return new ExprEvalSuccessObj(elseValue);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/function/impl/IF.ts"],"names":[],"mappings":"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","file":"expression/function/impl/IF.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalMissingRequiredFunctionArgumentErrorObj,\n ExprEvalResult,\n ExprEvalSpuriousFunctionArgumentErrorObj,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n isExprEvalSuccess,\n} from \"../../ExprEvalResult.js\";\nimport { BooleanValue } from \"../../../value/BooleanValue.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { Type, Types } from \"../../../type/Types.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { FuncArgAny } from \"../arg/FuncArgAny.js\";\nimport { FuncArgLogicalOrBoolean } from \"../arg/FuncArgLogicalOrBoolean\";\nimport { ParserRuleContext } from \"antlr4\";\nimport { ExprKind } from \"../../ExprKind\";\nimport { SpuriousFunctionArgumentException } from \"../../../error/SpuriousFunctionArgumentException\";\nimport { MissingFunctionArgumentException } from \"../../../error/MissingFunctionArgumentException\";\nimport { Value } from \"../../../value/Value\";\nimport { Expr } from \"../../Expr\";\nimport { LogicalValue } from \"../../../value/LogicalValue\";\n\nexport class IF extends Func {\n private static readonly ARG_NAME_CONDITION = \"condition\";\n private static readonly ARG_NAME_THEN = \"thenValue\";\n private static readonly ARG_NAME_ELSE = \"elseValue\";\n private static readonly ARG_NAME_UNKNOWN = \"unknownValue\";\n\n constructor() {\n super(\"IF\", [\n new FuncArgLogicalOrBoolean(true, IF.ARG_NAME_CONDITION),\n new FuncArgAny(true, IF.ARG_NAME_THEN),\n new FuncArgAny(true, IF.ARG_NAME_ELSE),\n new FuncArgAny(false, IF.ARG_NAME_UNKNOWN),\n ]);\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n if (argumentTypes.length == 3) {\n return Types.or(argumentTypes[1], argumentTypes[2]);\n }\n if (argumentTypes.length == 4) {\n return Types.or(argumentTypes[1], argumentTypes[2], argumentTypes[3]);\n }\n throw new Error(\n \"Unexpected argument types: \" + JSON.stringify(argumentTypes)\n );\n }\n\n protected checkArgumentTypes(\n providedArgumentTypes: Array<[ParserRuleContext, ExprType]>,\n ctx\n ) {\n super.checkArgumentTypes(providedArgumentTypes, ctx);\n //extra check: if our value to be checked is a Logical, the unknownValue must be provided\n if (providedArgumentTypes[0][1].isSameTypeAs(Type.LOGICAL)) {\n if (providedArgumentTypes.length < 4) {\n throw new MissingFunctionArgumentException(\n this.name,\n IF.ARG_NAME_UNKNOWN,\n 3,\n ctx,\n `Argument ${IF.ARG_NAME_UNKNOWN} is required if the argument ${IF.ARG_NAME_CONDITION} is of type logical (i.e., can be true, false or unknown)`\n );\n }\n } else if (providedArgumentTypes[0][1].isSameTypeAs(Type.BOOLEAN)) {\n if (providedArgumentTypes.length > 3) {\n throw new SpuriousFunctionArgumentException(\n this.name,\n IF.ARG_NAME_UNKNOWN,\n 3,\n providedArgumentTypes[3][0],\n `Argument ${IF.ARG_NAME_UNKNOWN} is not allowed if the argument ${IF.ARG_NAME_CONDITION} is of type boolean (i.e., can only be true or false)`\n );\n }\n }\n }\n\n protected transformArguments(\n callingExpr: Expr<any>,\n evaluatedArguments: Map<string, ExprEvalResult<ExpressionValue>>\n ) {\n const cond = evaluatedArguments.get(IF.ARG_NAME_CONDITION);\n if (isExprEvalSuccess(cond)) {\n if ((cond.result as Value<any>).getType().isSameTypeAs(Type.LOGICAL)) {\n if (evaluatedArguments.size < 4) {\n evaluatedArguments.set(\n IF.ARG_NAME_UNKNOWN,\n new ExprEvalMissingRequiredFunctionArgumentErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n `Argument ${IF.ARG_NAME_UNKNOWN} is required if the argument ${IF.ARG_NAME_CONDITION} is of type logical (i.e., can be true, false or unknown)`,\n this.name,\n IF.ARG_NAME_UNKNOWN,\n 3,\n callingExpr.getTextSpan()\n )\n );\n }\n } else if (cond.result.getType().isSameTypeAs(Type.BOOLEAN)) {\n if (evaluatedArguments.size > 3) {\n evaluatedArguments.set(\n IF.ARG_NAME_UNKNOWN,\n new ExprEvalSpuriousFunctionArgumentErrorObj(\n `Argument ${IF.ARG_NAME_UNKNOWN} is not allowed if the argument ${IF.ARG_NAME_CONDITION} is of type boolean (i.e., can only be true or false)`,\n this.name,\n IF.ARG_NAME_UNKNOWN,\n 3,\n callingExpr.getTextSpan()\n )\n );\n }\n }\n }\n }\n\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const condition = evaluatedArguments.get(IF.ARG_NAME_CONDITION) as\n | LogicalValue\n | BooleanValue;\n if (condition.isTrue()) {\n const thenValue = evaluatedArguments.get(IF.ARG_NAME_THEN);\n return new ExprEvalSuccessObj(thenValue);\n } else if (condition.isFalse()) {\n const elseValue = evaluatedArguments.get(IF.ARG_NAME_ELSE);\n return new ExprEvalSuccessObj(elseValue);\n } else if (LogicalValue.isUnknown(condition.getValue())) {\n const unknownValue = evaluatedArguments.get(IF.ARG_NAME_UNKNOWN);\n return new ExprEvalSuccessObj(unknownValue);\n }\n return new ExprEvalFunctionEvaluationErrorObj(\n ExprKind.FUNCTION,\n ExprEvalStatus.ERROR,\n \"Cannot handle value of condtition: \" + JSON.stringify(condition),\n this.name,\n callingExpr.getTextSpan()\n );\n }\n}\n"]}
@@ -1,21 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NOT = void 0;
4
- const BooleanValue_js_1 = require("../../../value/BooleanValue.js");
5
4
  const Func_js_1 = require("../Func.js");
6
- const FuncArgBoolean_js_1 = require("../arg/FuncArgBoolean.js");
7
5
  const ExprEvalResult_js_1 = require("../../ExprEvalResult.js");
8
- const Types_js_1 = require("../../../type/Types.js");
6
+ const FuncArgLogicalOrBoolean_js_1 = require("../arg/FuncArgLogicalOrBoolean.js");
9
7
  class NOT extends Func_js_1.Func {
10
8
  constructor() {
11
- super("NOT", [new FuncArgBoolean_js_1.FuncArgBoolean(true, NOT.KEY_ARG)]);
9
+ super("NOT", [new FuncArgLogicalOrBoolean_js_1.FuncArgLogicalOrBoolean(true, NOT.KEY_ARG)]);
12
10
  }
13
11
  getReturnType(argumentTypes) {
14
- return Types_js_1.Type.BOOLEAN;
12
+ return argumentTypes[0];
15
13
  }
16
14
  calculateResult(callingExpr, evaluatedArguments) {
17
15
  const arg = evaluatedArguments.get(NOT.KEY_ARG);
18
- return new ExprEvalResult_js_1.ExprEvalSuccessObj(BooleanValue_js_1.BooleanValue.of(!arg.getValue()));
16
+ return new ExprEvalResult_js_1.ExprEvalSuccessObj(arg.not());
19
17
  }
20
18
  }
21
19
  exports.NOT = NOT;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/function/impl/NOT.ts"],"names":[],"mappings":";;;AAAA,oEAA8D;AAC9D,wCAAkC;AAClC,gEAA0D;AAE1D,+DAA6E;AAC7E,qDAA8C;AAI9C,MAAa,GAAI,SAAQ,cAAI;IAG3B;QACE,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,kCAAc,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,eAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAES,eAAe,CACvB,WAAyB,EACzB,kBAAgD;QAEhD,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAiB,CAAC;QAChE,OAAO,IAAI,sCAAkB,CAAC,8BAAY,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;;AAjBH,kBAkBC;AAjByB,WAAO,GAAG,KAAK,CAAC","file":"expression/function/impl/NOT.js","sourcesContent":["import { BooleanValue } from \"../../../value/BooleanValue.js\";\nimport { Func } from \"../Func.js\";\nimport { FuncArgBoolean } from \"../arg/FuncArgBoolean.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport { ExprEvalResult, ExprEvalSuccessObj } from \"../../ExprEvalResult.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\n\nexport class NOT extends Func {\n private static readonly KEY_ARG = \"arg\";\n\n constructor() {\n super(\"NOT\", [new FuncArgBoolean(true, NOT.KEY_ARG)]);\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Type.BOOLEAN;\n }\n\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const arg = evaluatedArguments.get(NOT.KEY_ARG) as BooleanValue;\n return new ExprEvalSuccessObj(BooleanValue.of(!arg.getValue()));\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/function/impl/NOT.ts"],"names":[],"mappings":";;;AACA,wCAAkC;AAGlC,+DAA6E;AAI7E,kFAA4E;AAG5E,MAAa,GAAI,SAAQ,cAAI;IAG3B;QACE,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,oDAAuB,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAES,eAAe,CACvB,WAAyB,EACzB,kBAAgD;QAEhD,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAE9B,CAAC;QACjB,OAAO,IAAI,sCAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3C,CAAC;;AAnBH,kBAoBC;AAnByB,WAAO,GAAG,KAAK,CAAC","file":"expression/function/impl/NOT.js","sourcesContent":["import { BooleanValue } from \"../../../value/BooleanValue.js\";\nimport { Func } from \"../Func.js\";\nimport { FuncArgBoolean } from \"../arg/FuncArgBoolean.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport { ExprEvalResult, ExprEvalSuccessObj } from \"../../ExprEvalResult.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { FuncArgLogicalOrBoolean } from \"../arg/FuncArgLogicalOrBoolean\";\nimport { LogicalValue } from \"../../../value/LogicalValue\";\n\nexport class NOT extends Func {\n private static readonly KEY_ARG = \"arg\";\n\n constructor() {\n super(\"NOT\", [new FuncArgLogicalOrBoolean(true, NOT.KEY_ARG)]);\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return argumentTypes[0];\n }\n\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const arg = evaluatedArguments.get(NOT.KEY_ARG) as\n | BooleanValue\n | LogicalValue;\n return new ExprEvalSuccessObj(arg.not());\n }\n}\n"]}
@@ -64,7 +64,7 @@ class TOBOOLEAN extends Func_js_1.Func {
64
64
  throw new Error(`numeric conversion not implemented for type ${value.constructor.name}`);
65
65
  }
66
66
  getReturnType(argumentTypes) {
67
- return Types_js_1.Type.STRING;
67
+ return Types_js_1.Type.BOOLEAN;
68
68
  }
69
69
  }
70
70
  exports.TOBOOLEAN = TOBOOLEAN;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/function/impl/TOBOOLEAN.ts"],"names":[],"mappings":";;;AAAA,wCAAkC;AAClC,wDAAkD;AAElD,+DAMiC;AACjC,kEAA4D;AAE5D,qDAA8C;AAE9C,oEAA8D;AAE9D,oEAA8D;AAC9D,oEAA8D;AAC9D,wEAAkE;AAGlE,MAAa,SAAU,SAAQ,cAAI;IAEjC;QACE,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,0BAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IAES,eAAe,CACvB,WAAyB,EACzB,kBAAgD;QAEhD,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI;YACF,OAAO,IAAI,sCAAkB,CAAC,8BAAY,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACnE;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,IAAI,sDAAkC,CAC3C,WAAW,CAAC,OAAO,EAAE,EACrB,kCAAc,CAAC,KAAK,EACpB,kBAAkB,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,OAAO,EAAE,EAC3D,IAAI,CAAC,IAAI,EACT,WAAW,CAAC,WAAW,EAAE,CAC1B,CAAC;SACH;IACH,CAAC;IAEO,OAAO,CAAC,KAAsB;QACpC,IAAI,KAAK,YAAY,8BAAY,EAAE;YACjC,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;SACzB;QACD,IAAI,KAAK,YAAY,4BAAW,IAAI,KAAK,YAAY,kCAAc,EAAE;YACnE,QAAQ,KAAK,CAAC,QAAQ,EAAE,EAAE;gBACxB,KAAK,MAAM,CAAC;gBACZ,KAAK,MAAM,CAAC;gBACZ,KAAK,GAAG;oBACN,OAAO,IAAI,CAAC;gBACd,KAAK,OAAO,CAAC;gBACb,KAAK,OAAO,CAAC;gBACb,KAAK,GAAG;oBACN,OAAO,KAAK,CAAC;gBACf;oBACE,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;aAC/D;SACF;QACD,IAAI,KAAK,YAAY,8BAAY,EAAE;YACjC,MAAM,GAAG,GAAY,KAAK,CAAC,QAAQ,EAAE,CAAC;YACtC,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE;gBAChB,OAAO,KAAK,CAAC;aACd;YACD,IAAI,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE;gBACxB,OAAO,IAAI,CAAC;aACb;YACD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACvD;QACD,IAAI,KAAK,YAAY,8BAAY,EAAE;YACjC,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC7B,IAAI,GAAG,KAAK,IAAI,EAAE;gBAChB,OAAO,IAAI,CAAC;aACb;YACD,IAAI,GAAG,KAAK,KAAK,EAAE;gBACjB,OAAO,KAAK,CAAC;aACd;YACD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACvD;QACD,MAAM,IAAI,KAAK,CACb,+CAA+C,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CACxE,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,eAAI,CAAC,MAAM,CAAC;IACrB,CAAC;;AArEH,8BAsEC;AArEyB,oBAAU,GAAG,QAAQ,CAAC","file":"expression/function/impl/TOBOOLEAN.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { FuncArgAny } from \"../arg/FuncArgAny.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n ExprEvalWrongFunctionArgumentTypeErrorObj,\n} from \"../../ExprEvalResult.js\";\nimport { StringValue } from \"../../../value/StringValue.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { NumericValue } from \"../../../value/NumericValue\";\nimport { Decimal } from \"decimal.js\";\nimport { BooleanValue } from \"../../../value/BooleanValue\";\nimport { LogicalValue } from \"../../../value/LogicalValue\";\nimport { ReferenceValue } from \"../../../value/ReferenceValue\";\nimport { isNullish } from \"../../../util/IfcExpressionUtils\";\n\nexport class TOBOOLEAN extends Func {\n private static readonly KEY_OBJECT = \"object\";\n constructor() {\n super(\"TOBOOLEAN\", [new FuncArgAny(true, \"object\")]);\n }\n\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const val = evaluatedArguments.get(\"object\");\n try {\n return new ExprEvalSuccessObj(BooleanValue.of(this.convert(val)));\n } catch (e) {\n return new ExprEvalFunctionEvaluationErrorObj(\n callingExpr.getKind(),\n ExprEvalStatus.ERROR,\n `Cannot convert ${val.getValue()} to boolean: ${e.message}`,\n this.name,\n callingExpr.getTextSpan()\n );\n }\n }\n\n private convert(value: ExpressionValue): boolean {\n if (value instanceof BooleanValue) {\n return value.getValue();\n }\n if (value instanceof StringValue || value instanceof ReferenceValue) {\n switch (value.getValue()) {\n case \"TRUE\":\n case \"true\":\n case \"1\":\n return true;\n case \"FALSE\":\n case \"false\":\n case \"0\":\n return false;\n default:\n throw new Error(`Not a boolean value: ${value.getValue()}`);\n }\n }\n if (value instanceof NumericValue) {\n const val: Decimal = value.getValue();\n if (val.isZero()) {\n return false;\n }\n if (val.toNumber() === 1) {\n return true;\n }\n throw new Error(\"Can only convert 0 or 1 to boolean\");\n }\n if (value instanceof LogicalValue) {\n const val = value.getValue();\n if (val === true) {\n return true;\n }\n if (val === false) {\n return false;\n }\n throw new Error(\"Can only convert 0 or 1 to boolean\");\n }\n throw new Error(\n `numeric conversion not implemented for type ${value.constructor.name}`\n );\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Type.STRING;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/function/impl/TOBOOLEAN.ts"],"names":[],"mappings":";;;AAAA,wCAAkC;AAClC,wDAAkD;AAElD,+DAMiC;AACjC,kEAA4D;AAE5D,qDAA8C;AAE9C,oEAA8D;AAE9D,oEAA8D;AAC9D,oEAA8D;AAC9D,wEAAkE;AAGlE,MAAa,SAAU,SAAQ,cAAI;IAEjC;QACE,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,0BAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IAES,eAAe,CACvB,WAAyB,EACzB,kBAAgD;QAEhD,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI;YACF,OAAO,IAAI,sCAAkB,CAAC,8BAAY,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACnE;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,IAAI,sDAAkC,CAC3C,WAAW,CAAC,OAAO,EAAE,EACrB,kCAAc,CAAC,KAAK,EACpB,kBAAkB,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,OAAO,EAAE,EAC3D,IAAI,CAAC,IAAI,EACT,WAAW,CAAC,WAAW,EAAE,CAC1B,CAAC;SACH;IACH,CAAC;IAEO,OAAO,CAAC,KAAsB;QACpC,IAAI,KAAK,YAAY,8BAAY,EAAE;YACjC,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;SACzB;QACD,IAAI,KAAK,YAAY,4BAAW,IAAI,KAAK,YAAY,kCAAc,EAAE;YACnE,QAAQ,KAAK,CAAC,QAAQ,EAAE,EAAE;gBACxB,KAAK,MAAM,CAAC;gBACZ,KAAK,MAAM,CAAC;gBACZ,KAAK,GAAG;oBACN,OAAO,IAAI,CAAC;gBACd,KAAK,OAAO,CAAC;gBACb,KAAK,OAAO,CAAC;gBACb,KAAK,GAAG;oBACN,OAAO,KAAK,CAAC;gBACf;oBACE,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;aAC/D;SACF;QACD,IAAI,KAAK,YAAY,8BAAY,EAAE;YACjC,MAAM,GAAG,GAAY,KAAK,CAAC,QAAQ,EAAE,CAAC;YACtC,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE;gBAChB,OAAO,KAAK,CAAC;aACd;YACD,IAAI,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE;gBACxB,OAAO,IAAI,CAAC;aACb;YACD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACvD;QACD,IAAI,KAAK,YAAY,8BAAY,EAAE;YACjC,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC7B,IAAI,GAAG,KAAK,IAAI,EAAE;gBAChB,OAAO,IAAI,CAAC;aACb;YACD,IAAI,GAAG,KAAK,KAAK,EAAE;gBACjB,OAAO,KAAK,CAAC;aACd;YACD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACvD;QACD,MAAM,IAAI,KAAK,CACb,+CAA+C,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CACxE,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,eAAI,CAAC,OAAO,CAAC;IACtB,CAAC;;AArEH,8BAsEC;AArEyB,oBAAU,GAAG,QAAQ,CAAC","file":"expression/function/impl/TOBOOLEAN.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { FuncArgAny } from \"../arg/FuncArgAny.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n ExprEvalWrongFunctionArgumentTypeErrorObj,\n} from \"../../ExprEvalResult.js\";\nimport { StringValue } from \"../../../value/StringValue.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { NumericValue } from \"../../../value/NumericValue\";\nimport { Decimal } from \"decimal.js\";\nimport { BooleanValue } from \"../../../value/BooleanValue\";\nimport { LogicalValue } from \"../../../value/LogicalValue\";\nimport { ReferenceValue } from \"../../../value/ReferenceValue\";\nimport { isNullish } from \"../../../util/IfcExpressionUtils\";\n\nexport class TOBOOLEAN extends Func {\n private static readonly KEY_OBJECT = \"object\";\n constructor() {\n super(\"TOBOOLEAN\", [new FuncArgAny(true, \"object\")]);\n }\n\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const val = evaluatedArguments.get(\"object\");\n try {\n return new ExprEvalSuccessObj(BooleanValue.of(this.convert(val)));\n } catch (e) {\n return new ExprEvalFunctionEvaluationErrorObj(\n callingExpr.getKind(),\n ExprEvalStatus.ERROR,\n `Cannot convert ${val.getValue()} to boolean: ${e.message}`,\n this.name,\n callingExpr.getTextSpan()\n );\n }\n }\n\n private convert(value: ExpressionValue): boolean {\n if (value instanceof BooleanValue) {\n return value.getValue();\n }\n if (value instanceof StringValue || value instanceof ReferenceValue) {\n switch (value.getValue()) {\n case \"TRUE\":\n case \"true\":\n case \"1\":\n return true;\n case \"FALSE\":\n case \"false\":\n case \"0\":\n return false;\n default:\n throw new Error(`Not a boolean value: ${value.getValue()}`);\n }\n }\n if (value instanceof NumericValue) {\n const val: Decimal = value.getValue();\n if (val.isZero()) {\n return false;\n }\n if (val.toNumber() === 1) {\n return true;\n }\n throw new Error(\"Can only convert 0 or 1 to boolean\");\n }\n if (value instanceof LogicalValue) {\n const val = value.getValue();\n if (val === true) {\n return true;\n }\n if (val === false) {\n return false;\n }\n throw new Error(\"Can only convert 0 or 1 to boolean\");\n }\n throw new Error(\n `numeric conversion not implemented for type ${value.constructor.name}`\n );\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Type.BOOLEAN;\n }\n}\n"]}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TOLOGICAL = void 0;
4
+ const Func_js_1 = require("../Func.js");
5
+ const ExprEvalResult_js_1 = require("../../ExprEvalResult.js");
6
+ const Types_js_1 = require("../../../type/Types.js");
7
+ const LogicalValue_js_1 = require("../../../value/LogicalValue.js");
8
+ const FuncArgBoolean_js_1 = require("../arg/FuncArgBoolean.js");
9
+ class TOLOGICAL extends Func_js_1.Func {
10
+ constructor() {
11
+ super("TOLOGICAL", [new FuncArgBoolean_js_1.FuncArgBoolean(true, "object")]);
12
+ }
13
+ transformArguments(callingExpr, evaluatedArguments) {
14
+ const val = evaluatedArguments.get(TOLOGICAL.KEY_OBJECT);
15
+ if ((0, ExprEvalResult_js_1.isExprEvalError)(val)) {
16
+ if (val.status === ExprEvalResult_js_1.ExprEvalStatus.IFC_PROPERTY_NOT_FOUND) {
17
+ evaluatedArguments.set(TOLOGICAL.KEY_OBJECT, new ExprEvalResult_js_1.ExprEvalSuccessObj(LogicalValue_js_1.LogicalValue.unknown()));
18
+ }
19
+ }
20
+ else {
21
+ evaluatedArguments.set(TOLOGICAL.KEY_OBJECT, new ExprEvalResult_js_1.ExprEvalSuccessObj(LogicalValue_js_1.LogicalValue.of(val.result.getValue())));
22
+ }
23
+ }
24
+ calculateResult(callingExpr, evaluatedArguments) {
25
+ const val = evaluatedArguments.get(TOLOGICAL.KEY_OBJECT);
26
+ try {
27
+ return new ExprEvalResult_js_1.ExprEvalSuccessObj(val);
28
+ }
29
+ catch (e) {
30
+ return new ExprEvalResult_js_1.ExprEvalFunctionEvaluationErrorObj(callingExpr.getKind(), ExprEvalResult_js_1.ExprEvalStatus.ERROR, `Cannot convert ${val.getValue()} to boolean: ${e.message}`, this.name, callingExpr.getTextSpan());
31
+ }
32
+ }
33
+ getReturnType(argumentTypes) {
34
+ return Types_js_1.Type.LOGICAL;
35
+ }
36
+ }
37
+ exports.TOLOGICAL = TOLOGICAL;
38
+ TOLOGICAL.KEY_OBJECT = "object";
39
+ //# sourceMappingURL=TOLOGICAL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/expression/function/impl/TOLOGICAL.ts"],"names":[],"mappings":";;;AAAA,wCAAkC;AAElC,+DAMiC;AAGjC,qDAA8C;AAK9C,oEAA8D;AAE9D,gEAA0D;AAG1D,MAAa,SAAU,SAAQ,cAAI;IAEjC;QACE,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,kCAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC;IAES,kBAAkB,CAC1B,WAAsB,EACtB,kBAAgE;QAEhE,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,IAAA,mCAAe,EAAC,GAAG,CAAC,EAAE;YACxB,IAAI,GAAG,CAAC,MAAM,KAAK,kCAAc,CAAC,sBAAsB,EAAE;gBACxD,kBAAkB,CAAC,GAAG,CACpB,SAAS,CAAC,UAAU,EACpB,IAAI,sCAAkB,CAAC,8BAAY,CAAC,OAAO,EAAE,CAAC,CAC/C,CAAC;aACH;SACF;aAAM;YACL,kBAAkB,CAAC,GAAG,CACpB,SAAS,CAAC,UAAU,EACpB,IAAI,sCAAkB,CACpB,8BAAY,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAa,CAAC,CAClD,CACF,CAAC;SACH;IACH,CAAC;IAES,eAAe,CACvB,WAAyB,EACzB,kBAAgD;QAEhD,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI;YACF,OAAO,IAAI,sCAAkB,CAAC,GAAG,CAAC,CAAC;SACpC;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,IAAI,sDAAkC,CAC3C,WAAW,CAAC,OAAO,EAAE,EACrB,kCAAc,CAAC,KAAK,EACpB,kBAAkB,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,OAAO,EAAE,EAC3D,IAAI,CAAC,IAAI,EACT,WAAW,CAAC,WAAW,EAAE,CAC1B,CAAC;SACH;IACH,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,eAAI,CAAC,OAAO,CAAC;IACtB,CAAC;;AAhDH,8BAiDC;AAhDyB,oBAAU,GAAG,QAAQ,CAAC","file":"expression/function/impl/TOLOGICAL.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n isExprEvalError,\n} from \"../../ExprEvalResult.js\";\nimport { StringValue } from \"../../../value/StringValue.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { NumericValue } from \"../../../value/NumericValue\";\nimport { Decimal } from \"decimal.js\";\nimport { BooleanValue } from \"../../../value/BooleanValue\";\nimport { LogicalValue } from \"../../../value/LogicalValue\";\nimport { ReferenceValue } from \"../../../value/ReferenceValue\";\nimport { FuncArgBoolean } from \"../arg/FuncArgBoolean\";\nimport { Expr } from \"../../Expr\";\n\nexport class TOLOGICAL extends Func {\n private static readonly KEY_OBJECT = \"object\";\n constructor() {\n super(\"TOLOGICAL\", [new FuncArgBoolean(true, \"object\")]);\n }\n\n protected transformArguments(\n callingExpr: Expr<any>,\n evaluatedArguments: Map<string, ExprEvalResult<ExpressionValue>>\n ) {\n const val = evaluatedArguments.get(TOLOGICAL.KEY_OBJECT);\n if (isExprEvalError(val)) {\n if (val.status === ExprEvalStatus.IFC_PROPERTY_NOT_FOUND) {\n evaluatedArguments.set(\n TOLOGICAL.KEY_OBJECT,\n new ExprEvalSuccessObj(LogicalValue.unknown())\n );\n }\n } else {\n evaluatedArguments.set(\n TOLOGICAL.KEY_OBJECT,\n new ExprEvalSuccessObj(\n LogicalValue.of(val.result.getValue() as boolean)\n )\n );\n }\n }\n\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const val = evaluatedArguments.get(TOLOGICAL.KEY_OBJECT);\n try {\n return new ExprEvalSuccessObj(val);\n } catch (e) {\n return new ExprEvalFunctionEvaluationErrorObj(\n callingExpr.getKind(),\n ExprEvalStatus.ERROR,\n `Cannot convert ${val.getValue()} to boolean: ${e.message}`,\n this.name,\n callingExpr.getTextSpan()\n );\n }\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Type.LOGICAL;\n }\n}\n"]}
@@ -44,7 +44,7 @@ class TONUMERIC extends Func_js_1.Func {
44
44
  throw new Error(`numeric conversion not implemented for type ${value.constructor.name}`);
45
45
  }
46
46
  getReturnType(argumentTypes) {
47
- return Types_js_1.Type.STRING;
47
+ return Types_js_1.Type.NUMERIC;
48
48
  }
49
49
  }
50
50
  exports.TONUMERIC = TONUMERIC;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/function/impl/TONUMERIC.ts"],"names":[],"mappings":";;;AAAA,wCAAkC;AAClC,wDAAkD;AAElD,+DAMiC;AACjC,kEAA4D;AAE5D,qDAA8C;AAE9C,oEAA8D;AAC9D,2CAAqC;AACrC,oEAA8D;AAC9D,oEAA8D;AAC9D,wEAAkE;AAElE,MAAa,SAAU,SAAQ,cAAI;IAEjC;QACE,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,0BAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IAES,eAAe,CACvB,WAAyB,EACzB,kBAAgD;QAEhD,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI;YACF,OAAO,IAAI,sCAAkB,CAAC,8BAAY,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACnE;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,IAAI,sDAAkC,CAC3C,WAAW,CAAC,OAAO,EAAE,EACrB,kCAAc,CAAC,UAAU,EACzB,kBAAkB,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,OAAO,EAAE,EAC3D,IAAI,CAAC,IAAI,EACT,WAAW,CAAC,WAAW,EAAE,CAC1B,CAAC;SACH;IACH,CAAC;IAEO,OAAO,CAAC,KAAsB;QACpC,IAAI,KAAK,YAAY,8BAAY,EAAE;YACjC,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,oBAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,oBAAO,CAAC,CAAC,CAAC,CAAC;SAC3D;QACD,IAAI,KAAK,YAAY,4BAAW,IAAI,KAAK,YAAY,kCAAc,EAAE;YACnE,OAAO,IAAI,oBAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;SACtC;QACD,IAAI,KAAK,YAAY,8BAAY,EAAE;YACjC,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;SACzB;QACD,IAAI,KAAK,YAAY,8BAAY,EAAE;YACjC,OAAO,KAAK,CAAC,QAAQ,EAAE,KAAK,SAAS;gBACnC,CAAC,CAAC,IAAI,oBAAO,CAAC,CAAC,CAAC,CAAC;gBACjB,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE;oBAClB,CAAC,CAAC,IAAI,oBAAO,CAAC,CAAC,CAAC;oBAChB,CAAC,CAAC,IAAI,oBAAO,CAAC,CAAC,CAAC,CAAC;SACpB;QACD,MAAM,IAAI,KAAK,CACb,+CAA+C,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CACxE,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,eAAI,CAAC,MAAM,CAAC;IACrB,CAAC;;AAhDH,8BAiDC;AAhDyB,oBAAU,GAAG,QAAQ,CAAC","file":"expression/function/impl/TONUMERIC.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { FuncArgAny } from \"../arg/FuncArgAny.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n ExprEvalWrongFunctionArgumentTypeErrorObj,\n} from \"../../ExprEvalResult.js\";\nimport { StringValue } from \"../../../value/StringValue.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { NumericValue } from \"../../../value/NumericValue\";\nimport { Decimal } from \"decimal.js\";\nimport { BooleanValue } from \"../../../value/BooleanValue\";\nimport { LogicalValue } from \"../../../value/LogicalValue\";\nimport { ReferenceValue } from \"../../../value/ReferenceValue\";\n\nexport class TONUMERIC extends Func {\n private static readonly KEY_OBJECT = \"object\";\n constructor() {\n super(\"TONUMERIC\", [new FuncArgAny(true, \"object\")]);\n }\n\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const val = evaluatedArguments.get(\"object\");\n try {\n return new ExprEvalSuccessObj(NumericValue.of(this.convert(val)));\n } catch (e) {\n return new ExprEvalFunctionEvaluationErrorObj(\n callingExpr.getKind(),\n ExprEvalStatus.MATH_ERROR,\n `Cannot convert ${val.getValue()} to numeric: ${e.message}`,\n this.name,\n callingExpr.getTextSpan()\n );\n }\n }\n\n private convert(value: ExpressionValue): Decimal {\n if (value instanceof BooleanValue) {\n return value.getValue() ? new Decimal(1) : new Decimal(0);\n }\n if (value instanceof StringValue || value instanceof ReferenceValue) {\n return new Decimal(value.getValue());\n }\n if (value instanceof NumericValue) {\n return value.getValue();\n }\n if (value instanceof LogicalValue) {\n return value.getValue() === \"UNKNOWN\"\n ? new Decimal(-1)\n : value.getValue()\n ? new Decimal(1)\n : new Decimal(0);\n }\n throw new Error(\n `numeric conversion not implemented for type ${value.constructor.name}`\n );\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Type.STRING;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/function/impl/TONUMERIC.ts"],"names":[],"mappings":";;;AAAA,wCAAkC;AAClC,wDAAkD;AAElD,+DAMiC;AACjC,kEAA4D;AAE5D,qDAA8C;AAE9C,oEAA8D;AAC9D,2CAAqC;AACrC,oEAA8D;AAC9D,oEAA8D;AAC9D,wEAAkE;AAElE,MAAa,SAAU,SAAQ,cAAI;IAEjC;QACE,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,0BAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IAES,eAAe,CACvB,WAAyB,EACzB,kBAAgD;QAEhD,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI;YACF,OAAO,IAAI,sCAAkB,CAAC,8BAAY,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACnE;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,IAAI,sDAAkC,CAC3C,WAAW,CAAC,OAAO,EAAE,EACrB,kCAAc,CAAC,UAAU,EACzB,kBAAkB,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,OAAO,EAAE,EAC3D,IAAI,CAAC,IAAI,EACT,WAAW,CAAC,WAAW,EAAE,CAC1B,CAAC;SACH;IACH,CAAC;IAEO,OAAO,CAAC,KAAsB;QACpC,IAAI,KAAK,YAAY,8BAAY,EAAE;YACjC,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,oBAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,oBAAO,CAAC,CAAC,CAAC,CAAC;SAC3D;QACD,IAAI,KAAK,YAAY,4BAAW,IAAI,KAAK,YAAY,kCAAc,EAAE;YACnE,OAAO,IAAI,oBAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;SACtC;QACD,IAAI,KAAK,YAAY,8BAAY,EAAE;YACjC,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;SACzB;QACD,IAAI,KAAK,YAAY,8BAAY,EAAE;YACjC,OAAO,KAAK,CAAC,QAAQ,EAAE,KAAK,SAAS;gBACnC,CAAC,CAAC,IAAI,oBAAO,CAAC,CAAC,CAAC,CAAC;gBACjB,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE;oBAClB,CAAC,CAAC,IAAI,oBAAO,CAAC,CAAC,CAAC;oBAChB,CAAC,CAAC,IAAI,oBAAO,CAAC,CAAC,CAAC,CAAC;SACpB;QACD,MAAM,IAAI,KAAK,CACb,+CAA+C,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CACxE,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,aAA8B;QAC1C,OAAO,eAAI,CAAC,OAAO,CAAC;IACtB,CAAC;;AAhDH,8BAiDC;AAhDyB,oBAAU,GAAG,QAAQ,CAAC","file":"expression/function/impl/TONUMERIC.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { FuncArgAny } from \"../arg/FuncArgAny.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n ExprEvalWrongFunctionArgumentTypeErrorObj,\n} from \"../../ExprEvalResult.js\";\nimport { StringValue } from \"../../../value/StringValue.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { Type } from \"../../../type/Types.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { NumericValue } from \"../../../value/NumericValue\";\nimport { Decimal } from \"decimal.js\";\nimport { BooleanValue } from \"../../../value/BooleanValue\";\nimport { LogicalValue } from \"../../../value/LogicalValue\";\nimport { ReferenceValue } from \"../../../value/ReferenceValue\";\n\nexport class TONUMERIC extends Func {\n private static readonly KEY_OBJECT = \"object\";\n constructor() {\n super(\"TONUMERIC\", [new FuncArgAny(true, \"object\")]);\n }\n\n protected calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const val = evaluatedArguments.get(\"object\");\n try {\n return new ExprEvalSuccessObj(NumericValue.of(this.convert(val)));\n } catch (e) {\n return new ExprEvalFunctionEvaluationErrorObj(\n callingExpr.getKind(),\n ExprEvalStatus.MATH_ERROR,\n `Cannot convert ${val.getValue()} to numeric: ${e.message}`,\n this.name,\n callingExpr.getTextSpan()\n );\n }\n }\n\n private convert(value: ExpressionValue): Decimal {\n if (value instanceof BooleanValue) {\n return value.getValue() ? new Decimal(1) : new Decimal(0);\n }\n if (value instanceof StringValue || value instanceof ReferenceValue) {\n return new Decimal(value.getValue());\n }\n if (value instanceof NumericValue) {\n return value.getValue();\n }\n if (value instanceof LogicalValue) {\n return value.getValue() === \"UNKNOWN\"\n ? new Decimal(-1)\n : value.getValue()\n ? new Decimal(1)\n : new Decimal(0);\n }\n throw new Error(\n `numeric conversion not implemented for type ${value.constructor.name}`\n );\n }\n\n getReturnType(argumentTypes: Array<ExprType>): ExprType {\n return Type.NUMERIC;\n }\n}\n"]}
@@ -38,13 +38,14 @@ IfcExpressionLexer.T__12 = 13;
38
38
  IfcExpressionLexer.INT = 14;
39
39
  IfcExpressionLexer.FLOAT = 15;
40
40
  IfcExpressionLexer.BOOLEAN = 16;
41
- IfcExpressionLexer.DOT = 17;
42
- IfcExpressionLexer.QUOTED_STRING = 18;
43
- IfcExpressionLexer.IDENTIFIER = 19;
44
- IfcExpressionLexer.WS = 20;
45
- IfcExpressionLexer.NEWLINE = 21;
46
- IfcExpressionLexer.BOOLEAN_BINARY_OP = 22;
47
- IfcExpressionLexer.CMP_OP = 23;
41
+ IfcExpressionLexer.LOGICAL_UNKNOWN = 17;
42
+ IfcExpressionLexer.DOT = 18;
43
+ IfcExpressionLexer.QUOTED_STRING = 19;
44
+ IfcExpressionLexer.IDENTIFIER = 20;
45
+ IfcExpressionLexer.WS = 21;
46
+ IfcExpressionLexer.NEWLINE = 22;
47
+ IfcExpressionLexer.BOOLEAN_BINARY_OP = 23;
48
+ IfcExpressionLexer.CMP_OP = 24;
48
49
  IfcExpressionLexer.EOF = antlr4_1.Token.EOF;
49
50
  IfcExpressionLexer.channelNames = ["DEFAULT_TOKEN_CHANNEL", "HIDDEN"];
50
51
  IfcExpressionLexer.literalNames = [null, "'--'",
@@ -55,7 +56,8 @@ IfcExpressionLexer.literalNames = [null, "'--'",
55
56
  "','", "'['",
56
57
  "']'", "'$'",
57
58
  null, null,
58
- null, "'.'"];
59
+ null, null,
60
+ "'.'"];
59
61
  IfcExpressionLexer.symbolicNames = [null, null,
60
62
  null, null,
61
63
  null, null,
@@ -65,6 +67,7 @@ IfcExpressionLexer.symbolicNames = [null, null,
65
67
  null, null,
66
68
  "INT", "FLOAT",
67
69
  "BOOLEAN",
70
+ "LOGICAL_UNKNOWN",
68
71
  "DOT", "QUOTED_STRING",
69
72
  "IDENTIFIER",
70
73
  "WS", "NEWLINE",
@@ -73,66 +76,73 @@ IfcExpressionLexer.symbolicNames = [null, null,
73
76
  IfcExpressionLexer.modeNames = ["DEFAULT_MODE",];
74
77
  IfcExpressionLexer.ruleNames = [
75
78
  "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8",
76
- "T__9", "T__10", "T__11", "T__12", "INT", "FLOAT", "BOOLEAN", "DOT", "QUOTED_STRING",
77
- "IDENTIFIER", "WS", "NEWLINE", "BOOLEAN_BINARY_OP", "CMP_OP",
79
+ "T__9", "T__10", "T__11", "T__12", "INT", "FLOAT", "BOOLEAN", "LOGICAL_UNKNOWN",
80
+ "DOT", "QUOTED_STRING", "IDENTIFIER", "WS", "NEWLINE", "BOOLEAN_BINARY_OP",
81
+ "CMP_OP",
78
82
  ];
79
- IfcExpressionLexer._serializedATN = [4, 0, 23, 170, 6, -1, 2, 0,
83
+ IfcExpressionLexer._serializedATN = [4, 0, 24, 188, 6, -1, 2, 0,
80
84
  7, 0, 2, 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,
81
85
  7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7,
82
- 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 1, 0, 1, 0,
83
- 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9,
84
- 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 4, 13, 76, 8, 13, 11, 13, 12, 13, 77, 1, 14,
85
- 4, 14, 81, 8, 14, 11, 14, 12, 14, 82, 1, 14, 1, 14, 4, 14, 87, 8, 14, 11, 14, 12, 14, 88, 1, 15,
86
- 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1,
87
- 15, 1, 15, 1, 15, 3, 15, 109, 8, 15, 1, 16, 1, 16, 1, 17, 1, 17, 5, 17, 115, 8, 17, 10, 17, 12, 17,
88
- 118, 9, 17, 1, 17, 1, 17, 1, 17, 5, 17, 123, 8, 17, 10, 17, 12, 17, 126, 9, 17, 1, 17, 3, 17, 129,
89
- 8, 17, 1, 18, 1, 18, 5, 18, 133, 8, 18, 10, 18, 12, 18, 136, 9, 18, 1, 19, 4, 19, 139, 8, 19, 11,
90
- 19, 12, 19, 140, 1, 19, 1, 19, 1, 20, 4, 20, 146, 8, 20, 11, 20, 12, 20, 147, 1, 20, 1, 20, 1, 21,
91
- 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 158, 8, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1,
92
- 22, 1, 22, 1, 22, 3, 22, 169, 8, 22, 2, 116, 124, 0, 23, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7,
93
- 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39,
94
- 20, 41, 21, 43, 22, 45, 23, 1, 0, 6, 1, 0, 48, 57, 3, 0, 65, 90, 95, 95, 97, 122, 7, 0, 36, 36, 38,
95
- 38, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 9, 9, 32, 32, 2, 0, 10, 10, 13, 13, 2, 0, 60,
96
- 60, 62, 62, 187, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0,
97
- 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21,
98
- 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0,
99
- 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43,
100
- 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 1, 47, 1, 0, 0, 0, 3, 50, 1, 0, 0, 0, 5, 52, 1, 0, 0, 0, 7, 54, 1, 0, 0,
101
- 0, 9, 56, 1, 0, 0, 0, 11, 58, 1, 0, 0, 0, 13, 60, 1, 0, 0, 0, 15, 62, 1, 0, 0, 0, 17, 64, 1, 0, 0, 0,
102
- 19, 66, 1, 0, 0, 0, 21, 68, 1, 0, 0, 0, 23, 70, 1, 0, 0, 0, 25, 72, 1, 0, 0, 0, 27, 75, 1, 0, 0, 0, 29,
103
- 80, 1, 0, 0, 0, 31, 108, 1, 0, 0, 0, 33, 110, 1, 0, 0, 0, 35, 128, 1, 0, 0, 0, 37, 130, 1, 0, 0, 0,
104
- 39, 138, 1, 0, 0, 0, 41, 145, 1, 0, 0, 0, 43, 157, 1, 0, 0, 0, 45, 168, 1, 0, 0, 0, 47, 48, 5, 45,
105
- 0, 0, 48, 49, 5, 45, 0, 0, 49, 2, 1, 0, 0, 0, 50, 51, 5, 40, 0, 0, 51, 4, 1, 0, 0, 0, 52, 53, 5, 41,
106
- 0, 0, 53, 6, 1, 0, 0, 0, 54, 55, 5, 45, 0, 0, 55, 8, 1, 0, 0, 0, 56, 57, 5, 94, 0, 0, 57, 10, 1, 0, 0,
107
- 0, 58, 59, 5, 42, 0, 0, 59, 12, 1, 0, 0, 0, 60, 61, 5, 47, 0, 0, 61, 14, 1, 0, 0, 0, 62, 63, 5, 43,
108
- 0, 0, 63, 16, 1, 0, 0, 0, 64, 65, 5, 33, 0, 0, 65, 18, 1, 0, 0, 0, 66, 67, 5, 44, 0, 0, 67, 20, 1, 0,
109
- 0, 0, 68, 69, 5, 91, 0, 0, 69, 22, 1, 0, 0, 0, 70, 71, 5, 93, 0, 0, 71, 24, 1, 0, 0, 0, 72, 73, 5, 36,
110
- 0, 0, 73, 26, 1, 0, 0, 0, 74, 76, 7, 0, 0, 0, 75, 74, 1, 0, 0, 0, 76, 77, 1, 0, 0, 0, 77, 75, 1, 0, 0,
111
- 0, 77, 78, 1, 0, 0, 0, 78, 28, 1, 0, 0, 0, 79, 81, 7, 0, 0, 0, 80, 79, 1, 0, 0, 0, 81, 82, 1, 0, 0, 0,
112
- 82, 80, 1, 0, 0, 0, 82, 83, 1, 0, 0, 0, 83, 84, 1, 0, 0, 0, 84, 86, 5, 46, 0, 0, 85, 87, 7, 0, 0, 0,
113
- 86, 85, 1, 0, 0, 0, 87, 88, 1, 0, 0, 0, 88, 86, 1, 0, 0, 0, 88, 89, 1, 0, 0, 0, 89, 30, 1, 0, 0, 0, 90,
114
- 91, 5, 84, 0, 0, 91, 92, 5, 82, 0, 0, 92, 93, 5, 85, 0, 0, 93, 109, 5, 69, 0, 0, 94, 95, 5, 116, 0,
115
- 0, 95, 96, 5, 114, 0, 0, 96, 97, 5, 117, 0, 0, 97, 109, 5, 101, 0, 0, 98, 99, 5, 70, 0, 0, 99, 100,
116
- 5, 65, 0, 0, 100, 101, 5, 76, 0, 0, 101, 102, 5, 83, 0, 0, 102, 109, 5, 69, 0, 0, 103, 104, 5, 102,
117
- 0, 0, 104, 105, 5, 97, 0, 0, 105, 106, 5, 108, 0, 0, 106, 107, 5, 115, 0, 0, 107, 109, 5, 101,
118
- 0, 0, 108, 90, 1, 0, 0, 0, 108, 94, 1, 0, 0, 0, 108, 98, 1, 0, 0, 0, 108, 103, 1, 0, 0, 0, 109, 32,
119
- 1, 0, 0, 0, 110, 111, 5, 46, 0, 0, 111, 34, 1, 0, 0, 0, 112, 116, 5, 34, 0, 0, 113, 115, 9, 0, 0,
120
- 0, 114, 113, 1, 0, 0, 0, 115, 118, 1, 0, 0, 0, 116, 117, 1, 0, 0, 0, 116, 114, 1, 0, 0, 0, 117, 119,
121
- 1, 0, 0, 0, 118, 116, 1, 0, 0, 0, 119, 129, 5, 34, 0, 0, 120, 124, 5, 39, 0, 0, 121, 123, 9, 0, 0,
122
- 0, 122, 121, 1, 0, 0, 0, 123, 126, 1, 0, 0, 0, 124, 125, 1, 0, 0, 0, 124, 122, 1, 0, 0, 0, 125, 127,
123
- 1, 0, 0, 0, 126, 124, 1, 0, 0, 0, 127, 129, 5, 39, 0, 0, 128, 112, 1, 0, 0, 0, 128, 120, 1, 0, 0,
124
- 0, 129, 36, 1, 0, 0, 0, 130, 134, 7, 1, 0, 0, 131, 133, 7, 2, 0, 0, 132, 131, 1, 0, 0, 0, 133, 136,
125
- 1, 0, 0, 0, 134, 132, 1, 0, 0, 0, 134, 135, 1, 0, 0, 0, 135, 38, 1, 0, 0, 0, 136, 134, 1, 0, 0, 0,
126
- 137, 139, 7, 3, 0, 0, 138, 137, 1, 0, 0, 0, 139, 140, 1, 0, 0, 0, 140, 138, 1, 0, 0, 0, 140, 141,
127
- 1, 0, 0, 0, 141, 142, 1, 0, 0, 0, 142, 143, 6, 19, 0, 0, 143, 40, 1, 0, 0, 0, 144, 146, 7, 4, 0, 0,
128
- 145, 144, 1, 0, 0, 0, 146, 147, 1, 0, 0, 0, 147, 145, 1, 0, 0, 0, 147, 148, 1, 0, 0, 0, 148, 149,
129
- 1, 0, 0, 0, 149, 150, 6, 20, 0, 0, 150, 42, 1, 0, 0, 0, 151, 152, 5, 124, 0, 0, 152, 158, 5, 124,
130
- 0, 0, 153, 154, 5, 38, 0, 0, 154, 158, 5, 38, 0, 0, 155, 156, 5, 62, 0, 0, 156, 158, 5, 60, 0, 0,
131
- 157, 151, 1, 0, 0, 0, 157, 153, 1, 0, 0, 0, 157, 155, 1, 0, 0, 0, 158, 44, 1, 0, 0, 0, 159, 160,
132
- 5, 61, 0, 0, 160, 169, 5, 61, 0, 0, 161, 169, 7, 5, 0, 0, 162, 163, 5, 62, 0, 0, 163, 169, 5, 61,
133
- 0, 0, 164, 165, 5, 60, 0, 0, 165, 169, 5, 61, 0, 0, 166, 167, 5, 33, 0, 0, 167, 169, 5, 61, 0, 0,
134
- 168, 159, 1, 0, 0, 0, 168, 161, 1, 0, 0, 0, 168, 162, 1, 0, 0, 0, 168, 164, 1, 0, 0, 0, 168, 166,
135
- 1, 0, 0, 0, 169, 46, 1, 0, 0, 0, 13, 0, 77, 82, 88, 108, 116, 124, 128, 134, 140, 147, 157, 168,
86
+ 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23,
87
+ 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8,
88
+ 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 4, 13, 78, 8, 13, 11, 13, 12, 13,
89
+ 79, 1, 14, 4, 14, 83, 8, 14, 11, 14, 12, 14, 84, 1, 14, 1, 14, 4, 14, 89, 8, 14, 11, 14, 12, 14,
90
+ 90, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15,
91
+ 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 111, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1,
92
+ 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 127, 8, 16, 1, 17, 1, 17, 1, 18, 1, 18, 5, 18,
93
+ 133, 8, 18, 10, 18, 12, 18, 136, 9, 18, 1, 18, 1, 18, 1, 18, 5, 18, 141, 8, 18, 10, 18, 12, 18,
94
+ 144, 9, 18, 1, 18, 3, 18, 147, 8, 18, 1, 19, 1, 19, 5, 19, 151, 8, 19, 10, 19, 12, 19, 154, 9, 19,
95
+ 1, 20, 4, 20, 157, 8, 20, 11, 20, 12, 20, 158, 1, 20, 1, 20, 1, 21, 4, 21, 164, 8, 21, 11, 21, 12,
96
+ 21, 165, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 176, 8, 22, 1, 23, 1, 23,
97
+ 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 187, 8, 23, 2, 134, 142, 0, 24, 1, 1, 3, 2,
98
+ 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31,
99
+ 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 1, 0, 6, 1, 0, 48, 57, 3, 0,
100
+ 65, 90, 95, 95, 97, 122, 7, 0, 36, 36, 38, 38, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 9,
101
+ 9, 32, 32, 2, 0, 10, 10, 13, 13, 2, 0, 60, 60, 62, 62, 206, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5,
102
+ 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0,
103
+ 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1,
104
+ 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0,
105
+ 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 1, 49, 1,
106
+ 0, 0, 0, 3, 52, 1, 0, 0, 0, 5, 54, 1, 0, 0, 0, 7, 56, 1, 0, 0, 0, 9, 58, 1, 0, 0, 0, 11, 60, 1, 0, 0, 0,
107
+ 13, 62, 1, 0, 0, 0, 15, 64, 1, 0, 0, 0, 17, 66, 1, 0, 0, 0, 19, 68, 1, 0, 0, 0, 21, 70, 1, 0, 0, 0, 23,
108
+ 72, 1, 0, 0, 0, 25, 74, 1, 0, 0, 0, 27, 77, 1, 0, 0, 0, 29, 82, 1, 0, 0, 0, 31, 110, 1, 0, 0, 0, 33,
109
+ 126, 1, 0, 0, 0, 35, 128, 1, 0, 0, 0, 37, 146, 1, 0, 0, 0, 39, 148, 1, 0, 0, 0, 41, 156, 1, 0, 0, 0,
110
+ 43, 163, 1, 0, 0, 0, 45, 175, 1, 0, 0, 0, 47, 186, 1, 0, 0, 0, 49, 50, 5, 45, 0, 0, 50, 51, 5, 45,
111
+ 0, 0, 51, 2, 1, 0, 0, 0, 52, 53, 5, 40, 0, 0, 53, 4, 1, 0, 0, 0, 54, 55, 5, 41, 0, 0, 55, 6, 1, 0, 0,
112
+ 0, 56, 57, 5, 45, 0, 0, 57, 8, 1, 0, 0, 0, 58, 59, 5, 94, 0, 0, 59, 10, 1, 0, 0, 0, 60, 61, 5, 42, 0,
113
+ 0, 61, 12, 1, 0, 0, 0, 62, 63, 5, 47, 0, 0, 63, 14, 1, 0, 0, 0, 64, 65, 5, 43, 0, 0, 65, 16, 1, 0, 0,
114
+ 0, 66, 67, 5, 33, 0, 0, 67, 18, 1, 0, 0, 0, 68, 69, 5, 44, 0, 0, 69, 20, 1, 0, 0, 0, 70, 71, 5, 91,
115
+ 0, 0, 71, 22, 1, 0, 0, 0, 72, 73, 5, 93, 0, 0, 73, 24, 1, 0, 0, 0, 74, 75, 5, 36, 0, 0, 75, 26, 1, 0,
116
+ 0, 0, 76, 78, 7, 0, 0, 0, 77, 76, 1, 0, 0, 0, 78, 79, 1, 0, 0, 0, 79, 77, 1, 0, 0, 0, 79, 80, 1, 0, 0,
117
+ 0, 80, 28, 1, 0, 0, 0, 81, 83, 7, 0, 0, 0, 82, 81, 1, 0, 0, 0, 83, 84, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0,
118
+ 84, 85, 1, 0, 0, 0, 85, 86, 1, 0, 0, 0, 86, 88, 5, 46, 0, 0, 87, 89, 7, 0, 0, 0, 88, 87, 1, 0, 0, 0,
119
+ 89, 90, 1, 0, 0, 0, 90, 88, 1, 0, 0, 0, 90, 91, 1, 0, 0, 0, 91, 30, 1, 0, 0, 0, 92, 93, 5, 84, 0, 0,
120
+ 93, 94, 5, 82, 0, 0, 94, 95, 5, 85, 0, 0, 95, 111, 5, 69, 0, 0, 96, 97, 5, 116, 0, 0, 97, 98, 5, 114,
121
+ 0, 0, 98, 99, 5, 117, 0, 0, 99, 111, 5, 101, 0, 0, 100, 101, 5, 70, 0, 0, 101, 102, 5, 65, 0, 0,
122
+ 102, 103, 5, 76, 0, 0, 103, 104, 5, 83, 0, 0, 104, 111, 5, 69, 0, 0, 105, 106, 5, 102, 0, 0, 106,
123
+ 107, 5, 97, 0, 0, 107, 108, 5, 108, 0, 0, 108, 109, 5, 115, 0, 0, 109, 111, 5, 101, 0, 0, 110,
124
+ 92, 1, 0, 0, 0, 110, 96, 1, 0, 0, 0, 110, 100, 1, 0, 0, 0, 110, 105, 1, 0, 0, 0, 111, 32, 1, 0, 0,
125
+ 0, 112, 113, 5, 85, 0, 0, 113, 114, 5, 78, 0, 0, 114, 115, 5, 75, 0, 0, 115, 116, 5, 78, 0, 0, 116,
126
+ 117, 5, 79, 0, 0, 117, 118, 5, 87, 0, 0, 118, 127, 5, 78, 0, 0, 119, 120, 5, 117, 0, 0, 120, 121,
127
+ 5, 110, 0, 0, 121, 122, 5, 107, 0, 0, 122, 123, 5, 110, 0, 0, 123, 124, 5, 111, 0, 0, 124, 125,
128
+ 5, 119, 0, 0, 125, 127, 5, 110, 0, 0, 126, 112, 1, 0, 0, 0, 126, 119, 1, 0, 0, 0, 127, 34, 1, 0,
129
+ 0, 0, 128, 129, 5, 46, 0, 0, 129, 36, 1, 0, 0, 0, 130, 134, 5, 34, 0, 0, 131, 133, 9, 0, 0, 0, 132,
130
+ 131, 1, 0, 0, 0, 133, 136, 1, 0, 0, 0, 134, 135, 1, 0, 0, 0, 134, 132, 1, 0, 0, 0, 135, 137, 1, 0,
131
+ 0, 0, 136, 134, 1, 0, 0, 0, 137, 147, 5, 34, 0, 0, 138, 142, 5, 39, 0, 0, 139, 141, 9, 0, 0, 0, 140,
132
+ 139, 1, 0, 0, 0, 141, 144, 1, 0, 0, 0, 142, 143, 1, 0, 0, 0, 142, 140, 1, 0, 0, 0, 143, 145, 1, 0,
133
+ 0, 0, 144, 142, 1, 0, 0, 0, 145, 147, 5, 39, 0, 0, 146, 130, 1, 0, 0, 0, 146, 138, 1, 0, 0, 0, 147,
134
+ 38, 1, 0, 0, 0, 148, 152, 7, 1, 0, 0, 149, 151, 7, 2, 0, 0, 150, 149, 1, 0, 0, 0, 151, 154, 1, 0,
135
+ 0, 0, 152, 150, 1, 0, 0, 0, 152, 153, 1, 0, 0, 0, 153, 40, 1, 0, 0, 0, 154, 152, 1, 0, 0, 0, 155,
136
+ 157, 7, 3, 0, 0, 156, 155, 1, 0, 0, 0, 157, 158, 1, 0, 0, 0, 158, 156, 1, 0, 0, 0, 158, 159, 1, 0,
137
+ 0, 0, 159, 160, 1, 0, 0, 0, 160, 161, 6, 20, 0, 0, 161, 42, 1, 0, 0, 0, 162, 164, 7, 4, 0, 0, 163,
138
+ 162, 1, 0, 0, 0, 164, 165, 1, 0, 0, 0, 165, 163, 1, 0, 0, 0, 165, 166, 1, 0, 0, 0, 166, 167, 1, 0,
139
+ 0, 0, 167, 168, 6, 21, 0, 0, 168, 44, 1, 0, 0, 0, 169, 170, 5, 124, 0, 0, 170, 176, 5, 124, 0, 0,
140
+ 171, 172, 5, 38, 0, 0, 172, 176, 5, 38, 0, 0, 173, 174, 5, 62, 0, 0, 174, 176, 5, 60, 0, 0, 175,
141
+ 169, 1, 0, 0, 0, 175, 171, 1, 0, 0, 0, 175, 173, 1, 0, 0, 0, 176, 46, 1, 0, 0, 0, 177, 178, 5, 61,
142
+ 0, 0, 178, 187, 5, 61, 0, 0, 179, 187, 7, 5, 0, 0, 180, 181, 5, 62, 0, 0, 181, 187, 5, 61, 0, 0,
143
+ 182, 183, 5, 60, 0, 0, 183, 187, 5, 61, 0, 0, 184, 185, 5, 33, 0, 0, 185, 187, 5, 61, 0, 0, 186,
144
+ 177, 1, 0, 0, 0, 186, 179, 1, 0, 0, 0, 186, 180, 1, 0, 0, 0, 186, 182, 1, 0, 0, 0, 186, 184, 1, 0,
145
+ 0, 0, 187, 48, 1, 0, 0, 0, 14, 0, 79, 84, 90, 110, 126, 134, 142, 146, 152, 158, 165, 175, 186,
136
146
  1, 6, 0, 0];
137
147
  IfcExpressionLexer.DecisionsToDFA = IfcExpressionLexer._ATN.decisionToState.map((ds, index) => new antlr4_1.DFA(ds, index));
138
148
  exports.default = IfcExpressionLexer;