ifc-expressions 2.1.0 → 2.2.0-beta.0

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 (205) hide show
  1. package/README.md +9 -1
  2. package/dist/cjs/E.js.map +1 -1
  3. package/dist/cjs/IfcExpression.js.map +1 -1
  4. package/dist/cjs/compiler/ExprCompiler.js.map +1 -1
  5. package/dist/cjs/error/ExceptionToExprEvalErrorMapper.js.map +1 -1
  6. package/dist/cjs/error/MissingFunctionArgumentException.js.map +1 -1
  7. package/dist/cjs/error/SpuriousFunctionArgumentException.js.map +1 -1
  8. package/dist/cjs/error/mapper/SpuriousFunctionArgumentExceptionMapper.js.map +1 -1
  9. package/dist/cjs/error/value/DateFormatException.js +10 -0
  10. package/dist/cjs/error/value/DateFormatException.js.map +1 -0
  11. package/dist/cjs/expression/boolean/AndExpr.js.map +1 -1
  12. package/dist/cjs/expression/boolean/BinaryBooleanOpExpr.js.map +1 -1
  13. package/dist/cjs/expression/boolean/LogicalLiteralExpr.js.map +1 -1
  14. package/dist/cjs/expression/boolean/NotExpr.js.map +1 -1
  15. package/dist/cjs/expression/boolean/OrExpr.js.map +1 -1
  16. package/dist/cjs/expression/boolean/XorExpr.js.map +1 -1
  17. package/dist/cjs/expression/function/Func.js +2 -0
  18. package/dist/cjs/expression/function/Func.js.map +1 -1
  19. package/dist/cjs/expression/function/IfcExpressionFunctions.js +12 -0
  20. package/dist/cjs/expression/function/IfcExpressionFunctions.js.map +1 -1
  21. package/dist/cjs/expression/function/arg/FuncArgArray.js.map +1 -1
  22. package/dist/cjs/expression/function/arg/FuncArgBase.js +9 -2
  23. package/dist/cjs/expression/function/arg/FuncArgBase.js.map +1 -1
  24. package/dist/cjs/expression/function/arg/FuncArgIfcDateString.js +34 -0
  25. package/dist/cjs/expression/function/arg/FuncArgIfcDateString.js.map +1 -0
  26. package/dist/cjs/expression/function/arg/FuncArgIfcDateTime.js +27 -0
  27. package/dist/cjs/expression/function/arg/FuncArgIfcDateTime.js.map +1 -0
  28. package/dist/cjs/expression/function/arg/FuncArgIfcDateTimeString.js +35 -0
  29. package/dist/cjs/expression/function/arg/FuncArgIfcDateTimeString.js.map +1 -0
  30. package/dist/cjs/expression/function/arg/FuncArgIfcDuration.js +27 -0
  31. package/dist/cjs/expression/function/arg/FuncArgIfcDuration.js.map +1 -0
  32. package/dist/cjs/expression/function/arg/FuncArgIfcDurationString.js +30 -0
  33. package/dist/cjs/expression/function/arg/FuncArgIfcDurationString.js.map +1 -0
  34. package/dist/cjs/expression/function/arg/FuncArgIfcTimeStamp.js +27 -0
  35. package/dist/cjs/expression/function/arg/FuncArgIfcTimeStamp.js.map +1 -0
  36. package/dist/cjs/expression/function/arg/FuncArgIfcTimeStampNumeric.js +28 -0
  37. package/dist/cjs/expression/function/arg/FuncArgIfcTimeStampNumeric.js.map +1 -0
  38. package/dist/cjs/expression/function/arg/FuncArgIfcTimeString.js +34 -0
  39. package/dist/cjs/expression/function/arg/FuncArgIfcTimeString.js.map +1 -0
  40. package/dist/cjs/expression/function/arg/FuncArgLogicalOrBoolean.js.map +1 -1
  41. package/dist/cjs/expression/function/arg/FuncArgRegexFlag.js.map +1 -1
  42. package/dist/cjs/expression/function/arg/FuncArgUnion.js +32 -0
  43. package/dist/cjs/expression/function/arg/FuncArgUnion.js.map +1 -0
  44. package/dist/cjs/expression/function/impl/ADDDURATION.js +53 -0
  45. package/dist/cjs/expression/function/impl/ADDDURATION.js.map +1 -0
  46. package/dist/cjs/expression/function/impl/AT.js.map +1 -1
  47. package/dist/cjs/expression/function/impl/ApplyRegex.js.map +1 -1
  48. package/dist/cjs/expression/function/impl/FuncBooleanBinary.js.map +1 -1
  49. package/dist/cjs/expression/function/impl/IF.js.map +1 -1
  50. package/dist/cjs/expression/function/impl/NOT.js.map +1 -1
  51. package/dist/cjs/expression/function/impl/ReplacePattern.js.map +1 -1
  52. package/dist/cjs/expression/function/impl/SPLIT.js.map +1 -1
  53. package/dist/cjs/expression/function/impl/SUBSTRING.js.map +1 -1
  54. package/dist/cjs/expression/function/impl/TOBOOLEAN.js +0 -1
  55. package/dist/cjs/expression/function/impl/TOBOOLEAN.js.map +1 -1
  56. package/dist/cjs/expression/function/impl/TOIFCDATE.js +33 -0
  57. package/dist/cjs/expression/function/impl/TOIFCDATE.js.map +1 -0
  58. package/dist/cjs/expression/function/impl/TOIFCDATETIME.js +36 -0
  59. package/dist/cjs/expression/function/impl/TOIFCDATETIME.js.map +1 -0
  60. package/dist/cjs/expression/function/impl/TOIFCDURATION.js +21 -0
  61. package/dist/cjs/expression/function/impl/TOIFCDURATION.js.map +1 -0
  62. package/dist/cjs/expression/function/impl/TOIFCTIME.js +33 -0
  63. package/dist/cjs/expression/function/impl/TOIFCTIME.js.map +1 -0
  64. package/dist/cjs/expression/function/impl/TOIFCTIMESTAMP.js +36 -0
  65. package/dist/cjs/expression/function/impl/TOIFCTIMESTAMP.js.map +1 -0
  66. package/dist/cjs/expression/function/impl/TOLOGICAL.js.map +1 -1
  67. package/dist/cjs/expression/function/impl/TONUMERIC.js +0 -1
  68. package/dist/cjs/expression/function/impl/TONUMERIC.js.map +1 -1
  69. package/dist/cjs/type/Types.js +35 -0
  70. package/dist/cjs/type/Types.js.map +1 -1
  71. package/dist/cjs/util/TextSpan.js +0 -1
  72. package/dist/cjs/util/TextSpan.js.map +1 -1
  73. package/dist/cjs/value/BooleanValue.js.map +1 -1
  74. package/dist/cjs/value/ExpressionValue.js.map +1 -1
  75. package/dist/cjs/value/IfcDateTimeValue.js +194 -0
  76. package/dist/cjs/value/IfcDateTimeValue.js.map +1 -0
  77. package/dist/cjs/value/IfcDateValue.js +68 -0
  78. package/dist/cjs/value/IfcDateValue.js.map +1 -0
  79. package/dist/cjs/value/IfcDurationValue.js +149 -0
  80. package/dist/cjs/value/IfcDurationValue.js.map +1 -0
  81. package/dist/cjs/value/IfcTimeStampValue.js +62 -0
  82. package/dist/cjs/value/IfcTimeStampValue.js.map +1 -0
  83. package/dist/cjs/value/IfcTimeValue.js +93 -0
  84. package/dist/cjs/value/IfcTimeValue.js.map +1 -0
  85. package/dist/cjs/value/LogicalValue.js.map +1 -1
  86. package/dist/cjs/value/NonBoxedValueTypes.js +3 -0
  87. package/dist/cjs/value/NonBoxedValueTypes.js.map +1 -0
  88. package/dist/cjs/value/Value.js.map +1 -1
  89. package/dist/error/value/DateFormatException.d.ts +3 -0
  90. package/dist/expression/function/Func.d.ts +3 -0
  91. package/dist/expression/function/arg/FuncArgBase.d.ts +1 -0
  92. package/dist/expression/function/arg/FuncArgIfcDateString.d.ts +11 -0
  93. package/dist/expression/function/arg/FuncArgIfcDateTime.d.ts +11 -0
  94. package/dist/expression/function/arg/FuncArgIfcDateTimeString.d.ts +11 -0
  95. package/dist/expression/function/arg/FuncArgIfcDuration.d.ts +11 -0
  96. package/dist/expression/function/arg/FuncArgIfcDurationString.d.ts +11 -0
  97. package/dist/expression/function/arg/FuncArgIfcTimeStamp.d.ts +11 -0
  98. package/dist/expression/function/arg/FuncArgIfcTimeStampNumeric.d.ts +11 -0
  99. package/dist/expression/function/arg/FuncArgIfcTimeString.d.ts +11 -0
  100. package/dist/expression/function/arg/FuncArgUnion.d.ts +14 -0
  101. package/dist/expression/function/impl/ADDDURATION.d.ts +10 -0
  102. package/dist/expression/function/impl/TOBOOLEAN.d.ts +0 -1
  103. package/dist/expression/function/impl/TOIFCDATE.d.ts +10 -0
  104. package/dist/expression/function/impl/TOIFCDATETIME.d.ts +10 -0
  105. package/dist/expression/function/impl/TOIFCDURATION.d.ts +10 -0
  106. package/dist/expression/function/impl/TOIFCTIME.d.ts +10 -0
  107. package/dist/expression/function/impl/TOIFCTIMESTAMP.d.ts +10 -0
  108. package/dist/expression/function/impl/TONUMERIC.d.ts +0 -1
  109. package/dist/mjs/E.js.map +1 -1
  110. package/dist/mjs/IfcExpression.js.map +1 -1
  111. package/dist/mjs/compiler/ExprCompiler.js.map +1 -1
  112. package/dist/mjs/error/ExceptionToExprEvalErrorMapper.js.map +1 -1
  113. package/dist/mjs/error/MissingFunctionArgumentException.js.map +1 -1
  114. package/dist/mjs/error/SpuriousFunctionArgumentException.js.map +1 -1
  115. package/dist/mjs/error/mapper/SpuriousFunctionArgumentExceptionMapper.js.map +1 -1
  116. package/dist/mjs/error/value/DateFormatException.js +6 -0
  117. package/dist/mjs/error/value/DateFormatException.js.map +1 -0
  118. package/dist/mjs/expression/boolean/AndExpr.js.map +1 -1
  119. package/dist/mjs/expression/boolean/BinaryBooleanOpExpr.js.map +1 -1
  120. package/dist/mjs/expression/boolean/LogicalLiteralExpr.js.map +1 -1
  121. package/dist/mjs/expression/boolean/NotExpr.js.map +1 -1
  122. package/dist/mjs/expression/boolean/OrExpr.js.map +1 -1
  123. package/dist/mjs/expression/boolean/XorExpr.js.map +1 -1
  124. package/dist/mjs/expression/function/Func.js +2 -0
  125. package/dist/mjs/expression/function/Func.js.map +1 -1
  126. package/dist/mjs/expression/function/IfcExpressionFunctions.js +12 -0
  127. package/dist/mjs/expression/function/IfcExpressionFunctions.js.map +1 -1
  128. package/dist/mjs/expression/function/arg/FuncArgArray.js.map +1 -1
  129. package/dist/mjs/expression/function/arg/FuncArgBase.js +10 -3
  130. package/dist/mjs/expression/function/arg/FuncArgBase.js.map +1 -1
  131. package/dist/mjs/expression/function/arg/FuncArgIfcDateString.js +30 -0
  132. package/dist/mjs/expression/function/arg/FuncArgIfcDateString.js.map +1 -0
  133. package/dist/mjs/expression/function/arg/FuncArgIfcDateTime.js +23 -0
  134. package/dist/mjs/expression/function/arg/FuncArgIfcDateTime.js.map +1 -0
  135. package/dist/mjs/expression/function/arg/FuncArgIfcDateTimeString.js +31 -0
  136. package/dist/mjs/expression/function/arg/FuncArgIfcDateTimeString.js.map +1 -0
  137. package/dist/mjs/expression/function/arg/FuncArgIfcDuration.js +23 -0
  138. package/dist/mjs/expression/function/arg/FuncArgIfcDuration.js.map +1 -0
  139. package/dist/mjs/expression/function/arg/FuncArgIfcDurationString.js +26 -0
  140. package/dist/mjs/expression/function/arg/FuncArgIfcDurationString.js.map +1 -0
  141. package/dist/mjs/expression/function/arg/FuncArgIfcTimeStamp.js +23 -0
  142. package/dist/mjs/expression/function/arg/FuncArgIfcTimeStamp.js.map +1 -0
  143. package/dist/mjs/expression/function/arg/FuncArgIfcTimeStampNumeric.js +24 -0
  144. package/dist/mjs/expression/function/arg/FuncArgIfcTimeStampNumeric.js.map +1 -0
  145. package/dist/mjs/expression/function/arg/FuncArgIfcTimeString.js +30 -0
  146. package/dist/mjs/expression/function/arg/FuncArgIfcTimeString.js.map +1 -0
  147. package/dist/mjs/expression/function/arg/FuncArgLogicalOrBoolean.js.map +1 -1
  148. package/dist/mjs/expression/function/arg/FuncArgRegexFlag.js.map +1 -1
  149. package/dist/mjs/expression/function/arg/FuncArgUnion.js +28 -0
  150. package/dist/mjs/expression/function/arg/FuncArgUnion.js.map +1 -0
  151. package/dist/mjs/expression/function/impl/ADDDURATION.js +49 -0
  152. package/dist/mjs/expression/function/impl/ADDDURATION.js.map +1 -0
  153. package/dist/mjs/expression/function/impl/AT.js.map +1 -1
  154. package/dist/mjs/expression/function/impl/ApplyRegex.js.map +1 -1
  155. package/dist/mjs/expression/function/impl/FuncBooleanBinary.js.map +1 -1
  156. package/dist/mjs/expression/function/impl/IF.js.map +1 -1
  157. package/dist/mjs/expression/function/impl/NOT.js.map +1 -1
  158. package/dist/mjs/expression/function/impl/ReplacePattern.js.map +1 -1
  159. package/dist/mjs/expression/function/impl/SPLIT.js.map +1 -1
  160. package/dist/mjs/expression/function/impl/SUBSTRING.js.map +1 -1
  161. package/dist/mjs/expression/function/impl/TOBOOLEAN.js +0 -1
  162. package/dist/mjs/expression/function/impl/TOBOOLEAN.js.map +1 -1
  163. package/dist/mjs/expression/function/impl/TOIFCDATE.js +29 -0
  164. package/dist/mjs/expression/function/impl/TOIFCDATE.js.map +1 -0
  165. package/dist/mjs/expression/function/impl/TOIFCDATETIME.js +32 -0
  166. package/dist/mjs/expression/function/impl/TOIFCDATETIME.js.map +1 -0
  167. package/dist/mjs/expression/function/impl/TOIFCDURATION.js +17 -0
  168. package/dist/mjs/expression/function/impl/TOIFCDURATION.js.map +1 -0
  169. package/dist/mjs/expression/function/impl/TOIFCTIME.js +29 -0
  170. package/dist/mjs/expression/function/impl/TOIFCTIME.js.map +1 -0
  171. package/dist/mjs/expression/function/impl/TOIFCTIMESTAMP.js +32 -0
  172. package/dist/mjs/expression/function/impl/TOIFCTIMESTAMP.js.map +1 -0
  173. package/dist/mjs/expression/function/impl/TOLOGICAL.js.map +1 -1
  174. package/dist/mjs/expression/function/impl/TONUMERIC.js +0 -1
  175. package/dist/mjs/expression/function/impl/TONUMERIC.js.map +1 -1
  176. package/dist/mjs/type/Types.js +35 -0
  177. package/dist/mjs/type/Types.js.map +1 -1
  178. package/dist/mjs/util/TextSpan.js +0 -1
  179. package/dist/mjs/util/TextSpan.js.map +1 -1
  180. package/dist/mjs/value/BooleanValue.js.map +1 -1
  181. package/dist/mjs/value/ExpressionValue.js.map +1 -1
  182. package/dist/mjs/value/IfcDateTimeValue.js +186 -0
  183. package/dist/mjs/value/IfcDateTimeValue.js.map +1 -0
  184. package/dist/mjs/value/IfcDateValue.js +64 -0
  185. package/dist/mjs/value/IfcDateValue.js.map +1 -0
  186. package/dist/mjs/value/IfcDurationValue.js +142 -0
  187. package/dist/mjs/value/IfcDurationValue.js.map +1 -0
  188. package/dist/mjs/value/IfcTimeStampValue.js +58 -0
  189. package/dist/mjs/value/IfcTimeStampValue.js.map +1 -0
  190. package/dist/mjs/value/IfcTimeValue.js +86 -0
  191. package/dist/mjs/value/IfcTimeValue.js.map +1 -0
  192. package/dist/mjs/value/LogicalValue.js.map +1 -1
  193. package/dist/mjs/value/NonBoxedValueTypes.js +2 -0
  194. package/dist/mjs/value/NonBoxedValueTypes.js.map +1 -0
  195. package/dist/mjs/value/Value.js.map +1 -1
  196. package/dist/type/Types.d.ts +15 -0
  197. package/dist/value/ExpressionValue.d.ts +6 -1
  198. package/dist/value/IfcDateTimeValue.d.ts +44 -0
  199. package/dist/value/IfcDateValue.d.ts +24 -0
  200. package/dist/value/IfcDurationValue.d.ts +53 -0
  201. package/dist/value/IfcTimeStampValue.d.ts +18 -0
  202. package/dist/value/IfcTimeValue.d.ts +27 -0
  203. package/dist/value/NonBoxedValueTypes.d.ts +6 -0
  204. package/dist/value/Value.d.ts +2 -1
  205. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["compiler/ExprCompiler.ts"],"names":[],"mappings":"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","file":"compiler/ExprCompiler.js","sourcesContent":["import IfcExpressionVisitor from \"../gen/parser/IfcExpressionVisitor.js\";\nimport { NumericLiteralExpr } from \"../expression/numeric/NumericLiteralExpr.js\";\nimport {\n ArrayElementListContext,\n ArrayExprContext,\n BooleanLiteralContext,\n ExprContext,\n ExprListContext,\n FunctionCallContext,\n LiteralContext,\n LogicalLiteralContext,\n MethodCallChainEndContext,\n MethodCallChainInnerContext,\n NumLiteralContext,\n SEAddSubContext,\n SEArrayExprContext,\n SEBooleanBinaryOpContext,\n SEComparisonContext,\n SEFunctionCallContext,\n SELiteralContext,\n SEMethodCallContext,\n SEMulDivContext,\n SENotContext,\n SEParenthesisContext,\n SEPowerContext,\n SEUnaryMinusContext,\n SEUnaryMultipleMinusContext,\n SEVariableRefContext,\n StringLiteralContext,\n VariableRefContext,\n} from \"../gen/parser/IfcExpressionParser.js\";\nimport { Expr } from \"../expression/Expr.js\";\nimport { isNullish, isPresent } from \"../util/IfcExpressionUtils.js\";\nimport Decimal from \"decimal.js\";\nimport { PlusExpr } from \"../expression/numeric/PlusExpr.js\";\nimport { MinusExpr } from \"../expression/numeric/MinusExpr.js\";\nimport { ParserRuleContext } from \"antlr4\";\nimport { MultiplyExpr } from \"../expression/numeric/MultiplyExpr.js\";\nimport { DivideExpr } from \"../expression/numeric/DivideExpr.js\";\nimport { PropObjectReferenceExpr } from \"../expression/reference/PropObjectReferenceExpr.js\";\nimport { ElemObjectReferenceExpr } from \"../expression/reference/ElemObjectReferenceExpr.js\";\nimport { StringLiteralExpr } from \"../expression/string/StringLiteralExpr.js\";\nimport { ArrayExpr } from \"../expression/structure/ArrayExpr.js\";\nimport { FunctionExpr } from \"../expression/function/FunctionExpr.js\";\nimport { PowerExpr } from \"../expression/numeric/PowerExpr.js\";\nimport { UnaryMinusExpr } from \"../expression/numeric/UnaryMinusExpr.js\";\nimport { AndExpr } from \"../expression/boolean/AndExpr.js\";\nimport { BooleanLiteralExpr } from \"../expression/boolean/BooleanLiteralExpr.js\";\nimport { OrExpr } from \"../expression/boolean/OrExpr.js\";\nimport { XorExpr } from \"../expression/boolean/XorExpr.js\";\nimport { SyntaxErrorException } from \"../error/SyntaxErrorException.js\";\nimport { NotExpr } from \"../expression/boolean/NotExpr.js\";\nimport { ParenthesisExpr } from \"../expression/structure/ParenthesisExpr.js\";\nimport { EqualsExpr } from \"../expression/comparison/EqualsExpr.js\";\nimport { NotEqualsExpr } from \"../expression/comparison/NotEqualsExpr.js\";\nimport { TypeManager } from \"./TypeManager.js\";\nimport { StringConcatExpr } from \"../expression/string/StringConcatExpr.js\";\nimport { PlusOrConcatExpr } from \"../expression/poly/PlusOrConcatExpr.js\";\nimport { ExpressionTypeError } from \"../error/ExpressionTypeError.js\";\nimport { GreaterThan } from \"../expression/comparison/GreaterThan.js\";\nimport { GreaterThanOrEqual } from \"../expression/comparison/GreaterThanOrEqual.js\";\nimport { LessThan } from \"../expression/comparison/LessThan.js\";\nimport { LessThanOrEqual } from \"../expression/comparison/LessThanOrEqual.js\";\nimport { ExprManager } from \"./ExprManager.js\";\nimport { LogicalValue } from \"../value/LogicalValue\";\nimport { LogicalLiteralExpr } from \"../expression/boolean/LogicalLiteralExpr\";\n\nexport class ExprCompiler extends IfcExpressionVisitor<Expr<any>> {\n private readonly methodCallTargetStack = [];\n private readonly typeManager: TypeManager;\n private readonly exprManager: ExprManager;\n\n constructor(typeManager: TypeManager) {\n super();\n this.typeManager = typeManager;\n this.exprManager = new ExprManager();\n }\n\n public getExprManager(): ExprManager {\n return this.exprManager;\n }\n\n visitExpr: (ctx: ExprContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.singleExpr());\n };\n\n /*================================================\n * VariableRef\n *==============================================*/\n\n private associateContextAndReturn(expr: Expr<any>, ctx: ParserRuleContext) {\n this.exprManager.registerExprWithContext(expr, ctx);\n return expr;\n }\n\n visitVariableRef: (ctx: VariableRefContext) => Expr<any> = (ctx) => {\n if (ctx.IDENTIFIER().getText().toUpperCase() === \"PROPERTY\") {\n return this.associateContextAndReturn(new PropObjectReferenceExpr(), ctx);\n } else if (ctx.IDENTIFIER().getText().toUpperCase() === \"ELEMENT\") {\n return this.associateContextAndReturn(new ElemObjectReferenceExpr(), ctx);\n }\n throw new Error(`Parsing error: No variable '${ctx.getText()}' found `);\n };\n\n visitSEComparison: (ctx: SEComparisonContext) => Expr<any> = (ctx) => {\n const left = this.visit(ctx.singleExpr(0));\n const right = this.visit(ctx.singleExpr(1));\n switch (ctx.CMP_OP().getText()) {\n case \"==\":\n return this.associateContextAndReturn(new EqualsExpr(left, right), ctx);\n case \"!=\":\n return this.associateContextAndReturn(\n new NotEqualsExpr(left, right),\n ctx\n );\n case \">\":\n return this.associateContextAndReturn(\n new GreaterThan(left, right),\n ctx\n );\n case \">=\":\n return this.associateContextAndReturn(\n new GreaterThanOrEqual(left, right),\n ctx\n );\n case \"<\":\n return this.associateContextAndReturn(new LessThan(left, right), ctx);\n case \"<=\":\n return this.associateContextAndReturn(\n new LessThanOrEqual(left, right),\n ctx\n );\n }\n throw new Error(\n `Parsing error: comparison operator '${ctx\n .CMP_OP()\n .getText()}' not supported`\n );\n };\n\n visitSEMethodCall: (ctx: SEMethodCallContext) => Expr<any> = (ctx) => {\n this.methodCallTargetStack.push(this.visit(ctx.singleExpr()));\n return this.visit(ctx.methodCallChain());\n };\n\n visitSELiteral: (ctx: SELiteralContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.literal());\n };\n\n visitSEVariableRef: (ctx: SEVariableRefContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.variableRef());\n };\n visitSEArrayExpr: (ctx: SEArrayExprContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.arrayExpr());\n };\n visitSEFunctionCall: (ctx: SEFunctionCallContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.functionCall());\n };\n visitSEParenthesis: (ctx: SEParenthesisContext) => Expr<any> = (ctx) => {\n return this.associateContextAndReturn(\n new ParenthesisExpr(this.visit(ctx._sub)),\n ctx\n );\n };\n\n /*================================================\n * MethodCallChain\n *==============================================*/\n\n visitMethodCallChainInner: (ctx: MethodCallChainInnerContext) => Expr<any> = (\n ctx\n ) => {\n const functionExpr = new FunctionExpr(\n ctx.functionCall().IDENTIFIER().getText(),\n this.collectFunctionArguments(ctx.functionCall().exprList(), [\n this.methodCallTargetStack.pop(),\n ])\n );\n this.associateContextAndReturn(functionExpr, ctx.functionCall());\n this.methodCallTargetStack.push(functionExpr);\n return this.visit(ctx.methodCallChain());\n };\n\n visitMethodCallChainEnd: (ctx: MethodCallChainEndContext) => Expr<any> = (\n ctx\n ) => {\n return this.associateContextAndReturn(\n new FunctionExpr(\n ctx.functionCall().IDENTIFIER().getText(),\n this.collectFunctionArguments(ctx.functionCall().exprList(), [\n this.methodCallTargetStack.pop(),\n ])\n ),\n ctx.functionCall()\n );\n };\n\n visitSEAddSub: (ctx: SEAddSubContext) => Expr<any> = (ctx) => {\n this.typeManager.requireTypesOverlap(ctx._left, ctx._right);\n switch (ctx._op.text) {\n case \"+\":\n return this.makePlusExpr(ctx);\n case \"-\":\n return this.associateContextAndReturn(\n new MinusExpr(this.visit(ctx._left), this.visit(ctx._right)),\n ctx\n );\n default:\n ExprCompiler.failNode(ctx);\n }\n };\n\n private makePlusExpr(ctx: SEAddSubContext) {\n if (this.typeManager.isNumeric(ctx._left, ctx._right)) {\n return this.associateContextAndReturn(\n new PlusExpr(this.visit(ctx._left), this.visit(ctx._right)),\n ctx\n );\n }\n if (this.typeManager.isString(ctx._left, ctx._right)) {\n return this.associateContextAndReturn(\n new StringConcatExpr(this.visit(ctx._left), this.visit(ctx._right)),\n ctx\n );\n }\n if (\n this.typeManager.overlapsWithString(ctx._left, ctx._right) ||\n this.typeManager.overlapsWithNumeric(ctx._left, ctx._right)\n ) {\n return this.associateContextAndReturn(\n new PlusOrConcatExpr(this.visit(ctx._left), this.visit(ctx._right)),\n ctx\n );\n }\n throw new ExpressionTypeError(\n \"Operator '+' requires the operands to be either both of type numeric or both of type string, but they are not.\",\n ctx\n );\n }\n\n visitSEMulDiv: (ctx: SEMulDivContext) => Expr<any> = (ctx) => {\n switch (ctx._op.text) {\n case \"*\":\n return this.associateContextAndReturn(\n new MultiplyExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n ),\n ctx\n );\n case \"/\":\n return this.associateContextAndReturn(\n new DivideExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n ),\n ctx\n );\n default:\n ExprCompiler.failNode(ctx);\n }\n };\n\n /*================================================\n * StringExpr\n *===============================================*/\n\n visitStringLiteral: (ctx: StringLiteralContext) => Expr<any> = (ctx) => {\n const quotedString = ctx.QUOTED_STRING().getText();\n const text = quotedString.substring(1, quotedString.length - 1);\n return this.associateContextAndReturn(new StringLiteralExpr(text), ctx);\n };\n\n /*================================================\n * NumExpr\n *===============================================*/\n\n visitNumLiteral: (ctx: NumLiteralContext) => Expr<any> = (ctx) => {\n let val = ctx.INT();\n if (isPresent(val)) {\n return this.associateContextAndReturn(\n new NumericLiteralExpr(new Decimal(ctx.getText())),\n ctx\n );\n }\n val = ctx.FLOAT();\n if (isPresent(val)) {\n return this.associateContextAndReturn(\n new NumericLiteralExpr(new Decimal(ctx.getText())),\n ctx\n );\n }\n ExprCompiler.failNode(ctx);\n };\n\n visitSEUnaryMultipleMinus: (ctx: SEUnaryMultipleMinusContext) => Expr<any> = (\n ctx\n ) => {\n return this.visit(ctx.singleExpr());\n };\n visitSEPower: (ctx: SEPowerContext) => Expr<any> = (ctx) => {\n return this.associateContextAndReturn(\n new PowerExpr(this.visit(ctx._left), this.visit(ctx._right)),\n ctx\n );\n };\n visitSEUnaryMinus: (ctx: SEUnaryMinusContext) => Expr<any> = (ctx) => {\n return this.associateContextAndReturn(\n new UnaryMinusExpr(this.visit(ctx.singleExpr())),\n ctx\n );\n };\n\n /*================================================\n * BooleanExpr\n *===============================================*/\n\n visitSEBooleanBinaryOp: (ctx: SEBooleanBinaryOpContext) => Expr<any> = (\n ctx\n ) => {\n switch (ctx._op.text) {\n case \"&&\":\n return this.associateContextAndReturn(\n new AndExpr(\n this.visit(ctx.singleExpr(0)),\n this.visit(ctx.singleExpr(1))\n ),\n ctx\n );\n case \"||\":\n return this.associateContextAndReturn(\n new OrExpr(\n this.visit(ctx.singleExpr(0)),\n this.visit(ctx.singleExpr(1))\n ),\n ctx\n );\n case \"><\":\n return this.associateContextAndReturn(\n new XorExpr(\n this.visit(ctx.singleExpr(0)),\n this.visit(ctx.singleExpr(1))\n ),\n ctx\n );\n }\n throw new SyntaxErrorException(\n ctx._op.text,\n ctx._op.line,\n ctx._op.column,\n `Unknown boolean operator ${ctx._op.text}`\n );\n };\n\n visitBooleanLiteral: (ctx: BooleanLiteralContext) => Expr<any> = (ctx) => {\n return this.associateContextAndReturn(\n new BooleanLiteralExpr(ctx.BOOLEAN().getText().toUpperCase() === \"TRUE\"),\n ctx\n );\n };\n\n visitLogicalLiteral: (ctx: LogicalLiteralContext) => Expr<any> = (ctx) => {\n // the only literal we recognize is 'UNKNOWN' (true and false are boolean literals)\n return this.associateContextAndReturn(\n new LogicalLiteralExpr(LogicalValue.UNKNOWN_VALUE),\n ctx\n );\n };\n\n visitSENot: (ctx: SENotContext) => Expr<any> = (ctx) => {\n return this.associateContextAndReturn(\n new NotExpr(this.visit(ctx.singleExpr())),\n ctx\n );\n };\n\n /*================================================\n * ArrayExpr\n *===============================================*/\n\n visitArrayExpr: (ctx: ArrayExprContext) => Expr<any> = (ctx) => {\n return this.associateContextAndReturn(\n new ArrayExpr(this.collectArrayElements(ctx.arrayElementList())),\n ctx\n );\n };\n\n collectArrayElements: (ctx: ArrayElementListContext) => Array<Expr<any>> = (\n ctx\n ) => {\n if (!isNullish(ctx)) {\n const first = this.visit(ctx.singleExpr());\n const rest = ctx.arrayElementList();\n if (!isNullish(rest)) {\n const arr = this.collectArrayElements(rest);\n arr.unshift(first);\n return arr;\n }\n return [first];\n }\n return [];\n };\n\n /*================================================\n * FuncExpr\n *===============================================*/\n\n visitFunctionCall: (ctx: FunctionCallContext) => Expr<any> = (ctx) => {\n const args = isNullish(ctx.exprList())\n ? []\n : this.collectFunctionArguments(ctx.exprList());\n return this.associateContextAndReturn(\n new FunctionExpr(ctx.IDENTIFIER().getText(), args),\n ctx\n );\n };\n\n collectFunctionArguments: (\n ctx: ExprListContext,\n resultSoFar?: Array<Expr<any>>\n ) => Array<Expr<any>> = (ctx, resultSoFar?: Array<Expr<any>>) => {\n if (isNullish(resultSoFar)) {\n resultSoFar = [];\n }\n if (!isNullish(ctx)) {\n resultSoFar.push(this.visit(ctx.singleExpr()));\n const rest = ctx.exprList();\n if (!isNullish(rest)) {\n return this.collectFunctionArguments(rest, resultSoFar);\n }\n }\n return resultSoFar;\n };\n\n private static failNode(ctx: ParserRuleContext) {\n throw new Error(`Cannot parse (sub)expression ${ctx.getText()}`);\n }\n\n visitLiteral: (ctx: LiteralContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.getChild(0));\n };\n}\n"]}
1
+ {"version":3,"sources":["compiler/ExprCompiler.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AA+BjF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oDAAoD,CAAC;AAC7F,OAAO,EAAE,uBAAuB,EAAE,MAAM,oDAAoD,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAE1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AAEjF,MAAM,OAAO,YAAa,SAAQ,oBAA+B;IAK/D,YAAY,WAAwB;QAClC,KAAK,EAAE,CAAC;QALO,0BAAqB,GAAG,EAAE,CAAC;QAc5C,cAAS,GAAoC,CAAC,GAAG,EAAE,EAAE;YACnD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QACtC,CAAC,CAAC;QAWF,qBAAgB,GAA2C,CAAC,GAAG,EAAE,EAAE;YACjE,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,KAAK,UAAU,EAAE;gBAC3D,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,uBAAuB,EAAE,EAAE,GAAG,CAAC,CAAC;aAC3E;iBAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,KAAK,SAAS,EAAE;gBACjE,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,uBAAuB,EAAE,EAAE,GAAG,CAAC,CAAC;aAC3E;YACD,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC3E,CAAC,CAAC;QAEF,sBAAiB,GAA4C,CAAC,GAAG,EAAE,EAAE;YACnE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE;gBAC9B,KAAK,IAAI;oBACP,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC1E,KAAK,IAAI;oBACP,OAAO,IAAI,CAAC,yBAAyB,CACnC,IAAI,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,EAC9B,GAAG,CACJ,CAAC;gBACJ,KAAK,GAAG;oBACN,OAAO,IAAI,CAAC,yBAAyB,CACnC,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,EAC5B,GAAG,CACJ,CAAC;gBACJ,KAAK,IAAI;oBACP,OAAO,IAAI,CAAC,yBAAyB,CACnC,IAAI,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,EACnC,GAAG,CACJ,CAAC;gBACJ,KAAK,GAAG;oBACN,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;gBACxE,KAAK,IAAI;oBACP,OAAO,IAAI,CAAC,yBAAyB,CACnC,IAAI,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,EAChC,GAAG,CACJ,CAAC;aACL;YACD,MAAM,IAAI,KAAK,CACb,uCAAuC,GAAG;iBACvC,MAAM,EAAE;iBACR,OAAO,EAAE,iBAAiB,CAC9B,CAAC;QACJ,CAAC,CAAC;QAEF,sBAAiB,GAA4C,CAAC,GAAG,EAAE,EAAE;YACnE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC;QAC3C,CAAC,CAAC;QAEF,mBAAc,GAAyC,CAAC,GAAG,EAAE,EAAE;YAC7D,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACnC,CAAC,CAAC;QAEF,uBAAkB,GAA6C,CAAC,GAAG,EAAE,EAAE;YACrE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACvC,CAAC,CAAC;QACF,qBAAgB,GAA2C,CAAC,GAAG,EAAE,EAAE;YACjE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;QACrC,CAAC,CAAC;QACF,wBAAmB,GAA8C,CAAC,GAAG,EAAE,EAAE;YACvE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC;QACF,uBAAkB,GAA6C,CAAC,GAAG,EAAE,EAAE;YACrE,OAAO,IAAI,CAAC,yBAAyB,CACnC,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EACzC,GAAG,CACJ,CAAC;QACJ,CAAC,CAAC;QAEF;;0DAEkD;QAElD,8BAAyB,GAAoD,CAC3E,GAAG,EACH,EAAE;YACF,MAAM,YAAY,GAAG,IAAI,YAAY,CACnC,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,EACzC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,EAAE;gBAC3D,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE;aACjC,CAAC,CACH,CAAC;YACF,IAAI,CAAC,yBAAyB,CAAC,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC;QAC3C,CAAC,CAAC;QAEF,4BAAuB,GAAkD,CACvE,GAAG,EACH,EAAE;YACF,OAAO,IAAI,CAAC,yBAAyB,CACnC,IAAI,YAAY,CACd,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,EACzC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,EAAE;gBAC3D,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE;aACjC,CAAC,CACH,EACD,GAAG,CAAC,YAAY,EAAE,CACnB,CAAC;QACJ,CAAC,CAAC;QAEF,kBAAa,GAAwC,CAAC,GAAG,EAAE,EAAE;YAC3D,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YAC5D,QAAQ,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE;gBACpB,KAAK,GAAG;oBACN,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBAChC,KAAK,GAAG;oBACN,OAAO,IAAI,CAAC,yBAAyB,CACnC,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAC5D,GAAG,CACJ,CAAC;gBACJ;oBACE,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;aAC9B;QACH,CAAC,CAAC;QA8BF,kBAAa,GAAwC,CAAC,GAAG,EAAE,EAAE;YAC3D,QAAQ,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE;gBACpB,KAAK,GAAG;oBACN,OAAO,IAAI,CAAC,yBAAyB,CACnC,IAAI,YAAY,CACd,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAC5B,EACD,GAAG,CACJ,CAAC;gBACJ,KAAK,GAAG;oBACN,OAAO,IAAI,CAAC,yBAAyB,CACnC,IAAI,UAAU,CACZ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAC5B,EACD,GAAG,CACJ,CAAC;gBACJ;oBACE,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;aAC9B;QACH,CAAC,CAAC;QAEF;;2DAEmD;QAEnD,uBAAkB,GAA6C,CAAC,GAAG,EAAE,EAAE;YACrE,MAAM,YAAY,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,CAAC;YACnD,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAChE,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QAC1E,CAAC,CAAC;QAEF;;2DAEmD;QAEnD,oBAAe,GAA0C,CAAC,GAAG,EAAE,EAAE;YAC/D,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;YACpB,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;gBAClB,OAAO,IAAI,CAAC,yBAAyB,CACnC,IAAI,kBAAkB,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,EAClD,GAAG,CACJ,CAAC;aACH;YACD,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;gBAClB,OAAO,IAAI,CAAC,yBAAyB,CACnC,IAAI,kBAAkB,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,EAClD,GAAG,CACJ,CAAC;aACH;YACD,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC;QAEF,8BAAyB,GAAoD,CAC3E,GAAG,EACH,EAAE;YACF,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QACtC,CAAC,CAAC;QACF,iBAAY,GAAuC,CAAC,GAAG,EAAE,EAAE;YACzD,OAAO,IAAI,CAAC,yBAAyB,CACnC,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAC5D,GAAG,CACJ,CAAC;QACJ,CAAC,CAAC;QACF,sBAAiB,GAA4C,CAAC,GAAG,EAAE,EAAE;YACnE,OAAO,IAAI,CAAC,yBAAyB,CACnC,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,EAChD,GAAG,CACJ,CAAC;QACJ,CAAC,CAAC;QAEF;;2DAEmD;QAEnD,2BAAsB,GAAiD,CACrE,GAAG,EACH,EAAE;YACF,QAAQ,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE;gBACpB,KAAK,IAAI;oBACP,OAAO,IAAI,CAAC,yBAAyB,CACnC,IAAI,OAAO,CACT,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAC9B,EACD,GAAG,CACJ,CAAC;gBACJ,KAAK,IAAI;oBACP,OAAO,IAAI,CAAC,yBAAyB,CACnC,IAAI,MAAM,CACR,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAC9B,EACD,GAAG,CACJ,CAAC;gBACJ,KAAK,IAAI;oBACP,OAAO,IAAI,CAAC,yBAAyB,CACnC,IAAI,OAAO,CACT,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAC9B,EACD,GAAG,CACJ,CAAC;aACL;YACD,MAAM,IAAI,oBAAoB,CAC5B,GAAG,CAAC,GAAG,CAAC,IAAI,EACZ,GAAG,CAAC,GAAG,CAAC,IAAI,EACZ,GAAG,CAAC,GAAG,CAAC,MAAM,EACd,4BAA4B,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAC3C,CAAC;QACJ,CAAC,CAAC;QAEF,wBAAmB,GAA8C,CAAC,GAAG,EAAE,EAAE;YACvE,OAAO,IAAI,CAAC,yBAAyB,CACnC,IAAI,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,EACxE,GAAG,CACJ,CAAC;QACJ,CAAC,CAAC;QAEF,wBAAmB,GAA8C,CAAC,GAAG,EAAE,EAAE;YACvE,mFAAmF;YACnF,OAAO,IAAI,CAAC,yBAAyB,CACnC,IAAI,kBAAkB,CAAC,YAAY,CAAC,aAAa,CAAC,EAClD,GAAG,CACJ,CAAC;QACJ,CAAC,CAAC;QAEF,eAAU,GAAqC,CAAC,GAAG,EAAE,EAAE;YACrD,OAAO,IAAI,CAAC,yBAAyB,CACnC,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,EACzC,GAAG,CACJ,CAAC;QACJ,CAAC,CAAC;QAEF;;2DAEmD;QAEnD,mBAAc,GAAyC,CAAC,GAAG,EAAE,EAAE;YAC7D,OAAO,IAAI,CAAC,yBAAyB,CACnC,IAAI,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAChE,GAAG,CACJ,CAAC;QACJ,CAAC,CAAC;QAEF,yBAAoB,GAAuD,CACzE,GAAG,EACH,EAAE;YACF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBACnB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC3C,MAAM,IAAI,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAC;gBACpC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;oBACpB,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;oBAC5C,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBACnB,OAAO,GAAG,CAAC;iBACZ;gBACD,OAAO,CAAC,KAAK,CAAC,CAAC;aAChB;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QAEF;;2DAEmD;QAEnD,sBAAiB,GAA4C,CAAC,GAAG,EAAE,EAAE;YACnE,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACpC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC,yBAAyB,CACnC,IAAI,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,EAClD,GAAG,CACJ,CAAC;QACJ,CAAC,CAAC;QAEF,6BAAwB,GAGA,CAAC,GAAG,EAAE,WAA8B,EAAE,EAAE;YAC9D,IAAI,SAAS,CAAC,WAAW,CAAC,EAAE;gBAC1B,WAAW,GAAG,EAAE,CAAC;aAClB;YACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBACnB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;gBAC/C,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;oBACpB,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;iBACzD;aACF;YACD,OAAO,WAAW,CAAC;QACrB,CAAC,CAAC;QAMF,iBAAY,GAAuC,CAAC,GAAG,EAAE,EAAE;YACzD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC;QA9WA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IACvC,CAAC;IAEM,cAAc;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAMD;;sDAEkD;IAE1C,yBAAyB,CAAC,IAAe,EAAE,GAAsB;QACvE,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAuHO,YAAY,CAAC,GAAoB;QACvC,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE;YACrD,OAAO,IAAI,CAAC,yBAAyB,CACnC,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAC3D,GAAG,CACJ,CAAC;SACH;QACD,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE;YACpD,OAAO,IAAI,CAAC,yBAAyB,CACnC,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EACnE,GAAG,CACJ,CAAC;SACH;QACD,IACE,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC;YAC1D,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAC3D;YACA,OAAO,IAAI,CAAC,yBAAyB,CACnC,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EACnE,GAAG,CACJ,CAAC;SACH;QACD,MAAM,IAAI,mBAAmB,CAC3B,gHAAgH,EAChH,GAAG,CACJ,CAAC;IACJ,CAAC;IAoMO,MAAM,CAAC,QAAQ,CAAC,GAAsB;QAC5C,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC;CAKF","file":"compiler/ExprCompiler.js","sourcesContent":["import IfcExpressionVisitor from \"../gen/parser/IfcExpressionVisitor.js\";\nimport { NumericLiteralExpr } from \"../expression/numeric/NumericLiteralExpr.js\";\nimport {\n ArrayElementListContext,\n ArrayExprContext,\n BooleanLiteralContext,\n ExprContext,\n ExprListContext,\n FunctionCallContext,\n LiteralContext,\n LogicalLiteralContext,\n MethodCallChainEndContext,\n MethodCallChainInnerContext,\n NumLiteralContext,\n SEAddSubContext,\n SEArrayExprContext,\n SEBooleanBinaryOpContext,\n SEComparisonContext,\n SEFunctionCallContext,\n SELiteralContext,\n SEMethodCallContext,\n SEMulDivContext,\n SENotContext,\n SEParenthesisContext,\n SEPowerContext,\n SEUnaryMinusContext,\n SEUnaryMultipleMinusContext,\n SEVariableRefContext,\n StringLiteralContext,\n VariableRefContext,\n} from \"../gen/parser/IfcExpressionParser.js\";\nimport { Expr } from \"../expression/Expr.js\";\nimport { isNullish, isPresent } from \"../util/IfcExpressionUtils.js\";\nimport Decimal from \"decimal.js\";\nimport { PlusExpr } from \"../expression/numeric/PlusExpr.js\";\nimport { MinusExpr } from \"../expression/numeric/MinusExpr.js\";\nimport { ParserRuleContext } from \"antlr4\";\nimport { MultiplyExpr } from \"../expression/numeric/MultiplyExpr.js\";\nimport { DivideExpr } from \"../expression/numeric/DivideExpr.js\";\nimport { PropObjectReferenceExpr } from \"../expression/reference/PropObjectReferenceExpr.js\";\nimport { ElemObjectReferenceExpr } from \"../expression/reference/ElemObjectReferenceExpr.js\";\nimport { StringLiteralExpr } from \"../expression/string/StringLiteralExpr.js\";\nimport { ArrayExpr } from \"../expression/structure/ArrayExpr.js\";\nimport { FunctionExpr } from \"../expression/function/FunctionExpr.js\";\nimport { PowerExpr } from \"../expression/numeric/PowerExpr.js\";\nimport { UnaryMinusExpr } from \"../expression/numeric/UnaryMinusExpr.js\";\nimport { AndExpr } from \"../expression/boolean/AndExpr.js\";\nimport { BooleanLiteralExpr } from \"../expression/boolean/BooleanLiteralExpr.js\";\nimport { OrExpr } from \"../expression/boolean/OrExpr.js\";\nimport { XorExpr } from \"../expression/boolean/XorExpr.js\";\nimport { SyntaxErrorException } from \"../error/SyntaxErrorException.js\";\nimport { NotExpr } from \"../expression/boolean/NotExpr.js\";\nimport { ParenthesisExpr } from \"../expression/structure/ParenthesisExpr.js\";\nimport { EqualsExpr } from \"../expression/comparison/EqualsExpr.js\";\nimport { NotEqualsExpr } from \"../expression/comparison/NotEqualsExpr.js\";\nimport { TypeManager } from \"./TypeManager.js\";\nimport { StringConcatExpr } from \"../expression/string/StringConcatExpr.js\";\nimport { PlusOrConcatExpr } from \"../expression/poly/PlusOrConcatExpr.js\";\nimport { ExpressionTypeError } from \"../error/ExpressionTypeError.js\";\nimport { GreaterThan } from \"../expression/comparison/GreaterThan.js\";\nimport { GreaterThanOrEqual } from \"../expression/comparison/GreaterThanOrEqual.js\";\nimport { LessThan } from \"../expression/comparison/LessThan.js\";\nimport { LessThanOrEqual } from \"../expression/comparison/LessThanOrEqual.js\";\nimport { ExprManager } from \"./ExprManager.js\";\nimport { LogicalValue } from \"../value/LogicalValue.js\";\nimport { LogicalLiteralExpr } from \"../expression/boolean/LogicalLiteralExpr.js\";\n\nexport class ExprCompiler extends IfcExpressionVisitor<Expr<any>> {\n private readonly methodCallTargetStack = [];\n private readonly typeManager: TypeManager;\n private readonly exprManager: ExprManager;\n\n constructor(typeManager: TypeManager) {\n super();\n this.typeManager = typeManager;\n this.exprManager = new ExprManager();\n }\n\n public getExprManager(): ExprManager {\n return this.exprManager;\n }\n\n visitExpr: (ctx: ExprContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.singleExpr());\n };\n\n /*================================================\n * VariableRef\n *==============================================*/\n\n private associateContextAndReturn(expr: Expr<any>, ctx: ParserRuleContext) {\n this.exprManager.registerExprWithContext(expr, ctx);\n return expr;\n }\n\n visitVariableRef: (ctx: VariableRefContext) => Expr<any> = (ctx) => {\n if (ctx.IDENTIFIER().getText().toUpperCase() === \"PROPERTY\") {\n return this.associateContextAndReturn(new PropObjectReferenceExpr(), ctx);\n } else if (ctx.IDENTIFIER().getText().toUpperCase() === \"ELEMENT\") {\n return this.associateContextAndReturn(new ElemObjectReferenceExpr(), ctx);\n }\n throw new Error(`Parsing error: No variable '${ctx.getText()}' found `);\n };\n\n visitSEComparison: (ctx: SEComparisonContext) => Expr<any> = (ctx) => {\n const left = this.visit(ctx.singleExpr(0));\n const right = this.visit(ctx.singleExpr(1));\n switch (ctx.CMP_OP().getText()) {\n case \"==\":\n return this.associateContextAndReturn(new EqualsExpr(left, right), ctx);\n case \"!=\":\n return this.associateContextAndReturn(\n new NotEqualsExpr(left, right),\n ctx\n );\n case \">\":\n return this.associateContextAndReturn(\n new GreaterThan(left, right),\n ctx\n );\n case \">=\":\n return this.associateContextAndReturn(\n new GreaterThanOrEqual(left, right),\n ctx\n );\n case \"<\":\n return this.associateContextAndReturn(new LessThan(left, right), ctx);\n case \"<=\":\n return this.associateContextAndReturn(\n new LessThanOrEqual(left, right),\n ctx\n );\n }\n throw new Error(\n `Parsing error: comparison operator '${ctx\n .CMP_OP()\n .getText()}' not supported`\n );\n };\n\n visitSEMethodCall: (ctx: SEMethodCallContext) => Expr<any> = (ctx) => {\n this.methodCallTargetStack.push(this.visit(ctx.singleExpr()));\n return this.visit(ctx.methodCallChain());\n };\n\n visitSELiteral: (ctx: SELiteralContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.literal());\n };\n\n visitSEVariableRef: (ctx: SEVariableRefContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.variableRef());\n };\n visitSEArrayExpr: (ctx: SEArrayExprContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.arrayExpr());\n };\n visitSEFunctionCall: (ctx: SEFunctionCallContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.functionCall());\n };\n visitSEParenthesis: (ctx: SEParenthesisContext) => Expr<any> = (ctx) => {\n return this.associateContextAndReturn(\n new ParenthesisExpr(this.visit(ctx._sub)),\n ctx\n );\n };\n\n /*================================================\n * MethodCallChain\n *==============================================*/\n\n visitMethodCallChainInner: (ctx: MethodCallChainInnerContext) => Expr<any> = (\n ctx\n ) => {\n const functionExpr = new FunctionExpr(\n ctx.functionCall().IDENTIFIER().getText(),\n this.collectFunctionArguments(ctx.functionCall().exprList(), [\n this.methodCallTargetStack.pop(),\n ])\n );\n this.associateContextAndReturn(functionExpr, ctx.functionCall());\n this.methodCallTargetStack.push(functionExpr);\n return this.visit(ctx.methodCallChain());\n };\n\n visitMethodCallChainEnd: (ctx: MethodCallChainEndContext) => Expr<any> = (\n ctx\n ) => {\n return this.associateContextAndReturn(\n new FunctionExpr(\n ctx.functionCall().IDENTIFIER().getText(),\n this.collectFunctionArguments(ctx.functionCall().exprList(), [\n this.methodCallTargetStack.pop(),\n ])\n ),\n ctx.functionCall()\n );\n };\n\n visitSEAddSub: (ctx: SEAddSubContext) => Expr<any> = (ctx) => {\n this.typeManager.requireTypesOverlap(ctx._left, ctx._right);\n switch (ctx._op.text) {\n case \"+\":\n return this.makePlusExpr(ctx);\n case \"-\":\n return this.associateContextAndReturn(\n new MinusExpr(this.visit(ctx._left), this.visit(ctx._right)),\n ctx\n );\n default:\n ExprCompiler.failNode(ctx);\n }\n };\n\n private makePlusExpr(ctx: SEAddSubContext) {\n if (this.typeManager.isNumeric(ctx._left, ctx._right)) {\n return this.associateContextAndReturn(\n new PlusExpr(this.visit(ctx._left), this.visit(ctx._right)),\n ctx\n );\n }\n if (this.typeManager.isString(ctx._left, ctx._right)) {\n return this.associateContextAndReturn(\n new StringConcatExpr(this.visit(ctx._left), this.visit(ctx._right)),\n ctx\n );\n }\n if (\n this.typeManager.overlapsWithString(ctx._left, ctx._right) ||\n this.typeManager.overlapsWithNumeric(ctx._left, ctx._right)\n ) {\n return this.associateContextAndReturn(\n new PlusOrConcatExpr(this.visit(ctx._left), this.visit(ctx._right)),\n ctx\n );\n }\n throw new ExpressionTypeError(\n \"Operator '+' requires the operands to be either both of type numeric or both of type string, but they are not.\",\n ctx\n );\n }\n\n visitSEMulDiv: (ctx: SEMulDivContext) => Expr<any> = (ctx) => {\n switch (ctx._op.text) {\n case \"*\":\n return this.associateContextAndReturn(\n new MultiplyExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n ),\n ctx\n );\n case \"/\":\n return this.associateContextAndReturn(\n new DivideExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n ),\n ctx\n );\n default:\n ExprCompiler.failNode(ctx);\n }\n };\n\n /*================================================\n * StringExpr\n *===============================================*/\n\n visitStringLiteral: (ctx: StringLiteralContext) => Expr<any> = (ctx) => {\n const quotedString = ctx.QUOTED_STRING().getText();\n const text = quotedString.substring(1, quotedString.length - 1);\n return this.associateContextAndReturn(new StringLiteralExpr(text), ctx);\n };\n\n /*================================================\n * NumExpr\n *===============================================*/\n\n visitNumLiteral: (ctx: NumLiteralContext) => Expr<any> = (ctx) => {\n let val = ctx.INT();\n if (isPresent(val)) {\n return this.associateContextAndReturn(\n new NumericLiteralExpr(new Decimal(ctx.getText())),\n ctx\n );\n }\n val = ctx.FLOAT();\n if (isPresent(val)) {\n return this.associateContextAndReturn(\n new NumericLiteralExpr(new Decimal(ctx.getText())),\n ctx\n );\n }\n ExprCompiler.failNode(ctx);\n };\n\n visitSEUnaryMultipleMinus: (ctx: SEUnaryMultipleMinusContext) => Expr<any> = (\n ctx\n ) => {\n return this.visit(ctx.singleExpr());\n };\n visitSEPower: (ctx: SEPowerContext) => Expr<any> = (ctx) => {\n return this.associateContextAndReturn(\n new PowerExpr(this.visit(ctx._left), this.visit(ctx._right)),\n ctx\n );\n };\n visitSEUnaryMinus: (ctx: SEUnaryMinusContext) => Expr<any> = (ctx) => {\n return this.associateContextAndReturn(\n new UnaryMinusExpr(this.visit(ctx.singleExpr())),\n ctx\n );\n };\n\n /*================================================\n * BooleanExpr\n *===============================================*/\n\n visitSEBooleanBinaryOp: (ctx: SEBooleanBinaryOpContext) => Expr<any> = (\n ctx\n ) => {\n switch (ctx._op.text) {\n case \"&&\":\n return this.associateContextAndReturn(\n new AndExpr(\n this.visit(ctx.singleExpr(0)),\n this.visit(ctx.singleExpr(1))\n ),\n ctx\n );\n case \"||\":\n return this.associateContextAndReturn(\n new OrExpr(\n this.visit(ctx.singleExpr(0)),\n this.visit(ctx.singleExpr(1))\n ),\n ctx\n );\n case \"><\":\n return this.associateContextAndReturn(\n new XorExpr(\n this.visit(ctx.singleExpr(0)),\n this.visit(ctx.singleExpr(1))\n ),\n ctx\n );\n }\n throw new SyntaxErrorException(\n ctx._op.text,\n ctx._op.line,\n ctx._op.column,\n `Unknown boolean operator ${ctx._op.text}`\n );\n };\n\n visitBooleanLiteral: (ctx: BooleanLiteralContext) => Expr<any> = (ctx) => {\n return this.associateContextAndReturn(\n new BooleanLiteralExpr(ctx.BOOLEAN().getText().toUpperCase() === \"TRUE\"),\n ctx\n );\n };\n\n visitLogicalLiteral: (ctx: LogicalLiteralContext) => Expr<any> = (ctx) => {\n // the only literal we recognize is 'UNKNOWN' (true and false are boolean literals)\n return this.associateContextAndReturn(\n new LogicalLiteralExpr(LogicalValue.UNKNOWN_VALUE),\n ctx\n );\n };\n\n visitSENot: (ctx: SENotContext) => Expr<any> = (ctx) => {\n return this.associateContextAndReturn(\n new NotExpr(this.visit(ctx.singleExpr())),\n ctx\n );\n };\n\n /*================================================\n * ArrayExpr\n *===============================================*/\n\n visitArrayExpr: (ctx: ArrayExprContext) => Expr<any> = (ctx) => {\n return this.associateContextAndReturn(\n new ArrayExpr(this.collectArrayElements(ctx.arrayElementList())),\n ctx\n );\n };\n\n collectArrayElements: (ctx: ArrayElementListContext) => Array<Expr<any>> = (\n ctx\n ) => {\n if (!isNullish(ctx)) {\n const first = this.visit(ctx.singleExpr());\n const rest = ctx.arrayElementList();\n if (!isNullish(rest)) {\n const arr = this.collectArrayElements(rest);\n arr.unshift(first);\n return arr;\n }\n return [first];\n }\n return [];\n };\n\n /*================================================\n * FuncExpr\n *===============================================*/\n\n visitFunctionCall: (ctx: FunctionCallContext) => Expr<any> = (ctx) => {\n const args = isNullish(ctx.exprList())\n ? []\n : this.collectFunctionArguments(ctx.exprList());\n return this.associateContextAndReturn(\n new FunctionExpr(ctx.IDENTIFIER().getText(), args),\n ctx\n );\n };\n\n collectFunctionArguments: (\n ctx: ExprListContext,\n resultSoFar?: Array<Expr<any>>\n ) => Array<Expr<any>> = (ctx, resultSoFar?: Array<Expr<any>>) => {\n if (isNullish(resultSoFar)) {\n resultSoFar = [];\n }\n if (!isNullish(ctx)) {\n resultSoFar.push(this.visit(ctx.singleExpr()));\n const rest = ctx.exprList();\n if (!isNullish(rest)) {\n return this.collectFunctionArguments(rest, resultSoFar);\n }\n }\n return resultSoFar;\n };\n\n private static failNode(ctx: ParserRuleContext) {\n throw new Error(`Cannot parse (sub)expression ${ctx.getText()}`);\n }\n\n visitLiteral: (ctx: LiteralContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.getChild(0));\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["error/ExceptionToExprEvalErrorMapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,gBAAgB,EAChB,cAAc,GACf,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,sCAAsC,EAAE,MAAM,oDAAoD,CAAC;AAC5G,OAAO,EAAE,6BAA6B,EAAE,MAAM,2CAA2C,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,kCAAkC,EAAE,MAAM,yCAAyC,CAAC;AAC7F,OAAO,EAAE,wCAAwC,EAAE,MAAM,sDAAsD,CAAC;AAChH,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,uCAAuC,EAAE,MAAM,qDAAqD,CAAC;AAC9G,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAM3F,MAAM,OAAO,GAAG,IAAI,GAAG,EAAiD,CAAC;AACzE,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,iBAAiB,EAAE,CAAC,CAAC;AAChE,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,yBAAyB,EAAE,CAAC,CAAC;AACvE,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7E,OAAO,CAAC,GAAG,CACT,gCAAgC,CAAC,IAAI,EACrC,IAAI,sCAAsC,EAAE,CAC7C,CAAC;AACF,OAAO,CAAC,GAAG,CACT,iCAAiC,CAAC,IAAI,EACtC,IAAI,uCAAuC,EAAE,CAC9C,CAAC;AACF,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,6BAA6B,EAAE,CAAC,CAAC;AAC/E,OAAO,CAAC,GAAG,CACT,qBAAqB,CAAC,IAAI,EAC1B,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAC1C,CAAC;AACF,OAAO,CAAC,GAAG,CACT,kCAAkC,CAAC,IAAI,EACvC,IAAI,wCAAwC,EAAE,CAC/C,CAAC;AACF,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;AAEhF,MAAM,UAAU,YAAY,CAAC,CAAQ;IACnC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE;QACrB,OAAO,IAAI,gBAAgB,CACzB,QAAQ,CAAC,WAAW,EACpB,cAAc,CAAC,KAAK,EACpB,CAAC,CAAC,OAAO,EACT,IAAI,CAAC,WAAW,EAAE,CACnB,CAAC;KACH;IACD,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC","file":"error/ExceptionToExprEvalErrorMapper.js","sourcesContent":["import {\n ExprEvalError,\n ExprEvalErrorObj,\n ExprEvalStatus,\n} from \"../expression/ExprEvalResult.js\";\nimport { SyntaxErrorException } from \"./SyntaxErrorException.js\";\nimport { SyntaxErrorMapper } from \"./mapper/SyntaxErrorMapper.js\";\nimport { isNullish } from \"../util/IfcExpressionUtils.js\";\nimport { ExprKind } from \"../expression/ExprKind.js\";\nimport { MissingFunctionArgumentExceptionMapper } from \"./mapper/MissingFunctionArgumentExceptionMapper.js\";\nimport { NoSuchFunctionExceptionMapper } from \"./mapper/NoSuchFunctionExceptionMapper.js\";\nimport { ExpressionTypeError } from \"./ExpressionTypeError.js\";\nimport { MissingFunctionArgumentException } from \"./MissingFunctionArgumentException.js\";\nimport { NoSuchFunctionException } from \"./NoSuchFunctionException.js\";\nimport { NoSuchMethodException } from \"./NoSuchMethodException.js\";\nimport { WrongFunctionArgumentTypeException } from \"./WrongFunctionArgumentTypeException.js\";\nimport { WrongFunctionArgumentTypeExceptionMapper } from \"./mapper/WrongFunctionArgumentTypeExceptionMapper.js\";\nimport { InvalidSyntaxException } from \"./InvalidSyntaxException.js\";\nimport { ValidationExceptionMapper } from \"./mapper/ValidationExceptionMapper.js\";\nimport { ValidationException } from \"./ValidationException.js\";\nimport { SpuriousFunctionArgumentExceptionMapper } from \"./mapper/SpuriousFunctionArgumentExceptionMapper\";\nimport { SpuriousFunctionArgumentException } from \"./SpuriousFunctionArgumentException\";\n\nexport interface ExceptionToExprEvalErrorMapper<T extends Error> {\n mapException(exception: T): ExprEvalError;\n}\n\nconst mappers = new Map<string, ExceptionToExprEvalErrorMapper<Error>>();\nmappers.set(SyntaxErrorException.name, new SyntaxErrorMapper());\nmappers.set(ValidationException.name, new ValidationExceptionMapper());\nmappers.set(ExpressionTypeError.name, mappers.get(ValidationException.name));\nmappers.set(\n MissingFunctionArgumentException.name,\n new MissingFunctionArgumentExceptionMapper()\n);\nmappers.set(\n SpuriousFunctionArgumentException.name,\n new SpuriousFunctionArgumentExceptionMapper()\n);\nmappers.set(NoSuchFunctionException.name, new NoSuchFunctionExceptionMapper());\nmappers.set(\n NoSuchMethodException.name,\n mappers.get(NoSuchFunctionException.name)\n);\nmappers.set(\n WrongFunctionArgumentTypeException.name,\n new WrongFunctionArgumentTypeExceptionMapper()\n);\nmappers.set(InvalidSyntaxException.name, mappers.get(ValidationException.name));\n\nexport function mapException(e: Error): ExprEvalError {\n const mapper = mappers.get(e.constructor.name);\n if (isNullish(mapper)) {\n return new ExprEvalErrorObj(\n ExprKind.PARSE_ERROR,\n ExprEvalStatus.ERROR,\n e.message,\n this.getTextSpan()\n );\n }\n return mapper.mapException(e);\n}\n"]}
1
+ {"version":3,"sources":["error/ExceptionToExprEvalErrorMapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,gBAAgB,EAChB,cAAc,GACf,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,sCAAsC,EAAE,MAAM,oDAAoD,CAAC;AAC5G,OAAO,EAAE,6BAA6B,EAAE,MAAM,2CAA2C,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,kCAAkC,EAAE,MAAM,yCAAyC,CAAC;AAC7F,OAAO,EAAE,wCAAwC,EAAE,MAAM,sDAAsD,CAAC;AAChH,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,uCAAuC,EAAE,MAAM,qDAAqD,CAAC;AAC9G,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAM3F,MAAM,OAAO,GAAG,IAAI,GAAG,EAAiD,CAAC;AACzE,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,iBAAiB,EAAE,CAAC,CAAC;AAChE,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,yBAAyB,EAAE,CAAC,CAAC;AACvE,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7E,OAAO,CAAC,GAAG,CACT,gCAAgC,CAAC,IAAI,EACrC,IAAI,sCAAsC,EAAE,CAC7C,CAAC;AACF,OAAO,CAAC,GAAG,CACT,iCAAiC,CAAC,IAAI,EACtC,IAAI,uCAAuC,EAAE,CAC9C,CAAC;AACF,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,6BAA6B,EAAE,CAAC,CAAC;AAC/E,OAAO,CAAC,GAAG,CACT,qBAAqB,CAAC,IAAI,EAC1B,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAC1C,CAAC;AACF,OAAO,CAAC,GAAG,CACT,kCAAkC,CAAC,IAAI,EACvC,IAAI,wCAAwC,EAAE,CAC/C,CAAC;AACF,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;AAEhF,MAAM,UAAU,YAAY,CAAC,CAAQ;IACnC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE;QACrB,OAAO,IAAI,gBAAgB,CACzB,QAAQ,CAAC,WAAW,EACpB,cAAc,CAAC,KAAK,EACpB,CAAC,CAAC,OAAO,EACT,IAAI,CAAC,WAAW,EAAE,CACnB,CAAC;KACH;IACD,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC","file":"error/ExceptionToExprEvalErrorMapper.js","sourcesContent":["import {\n ExprEvalError,\n ExprEvalErrorObj,\n ExprEvalStatus,\n} from \"../expression/ExprEvalResult.js\";\nimport { SyntaxErrorException } from \"./SyntaxErrorException.js\";\nimport { SyntaxErrorMapper } from \"./mapper/SyntaxErrorMapper.js\";\nimport { isNullish } from \"../util/IfcExpressionUtils.js\";\nimport { ExprKind } from \"../expression/ExprKind.js\";\nimport { MissingFunctionArgumentExceptionMapper } from \"./mapper/MissingFunctionArgumentExceptionMapper.js\";\nimport { NoSuchFunctionExceptionMapper } from \"./mapper/NoSuchFunctionExceptionMapper.js\";\nimport { ExpressionTypeError } from \"./ExpressionTypeError.js\";\nimport { MissingFunctionArgumentException } from \"./MissingFunctionArgumentException.js\";\nimport { NoSuchFunctionException } from \"./NoSuchFunctionException.js\";\nimport { NoSuchMethodException } from \"./NoSuchMethodException.js\";\nimport { WrongFunctionArgumentTypeException } from \"./WrongFunctionArgumentTypeException.js\";\nimport { WrongFunctionArgumentTypeExceptionMapper } from \"./mapper/WrongFunctionArgumentTypeExceptionMapper.js\";\nimport { InvalidSyntaxException } from \"./InvalidSyntaxException.js\";\nimport { ValidationExceptionMapper } from \"./mapper/ValidationExceptionMapper.js\";\nimport { ValidationException } from \"./ValidationException.js\";\nimport { SpuriousFunctionArgumentExceptionMapper } from \"./mapper/SpuriousFunctionArgumentExceptionMapper.js\";\nimport { SpuriousFunctionArgumentException } from \"./SpuriousFunctionArgumentException.js\";\n\nexport interface ExceptionToExprEvalErrorMapper<T extends Error> {\n mapException(exception: T): ExprEvalError;\n}\n\nconst mappers = new Map<string, ExceptionToExprEvalErrorMapper<Error>>();\nmappers.set(SyntaxErrorException.name, new SyntaxErrorMapper());\nmappers.set(ValidationException.name, new ValidationExceptionMapper());\nmappers.set(ExpressionTypeError.name, mappers.get(ValidationException.name));\nmappers.set(\n MissingFunctionArgumentException.name,\n new MissingFunctionArgumentExceptionMapper()\n);\nmappers.set(\n SpuriousFunctionArgumentException.name,\n new SpuriousFunctionArgumentExceptionMapper()\n);\nmappers.set(NoSuchFunctionException.name, new NoSuchFunctionExceptionMapper());\nmappers.set(\n NoSuchMethodException.name,\n mappers.get(NoSuchFunctionException.name)\n);\nmappers.set(\n WrongFunctionArgumentTypeException.name,\n new WrongFunctionArgumentTypeExceptionMapper()\n);\nmappers.set(InvalidSyntaxException.name, mappers.get(ValidationException.name));\n\nexport function mapException(e: Error): ExprEvalError {\n const mapper = mappers.get(e.constructor.name);\n if (isNullish(mapper)) {\n return new ExprEvalErrorObj(\n ExprKind.PARSE_ERROR,\n ExprEvalStatus.ERROR,\n e.message,\n this.getTextSpan()\n );\n }\n return mapper.mapException(e);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["error/MissingFunctionArgumentException.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE1D,MAAM,OAAO,gCAAiC,SAAQ,yBAAyB;IAC7E,YACE,YAAoB,EACpB,YAAoB,EACpB,KAAa,EACb,GAAG,EACH,OAAgB;QAEhB,KAAK,CACH,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,OAAO,EAC1D,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,GAAG,CACJ,CAAC;IACJ,CAAC;CACF","file":"error/MissingFunctionArgumentException.js","sourcesContent":["import { FunctionArgumentException } from \"./FunctionArgumentException\";\nimport { isNullish } from \"../util/IfcExpressionUtils\";\n\nexport class MissingFunctionArgumentException extends FunctionArgumentException {\n constructor(\n functionName: string,\n argumentName: string,\n index: number,\n ctx,\n message?: string\n ) {\n super(\n isNullish(message) ? \"Required argument missing\" : message,\n functionName,\n argumentName,\n index,\n ctx\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["error/MissingFunctionArgumentException.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE1D,MAAM,OAAO,gCAAiC,SAAQ,yBAAyB;IAC7E,YACE,YAAoB,EACpB,YAAoB,EACpB,KAAa,EACb,GAAG,EACH,OAAgB;QAEhB,KAAK,CACH,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,OAAO,EAC1D,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,GAAG,CACJ,CAAC;IACJ,CAAC;CACF","file":"error/MissingFunctionArgumentException.js","sourcesContent":["import { FunctionArgumentException } from \"./FunctionArgumentException.js\";\nimport { isNullish } from \"../util/IfcExpressionUtils.js\";\n\nexport class MissingFunctionArgumentException extends FunctionArgumentException {\n constructor(\n functionName: string,\n argumentName: string,\n index: number,\n ctx,\n message?: string\n ) {\n super(\n isNullish(message) ? \"Required argument missing\" : message,\n functionName,\n argumentName,\n index,\n ctx\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["error/SpuriousFunctionArgumentException.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE1D,MAAM,OAAO,iCAAkC,SAAQ,yBAAyB;IAC9E,YACE,YAAoB,EACpB,YAAoB,EACpB,KAAa,EACb,GAAG,EACH,OAAgB;QAEhB,KAAK,CACH,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,OAAO,EAC3D,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,GAAG,CACJ,CAAC;IACJ,CAAC;CACF","file":"error/SpuriousFunctionArgumentException.js","sourcesContent":["import { FunctionArgumentException } from \"./FunctionArgumentException\";\nimport { isNullish } from \"../util/IfcExpressionUtils\";\n\nexport class SpuriousFunctionArgumentException extends FunctionArgumentException {\n constructor(\n functionName: string,\n argumentName: string,\n index: number,\n ctx,\n message?: string\n ) {\n super(\n isNullish(message) ? \"Spurious function argument\" : message,\n functionName,\n argumentName,\n index,\n ctx\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["error/SpuriousFunctionArgumentException.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE1D,MAAM,OAAO,iCAAkC,SAAQ,yBAAyB;IAC9E,YACE,YAAoB,EACpB,YAAoB,EACpB,KAAa,EACb,GAAG,EACH,OAAgB;QAEhB,KAAK,CACH,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,OAAO,EAC3D,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,GAAG,CACJ,CAAC;IACJ,CAAC;CACF","file":"error/SpuriousFunctionArgumentException.js","sourcesContent":["import { FunctionArgumentException } from \"./FunctionArgumentException.js\";\nimport { isNullish } from \"../util/IfcExpressionUtils.js\";\n\nexport class SpuriousFunctionArgumentException extends FunctionArgumentException {\n constructor(\n functionName: string,\n argumentName: string,\n index: number,\n ctx,\n message?: string\n ) {\n super(\n isNullish(message) ? \"Spurious function argument\" : message,\n functionName,\n argumentName,\n index,\n ctx\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["error/mapper/SpuriousFunctionArgumentExceptionMapper.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,wCAAwC,GACzC,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGlD,MAAM,OAAO,uCAAuC;IAGlD,YAAY,CAAC,SAA4C;QACvD,OAAO,IAAI,wCAAwC,CACjD,SAAS,CAAC,OAAO,EACjB,SAAS,CAAC,YAAY,EACtB,SAAS,CAAC,YAAY,EACtB,SAAS,CAAC,KAAK,EACf,QAAQ,CAAC,EAAE,CACT,SAAS,CAAC,QAAQ,EAClB,SAAS,CAAC,UAAU,GAAG,CAAC,EACxB,SAAS,CAAC,MAAM,EAChB,SAAS,CAAC,QAAQ,GAAG,CAAC,CACvB,CACF,CAAC;IACJ,CAAC;CACF","file":"error/mapper/SpuriousFunctionArgumentExceptionMapper.js","sourcesContent":["import { ExceptionToExprEvalErrorMapper } from \"../ExceptionToExprEvalErrorMapper.js\";\nimport {\n ExprEvalError,\n ExprEvalSpuriousFunctionArgumentErrorObj,\n} from \"../../expression/ExprEvalResult.js\";\nimport { TextSpan } from \"../../util/TextSpan.js\";\nimport { SpuriousFunctionArgumentException } from \"../SpuriousFunctionArgumentException\";\n\nexport class SpuriousFunctionArgumentExceptionMapper\n implements ExceptionToExprEvalErrorMapper<SpuriousFunctionArgumentException>\n{\n mapException(exception: SpuriousFunctionArgumentException): ExprEvalError {\n return new ExprEvalSpuriousFunctionArgumentErrorObj(\n exception.message,\n exception.functionName,\n exception.argumentName,\n exception.index,\n TextSpan.of(\n exception.fromLine,\n exception.fromColumn + 1,\n exception.toLine,\n exception.toColumn + 1\n )\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["error/mapper/SpuriousFunctionArgumentExceptionMapper.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,wCAAwC,GACzC,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGlD,MAAM,OAAO,uCAAuC;IAGlD,YAAY,CAAC,SAA4C;QACvD,OAAO,IAAI,wCAAwC,CACjD,SAAS,CAAC,OAAO,EACjB,SAAS,CAAC,YAAY,EACtB,SAAS,CAAC,YAAY,EACtB,SAAS,CAAC,KAAK,EACf,QAAQ,CAAC,EAAE,CACT,SAAS,CAAC,QAAQ,EAClB,SAAS,CAAC,UAAU,GAAG,CAAC,EACxB,SAAS,CAAC,MAAM,EAChB,SAAS,CAAC,QAAQ,GAAG,CAAC,CACvB,CACF,CAAC;IACJ,CAAC;CACF","file":"error/mapper/SpuriousFunctionArgumentExceptionMapper.js","sourcesContent":["import { ExceptionToExprEvalErrorMapper } from \"../ExceptionToExprEvalErrorMapper.js\";\nimport {\n ExprEvalError,\n ExprEvalSpuriousFunctionArgumentErrorObj,\n} from \"../../expression/ExprEvalResult.js\";\nimport { TextSpan } from \"../../util/TextSpan.js\";\nimport { SpuriousFunctionArgumentException } from \"../SpuriousFunctionArgumentException.js\";\n\nexport class SpuriousFunctionArgumentExceptionMapper\n implements ExceptionToExprEvalErrorMapper<SpuriousFunctionArgumentException>\n{\n mapException(exception: SpuriousFunctionArgumentException): ExprEvalError {\n return new ExprEvalSpuriousFunctionArgumentErrorObj(\n exception.message,\n exception.functionName,\n exception.argumentName,\n exception.index,\n TextSpan.of(\n exception.fromLine,\n exception.fromColumn + 1,\n exception.toLine,\n exception.toColumn + 1\n )\n );\n }\n}\n"]}
@@ -0,0 +1,6 @@
1
+ export class DateFormatException extends Error {
2
+ constructor(message) {
3
+ super(message);
4
+ }
5
+ }
6
+ //# sourceMappingURL=DateFormatException.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["error/value/DateFormatException.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF","file":"error/value/DateFormatException.js","sourcesContent":["export class DateFormatException extends Error {\n constructor(message: string) {\n super(message);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/boolean/AndExpr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAM1C,MAAM,OAAO,OAAQ,SAAQ,mBAAmB;IAC9C,YACE,IAAuC,EACvC,KAAwC;QAExC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAES,eAAe,CAAC,OAA0B;QAClD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5E,CAAC;CACF","file":"expression/boolean/AndExpr.js","sourcesContent":["import { BinaryBooleanOpExpr } from \"./BinaryBooleanOpExpr\";\nimport { ExprKind } from \"../ExprKind\";\nimport { BooleanValue } from \"../../value/BooleanValue\";\nimport { LogicalValue } from \"../../value/LogicalValue\";\nimport { Expr } from \"../Expr\";\nimport { ExprStringBuilder } from \"../ExprStringBuilder\";\n\nexport class AndExpr extends BinaryBooleanOpExpr {\n constructor(\n left: Expr<BooleanValue | LogicalValue>,\n right: Expr<BooleanValue | LogicalValue>\n ) {\n super(ExprKind.AND, \"and\", left, right);\n }\n\n protected buildExprString(builder: ExprStringBuilder) {\n builder.appendExpr(this.left).appendString(\" && \").appendExpr(this.right);\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/boolean/AndExpr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAM1C,MAAM,OAAO,OAAQ,SAAQ,mBAAmB;IAC9C,YACE,IAAuC,EACvC,KAAwC;QAExC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAES,eAAe,CAAC,OAA0B;QAClD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5E,CAAC;CACF","file":"expression/boolean/AndExpr.js","sourcesContent":["import { BinaryBooleanOpExpr } from \"./BinaryBooleanOpExpr.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { BooleanValue } from \"../../value/BooleanValue.js\";\nimport { LogicalValue } from \"../../value/LogicalValue.js\";\nimport { Expr } from \"../Expr.js\";\nimport { ExprStringBuilder } from \"../ExprStringBuilder.js\";\n\nexport class AndExpr extends BinaryBooleanOpExpr {\n constructor(\n left: Expr<BooleanValue | LogicalValue>,\n right: Expr<BooleanValue | LogicalValue>\n ) {\n super(ExprKind.AND, \"and\", left, right);\n }\n\n protected buildExprString(builder: ExprStringBuilder) {\n builder.appendExpr(this.left).appendString(\" && \").appendExpr(this.right);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/boolean/BinaryBooleanOpExpr.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAKpC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAIlD,MAAM,OAAgB,mBAAoB,SAAQ,KAIjD;IAGC,YACE,IAAc,EACd,MAAc,EACd,IAAuC,EACvC,KAAwC;QAExC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,WAAwC,EACxC,YAAyC;QAEzC,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAClE,CAAC;IAED,OAAO;QACL,IACE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EACrC;YACA,OAAO,IAAI,CAAC,OAAO,CAAC;SACrB;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF","file":"expression/boolean/BinaryBooleanOpExpr.js","sourcesContent":["import { BooleanValue } from \"../../value/BooleanValue.js\";\nimport { Expr2 } from \"../Expr2.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { ExprEvalError } from \"../ExprEvalResult.js\";\nimport { Type, Types } from \"../../type/Types.js\";\nimport { ExprType } from \"../../type/ExprType.js\";\nimport { LogicalValue } from \"../../value/LogicalValue\";\n\nexport abstract class BinaryBooleanOpExpr extends Expr2<\n BooleanValue | LogicalValue,\n BooleanValue | LogicalValue,\n BooleanValue | LogicalValue\n> {\n private readonly method: string;\n\n constructor(\n kind: ExprKind,\n method: string,\n left: Expr<BooleanValue | LogicalValue>,\n right: Expr<BooleanValue | LogicalValue>\n ) {\n super(kind, left, right);\n this.method = method;\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n leftOperand: BooleanValue | LogicalValue,\n rightOperand: BooleanValue | LogicalValue\n ): ExprEvalError | BooleanValue | LogicalValue {\n return leftOperand[this.method].call(leftOperand, rightOperand);\n }\n\n getType(): ExprType {\n if (\n Types.isLogical(this.left.getType()) ||\n Types.isLogical(this.right.getType())\n ) {\n return Type.LOGICAL;\n }\n return Type.BOOLEAN;\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/boolean/BinaryBooleanOpExpr.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAKpC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAIlD,MAAM,OAAgB,mBAAoB,SAAQ,KAIjD;IAGC,YACE,IAAc,EACd,MAAc,EACd,IAAuC,EACvC,KAAwC;QAExC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,WAAwC,EACxC,YAAyC;QAEzC,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAClE,CAAC;IAED,OAAO;QACL,IACE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EACrC;YACA,OAAO,IAAI,CAAC,OAAO,CAAC;SACrB;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF","file":"expression/boolean/BinaryBooleanOpExpr.js","sourcesContent":["import { BooleanValue } from \"../../value/BooleanValue.js\";\nimport { Expr2 } from \"../Expr2.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { ExprEvalError } from \"../ExprEvalResult.js\";\nimport { Type, Types } from \"../../type/Types.js\";\nimport { ExprType } from \"../../type/ExprType.js\";\nimport { LogicalValue } from \"../../value/LogicalValue.js\";\n\nexport abstract class BinaryBooleanOpExpr extends Expr2<\n BooleanValue | LogicalValue,\n BooleanValue | LogicalValue,\n BooleanValue | LogicalValue\n> {\n private readonly method: string;\n\n constructor(\n kind: ExprKind,\n method: string,\n left: Expr<BooleanValue | LogicalValue>,\n right: Expr<BooleanValue | LogicalValue>\n ) {\n super(kind, left, right);\n this.method = method;\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n leftOperand: BooleanValue | LogicalValue,\n rightOperand: BooleanValue | LogicalValue\n ): ExprEvalError | BooleanValue | LogicalValue {\n return leftOperand[this.method].call(leftOperand, rightOperand);\n }\n\n getType(): ExprType {\n if (\n Types.isLogical(this.left.getType()) ||\n Types.isLogical(this.right.getType())\n ) {\n return Type.LOGICAL;\n }\n return Type.BOOLEAN;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/boolean/LogicalLiteralExpr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAG3C,OAAO,EAAW,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEpE,MAAM,OAAO,kBAAmB,SAAQ,WAAkC;IACxE,YAAY,KAAc;QACxB,KAAK,CAAC,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAES,eAAe,CACvB,GAAyB;QAEzB,OAAO,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAES,eAAe,CAAC,OAA0B;QAClD,QAAQ,IAAI,CAAC,KAAK,EAAE;YAClB,KAAK,YAAY,CAAC,aAAa;gBAC7B,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;gBACjD,MAAM;YACR,KAAK,IAAI;gBACP,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAC7B,MAAM;YACR,KAAK,KAAK;gBACR,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBAC9B,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CACb,4CAA4C,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CACpE,CAAC;SACL;IACH,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF","file":"expression/boolean/LogicalLiteralExpr.js","sourcesContent":["import { LiteralExpr } from \"../LiteralExpr.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { ExprEvalError } from \"../ExprEvalResult.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { Type } from \"../../type/Types.js\";\nimport { ExprType } from \"../../type/ExprType.js\";\nimport { ExprStringBuilder } from \"../ExprStringBuilder.js\";\nimport { Logical, LogicalValue } from \"../../value/LogicalValue\";\n\nexport class LogicalLiteralExpr extends LiteralExpr<Logical, LogicalValue> {\n constructor(value: Logical) {\n super(ExprKind.LOGICAL_LITERAL, value);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext\n ): ExprEvalError | LogicalValue {\n return LogicalValue.of(this.value);\n }\n\n protected buildExprString(builder: ExprStringBuilder) {\n switch (this.value) {\n case LogicalValue.UNKNOWN_VALUE:\n builder.appendString(LogicalValue.UNKNOWN_VALUE);\n break;\n case true:\n builder.appendString(\"TRUE\");\n break;\n case false:\n builder.appendString(\"FALSE\");\n break;\n default:\n throw new Error(\n \"Cannot build exprString for logical value \" + JSON.stringify(this)\n );\n }\n }\n\n getType(): ExprType {\n return Type.LOGICAL;\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/boolean/LogicalLiteralExpr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAG3C,OAAO,EAAW,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEpE,MAAM,OAAO,kBAAmB,SAAQ,WAAkC;IACxE,YAAY,KAAc;QACxB,KAAK,CAAC,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAES,eAAe,CACvB,GAAyB;QAEzB,OAAO,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAES,eAAe,CAAC,OAA0B;QAClD,QAAQ,IAAI,CAAC,KAAK,EAAE;YAClB,KAAK,YAAY,CAAC,aAAa;gBAC7B,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;gBACjD,MAAM;YACR,KAAK,IAAI;gBACP,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAC7B,MAAM;YACR,KAAK,KAAK;gBACR,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBAC9B,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CACb,4CAA4C,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CACpE,CAAC;SACL;IACH,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF","file":"expression/boolean/LogicalLiteralExpr.js","sourcesContent":["import { LiteralExpr } from \"../LiteralExpr.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { ExprEvalError } from \"../ExprEvalResult.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { Type } from \"../../type/Types.js\";\nimport { ExprType } from \"../../type/ExprType.js\";\nimport { ExprStringBuilder } from \"../ExprStringBuilder.js\";\nimport { Logical, LogicalValue } from \"../../value/LogicalValue.js\";\n\nexport class LogicalLiteralExpr extends LiteralExpr<Logical, LogicalValue> {\n constructor(value: Logical) {\n super(ExprKind.LOGICAL_LITERAL, value);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext\n ): ExprEvalError | LogicalValue {\n return LogicalValue.of(this.value);\n }\n\n protected buildExprString(builder: ExprStringBuilder) {\n switch (this.value) {\n case LogicalValue.UNKNOWN_VALUE:\n builder.appendString(LogicalValue.UNKNOWN_VALUE);\n break;\n case true:\n builder.appendString(\"TRUE\");\n break;\n case false:\n builder.appendString(\"FALSE\");\n break;\n default:\n throw new Error(\n \"Cannot build exprString for logical value \" + JSON.stringify(this)\n );\n }\n }\n\n getType(): ExprType {\n return Type.LOGICAL;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/boolean/NotExpr.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAO1C,MAAM,OAAO,OAAQ,SAAQ,KAG5B;IACC,YAAY,GAAsC;QAChD,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,mBAAgD;QAEhD,OAAO,mBAAmB,CAAC,GAAG,EAAE,CAAC;IACnC,CAAC;IAES,eAAe,CAAC,OAA0B;QAClD,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;CACF","file":"expression/boolean/NotExpr.js","sourcesContent":["import { BooleanValue } from \"../../value/BooleanValue.js\";\nimport { Expr1 } from \"../Expr1.js\";\nimport { Expr } from \"../Expr.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { ExprEvalError } from \"../ExprEvalResult.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { ExprType } from \"../../type/ExprType.js\";\nimport { ExprStringBuilder } from \"../ExprStringBuilder.js\";\nimport { LogicalValue } from \"../../value/LogicalValue\";\n\nexport class NotExpr extends Expr1<\n BooleanValue | LogicalValue,\n BooleanValue | LogicalValue\n> {\n constructor(sub: Expr<BooleanValue | LogicalValue>) {\n super(ExprKind.NOT, sub);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n subExpressionResult: BooleanValue | LogicalValue\n ): ExprEvalError | BooleanValue | LogicalValue {\n return subExpressionResult.not();\n }\n\n protected buildExprString(builder: ExprStringBuilder) {\n builder.appendString(\"!\").appendExpr(this.sub);\n }\n\n getType(): ExprType {\n return this.sub.getType();\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/boolean/NotExpr.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAO1C,MAAM,OAAO,OAAQ,SAAQ,KAG5B;IACC,YAAY,GAAsC;QAChD,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,mBAAgD;QAEhD,OAAO,mBAAmB,CAAC,GAAG,EAAE,CAAC;IACnC,CAAC;IAES,eAAe,CAAC,OAA0B;QAClD,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;CACF","file":"expression/boolean/NotExpr.js","sourcesContent":["import { BooleanValue } from \"../../value/BooleanValue.js\";\nimport { Expr1 } from \"../Expr1.js\";\nimport { Expr } from \"../Expr.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { ExprEvalError } from \"../ExprEvalResult.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { ExprType } from \"../../type/ExprType.js\";\nimport { ExprStringBuilder } from \"../ExprStringBuilder.js\";\nimport { LogicalValue } from \"../../value/LogicalValue.js\";\n\nexport class NotExpr extends Expr1<\n BooleanValue | LogicalValue,\n BooleanValue | LogicalValue\n> {\n constructor(sub: Expr<BooleanValue | LogicalValue>) {\n super(ExprKind.NOT, sub);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n subExpressionResult: BooleanValue | LogicalValue\n ): ExprEvalError | BooleanValue | LogicalValue {\n return subExpressionResult.not();\n }\n\n protected buildExprString(builder: ExprStringBuilder) {\n builder.appendString(\"!\").appendExpr(this.sub);\n }\n\n getType(): ExprType {\n return this.sub.getType();\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/boolean/OrExpr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAM1C,MAAM,OAAO,MAAO,SAAQ,mBAAmB;IAC7C,YACE,IAAuC,EACvC,KAAwC;QAExC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IAES,eAAe,CAAC,OAA0B;QAClD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5E,CAAC;CACF","file":"expression/boolean/OrExpr.js","sourcesContent":["import { BinaryBooleanOpExpr } from \"./BinaryBooleanOpExpr\";\nimport { ExprKind } from \"../ExprKind\";\nimport { BooleanValue } from \"../../value/BooleanValue\";\nimport { LogicalValue } from \"../../value/LogicalValue\";\nimport { Expr } from \"../Expr\";\nimport { ExprStringBuilder } from \"../ExprStringBuilder\";\n\nexport class OrExpr extends BinaryBooleanOpExpr {\n constructor(\n left: Expr<BooleanValue | LogicalValue>,\n right: Expr<BooleanValue | LogicalValue>\n ) {\n super(ExprKind.OR, \"or\", left, right);\n }\n\n protected buildExprString(builder: ExprStringBuilder) {\n builder.appendExpr(this.left).appendString(\" || \").appendExpr(this.right);\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/boolean/OrExpr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAM1C,MAAM,OAAO,MAAO,SAAQ,mBAAmB;IAC7C,YACE,IAAuC,EACvC,KAAwC;QAExC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IAES,eAAe,CAAC,OAA0B;QAClD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5E,CAAC;CACF","file":"expression/boolean/OrExpr.js","sourcesContent":["import { BinaryBooleanOpExpr } from \"./BinaryBooleanOpExpr.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { BooleanValue } from \"../../value/BooleanValue.js\";\nimport { LogicalValue } from \"../../value/LogicalValue.js\";\nimport { Expr } from \"../Expr.js\";\nimport { ExprStringBuilder } from \"../ExprStringBuilder.js\";\n\nexport class OrExpr extends BinaryBooleanOpExpr {\n constructor(\n left: Expr<BooleanValue | LogicalValue>,\n right: Expr<BooleanValue | LogicalValue>\n ) {\n super(ExprKind.OR, \"or\", left, right);\n }\n\n protected buildExprString(builder: ExprStringBuilder) {\n builder.appendExpr(this.left).appendString(\" || \").appendExpr(this.right);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/boolean/XorExpr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAM1C,MAAM,OAAO,OAAQ,SAAQ,mBAAmB;IAC9C,YACE,IAAuC,EACvC,KAAwC;QAExC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAES,eAAe,CAAC,OAA0B;QAClD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5E,CAAC;CACF","file":"expression/boolean/XorExpr.js","sourcesContent":["import { BinaryBooleanOpExpr } from \"./BinaryBooleanOpExpr\";\nimport { ExprKind } from \"../ExprKind\";\nimport { BooleanValue } from \"../../value/BooleanValue\";\nimport { LogicalValue } from \"../../value/LogicalValue\";\nimport { Expr } from \"../Expr\";\nimport { ExprStringBuilder } from \"../ExprStringBuilder\";\n\nexport class XorExpr extends BinaryBooleanOpExpr {\n constructor(\n left: Expr<BooleanValue | LogicalValue>,\n right: Expr<BooleanValue | LogicalValue>\n ) {\n super(ExprKind.XOR, \"xor\", left, right);\n }\n\n protected buildExprString(builder: ExprStringBuilder) {\n builder.appendExpr(this.left).appendString(\" >< \").appendExpr(this.right);\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/boolean/XorExpr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAM1C,MAAM,OAAO,OAAQ,SAAQ,mBAAmB;IAC9C,YACE,IAAuC,EACvC,KAAwC;QAExC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAES,eAAe,CAAC,OAA0B;QAClD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5E,CAAC;CACF","file":"expression/boolean/XorExpr.js","sourcesContent":["import { BinaryBooleanOpExpr } from \"./BinaryBooleanOpExpr.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { BooleanValue } from \"../../value/BooleanValue.js\";\nimport { LogicalValue } from \"../../value/LogicalValue.js\";\nimport { Expr } from \"../Expr.js\";\nimport { ExprStringBuilder } from \"../ExprStringBuilder.js\";\n\nexport class XorExpr extends BinaryBooleanOpExpr {\n constructor(\n left: Expr<BooleanValue | LogicalValue>,\n right: Expr<BooleanValue | LogicalValue>\n ) {\n super(ExprKind.XOR, \"xor\", left, right);\n }\n\n protected buildExprString(builder: ExprStringBuilder) {\n builder.appendExpr(this.left).appendString(\" >< \").appendExpr(this.right);\n }\n}\n"]}
@@ -61,6 +61,7 @@ export class Func {
61
61
  /**
62
62
  * Override to transform individual arguments if needed. After this step, if any of the ExprEvalResult objects in the
63
63
  * returned array is an ExprEvalError, the function evaluation fails.
64
+ * @param callingExpr
64
65
  * @param evaluatedArguments
65
66
  * @protected
66
67
  */
@@ -68,6 +69,7 @@ export class Func {
68
69
  /**
69
70
  * Gets the argument values from the list of provided arguments in the form of 'name' -> ExprEvalResult (which may contain errors).
70
71
  * Generates an error if a required value is missing.
72
+ * @param callingExpr
71
73
  * @param provided
72
74
  * @protected
73
75
  */
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/function/Func.ts"],"names":[],"mappings":"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","file":"expression/function/Func.js","sourcesContent":["import { ExpressionValue } from \"../../value/ExpressionValue.js\";\nimport { IfcExpressionFunctionConfigException } from \"../../error/IfcExpressionFunctionConfigException.js\";\nimport { isNullish } from \"../../util/IfcExpressionUtils.js\";\nimport { FuncArg } from \"./FuncArg.js\";\nimport {\n ExprEvalError,\n ExprEvalMissingRequiredFunctionArgumentErrorObj,\n ExprEvalResult,\n ExprEvalSuccessObj,\n isExprEvalError,\n} from \"../ExprEvalResult.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { Types } from \"../../type/Types.js\";\nimport { MissingFunctionArgumentException } from \"../../error/MissingFunctionArgumentException.js\";\nimport { WrongFunctionArgumentTypeException } from \"../../error/WrongFunctionArgumentTypeException.js\";\nimport { ExprType } from \"../../type/ExprType.js\";\nimport { ParserRuleContext } from \"antlr4\";\nimport { FunctionExpr } from \"./FunctionExpr.js\";\nimport { Expr } from \"../Expr\";\nimport { SpuriousFunctionArgumentException } from \"../../error/SpuriousFunctionArgumentException\";\n\nexport abstract class Func {\n protected name: string;\n protected formalArguments: Array<FuncArg<unknown>>;\n\n protected constructor(name: string, args: Array<FuncArg<unknown>>) {\n this.name = name;\n if (isNullish(this.name)) {\n throw new IfcExpressionFunctionConfigException(\n \"Function must have a name\"\n );\n }\n this.formalArguments = args;\n this.checkArgs(args);\n }\n\n public abstract getReturnType(argumentTypes: Array<ExprType>): ExprType;\n\n public checkArgumentsAndGetReturnType(\n argumentTypes: Array<[ParserRuleContext, ExprType]>,\n ctx\n ): ExprType {\n this.checkArgumentTypes(argumentTypes, ctx);\n return this.getReturnType(argumentTypes.map((t) => t[1]));\n }\n\n protected checkArgumentTypes(\n providedArgumentTypes: Array<[ParserRuleContext, ExprType]>,\n ctx\n ): void {\n const numProvided = providedArgumentTypes.length;\n if (!isNullish(this.formalArguments)) {\n if (numProvided > this.formalArguments.length) {\n throw new SpuriousFunctionArgumentException(\n this.name,\n \"[unexpected argument]\",\n this.formalArguments.length,\n ctx,\n `Function expects (at most) ${this.formalArguments.length} arguments`\n );\n }\n for (let i = 0; i < this.formalArguments.length; i++) {\n const currentArg: FuncArg<unknown> = this.formalArguments[i];\n if (numProvided > i) {\n Types.requireWeakIsAssignableFrom(\n this.formalArguments[i].getType(),\n providedArgumentTypes[i][1],\n () =>\n new WrongFunctionArgumentTypeException(\n this.name,\n this.formalArguments[i].name,\n this.formalArguments[i].getType(),\n providedArgumentTypes[i][1],\n i,\n providedArgumentTypes[i][0]\n )\n );\n } else {\n if (currentArg.hasDefaultValue()) {\n //should be fine.\n }\n if (currentArg.required) {\n throw new MissingFunctionArgumentException(\n this.name,\n currentArg.name,\n i,\n ctx\n );\n }\n }\n }\n }\n }\n\n public getName(): string {\n return this.name;\n }\n\n public evaluate(\n callingExpr: FunctionExpr,\n funcArgs: Array<ExprEvalResult<ExpressionValue>>\n ): ExprEvalResult<ExpressionValue> {\n const evaluatedArguments = this.getArgumentValues(callingExpr, funcArgs);\n if (isExprEvalError(evaluatedArguments)) {\n return evaluatedArguments;\n }\n const argumentsReadyForUse = new Map<string, ExpressionValue>();\n for (const [argName, argValue] of evaluatedArguments.entries()) {\n if (isExprEvalError(argValue)) {\n return argValue;\n }\n argumentsReadyForUse.set(argName, argValue.result);\n }\n return this.calculateResult(callingExpr, argumentsReadyForUse);\n }\n\n /**\n * Subclasses must provide the funcation evaluation code here.\n * @param evaluatedArguments\n * @protected\n */\n protected abstract calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue>;\n\n /**\n * Override to transform individual arguments if needed. After this step, if any of the ExprEvalResult objects in the\n * returned array is an ExprEvalError, the function evaluation fails.\n * @param evaluatedArguments\n * @protected\n */\n protected transformArguments(\n callingExpr: Expr<any>,\n evaluatedArguments: Map<string, ExprEvalResult<ExpressionValue>>\n ): void {}\n\n /**\n * Gets the argument values from the list of provided arguments in the form of 'name' -> ExprEvalResult (which may contain errors).\n * Generates an error if a required value is missing.\n * @param provided\n * @protected\n */\n protected getArgumentValues(\n callingExpr: FunctionExpr,\n provided: Array<ExprEvalResult<ExpressionValue>>\n ): Map<string, ExprEvalResult<ExpressionValue>> | ExprEvalError {\n const result = new Map<string, ExprEvalResult<ExpressionValue>>();\n const numProvided = provided.length;\n if (!isNullish(this.formalArguments)) {\n for (let i = 0; i < this.formalArguments.length; i++) {\n const currentArg: FuncArg<unknown> = this.formalArguments[i];\n if (numProvided > i) {\n result.set(\n currentArg.name,\n currentArg.transformValue(callingExpr, provided[i])\n );\n } else {\n if (currentArg.hasDefaultValue()) {\n result.set(\n currentArg.name,\n new ExprEvalSuccessObj(currentArg.defaultValue as ExpressionValue)\n );\n }\n if (currentArg.required) {\n return new ExprEvalMissingRequiredFunctionArgumentErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n `Required argument ${currentArg.name}, expected at position ${i} (starting at 0), is missing`,\n this.name,\n currentArg.name,\n i,\n callingExpr.getTextSpan()\n );\n }\n }\n }\n }\n this.transformArguments(callingExpr, result);\n return result;\n }\n\n private checkArgs(args: Array<FuncArg<unknown>>): void {\n if (!Array.isArray(this.formalArguments)) {\n throw new IfcExpressionFunctionConfigException(\n \"Formal function arguments is not an array\"\n );\n }\n let optionalArgsReached: boolean = false;\n const names = new Set<string>();\n for (let i = 0; i < this.formalArguments.length; i++) {\n if (names.has(this.formalArguments[i].name)) {\n throw new IfcExpressionFunctionConfigException(\n `Duplicate argument name '${this.formalArguments[i].name}'.`\n );\n }\n if (optionalArgsReached) {\n if (this.formalArguments[i].required) {\n throw new IfcExpressionFunctionConfigException(\n `Optional arguments must follow required ones. Argument '${this.formalArguments[i].name}' is required but follows an optional one`\n );\n }\n } else {\n if (!this.formalArguments[i].required) {\n optionalArgsReached = true;\n }\n }\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/function/Func.ts"],"names":[],"mappings":"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","file":"expression/function/Func.js","sourcesContent":["import { ExpressionValue } from \"../../value/ExpressionValue.js\";\nimport { IfcExpressionFunctionConfigException } from \"../../error/IfcExpressionFunctionConfigException.js\";\nimport { isNullish } from \"../../util/IfcExpressionUtils.js\";\nimport { FuncArg } from \"./FuncArg.js\";\nimport {\n ExprEvalError,\n ExprEvalMissingRequiredFunctionArgumentErrorObj,\n ExprEvalResult,\n ExprEvalSuccessObj,\n isExprEvalError,\n} from \"../ExprEvalResult.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { Types } from \"../../type/Types.js\";\nimport { MissingFunctionArgumentException } from \"../../error/MissingFunctionArgumentException.js\";\nimport { WrongFunctionArgumentTypeException } from \"../../error/WrongFunctionArgumentTypeException.js\";\nimport { ExprType } from \"../../type/ExprType.js\";\nimport { ParserRuleContext } from \"antlr4\";\nimport { FunctionExpr } from \"./FunctionExpr.js\";\nimport { Expr } from \"../Expr.js\";\nimport { SpuriousFunctionArgumentException } from \"../../error/SpuriousFunctionArgumentException.js\";\n\nexport abstract class Func {\n protected name: string;\n protected formalArguments: Array<FuncArg<unknown>>;\n\n protected constructor(name: string, args: Array<FuncArg<unknown>>) {\n this.name = name;\n if (isNullish(this.name)) {\n throw new IfcExpressionFunctionConfigException(\n \"Function must have a name\"\n );\n }\n this.formalArguments = args;\n this.checkArgs(args);\n }\n\n public abstract getReturnType(argumentTypes: Array<ExprType>): ExprType;\n\n public checkArgumentsAndGetReturnType(\n argumentTypes: Array<[ParserRuleContext, ExprType]>,\n ctx\n ): ExprType {\n this.checkArgumentTypes(argumentTypes, ctx);\n return this.getReturnType(argumentTypes.map((t) => t[1]));\n }\n\n protected checkArgumentTypes(\n providedArgumentTypes: Array<[ParserRuleContext, ExprType]>,\n ctx\n ): void {\n const numProvided = providedArgumentTypes.length;\n if (!isNullish(this.formalArguments)) {\n if (numProvided > this.formalArguments.length) {\n throw new SpuriousFunctionArgumentException(\n this.name,\n \"[unexpected argument]\",\n this.formalArguments.length,\n ctx,\n `Function expects (at most) ${this.formalArguments.length} arguments`\n );\n }\n for (let i = 0; i < this.formalArguments.length; i++) {\n const currentArg: FuncArg<unknown> = this.formalArguments[i];\n if (numProvided > i) {\n Types.requireWeakIsAssignableFrom(\n this.formalArguments[i].getType(),\n providedArgumentTypes[i][1],\n () =>\n new WrongFunctionArgumentTypeException(\n this.name,\n this.formalArguments[i].name,\n this.formalArguments[i].getType(),\n providedArgumentTypes[i][1],\n i,\n providedArgumentTypes[i][0]\n )\n );\n } else {\n if (currentArg.hasDefaultValue()) {\n //should be fine.\n }\n if (currentArg.required) {\n throw new MissingFunctionArgumentException(\n this.name,\n currentArg.name,\n i,\n ctx\n );\n }\n }\n }\n }\n }\n\n public getName(): string {\n return this.name;\n }\n\n public evaluate(\n callingExpr: FunctionExpr,\n funcArgs: Array<ExprEvalResult<ExpressionValue>>\n ): ExprEvalResult<ExpressionValue> {\n const evaluatedArguments = this.getArgumentValues(callingExpr, funcArgs);\n if (isExprEvalError(evaluatedArguments)) {\n return evaluatedArguments;\n }\n const argumentsReadyForUse = new Map<string, ExpressionValue>();\n for (const [argName, argValue] of evaluatedArguments.entries()) {\n if (isExprEvalError(argValue)) {\n return argValue;\n }\n argumentsReadyForUse.set(argName, argValue.result);\n }\n return this.calculateResult(callingExpr, argumentsReadyForUse);\n }\n\n /**\n * Subclasses must provide the funcation evaluation code here.\n * @param callingExpr\n * @param evaluatedArguments\n * @protected\n */\n protected abstract calculateResult(\n callingExpr: FunctionExpr,\n evaluatedArguments: Map<string, ExpressionValue>\n ): ExprEvalResult<ExpressionValue>;\n\n /**\n * Override to transform individual arguments if needed. After this step, if any of the ExprEvalResult objects in the\n * returned array is an ExprEvalError, the function evaluation fails.\n * @param callingExpr\n * @param evaluatedArguments\n * @protected\n */\n protected transformArguments(\n callingExpr: Expr<any>,\n evaluatedArguments: Map<string, ExprEvalResult<ExpressionValue>>\n ): void {}\n\n /**\n * Gets the argument values from the list of provided arguments in the form of 'name' -> ExprEvalResult (which may contain errors).\n * Generates an error if a required value is missing.\n * @param callingExpr\n * @param provided\n * @protected\n */\n protected getArgumentValues(\n callingExpr: FunctionExpr,\n provided: Array<ExprEvalResult<ExpressionValue>>\n ): Map<string, ExprEvalResult<ExpressionValue>> | ExprEvalError {\n const result = new Map<string, ExprEvalResult<ExpressionValue>>();\n const numProvided = provided.length;\n if (!isNullish(this.formalArguments)) {\n for (let i = 0; i < this.formalArguments.length; i++) {\n const currentArg: FuncArg<unknown> = this.formalArguments[i];\n if (numProvided > i) {\n result.set(\n currentArg.name,\n currentArg.transformValue(callingExpr, provided[i])\n );\n } else {\n if (currentArg.hasDefaultValue()) {\n result.set(\n currentArg.name,\n new ExprEvalSuccessObj(currentArg.defaultValue as ExpressionValue)\n );\n }\n if (currentArg.required) {\n return new ExprEvalMissingRequiredFunctionArgumentErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n `Required argument ${currentArg.name}, expected at position ${i} (starting at 0), is missing`,\n this.name,\n currentArg.name,\n i,\n callingExpr.getTextSpan()\n );\n }\n }\n }\n }\n this.transformArguments(callingExpr, result);\n return result;\n }\n\n private checkArgs(args: Array<FuncArg<unknown>>): void {\n if (!Array.isArray(this.formalArguments)) {\n throw new IfcExpressionFunctionConfigException(\n \"Formal function arguments is not an array\"\n );\n }\n let optionalArgsReached: boolean = false;\n const names = new Set<string>();\n for (let i = 0; i < this.formalArguments.length; i++) {\n if (names.has(this.formalArguments[i].name)) {\n throw new IfcExpressionFunctionConfigException(\n `Duplicate argument name '${this.formalArguments[i].name}'.`\n );\n }\n if (optionalArgsReached) {\n if (this.formalArguments[i].required) {\n throw new IfcExpressionFunctionConfigException(\n `Optional arguments must follow required ones. Argument '${this.formalArguments[i].name}' is required but follows an optional one`\n );\n }\n } else {\n if (!this.formalArguments[i].required) {\n optionalArgsReached = true;\n }\n }\n }\n }\n}\n"]}
@@ -25,6 +25,12 @@ import { TOUPPERCASE } from "./impl/TOUPPERCASE.js";
25
25
  import { SUBSTRING } from "./impl/SUBSTRING.js";
26
26
  import { SPLIT } from "./impl/SPLIT.js";
27
27
  import { AT } from "./impl/AT.js";
28
+ import { TOIFCDATE } from "./impl/TOIFCDATE.js";
29
+ import { TOIFCDATETIME } from "./impl/TOIFCDATETIME.js";
30
+ import { TOIFCTIME } from "./impl/TOIFCTIME.js";
31
+ import { TOIFCDURATION } from "./impl/TOIFCDURATION.js";
32
+ import { TOIFCTIMESTAMP } from "./impl/TOIFCTIMESTAMP.js";
33
+ import { ADDDURATION } from "./impl/ADDDURATION.js";
28
34
  const builtinFunctions = new Map();
29
35
  function registerOrDie(fnKey, func) {
30
36
  if (builtinFunctions.has(fnKey)) {
@@ -76,6 +82,12 @@ registerFunc(new TOSTRING());
76
82
  registerFunc(new TONUMERIC(), "TONUMBER");
77
83
  registerFunc(new TOBOOLEAN());
78
84
  registerFunc(new TOLOGICAL(), "NOTFOUNDASUNKNOWN");
85
+ registerFunc(new TOIFCDATE());
86
+ registerFunc(new TOIFCTIME());
87
+ registerFunc(new TOIFCDATETIME());
88
+ registerFunc(new TOIFCDURATION());
89
+ registerFunc(new TOIFCTIMESTAMP());
90
+ registerFunc(new ADDDURATION());
79
91
  registerFunc(new TOLOWERCASE());
80
92
  registerFunc(new TOUPPERCASE());
81
93
  registerFunc(new SUBSTRING());
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/function/IfcExpressionFunctions.ts"],"names":[],"mappings":"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","file":"expression/function/IfcExpressionFunctions.js","sourcesContent":["import { Func } from \"./Func.js\";\nimport { isNullish } from \"../../util/IfcExpressionUtils.js\";\nimport { MAP } from \"./impl/MAP.js\";\nimport { ROUND } from \"./impl/ROUND.js\";\nimport { AttributeAccessorFunction } from \"./impl/AttributeAccessorFunction.js\";\nimport { PROPERTYSET } from \"./impl/PROPERTYSET.js\";\nimport { PROPERTY } from \"./impl/PROPERTY.js\";\nimport { TYPE } from \"./impl/TYPE.js\";\nimport { FuncBooleanBinary } from \"./impl/FuncBooleanBinary.js\";\nimport { NOT } from \"./impl/NOT.js\";\nimport { CHOOSE } from \"./impl/CHOOSE.js\";\nimport { MatchesPattern } from \"./impl/MatchesPattern.js\";\nimport { Type, Types } from \"../../type/Types.js\";\nimport { TOSTRING } from \"./impl/TOSTRING.js\";\nimport { EXISTS } from \"./impl/EXISTS.js\";\nimport { EQUALS } from \"./impl/EQUALS.js\";\nimport { CompareMagnitudes } from \"./impl/CompareMagnitudes.js\";\nimport { ReplacePattern } from \"./impl/ReplacePattern.js\";\nimport { IF } from \"./impl/IF.js\";\nimport { TONUMERIC } from \"./impl/TONUMERIC\";\nimport { IfcExpressionFunctionConfigException } from \"../../error/IfcExpressionFunctionConfigException\";\nimport { TOBOOLEAN } from \"./impl/TOBOOLEAN\";\nimport { TOLOGICAL } from \"./impl/TOLOGICAL\";\nimport { TOLOWERCASE } from \"./impl/TOLOWERCASE\";\nimport { TOUPPERCASE } from \"./impl/TOUPPERCASE\";\nimport { SUBSTRING } from \"./impl/SUBSTRING\";\nimport { SPLIT } from \"./impl/SPLIT\";\nimport { AT } from \"./impl/AT\";\n\nconst builtinFunctions = new Map<string, Func>();\n\nfunction registerOrDie(fnKey: string, func: Func) {\n if (builtinFunctions.has(fnKey)) {\n throw new IfcExpressionFunctionConfigException(\n `cannot register function with name '${fnKey}': name already in use`\n );\n }\n builtinFunctions.set(fnKey, func);\n}\n\nfunction registerFunc(func: Func, ...aliases: Array<string>) {\n const fnKey = func.getName();\n const keys = [...aliases];\n keys.unshift(fnKey);\n keys.forEach((key) =>\n registerOrDie(IfcExpressionFunctions.normalizeName(key), func)\n );\n}\n\nexport class IfcExpressionFunctions {\n public static normalizeName(name: string): string {\n if (isNullish(name)) {\n return undefined;\n }\n return name.toUpperCase();\n }\n\n public static isBuiltinFunction(name: string) {\n if (isNullish(name)) {\n return false;\n }\n return builtinFunctions.has(this.normalizeName(name));\n }\n\n public static getFunction(name: string): Func {\n if (isNullish(name)) {\n return undefined;\n }\n return builtinFunctions.get(this.normalizeName(name));\n }\n}\n\nregisterFunc(new MAP());\nregisterFunc(new CHOOSE());\nregisterFunc(new AT());\nregisterFunc(new IF());\nregisterFunc(new ROUND());\nregisterFunc(new AttributeAccessorFunction(\"name\", Type.STRING));\nregisterFunc(new AttributeAccessorFunction(\"guid\", Type.STRING));\nregisterFunc(new AttributeAccessorFunction(\"ifcClass\", Type.STRING));\nregisterFunc(new AttributeAccessorFunction(\"description\", Type.STRING));\nregisterFunc(\n new AttributeAccessorFunction(\n \"value\",\n Types.or(Type.STRING, Type.NUMERIC, Type.BOOLEAN, Type.ARRAY)\n )\n);\nregisterFunc(new PROPERTYSET());\nregisterFunc(new PROPERTY());\nregisterFunc(new TYPE());\nregisterFunc(new NOT());\nregisterFunc(new TOSTRING());\nregisterFunc(new TONUMERIC(), \"TONUMBER\");\nregisterFunc(new TOBOOLEAN());\nregisterFunc(new TOLOGICAL(), \"NOTFOUNDASUNKNOWN\");\nregisterFunc(new TOLOWERCASE());\nregisterFunc(new TOUPPERCASE());\nregisterFunc(new SUBSTRING());\nregisterFunc(new SPLIT());\nregisterFunc(new EXISTS());\nregisterFunc(new FuncBooleanBinary(\"AND\", \"and\"));\nregisterFunc(new FuncBooleanBinary(\"OR\", \"or\"));\nregisterFunc(new FuncBooleanBinary(\"XOR\", \"xor\"));\nregisterFunc(new FuncBooleanBinary(\"IMPLIES\", \"implies\"));\nregisterFunc(new EQUALS());\nregisterFunc(new CompareMagnitudes(\"GREATERTHAN\", (cmp) => cmp > 0));\nregisterFunc(new CompareMagnitudes(\"GREATERTHANOREQUAL\", (cmp) => cmp >= 0));\nregisterFunc(new CompareMagnitudes(\"LESSTHAN\", (cmp) => cmp < 0));\nregisterFunc(new CompareMagnitudes(\"LESSTHANOREQUAL\", (cmp) => cmp <= 0));\nregisterFunc(new MatchesPattern(\"CONTAINS\", true, false));\nregisterFunc(new MatchesPattern(\"MATCHES\", true, true));\nregisterFunc(new MatchesPattern(\"REGEXCONTAINS\", false, false));\nregisterFunc(new MatchesPattern(\"REGEXMATCHES\", false, true));\nregisterFunc(new ReplacePattern(\"REPLACE\", true));\nregisterFunc(new ReplacePattern(\"REGEXREPLACE\", false));\n"]}
1
+ {"version":3,"sources":["expression/function/IfcExpressionFunctions.ts"],"names":[],"mappings":"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","file":"expression/function/IfcExpressionFunctions.js","sourcesContent":["import { Func } from \"./Func.js\";\nimport { isNullish } from \"../../util/IfcExpressionUtils.js\";\nimport { MAP } from \"./impl/MAP.js\";\nimport { ROUND } from \"./impl/ROUND.js\";\nimport { AttributeAccessorFunction } from \"./impl/AttributeAccessorFunction.js\";\nimport { PROPERTYSET } from \"./impl/PROPERTYSET.js\";\nimport { PROPERTY } from \"./impl/PROPERTY.js\";\nimport { TYPE } from \"./impl/TYPE.js\";\nimport { FuncBooleanBinary } from \"./impl/FuncBooleanBinary.js\";\nimport { NOT } from \"./impl/NOT.js\";\nimport { CHOOSE } from \"./impl/CHOOSE.js\";\nimport { MatchesPattern } from \"./impl/MatchesPattern.js\";\nimport { Type, Types } from \"../../type/Types.js\";\nimport { TOSTRING } from \"./impl/TOSTRING.js\";\nimport { EXISTS } from \"./impl/EXISTS.js\";\nimport { EQUALS } from \"./impl/EQUALS.js\";\nimport { CompareMagnitudes } from \"./impl/CompareMagnitudes.js\";\nimport { ReplacePattern } from \"./impl/ReplacePattern.js\";\nimport { IF } from \"./impl/IF.js\";\nimport { TONUMERIC } from \"./impl/TONUMERIC.js\";\nimport { IfcExpressionFunctionConfigException } from \"../../error/IfcExpressionFunctionConfigException.js\";\nimport { TOBOOLEAN } from \"./impl/TOBOOLEAN.js\";\nimport { TOLOGICAL } from \"./impl/TOLOGICAL.js\";\nimport { TOLOWERCASE } from \"./impl/TOLOWERCASE.js\";\nimport { TOUPPERCASE } from \"./impl/TOUPPERCASE.js\";\nimport { SUBSTRING } from \"./impl/SUBSTRING.js\";\nimport { SPLIT } from \"./impl/SPLIT.js\";\nimport { AT } from \"./impl/AT.js\";\nimport { TOIFCDATE } from \"./impl/TOIFCDATE.js\";\nimport { TOIFCDATETIME } from \"./impl/TOIFCDATETIME.js\";\nimport { TOIFCTIME } from \"./impl/TOIFCTIME.js\";\nimport { TOIFCDURATION } from \"./impl/TOIFCDURATION.js\";\nimport { TOIFCTIMESTAMP } from \"./impl/TOIFCTIMESTAMP.js\";\nimport { ADDDURATION } from \"./impl/ADDDURATION.js\";\n\nconst builtinFunctions = new Map<string, Func>();\n\nfunction registerOrDie(fnKey: string, func: Func) {\n if (builtinFunctions.has(fnKey)) {\n throw new IfcExpressionFunctionConfigException(\n `cannot register function with name '${fnKey}': name already in use`\n );\n }\n builtinFunctions.set(fnKey, func);\n}\n\nfunction registerFunc(func: Func, ...aliases: Array<string>) {\n const fnKey = func.getName();\n const keys = [...aliases];\n keys.unshift(fnKey);\n keys.forEach((key) =>\n registerOrDie(IfcExpressionFunctions.normalizeName(key), func)\n );\n}\n\nexport class IfcExpressionFunctions {\n public static normalizeName(name: string): string {\n if (isNullish(name)) {\n return undefined;\n }\n return name.toUpperCase();\n }\n\n public static isBuiltinFunction(name: string) {\n if (isNullish(name)) {\n return false;\n }\n return builtinFunctions.has(this.normalizeName(name));\n }\n\n public static getFunction(name: string): Func {\n if (isNullish(name)) {\n return undefined;\n }\n return builtinFunctions.get(this.normalizeName(name));\n }\n}\n\nregisterFunc(new MAP());\nregisterFunc(new CHOOSE());\nregisterFunc(new AT());\nregisterFunc(new IF());\nregisterFunc(new ROUND());\nregisterFunc(new AttributeAccessorFunction(\"name\", Type.STRING));\nregisterFunc(new AttributeAccessorFunction(\"guid\", Type.STRING));\nregisterFunc(new AttributeAccessorFunction(\"ifcClass\", Type.STRING));\nregisterFunc(new AttributeAccessorFunction(\"description\", Type.STRING));\nregisterFunc(\n new AttributeAccessorFunction(\n \"value\",\n Types.or(Type.STRING, Type.NUMERIC, Type.BOOLEAN, Type.ARRAY)\n )\n);\nregisterFunc(new PROPERTYSET());\nregisterFunc(new PROPERTY());\nregisterFunc(new TYPE());\nregisterFunc(new NOT());\nregisterFunc(new TOSTRING());\nregisterFunc(new TONUMERIC(), \"TONUMBER\");\nregisterFunc(new TOBOOLEAN());\nregisterFunc(new TOLOGICAL(), \"NOTFOUNDASUNKNOWN\");\nregisterFunc(new TOIFCDATE());\nregisterFunc(new TOIFCTIME());\nregisterFunc(new TOIFCDATETIME());\nregisterFunc(new TOIFCDURATION());\nregisterFunc(new TOIFCTIMESTAMP());\nregisterFunc(new ADDDURATION());\nregisterFunc(new TOLOWERCASE());\nregisterFunc(new TOUPPERCASE());\nregisterFunc(new SUBSTRING());\nregisterFunc(new SPLIT());\nregisterFunc(new EXISTS());\nregisterFunc(new FuncBooleanBinary(\"AND\", \"and\"));\nregisterFunc(new FuncBooleanBinary(\"OR\", \"or\"));\nregisterFunc(new FuncBooleanBinary(\"XOR\", \"xor\"));\nregisterFunc(new FuncBooleanBinary(\"IMPLIES\", \"implies\"));\nregisterFunc(new EQUALS());\nregisterFunc(new CompareMagnitudes(\"GREATERTHAN\", (cmp) => cmp > 0));\nregisterFunc(new CompareMagnitudes(\"GREATERTHANOREQUAL\", (cmp) => cmp >= 0));\nregisterFunc(new CompareMagnitudes(\"LESSTHAN\", (cmp) => cmp < 0));\nregisterFunc(new CompareMagnitudes(\"LESSTHANOREQUAL\", (cmp) => cmp <= 0));\nregisterFunc(new MatchesPattern(\"CONTAINS\", true, false));\nregisterFunc(new MatchesPattern(\"MATCHES\", true, true));\nregisterFunc(new MatchesPattern(\"REGEXCONTAINS\", false, false));\nregisterFunc(new MatchesPattern(\"REGEXMATCHES\", false, true));\nregisterFunc(new ReplacePattern(\"REPLACE\", true));\nregisterFunc(new ReplacePattern(\"REGEXREPLACE\", false));\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/function/arg/FuncArgArray.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAGL,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,MAAM,OAAO,YAAa,SAAQ,WAAuB;IACvD,YAAY,QAAiB,EAAE,IAAY,EAAE,YAAyB;QACpE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACtC,CAAC;IAED,OAAO;QACL,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAES,qBAAqB,CAC7B,WAAyB,EACzB,eAAiD;QAEjD,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxB,OAAO,eAAe,CAAC;SACxB;QACD,OAAO,IAAI,oBAAoB,CAC7B,QAAQ,CAAC,kBAAkB,EAC3B,YAAY,IAAI,CAAC,IAAI,8BAA8B,IAAI,CAAC,SAAS,CAC/D,KAAK,CACN,EAAE,EACH,KAAK,EACL,WAAW,CAAC,WAAW,EAAE,CAC1B,CAAC;IACJ,CAAC;CACF","file":"expression/function/arg/FuncArgArray.js","sourcesContent":["import { FuncArgBase } from \"./FuncArgBase\";\nimport { ArrayValue } from \"../../../value/ArrayValue\";\nimport { ExprType } from \"../../../type/ExprType\";\nimport { Type, Types } from \"../../../type/Types\";\nimport { FunctionExpr } from \"../FunctionExpr\";\nimport {\n ExprEvalResult,\n ExprEvalSuccess,\n ExprEvalTypeErrorObj,\n} from \"../../ExprEvalResult\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue\";\nimport { ExprKind } from \"../../ExprKind\";\n\nexport class FuncArgArray extends FuncArgBase<ArrayValue> {\n constructor(required: boolean, name: string, defaultValue?: ArrayValue) {\n super(required, name, defaultValue);\n }\n\n getType(): ExprType {\n return Types.array(Type.ANY);\n }\n\n protected transformForTypeCheck(\n callingExpr: FunctionExpr,\n invocationValue: ExprEvalSuccess<ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const result = invocationValue.result;\n const value = result.getValue();\n if (Array.isArray(value)) {\n return invocationValue;\n }\n return new ExprEvalTypeErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n `Argument ${this.name} must be an array, but was ${JSON.stringify(\n value\n )}`,\n value,\n callingExpr.getTextSpan()\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/function/arg/FuncArgArray.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAGL,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,MAAM,OAAO,YAAa,SAAQ,WAAuB;IACvD,YAAY,QAAiB,EAAE,IAAY,EAAE,YAAyB;QACpE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACtC,CAAC;IAED,OAAO;QACL,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAES,qBAAqB,CAC7B,WAAyB,EACzB,eAAiD;QAEjD,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxB,OAAO,eAAe,CAAC;SACxB;QACD,OAAO,IAAI,oBAAoB,CAC7B,QAAQ,CAAC,kBAAkB,EAC3B,YAAY,IAAI,CAAC,IAAI,8BAA8B,IAAI,CAAC,SAAS,CAC/D,KAAK,CACN,EAAE,EACH,KAAK,EACL,WAAW,CAAC,WAAW,EAAE,CAC1B,CAAC;IACJ,CAAC;CACF","file":"expression/function/arg/FuncArgArray.js","sourcesContent":["import { FuncArgBase } from \"./FuncArgBase.js\";\nimport { ArrayValue } from \"../../../value/ArrayValue.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { Type, Types } from \"../../../type/Types.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport {\n ExprEvalResult,\n ExprEvalSuccess,\n ExprEvalTypeErrorObj,\n} from \"../../ExprEvalResult.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport { ExprKind } from \"../../ExprKind.js\";\n\nexport class FuncArgArray extends FuncArgBase<ArrayValue> {\n constructor(required: boolean, name: string, defaultValue?: ArrayValue) {\n super(required, name, defaultValue);\n }\n\n getType(): ExprType {\n return Types.array(Type.ANY);\n }\n\n protected transformForTypeCheck(\n callingExpr: FunctionExpr,\n invocationValue: ExprEvalSuccess<ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const result = invocationValue.result;\n const value = result.getValue();\n if (Array.isArray(value)) {\n return invocationValue;\n }\n return new ExprEvalTypeErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n `Argument ${this.name} must be an array, but was ${JSON.stringify(\n value\n )}`,\n value,\n callingExpr.getTextSpan()\n );\n }\n}\n"]}
@@ -1,14 +1,21 @@
1
1
  import { FuncArg } from "../FuncArg.js";
2
- import { isExprEvalSuccess, } from "../../ExprEvalResult.js";
2
+ import { ExprEvalTypeErrorObj, isExprEvalSuccess, } from "../../ExprEvalResult.js";
3
+ import { ExprKind, isNullish } from "../../../IfcExpression.js";
3
4
  export class FuncArgBase extends FuncArg {
4
5
  constructor(required, name, defaultValue) {
5
6
  super(required, name, defaultValue);
6
7
  }
7
8
  transformValue(callingExpr, invocationValue) {
8
9
  if (isExprEvalSuccess(invocationValue)) {
9
- return this.transformForTypeCheck(callingExpr, invocationValue);
10
+ return this.errorIfNullish(this.transformForTypeCheck(callingExpr, invocationValue), callingExpr);
10
11
  }
11
- return this.transformForError(callingExpr, invocationValue);
12
+ return this.errorIfNullish(this.transformForError(callingExpr, invocationValue), callingExpr);
13
+ }
14
+ errorIfNullish(result, callingExpr) {
15
+ if (isNullish(result)) {
16
+ return new ExprEvalTypeErrorObj(ExprKind.FUNCTION_ARGUMENTS, `Cannot obtain value of argument ${this.name}`, callingExpr.getTextSpan());
17
+ }
18
+ return result;
12
19
  }
13
20
  /**
14
21
  * Override to type-check the successfully evaluated invocationValue.
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/function/arg/FuncArgBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAIL,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAIjC,MAAM,OAAgB,WAAe,SAAQ,OAAU;IACrD,YAAsB,QAAiB,EAAE,IAAY,EAAE,YAAgB;QACrE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACtC,CAAC;IAED,cAAc,CACZ,WAAyB,EACzB,eAAgD;QAEhD,IAAI,iBAAiB,CAAC,eAAe,CAAC,EAAE;YACtC,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;SACjE;QACD,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IAC9D,CAAC;IAED;;;OAGG;IACO,qBAAqB,CAC7B,WAAyB,EACzB,eAAiD;QAEjD,OAAO,eAAe,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACO,iBAAiB,CACzB,WAAyB,EACzB,eAA8B;QAE9B,OAAO,eAAe,CAAC;IACzB,CAAC;CACF","file":"expression/function/arg/FuncArgBase.js","sourcesContent":["import { FuncArg } from \"../FuncArg.js\";\nimport {\n ExprEvalError,\n ExprEvalResult,\n ExprEvalSuccess,\n isExprEvalSuccess,\n} from \"../../ExprEvalResult.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\n\nexport abstract class FuncArgBase<T> extends FuncArg<T> {\n protected constructor(required: boolean, name: string, defaultValue?: T) {\n super(required, name, defaultValue);\n }\n\n transformValue(\n callingExpr: FunctionExpr,\n invocationValue: ExprEvalResult<ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n if (isExprEvalSuccess(invocationValue)) {\n return this.transformForTypeCheck(callingExpr, invocationValue);\n }\n return this.transformForError(callingExpr, invocationValue);\n }\n\n /**\n * Override to type-check the successfully evaluated invocationValue.\n * @protected\n */\n protected transformForTypeCheck(\n callingExpr: FunctionExpr,\n invocationValue: ExprEvalSuccess<ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n return invocationValue;\n }\n\n /**\n * Override to transform the error result obtained from evaluating the invocation value.\n * @param invocationValue\n * @protected\n */\n protected transformForError(\n callingExpr: FunctionExpr,\n invocationValue: ExprEvalError\n ): ExprEvalResult<ExpressionValue> {\n return invocationValue;\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/function/arg/FuncArgBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAIL,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEhE,MAAM,OAAgB,WAAe,SAAQ,OAAU;IACrD,YAAsB,QAAiB,EAAE,IAAY,EAAE,YAAgB;QACrE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACtC,CAAC;IAED,cAAc,CACZ,WAAyB,EACzB,eAAgD;QAEhD,IAAI,iBAAiB,CAAC,eAAe,CAAC,EAAE;YACtC,OAAO,IAAI,CAAC,cAAc,CACxB,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,eAAe,CAAC,EACxD,WAAW,CACZ,CAAC;SACH;QACD,OAAO,IAAI,CAAC,cAAc,CACxB,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,eAAe,CAAC,EACpD,WAAW,CACZ,CAAC;IACJ,CAAC;IAEO,cAAc,CACpB,MAAuC,EACvC,WAAyB;QAEzB,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE;YACrB,OAAO,IAAI,oBAAoB,CAC7B,QAAQ,CAAC,kBAAkB,EAC3B,mCAAmC,IAAI,CAAC,IAAI,EAAE,EAC9C,WAAW,CAAC,WAAW,EAAE,CAC1B,CAAC;SACH;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACO,qBAAqB,CAC7B,WAAyB,EACzB,eAAiD;QAEjD,OAAO,eAAe,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACO,iBAAiB,CACzB,WAAyB,EACzB,eAA8B;QAE9B,OAAO,eAAe,CAAC;IACzB,CAAC;CACF","file":"expression/function/arg/FuncArgBase.js","sourcesContent":["import { FuncArg } from \"../FuncArg.js\";\nimport {\n ExprEvalError,\n ExprEvalResult,\n ExprEvalSuccess,\n ExprEvalTypeErrorObj,\n isExprEvalSuccess,\n} from \"../../ExprEvalResult.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { ExprKind, isNullish } from \"../../../IfcExpression.js\";\n\nexport abstract class FuncArgBase<T> extends FuncArg<T> {\n protected constructor(required: boolean, name: string, defaultValue?: T) {\n super(required, name, defaultValue);\n }\n\n transformValue(\n callingExpr: FunctionExpr,\n invocationValue: ExprEvalResult<ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n if (isExprEvalSuccess(invocationValue)) {\n return this.errorIfNullish(\n this.transformForTypeCheck(callingExpr, invocationValue),\n callingExpr\n );\n }\n return this.errorIfNullish(\n this.transformForError(callingExpr, invocationValue),\n callingExpr\n );\n }\n\n private errorIfNullish(\n result: ExprEvalResult<ExpressionValue>,\n callingExpr: FunctionExpr\n ) {\n if (isNullish(result)) {\n return new ExprEvalTypeErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n `Cannot obtain value of argument ${this.name}`,\n callingExpr.getTextSpan()\n );\n }\n return result;\n }\n\n /**\n * Override to type-check the successfully evaluated invocationValue.\n * @protected\n */\n protected transformForTypeCheck(\n callingExpr: FunctionExpr,\n invocationValue: ExprEvalSuccess<ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n return invocationValue;\n }\n\n /**\n * Override to transform the error result obtained from evaluating the invocation value.\n * @param invocationValue\n * @protected\n */\n protected transformForError(\n callingExpr: FunctionExpr,\n invocationValue: ExprEvalError\n ): ExprEvalResult<ExpressionValue> {\n return invocationValue;\n }\n}\n"]}
@@ -0,0 +1,30 @@
1
+ import { StringValue } from "../../../value/StringValue.js";
2
+ import { ExprEvalTypeErrorObj, isExprEvalError, } from "../../ExprEvalResult.js";
3
+ import { ExprKind } from "../../ExprKind.js";
4
+ import { Type, Types } from "../../../type/Types.js";
5
+ import { IfcDateValue } from "../../../value/IfcDateValue.js";
6
+ import { FuncArgBase } from "./FuncArgBase.js";
7
+ export class FuncArgIfcDateString extends FuncArgBase {
8
+ constructor(required, name, defaultValue) {
9
+ super(required, name, defaultValue);
10
+ }
11
+ getType() {
12
+ return Types.or(Type.STRING);
13
+ }
14
+ transformForTypeCheck(callingExpr, invocationValue) {
15
+ const val = super.transformForTypeCheck(callingExpr, invocationValue);
16
+ if (isExprEvalError(val)) {
17
+ return val;
18
+ }
19
+ if (val.result instanceof StringValue) {
20
+ const stringValue = val.result.getValue();
21
+ if (!IfcDateValue.isValidStringRepresentation(stringValue)) {
22
+ return new ExprEvalTypeErrorObj(ExprKind.FUNCTION_ARGUMENTS, `Argument ${this.name} is an IfcDate of the form 'YYYY-MM-DD', optionally with` +
23
+ `leading + or -, and trailing time zone specification.` +
24
+ `The provided value, '${stringValue}' is not allowed.`, callingExpr.getTextSpan());
25
+ }
26
+ return val;
27
+ }
28
+ }
29
+ }
30
+ //# sourceMappingURL=FuncArgIfcDateString.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["expression/function/arg/FuncArgIfcDateString.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAGL,oBAAoB,EACpB,eAAe,GAChB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,OAAO,oBAAqB,SAAQ,WAAwB;IAChE,YAAY,QAAiB,EAAE,IAAY,EAAE,YAA0B;QACrE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACtC,CAAC;IAED,OAAO;QACL,OAAO,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAES,qBAAqB,CAC7B,WAAyB,EACzB,eAAiD;QAEjD,MAAM,GAAG,GAAG,KAAK,CAAC,qBAAqB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QACtE,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE;YACxB,OAAO,GAAG,CAAC;SACZ;QACD,IAAI,GAAG,CAAC,MAAM,YAAY,WAAW,EAAE;YACrC,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAY,CAAC;YACpD,IAAI,CAAC,YAAY,CAAC,2BAA2B,CAAC,WAAW,CAAC,EAAE;gBAC1D,OAAO,IAAI,oBAAoB,CAC7B,QAAQ,CAAC,kBAAkB,EAC3B,YAAY,IAAI,CAAC,IAAI,0DAA0D;oBAC7E,uDAAuD;oBACvD,wBAAwB,WAAW,mBAAmB,EACxD,WAAW,CAAC,WAAW,EAAE,CAC1B,CAAC;aACH;YACD,OAAO,GAAG,CAAC;SACZ;IACH,CAAC;CACF","file":"expression/function/arg/FuncArgIfcDateString.js","sourcesContent":["import { StringValue } from \"../../../value/StringValue.js\";\nimport {\n ExprEvalResult,\n ExprEvalSuccess,\n ExprEvalTypeErrorObj,\n isExprEvalError,\n} from \"../../ExprEvalResult.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport { ExprKind } from \"../../ExprKind.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { Type, Types } from \"../../../type/Types.js\";\nimport { IfcDateValue } from \"../../../value/IfcDateValue.js\";\nimport { FuncArgBase } from \"./FuncArgBase.js\";\n\nexport class FuncArgIfcDateString extends FuncArgBase<StringValue> {\n constructor(required: boolean, name: string, defaultValue?: StringValue) {\n super(required, name, defaultValue);\n }\n\n getType(): ExprType {\n return Types.or(Type.STRING);\n }\n\n protected transformForTypeCheck(\n callingExpr: FunctionExpr,\n invocationValue: ExprEvalSuccess<ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const val = super.transformForTypeCheck(callingExpr, invocationValue);\n if (isExprEvalError(val)) {\n return val;\n }\n if (val.result instanceof StringValue) {\n const stringValue = val.result.getValue() as string;\n if (!IfcDateValue.isValidStringRepresentation(stringValue)) {\n return new ExprEvalTypeErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n `Argument ${this.name} is an IfcDate of the form 'YYYY-MM-DD', optionally with` +\n `leading + or -, and trailing time zone specification.` +\n `The provided value, '${stringValue}' is not allowed.`,\n callingExpr.getTextSpan()\n );\n }\n return val;\n }\n }\n}\n"]}
@@ -0,0 +1,23 @@
1
+ import { isExprEvalError, } from "../../ExprEvalResult.js";
2
+ import { Type, Types } from "../../../type/Types.js";
3
+ import { IfcDateTimeValue } from "../../../value/IfcDateTimeValue.js";
4
+ import { FuncArgBase } from "./FuncArgBase.js";
5
+ export class FuncArgIfcDateTime extends FuncArgBase {
6
+ constructor(required, name, defaultValue) {
7
+ super(required, name, defaultValue);
8
+ }
9
+ getType() {
10
+ return Types.or(Type.IFC_DATE_TIME);
11
+ }
12
+ transformForTypeCheck(callingExpr, invocationValue) {
13
+ const val = super.transformForTypeCheck(callingExpr, invocationValue);
14
+ if (isExprEvalError(val)) {
15
+ return val;
16
+ }
17
+ const result = val.result;
18
+ if (result instanceof IfcDateTimeValue) {
19
+ return val;
20
+ }
21
+ }
22
+ }
23
+ //# sourceMappingURL=FuncArgIfcDateTime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["expression/function/arg/FuncArgIfcDateTime.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,eAAe,GAChB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,OAAO,kBAAmB,SAAQ,WAA6B;IACnE,YACE,QAAiB,EACjB,IAAY,EACZ,YAA+B;QAE/B,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACtC,CAAC;IAED,OAAO;QACL,OAAO,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACtC,CAAC;IAES,qBAAqB,CAC7B,WAAyB,EACzB,eAAiD;QAEjD,MAAM,GAAG,GAAG,KAAK,CAAC,qBAAqB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QACtE,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE;YACxB,OAAO,GAAG,CAAC;SACZ;QACD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,IAAI,MAAM,YAAY,gBAAgB,EAAE;YACtC,OAAO,GAAG,CAAC;SACZ;IACH,CAAC;CACF","file":"expression/function/arg/FuncArgIfcDateTime.js","sourcesContent":["import {\n ExprEvalResult,\n ExprEvalSuccess,\n isExprEvalError,\n} from \"../../ExprEvalResult.js\";\nimport { FunctionExpr } from \"../FunctionExpr.js\";\nimport { ExpressionValue } from \"../../../value/ExpressionValue.js\";\nimport { ExprType } from \"../../../type/ExprType.js\";\nimport { Type, Types } from \"../../../type/Types.js\";\nimport { IfcDateTimeValue } from \"../../../value/IfcDateTimeValue.js\";\nimport { FuncArgBase } from \"./FuncArgBase.js\";\n\nexport class FuncArgIfcDateTime extends FuncArgBase<IfcDateTimeValue> {\n constructor(\n required: boolean,\n name: string,\n defaultValue?: IfcDateTimeValue\n ) {\n super(required, name, defaultValue);\n }\n\n getType(): ExprType {\n return Types.or(Type.IFC_DATE_TIME);\n }\n\n protected transformForTypeCheck(\n callingExpr: FunctionExpr,\n invocationValue: ExprEvalSuccess<ExpressionValue>\n ): ExprEvalResult<ExpressionValue> {\n const val = super.transformForTypeCheck(callingExpr, invocationValue);\n if (isExprEvalError(val)) {\n return val;\n }\n const result = val.result;\n if (result instanceof IfcDateTimeValue) {\n return val;\n }\n }\n}\n"]}