ifc-expressions 0.3.4 → 2.0.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 (579) hide show
  1. package/README.md +158 -0
  2. package/dist/E.d.ts +45 -0
  3. package/dist/ExprVisitor.d.ts +29 -18
  4. package/dist/IfcExpression.d.ts +17 -11
  5. package/dist/IfcExpressionErrorListener.d.ts +6 -4
  6. package/dist/IfcExpressionUtils.d.ts +1 -0
  7. package/dist/IfcExpressionValidationListener.d.ts +41 -0
  8. package/dist/cjs/E.js +83 -0
  9. package/dist/cjs/E.js.map +1 -0
  10. package/dist/cjs/ExprVisitor.js +162 -78
  11. package/dist/cjs/ExprVisitor.js.map +1 -1
  12. package/dist/cjs/IfcExpression.js +51 -13
  13. package/dist/cjs/IfcExpression.js.map +1 -1
  14. package/dist/cjs/IfcExpressionErrorListener.js +9 -5
  15. package/dist/cjs/IfcExpressionErrorListener.js.map +1 -1
  16. package/dist/cjs/IfcExpressionUtils.js +5 -1
  17. package/dist/cjs/IfcExpressionUtils.js.map +1 -1
  18. package/dist/cjs/IfcExpressionValidationListener.js +184 -0
  19. package/dist/cjs/IfcExpressionValidationListener.js.map +1 -0
  20. package/dist/cjs/context/IfcElementAccessor.js +19 -3
  21. package/dist/cjs/context/IfcElementAccessor.js.map +1 -1
  22. package/dist/cjs/context/IfcPropertyAccessor.js +14 -2
  23. package/dist/cjs/context/IfcPropertyAccessor.js.map +1 -1
  24. package/dist/cjs/context/IfcPropertySetAccessor.js +1 -1
  25. package/dist/cjs/context/IfcPropertySetAccessor.js.map +1 -1
  26. package/dist/cjs/context/IfcRootObjectAccessor.js.map +1 -1
  27. package/dist/cjs/context/IfcTypeObjectAccessor.js +13 -1
  28. package/dist/cjs/context/IfcTypeObjectAccessor.js.map +1 -1
  29. package/dist/cjs/context/NamedObjectAccessor.js.map +1 -1
  30. package/dist/cjs/context/NopContext.js +13 -0
  31. package/dist/cjs/context/NopContext.js.map +1 -0
  32. package/dist/cjs/context/ObjectAccessor.js.map +1 -1
  33. package/dist/cjs/error/ExceptionToExprEvalErrorMapper.js +37 -0
  34. package/dist/cjs/error/ExceptionToExprEvalErrorMapper.js.map +1 -0
  35. package/dist/cjs/error/ExpressionTypeError.js +11 -0
  36. package/dist/cjs/error/ExpressionTypeError.js.map +1 -0
  37. package/dist/cjs/error/IfcExpressionFunctionConfigException.js.map +1 -0
  38. package/dist/cjs/error/InvalidSyntaxException.js +12 -0
  39. package/dist/cjs/error/InvalidSyntaxException.js.map +1 -0
  40. package/dist/cjs/error/MissingFunctionArgumentException.js +14 -0
  41. package/dist/cjs/error/MissingFunctionArgumentException.js.map +1 -0
  42. package/dist/cjs/error/NoSuchFunctionException.js +12 -0
  43. package/dist/cjs/error/NoSuchFunctionException.js.map +1 -0
  44. package/dist/cjs/error/NoSuchMethodException.js +13 -0
  45. package/dist/cjs/error/NoSuchMethodException.js.map +1 -0
  46. package/dist/cjs/{SyntaxErrorException.js → error/SyntaxErrorException.js} +1 -1
  47. package/dist/cjs/error/SyntaxErrorException.js.map +1 -0
  48. package/dist/cjs/error/ValidationException.js +28 -0
  49. package/dist/cjs/error/ValidationException.js.map +1 -0
  50. package/dist/cjs/error/WrongFunctionArgumentTypeException.js +16 -0
  51. package/dist/cjs/error/WrongFunctionArgumentTypeException.js.map +1 -0
  52. package/dist/cjs/error/mapper/MissingFunctionArgumentExceptionMapper.js +11 -0
  53. package/dist/cjs/error/mapper/MissingFunctionArgumentExceptionMapper.js.map +1 -0
  54. package/dist/cjs/error/mapper/NoSuchFunctionExceptionMapper.js +15 -0
  55. package/dist/cjs/error/mapper/NoSuchFunctionExceptionMapper.js.map +1 -0
  56. package/dist/cjs/error/mapper/SyntaxErrorMapper.js +11 -0
  57. package/dist/cjs/error/mapper/SyntaxErrorMapper.js.map +1 -0
  58. package/dist/cjs/error/mapper/ValidationExceptionMapper.js +20 -0
  59. package/dist/cjs/error/mapper/ValidationExceptionMapper.js.map +1 -0
  60. package/dist/cjs/error/mapper/WrongFunctionArgumentTypeExceptionMapper.js +11 -0
  61. package/dist/cjs/error/mapper/WrongFunctionArgumentTypeExceptionMapper.js.map +1 -0
  62. package/dist/cjs/expression/Expr.js.map +1 -1
  63. package/dist/cjs/expression/ExprBase.js.map +1 -1
  64. package/dist/cjs/expression/ExprEvalResult.js +67 -28
  65. package/dist/cjs/expression/ExprEvalResult.js.map +1 -1
  66. package/dist/cjs/expression/ExprKind.js +17 -0
  67. package/dist/cjs/expression/ExprKind.js.map +1 -1
  68. package/dist/cjs/expression/boolean/AndExpr.js +23 -0
  69. package/dist/cjs/expression/boolean/AndExpr.js.map +1 -0
  70. package/dist/cjs/expression/boolean/BooleanLiteralExpr.js +23 -0
  71. package/dist/cjs/expression/boolean/BooleanLiteralExpr.js.map +1 -0
  72. package/dist/cjs/expression/boolean/NotExpr.js +23 -0
  73. package/dist/cjs/expression/boolean/NotExpr.js.map +1 -0
  74. package/dist/cjs/expression/boolean/OrExpr.js +23 -0
  75. package/dist/cjs/expression/boolean/OrExpr.js.map +1 -0
  76. package/dist/cjs/expression/boolean/XorExpr.js +25 -0
  77. package/dist/cjs/expression/boolean/XorExpr.js.map +1 -0
  78. package/dist/cjs/expression/comparison/ComparisonOp.js +23 -0
  79. package/dist/cjs/expression/comparison/ComparisonOp.js.map +1 -0
  80. package/dist/cjs/expression/comparison/EqualsExpr.js +23 -0
  81. package/dist/cjs/expression/comparison/EqualsExpr.js.map +1 -0
  82. package/dist/cjs/expression/comparison/GreaterThan.js +12 -0
  83. package/dist/cjs/expression/comparison/GreaterThan.js.map +1 -0
  84. package/dist/cjs/expression/comparison/GreaterThanOrEqual.js +12 -0
  85. package/dist/cjs/expression/comparison/GreaterThanOrEqual.js.map +1 -0
  86. package/dist/cjs/expression/comparison/LessThan.js +12 -0
  87. package/dist/cjs/expression/comparison/LessThan.js.map +1 -0
  88. package/dist/cjs/expression/comparison/LessThanOrEqual.js +12 -0
  89. package/dist/cjs/expression/comparison/LessThanOrEqual.js.map +1 -0
  90. package/dist/cjs/expression/comparison/NotEqualsExpr.js +23 -0
  91. package/dist/cjs/expression/comparison/NotEqualsExpr.js.map +1 -0
  92. package/dist/cjs/expression/function/Func.js +31 -3
  93. package/dist/cjs/expression/function/Func.js.map +1 -1
  94. package/dist/cjs/expression/function/FuncArg.js +4 -0
  95. package/dist/cjs/expression/function/FuncArg.js.map +1 -1
  96. package/dist/cjs/expression/function/FunctionExpr.js +13 -5
  97. package/dist/cjs/expression/function/FunctionExpr.js.map +1 -1
  98. package/dist/cjs/expression/function/IfcExpressionFunctions.js +64 -6
  99. package/dist/cjs/expression/function/IfcExpressionFunctions.js.map +1 -1
  100. package/dist/cjs/expression/function/arg/FuncArgAny.js +15 -0
  101. package/dist/cjs/expression/function/arg/FuncArgAny.js.map +1 -0
  102. package/dist/cjs/expression/function/arg/FuncArgBase.js.map +1 -1
  103. package/dist/cjs/expression/function/arg/FuncArgBoolean.js +25 -0
  104. package/dist/cjs/expression/function/arg/FuncArgBoolean.js.map +1 -0
  105. package/dist/cjs/expression/function/arg/FuncArgInt.js +4 -0
  106. package/dist/cjs/expression/function/arg/FuncArgInt.js.map +1 -1
  107. package/dist/cjs/expression/function/arg/FuncArgMappings.js +45 -0
  108. package/dist/cjs/expression/function/arg/FuncArgMappings.js.map +1 -0
  109. package/dist/cjs/expression/function/arg/FuncArgNumeric.js +4 -0
  110. package/dist/cjs/expression/function/arg/FuncArgNumeric.js.map +1 -1
  111. package/dist/cjs/expression/function/arg/FuncArgObjectAccessor.js +31 -0
  112. package/dist/cjs/expression/function/arg/FuncArgObjectAccessor.js.map +1 -0
  113. package/dist/cjs/expression/function/arg/FuncArgRegex.js +28 -0
  114. package/dist/cjs/expression/function/arg/FuncArgRegex.js.map +1 -0
  115. package/dist/cjs/expression/function/arg/FuncArgSimpleRegex.js +20 -0
  116. package/dist/cjs/expression/function/arg/FuncArgSimpleRegex.js.map +1 -0
  117. package/dist/cjs/expression/function/arg/FuncArgString.js +25 -0
  118. package/dist/cjs/expression/function/arg/FuncArgString.js.map +1 -0
  119. package/dist/cjs/expression/function/impl/ApplyRegex.js +26 -0
  120. package/dist/cjs/expression/function/impl/ApplyRegex.js.map +1 -0
  121. package/dist/cjs/expression/function/impl/AttributeAccessorFunction.js +27 -0
  122. package/dist/cjs/expression/function/impl/AttributeAccessorFunction.js.map +1 -0
  123. package/dist/cjs/expression/function/impl/CompareMagnitudes.js +39 -0
  124. package/dist/cjs/expression/function/impl/CompareMagnitudes.js.map +1 -0
  125. package/dist/cjs/expression/function/impl/EQUALS.js +28 -0
  126. package/dist/cjs/expression/function/impl/EQUALS.js.map +1 -0
  127. package/dist/cjs/expression/function/impl/EXISTS.js +43 -0
  128. package/dist/cjs/expression/function/impl/EXISTS.js.map +1 -0
  129. package/dist/cjs/expression/function/impl/FuncBooleanBinary.js +29 -0
  130. package/dist/cjs/expression/function/impl/FuncBooleanBinary.js.map +1 -0
  131. package/dist/cjs/expression/function/impl/MAP.js +37 -48
  132. package/dist/cjs/expression/function/impl/MAP.js.map +1 -1
  133. package/dist/cjs/expression/function/impl/MatchesPattern.js +38 -0
  134. package/dist/cjs/expression/function/impl/MatchesPattern.js.map +1 -0
  135. package/dist/cjs/expression/function/impl/NOT.js +23 -0
  136. package/dist/cjs/expression/function/impl/NOT.js.map +1 -0
  137. package/dist/cjs/expression/function/impl/PROPERTY.js +51 -0
  138. package/dist/cjs/expression/function/impl/PROPERTY.js.map +1 -0
  139. package/dist/cjs/expression/function/impl/PROPERTYSET.js +70 -0
  140. package/dist/cjs/expression/function/impl/PROPERTYSET.js.map +1 -0
  141. package/dist/cjs/expression/function/impl/ROUND.js +4 -0
  142. package/dist/cjs/expression/function/impl/ROUND.js.map +1 -1
  143. package/dist/cjs/expression/function/impl/ReplacePattern.js +40 -0
  144. package/dist/cjs/expression/function/impl/ReplacePattern.js.map +1 -0
  145. package/dist/cjs/expression/function/impl/SWITCH.js +65 -0
  146. package/dist/cjs/expression/function/impl/SWITCH.js.map +1 -0
  147. package/dist/cjs/expression/function/impl/TOSTRING.js +21 -0
  148. package/dist/cjs/expression/function/impl/TOSTRING.js.map +1 -0
  149. package/dist/cjs/expression/function/impl/TYPE.js +37 -0
  150. package/dist/cjs/expression/function/impl/TYPE.js.map +1 -0
  151. package/dist/cjs/expression/numeric/DivideExpr.js +7 -0
  152. package/dist/cjs/expression/numeric/DivideExpr.js.map +1 -1
  153. package/dist/cjs/expression/numeric/MinusExpr.js +7 -0
  154. package/dist/cjs/expression/numeric/MinusExpr.js.map +1 -1
  155. package/dist/cjs/expression/numeric/MultiplyExpr.js +7 -0
  156. package/dist/cjs/expression/numeric/MultiplyExpr.js.map +1 -1
  157. package/dist/cjs/expression/numeric/NumericLiteralExpr.js +9 -1
  158. package/dist/cjs/expression/numeric/NumericLiteralExpr.js.map +1 -1
  159. package/dist/cjs/expression/numeric/PlusExpr.js +7 -0
  160. package/dist/cjs/expression/numeric/PlusExpr.js.map +1 -1
  161. package/dist/cjs/expression/numeric/PowerExpr.js +23 -0
  162. package/dist/cjs/expression/numeric/PowerExpr.js.map +1 -0
  163. package/dist/cjs/expression/numeric/UnaryMinusExpr.js +23 -0
  164. package/dist/cjs/expression/numeric/UnaryMinusExpr.js.map +1 -0
  165. package/dist/cjs/expression/poly/PlusOrConcatExpr.js +37 -0
  166. package/dist/cjs/expression/poly/PlusOrConcatExpr.js.map +1 -0
  167. package/dist/cjs/expression/reference/ElemObjectReferenceExpr.js +9 -1
  168. package/dist/cjs/expression/reference/ElemObjectReferenceExpr.js.map +1 -1
  169. package/dist/cjs/expression/reference/PropObjectReferenceExpr.js +9 -1
  170. package/dist/cjs/expression/reference/PropObjectReferenceExpr.js.map +1 -1
  171. package/dist/cjs/expression/string/StringConcatExpr.js +7 -0
  172. package/dist/cjs/expression/string/StringConcatExpr.js.map +1 -1
  173. package/dist/cjs/expression/string/StringLiteralExpr.js +9 -1
  174. package/dist/cjs/expression/string/StringLiteralExpr.js.map +1 -1
  175. package/dist/cjs/expression/structure/ArrayExpr.js +7 -0
  176. package/dist/cjs/expression/structure/ArrayExpr.js.map +1 -1
  177. package/dist/cjs/expression/structure/ParenthesisExpr.js +21 -0
  178. package/dist/cjs/expression/structure/ParenthesisExpr.js.map +1 -0
  179. package/dist/cjs/gen/parser/IfcExpressionLexer.js +84 -87
  180. package/dist/cjs/gen/parser/IfcExpressionLexer.js.map +1 -1
  181. package/dist/cjs/gen/parser/IfcExpressionListener.js.map +1 -1
  182. package/dist/cjs/gen/parser/IfcExpressionParser.js +785 -675
  183. package/dist/cjs/gen/parser/IfcExpressionParser.js.map +1 -1
  184. package/dist/cjs/gen/parser/IfcExpressionVisitor.js.map +1 -1
  185. package/dist/cjs/type/ArrayType.js +69 -0
  186. package/dist/cjs/type/ArrayType.js.map +1 -0
  187. package/dist/cjs/{value/LiteralValue.js → type/ExprType.js} +1 -1
  188. package/dist/cjs/type/ExprType.js.map +1 -0
  189. package/dist/cjs/type/SimpleType.js +46 -0
  190. package/dist/cjs/type/SimpleType.js.map +1 -0
  191. package/dist/cjs/type/TupleType.js +100 -0
  192. package/dist/cjs/type/TupleType.js.map +1 -0
  193. package/dist/cjs/type/TypeDisjunction.js +64 -0
  194. package/dist/cjs/type/TypeDisjunction.js.map +1 -0
  195. package/dist/cjs/type/TypeManager.js +63 -0
  196. package/dist/cjs/type/TypeManager.js.map +1 -0
  197. package/dist/cjs/type/Types.js +91 -0
  198. package/dist/cjs/type/Types.js.map +1 -0
  199. package/dist/cjs/value/ArrayValue.js +18 -0
  200. package/dist/cjs/value/ArrayValue.js.map +1 -1
  201. package/dist/cjs/value/BooleanValue.js +10 -0
  202. package/dist/cjs/value/BooleanValue.js.map +1 -1
  203. package/dist/cjs/value/{PrimitiveValueType.js → BoxedValueTypes.js} +1 -1
  204. package/dist/cjs/value/BoxedValueTypes.js.map +1 -0
  205. package/dist/cjs/value/Comparable.js +9 -0
  206. package/dist/cjs/value/Comparable.js.map +1 -0
  207. package/dist/cjs/{expression/reference/ObjectReferenceExpr.js → value/ExpressionValue.js} +1 -1
  208. package/dist/cjs/value/ExpressionValue.js.map +1 -0
  209. package/dist/cjs/value/LogicalValue.js +11 -0
  210. package/dist/cjs/value/LogicalValue.js.map +1 -1
  211. package/dist/cjs/value/NumericValue.js +10 -0
  212. package/dist/cjs/value/NumericValue.js.map +1 -1
  213. package/dist/cjs/value/ObjectAccessorValue.js +32 -0
  214. package/dist/cjs/value/ObjectAccessorValue.js.map +1 -0
  215. package/dist/cjs/value/ReferenceValue.js +7 -0
  216. package/dist/cjs/value/ReferenceValue.js.map +1 -1
  217. package/dist/cjs/value/StringValue.js +11 -0
  218. package/dist/cjs/value/StringValue.js.map +1 -1
  219. package/dist/cjs/value/Value.js.map +1 -1
  220. package/dist/context/IfcElementAccessor.d.ts +6 -5
  221. package/dist/context/IfcPropertyAccessor.d.ts +5 -4
  222. package/dist/context/IfcPropertySetAccessor.d.ts +4 -4
  223. package/dist/context/IfcRootObjectAccessor.d.ts +2 -2
  224. package/dist/context/IfcTypeObjectAccessor.d.ts +3 -2
  225. package/dist/context/NamedObjectAccessor.d.ts +2 -2
  226. package/dist/context/NopContext.d.ts +5 -0
  227. package/dist/context/ObjectAccessor.d.ts +2 -2
  228. package/dist/error/ExceptionToExprEvalErrorMapper.d.ts +5 -0
  229. package/dist/error/ExpressionTypeError.d.ts +5 -0
  230. package/dist/error/InvalidSyntaxException.d.ts +6 -0
  231. package/dist/error/MissingFunctionArgumentException.d.ts +7 -0
  232. package/dist/error/NoSuchFunctionException.d.ts +6 -0
  233. package/dist/error/NoSuchMethodException.d.ts +6 -0
  234. package/dist/{SyntaxErrorException.d.ts → error/SyntaxErrorException.d.ts} +2 -3
  235. package/dist/error/ValidationException.d.ts +9 -0
  236. package/dist/error/WrongFunctionArgumentTypeException.d.ts +11 -0
  237. package/dist/error/mapper/MissingFunctionArgumentExceptionMapper.d.ts +6 -0
  238. package/dist/error/mapper/NoSuchFunctionExceptionMapper.d.ts +7 -0
  239. package/dist/error/mapper/SyntaxErrorMapper.d.ts +6 -0
  240. package/dist/error/mapper/ValidationExceptionMapper.d.ts +8 -0
  241. package/dist/error/mapper/WrongFunctionArgumentTypeExceptionMapper.d.ts +6 -0
  242. package/dist/expression/Expr.d.ts +3 -0
  243. package/dist/expression/ExprBase.d.ts +4 -1
  244. package/dist/expression/ExprEvalResult.d.ts +60 -15
  245. package/dist/expression/ExprKind.d.ts +18 -1
  246. package/dist/expression/boolean/AndExpr.d.ts +12 -0
  247. package/dist/expression/boolean/BooleanLiteralExpr.d.ts +11 -0
  248. package/dist/expression/boolean/NotExpr.d.ts +12 -0
  249. package/dist/expression/boolean/OrExpr.d.ts +12 -0
  250. package/dist/expression/boolean/XorExpr.d.ts +12 -0
  251. package/dist/expression/comparison/ComparisonOp.d.ts +16 -0
  252. package/dist/expression/comparison/EqualsExpr.d.ts +13 -0
  253. package/dist/expression/comparison/GreaterThan.d.ts +7 -0
  254. package/dist/expression/comparison/GreaterThanOrEqual.d.ts +7 -0
  255. package/dist/expression/comparison/LessThan.d.ts +7 -0
  256. package/dist/expression/comparison/LessThanOrEqual.d.ts +7 -0
  257. package/dist/expression/comparison/NotEqualsExpr.d.ts +13 -0
  258. package/dist/expression/function/Func.d.ts +12 -6
  259. package/dist/expression/function/FuncArg.d.ts +4 -2
  260. package/dist/expression/function/FunctionExpr.d.ts +10 -8
  261. package/dist/expression/function/IfcExpressionFunctions.d.ts +3 -2
  262. package/dist/expression/function/arg/FuncArgAny.d.ts +7 -0
  263. package/dist/expression/function/arg/FuncArgBase.d.ts +5 -5
  264. package/dist/expression/function/arg/FuncArgBoolean.d.ts +10 -0
  265. package/dist/expression/function/arg/FuncArgInt.d.ts +4 -2
  266. package/dist/expression/function/arg/FuncArgMappings.d.ts +12 -0
  267. package/dist/expression/function/arg/FuncArgNumeric.d.ts +4 -2
  268. package/dist/expression/function/arg/FuncArgObjectAccessor.d.ts +11 -0
  269. package/dist/expression/function/arg/FuncArgRegex.d.ts +11 -0
  270. package/dist/expression/function/arg/FuncArgSimpleRegex.d.ts +7 -0
  271. package/dist/expression/function/arg/FuncArgString.d.ts +10 -0
  272. package/dist/expression/function/impl/ApplyRegex.d.ts +8 -0
  273. package/dist/expression/function/impl/AttributeAccessorFunction.d.ts +12 -0
  274. package/dist/expression/function/impl/CompareMagnitudes.d.ts +12 -0
  275. package/dist/expression/function/impl/EQUALS.d.ts +11 -0
  276. package/dist/expression/function/impl/EXISTS.d.ts +11 -0
  277. package/dist/expression/function/impl/FuncBooleanBinary.d.ts +12 -0
  278. package/dist/expression/function/impl/MAP.d.ts +5 -2
  279. package/dist/expression/function/impl/MatchesPattern.d.ts +9 -0
  280. package/dist/expression/function/impl/NOT.d.ts +10 -0
  281. package/dist/expression/function/impl/PROPERTY.d.ts +11 -0
  282. package/dist/expression/function/impl/PROPERTYSET.d.ts +12 -0
  283. package/dist/expression/function/impl/ROUND.d.ts +4 -2
  284. package/dist/expression/function/impl/ReplacePattern.d.ts +10 -0
  285. package/dist/expression/function/impl/SWITCH.d.ts +12 -0
  286. package/dist/expression/function/impl/TOSTRING.d.ts +9 -0
  287. package/dist/expression/function/impl/TYPE.d.ts +10 -0
  288. package/dist/expression/numeric/DivideExpr.d.ts +3 -0
  289. package/dist/expression/numeric/MinusExpr.d.ts +3 -0
  290. package/dist/expression/numeric/MultiplyExpr.d.ts +3 -0
  291. package/dist/expression/numeric/NumericLiteralExpr.d.ts +5 -1
  292. package/dist/expression/numeric/PlusExpr.d.ts +3 -0
  293. package/dist/expression/numeric/PowerExpr.d.ts +12 -0
  294. package/dist/expression/numeric/UnaryMinusExpr.d.ts +12 -0
  295. package/dist/expression/poly/PlusOrConcatExpr.d.ts +13 -0
  296. package/dist/expression/reference/ElemObjectReferenceExpr.d.ts +6 -4
  297. package/dist/expression/reference/PropObjectReferenceExpr.d.ts +6 -4
  298. package/dist/expression/string/StringConcatExpr.d.ts +3 -0
  299. package/dist/expression/string/StringLiteralExpr.d.ts +4 -1
  300. package/dist/expression/structure/ArrayExpr.d.ts +5 -2
  301. package/dist/expression/structure/ParenthesisExpr.d.ts +11 -0
  302. package/dist/gen/parser/IfcExpressionLexer.d.ts +12 -12
  303. package/dist/gen/parser/IfcExpressionListener.d.ts +172 -109
  304. package/dist/gen/parser/IfcExpressionParser.d.ts +172 -119
  305. package/dist/gen/parser/IfcExpressionVisitor.d.ts +102 -63
  306. package/dist/mjs/E.js +79 -0
  307. package/dist/mjs/E.js.map +1 -0
  308. package/dist/mjs/ExprVisitor.js +162 -78
  309. package/dist/mjs/ExprVisitor.js.map +1 -1
  310. package/dist/mjs/IfcExpression.js +50 -13
  311. package/dist/mjs/IfcExpression.js.map +1 -1
  312. package/dist/mjs/IfcExpressionErrorListener.js +10 -6
  313. package/dist/mjs/IfcExpressionErrorListener.js.map +1 -1
  314. package/dist/mjs/IfcExpressionUtils.js +3 -0
  315. package/dist/mjs/IfcExpressionUtils.js.map +1 -1
  316. package/dist/mjs/IfcExpressionValidationListener.js +177 -0
  317. package/dist/mjs/IfcExpressionValidationListener.js.map +1 -0
  318. package/dist/mjs/context/IfcElementAccessor.js +17 -2
  319. package/dist/mjs/context/IfcElementAccessor.js.map +1 -1
  320. package/dist/mjs/context/IfcPropertyAccessor.js +12 -1
  321. package/dist/mjs/context/IfcPropertyAccessor.js.map +1 -1
  322. package/dist/mjs/context/IfcPropertySetAccessor.js +1 -1
  323. package/dist/mjs/context/IfcPropertySetAccessor.js.map +1 -1
  324. package/dist/mjs/context/IfcRootObjectAccessor.js.map +1 -1
  325. package/dist/mjs/context/IfcTypeObjectAccessor.js +11 -0
  326. package/dist/mjs/context/IfcTypeObjectAccessor.js.map +1 -1
  327. package/dist/mjs/context/NamedObjectAccessor.js.map +1 -1
  328. package/dist/mjs/context/NopContext.js +9 -0
  329. package/dist/mjs/context/NopContext.js.map +1 -0
  330. package/dist/mjs/context/ObjectAccessor.js.map +1 -1
  331. package/dist/mjs/error/ExceptionToExprEvalErrorMapper.js +33 -0
  332. package/dist/mjs/error/ExceptionToExprEvalErrorMapper.js.map +1 -0
  333. package/dist/mjs/error/ExpressionTypeError.js +7 -0
  334. package/dist/mjs/error/ExpressionTypeError.js.map +1 -0
  335. package/dist/mjs/error/IfcExpressionFunctionConfigException.js.map +1 -0
  336. package/dist/mjs/error/InvalidSyntaxException.js +8 -0
  337. package/dist/mjs/error/InvalidSyntaxException.js.map +1 -0
  338. package/dist/mjs/error/MissingFunctionArgumentException.js +10 -0
  339. package/dist/mjs/error/MissingFunctionArgumentException.js.map +1 -0
  340. package/dist/mjs/error/NoSuchFunctionException.js +8 -0
  341. package/dist/mjs/error/NoSuchFunctionException.js.map +1 -0
  342. package/dist/mjs/error/NoSuchMethodException.js +9 -0
  343. package/dist/mjs/error/NoSuchMethodException.js.map +1 -0
  344. package/dist/mjs/{SyntaxErrorException.js → error/SyntaxErrorException.js} +1 -1
  345. package/dist/mjs/error/SyntaxErrorException.js.map +1 -0
  346. package/dist/mjs/error/ValidationException.js +24 -0
  347. package/dist/mjs/error/ValidationException.js.map +1 -0
  348. package/dist/mjs/error/WrongFunctionArgumentTypeException.js +12 -0
  349. package/dist/mjs/error/WrongFunctionArgumentTypeException.js.map +1 -0
  350. package/dist/mjs/error/mapper/MissingFunctionArgumentExceptionMapper.js +7 -0
  351. package/dist/mjs/error/mapper/MissingFunctionArgumentExceptionMapper.js.map +1 -0
  352. package/dist/mjs/error/mapper/NoSuchFunctionExceptionMapper.js +11 -0
  353. package/dist/mjs/error/mapper/NoSuchFunctionExceptionMapper.js.map +1 -0
  354. package/dist/mjs/error/mapper/SyntaxErrorMapper.js +7 -0
  355. package/dist/mjs/error/mapper/SyntaxErrorMapper.js.map +1 -0
  356. package/dist/mjs/error/mapper/ValidationExceptionMapper.js +16 -0
  357. package/dist/mjs/error/mapper/ValidationExceptionMapper.js.map +1 -0
  358. package/dist/mjs/error/mapper/WrongFunctionArgumentTypeExceptionMapper.js +7 -0
  359. package/dist/mjs/error/mapper/WrongFunctionArgumentTypeExceptionMapper.js.map +1 -0
  360. package/dist/mjs/expression/Expr.js.map +1 -1
  361. package/dist/mjs/expression/ExprBase.js.map +1 -1
  362. package/dist/mjs/expression/ExprEvalResult.js +60 -25
  363. package/dist/mjs/expression/ExprEvalResult.js.map +1 -1
  364. package/dist/mjs/expression/ExprKind.js +17 -0
  365. package/dist/mjs/expression/ExprKind.js.map +1 -1
  366. package/dist/mjs/expression/boolean/AndExpr.js +19 -0
  367. package/dist/mjs/expression/boolean/AndExpr.js.map +1 -0
  368. package/dist/mjs/expression/boolean/BooleanLiteralExpr.js +19 -0
  369. package/dist/mjs/expression/boolean/BooleanLiteralExpr.js.map +1 -0
  370. package/dist/mjs/expression/boolean/NotExpr.js +19 -0
  371. package/dist/mjs/expression/boolean/NotExpr.js.map +1 -0
  372. package/dist/mjs/expression/boolean/OrExpr.js +19 -0
  373. package/dist/mjs/expression/boolean/OrExpr.js.map +1 -0
  374. package/dist/mjs/expression/boolean/XorExpr.js +21 -0
  375. package/dist/mjs/expression/boolean/XorExpr.js.map +1 -0
  376. package/dist/mjs/expression/comparison/ComparisonOp.js +19 -0
  377. package/dist/mjs/expression/comparison/ComparisonOp.js.map +1 -0
  378. package/dist/mjs/expression/comparison/EqualsExpr.js +19 -0
  379. package/dist/mjs/expression/comparison/EqualsExpr.js.map +1 -0
  380. package/dist/mjs/expression/comparison/GreaterThan.js +8 -0
  381. package/dist/mjs/expression/comparison/GreaterThan.js.map +1 -0
  382. package/dist/mjs/expression/comparison/GreaterThanOrEqual.js +8 -0
  383. package/dist/mjs/expression/comparison/GreaterThanOrEqual.js.map +1 -0
  384. package/dist/mjs/expression/comparison/LessThan.js +8 -0
  385. package/dist/mjs/expression/comparison/LessThan.js.map +1 -0
  386. package/dist/mjs/expression/comparison/LessThanOrEqual.js +8 -0
  387. package/dist/mjs/expression/comparison/LessThanOrEqual.js.map +1 -0
  388. package/dist/mjs/expression/comparison/NotEqualsExpr.js +19 -0
  389. package/dist/mjs/expression/comparison/NotEqualsExpr.js.map +1 -0
  390. package/dist/mjs/expression/function/Func.js +31 -3
  391. package/dist/mjs/expression/function/Func.js.map +1 -1
  392. package/dist/mjs/expression/function/FuncArg.js +4 -0
  393. package/dist/mjs/expression/function/FuncArg.js.map +1 -1
  394. package/dist/mjs/expression/function/FunctionExpr.js +13 -5
  395. package/dist/mjs/expression/function/FunctionExpr.js.map +1 -1
  396. package/dist/mjs/expression/function/IfcExpressionFunctions.js +64 -6
  397. package/dist/mjs/expression/function/IfcExpressionFunctions.js.map +1 -1
  398. package/dist/mjs/expression/function/arg/FuncArgAny.js +11 -0
  399. package/dist/mjs/expression/function/arg/FuncArgAny.js.map +1 -0
  400. package/dist/mjs/expression/function/arg/FuncArgBase.js.map +1 -1
  401. package/dist/mjs/expression/function/arg/FuncArgBoolean.js +21 -0
  402. package/dist/mjs/expression/function/arg/FuncArgBoolean.js.map +1 -0
  403. package/dist/mjs/expression/function/arg/FuncArgInt.js +4 -0
  404. package/dist/mjs/expression/function/arg/FuncArgInt.js.map +1 -1
  405. package/dist/mjs/expression/function/arg/FuncArgMappings.js +41 -0
  406. package/dist/mjs/expression/function/arg/FuncArgMappings.js.map +1 -0
  407. package/dist/mjs/expression/function/arg/FuncArgNumeric.js +4 -0
  408. package/dist/mjs/expression/function/arg/FuncArgNumeric.js.map +1 -1
  409. package/dist/mjs/expression/function/arg/FuncArgObjectAccessor.js +27 -0
  410. package/dist/mjs/expression/function/arg/FuncArgObjectAccessor.js.map +1 -0
  411. package/dist/mjs/expression/function/arg/FuncArgRegex.js +24 -0
  412. package/dist/mjs/expression/function/arg/FuncArgRegex.js.map +1 -0
  413. package/dist/mjs/expression/function/arg/FuncArgSimpleRegex.js +16 -0
  414. package/dist/mjs/expression/function/arg/FuncArgSimpleRegex.js.map +1 -0
  415. package/dist/mjs/expression/function/arg/FuncArgString.js +21 -0
  416. package/dist/mjs/expression/function/arg/FuncArgString.js.map +1 -0
  417. package/dist/mjs/expression/function/impl/ApplyRegex.js +22 -0
  418. package/dist/mjs/expression/function/impl/ApplyRegex.js.map +1 -0
  419. package/dist/mjs/expression/function/impl/AttributeAccessorFunction.js +23 -0
  420. package/dist/mjs/expression/function/impl/AttributeAccessorFunction.js.map +1 -0
  421. package/dist/mjs/expression/function/impl/CompareMagnitudes.js +35 -0
  422. package/dist/mjs/expression/function/impl/CompareMagnitudes.js.map +1 -0
  423. package/dist/mjs/expression/function/impl/EQUALS.js +24 -0
  424. package/dist/mjs/expression/function/impl/EQUALS.js.map +1 -0
  425. package/dist/mjs/expression/function/impl/EXISTS.js +39 -0
  426. package/dist/mjs/expression/function/impl/EXISTS.js.map +1 -0
  427. package/dist/mjs/expression/function/impl/FuncBooleanBinary.js +25 -0
  428. package/dist/mjs/expression/function/impl/FuncBooleanBinary.js.map +1 -0
  429. package/dist/mjs/expression/function/impl/MAP.js +38 -49
  430. package/dist/mjs/expression/function/impl/MAP.js.map +1 -1
  431. package/dist/mjs/expression/function/impl/MatchesPattern.js +34 -0
  432. package/dist/mjs/expression/function/impl/MatchesPattern.js.map +1 -0
  433. package/dist/mjs/expression/function/impl/NOT.js +19 -0
  434. package/dist/mjs/expression/function/impl/NOT.js.map +1 -0
  435. package/dist/mjs/expression/function/impl/PROPERTY.js +47 -0
  436. package/dist/mjs/expression/function/impl/PROPERTY.js.map +1 -0
  437. package/dist/mjs/expression/function/impl/PROPERTYSET.js +66 -0
  438. package/dist/mjs/expression/function/impl/PROPERTYSET.js.map +1 -0
  439. package/dist/mjs/expression/function/impl/ROUND.js +4 -0
  440. package/dist/mjs/expression/function/impl/ROUND.js.map +1 -1
  441. package/dist/mjs/expression/function/impl/ReplacePattern.js +36 -0
  442. package/dist/mjs/expression/function/impl/ReplacePattern.js.map +1 -0
  443. package/dist/mjs/expression/function/impl/SWITCH.js +61 -0
  444. package/dist/mjs/expression/function/impl/SWITCH.js.map +1 -0
  445. package/dist/mjs/expression/function/impl/TOSTRING.js +17 -0
  446. package/dist/mjs/expression/function/impl/TOSTRING.js.map +1 -0
  447. package/dist/mjs/expression/function/impl/TYPE.js +33 -0
  448. package/dist/mjs/expression/function/impl/TYPE.js.map +1 -0
  449. package/dist/mjs/expression/numeric/DivideExpr.js +7 -0
  450. package/dist/mjs/expression/numeric/DivideExpr.js.map +1 -1
  451. package/dist/mjs/expression/numeric/MinusExpr.js +7 -0
  452. package/dist/mjs/expression/numeric/MinusExpr.js.map +1 -1
  453. package/dist/mjs/expression/numeric/MultiplyExpr.js +7 -0
  454. package/dist/mjs/expression/numeric/MultiplyExpr.js.map +1 -1
  455. package/dist/mjs/expression/numeric/NumericLiteralExpr.js +9 -1
  456. package/dist/mjs/expression/numeric/NumericLiteralExpr.js.map +1 -1
  457. package/dist/mjs/expression/numeric/PlusExpr.js +7 -0
  458. package/dist/mjs/expression/numeric/PlusExpr.js.map +1 -1
  459. package/dist/mjs/expression/numeric/PowerExpr.js +19 -0
  460. package/dist/mjs/expression/numeric/PowerExpr.js.map +1 -0
  461. package/dist/mjs/expression/numeric/UnaryMinusExpr.js +19 -0
  462. package/dist/mjs/expression/numeric/UnaryMinusExpr.js.map +1 -0
  463. package/dist/mjs/expression/poly/PlusOrConcatExpr.js +33 -0
  464. package/dist/mjs/expression/poly/PlusOrConcatExpr.js.map +1 -0
  465. package/dist/mjs/expression/reference/ElemObjectReferenceExpr.js +9 -1
  466. package/dist/mjs/expression/reference/ElemObjectReferenceExpr.js.map +1 -1
  467. package/dist/mjs/expression/reference/PropObjectReferenceExpr.js +9 -1
  468. package/dist/mjs/expression/reference/PropObjectReferenceExpr.js.map +1 -1
  469. package/dist/mjs/expression/string/StringConcatExpr.js +7 -0
  470. package/dist/mjs/expression/string/StringConcatExpr.js.map +1 -1
  471. package/dist/mjs/expression/string/StringLiteralExpr.js +9 -1
  472. package/dist/mjs/expression/string/StringLiteralExpr.js.map +1 -1
  473. package/dist/mjs/expression/structure/ArrayExpr.js +7 -0
  474. package/dist/mjs/expression/structure/ArrayExpr.js.map +1 -1
  475. package/dist/mjs/expression/structure/ParenthesisExpr.js +17 -0
  476. package/dist/mjs/expression/structure/ParenthesisExpr.js.map +1 -0
  477. package/dist/mjs/gen/parser/IfcExpressionLexer.js +84 -87
  478. package/dist/mjs/gen/parser/IfcExpressionLexer.js.map +1 -1
  479. package/dist/mjs/gen/parser/IfcExpressionListener.js.map +1 -1
  480. package/dist/mjs/gen/parser/IfcExpressionParser.js +760 -654
  481. package/dist/mjs/gen/parser/IfcExpressionParser.js.map +1 -1
  482. package/dist/mjs/gen/parser/IfcExpressionVisitor.js.map +1 -1
  483. package/dist/mjs/type/ArrayType.js +65 -0
  484. package/dist/mjs/type/ArrayType.js.map +1 -0
  485. package/dist/mjs/type/ExprType.js +2 -0
  486. package/dist/mjs/type/ExprType.js.map +1 -0
  487. package/dist/mjs/type/SimpleType.js +42 -0
  488. package/dist/mjs/type/SimpleType.js.map +1 -0
  489. package/dist/mjs/type/TupleType.js +96 -0
  490. package/dist/mjs/type/TupleType.js.map +1 -0
  491. package/dist/mjs/type/TypeDisjunction.js +60 -0
  492. package/dist/mjs/type/TypeDisjunction.js.map +1 -0
  493. package/dist/mjs/type/TypeManager.js +59 -0
  494. package/dist/mjs/type/TypeManager.js.map +1 -0
  495. package/dist/mjs/type/Types.js +86 -0
  496. package/dist/mjs/type/Types.js.map +1 -0
  497. package/dist/mjs/value/ArrayValue.js +18 -0
  498. package/dist/mjs/value/ArrayValue.js.map +1 -1
  499. package/dist/mjs/value/BooleanValue.js +10 -0
  500. package/dist/mjs/value/BooleanValue.js.map +1 -1
  501. package/dist/mjs/value/BoxedValueTypes.js +2 -0
  502. package/dist/mjs/value/BoxedValueTypes.js.map +1 -0
  503. package/dist/mjs/value/Comparable.js +5 -0
  504. package/dist/mjs/value/Comparable.js.map +1 -0
  505. package/dist/mjs/value/ExpressionValue.js +2 -0
  506. package/dist/mjs/value/ExpressionValue.js.map +1 -0
  507. package/dist/mjs/value/LogicalValue.js +11 -0
  508. package/dist/mjs/value/LogicalValue.js.map +1 -1
  509. package/dist/mjs/value/NumericValue.js +10 -0
  510. package/dist/mjs/value/NumericValue.js.map +1 -1
  511. package/dist/mjs/value/ObjectAccessorValue.js +28 -0
  512. package/dist/mjs/value/ObjectAccessorValue.js.map +1 -0
  513. package/dist/mjs/value/ReferenceValue.js +7 -0
  514. package/dist/mjs/value/ReferenceValue.js.map +1 -1
  515. package/dist/mjs/value/StringValue.js +11 -0
  516. package/dist/mjs/value/StringValue.js.map +1 -1
  517. package/dist/mjs/value/Value.js.map +1 -1
  518. package/dist/type/ArrayType.d.ts +12 -0
  519. package/dist/type/ExprType.d.ts +8 -0
  520. package/dist/type/SimpleType.d.ts +12 -0
  521. package/dist/type/TupleType.d.ts +15 -0
  522. package/dist/type/TypeDisjunction.d.ts +12 -0
  523. package/dist/type/TypeManager.d.ts +21 -0
  524. package/dist/type/Types.d.ts +41 -0
  525. package/dist/value/ArrayValue.d.ts +3 -0
  526. package/dist/value/BooleanValue.d.ts +6 -1
  527. package/dist/value/BoxedValueTypes.d.ts +3 -0
  528. package/dist/value/Comparable.d.ts +4 -0
  529. package/dist/value/{LiteralValue.d.ts → ExpressionValue.d.ts} +2 -1
  530. package/dist/value/LogicalValue.d.ts +3 -0
  531. package/dist/value/NumericValue.d.ts +6 -1
  532. package/dist/value/ObjectAccessorValue.d.ts +13 -0
  533. package/dist/value/ReferenceValue.d.ts +3 -0
  534. package/dist/value/StringValue.d.ts +7 -1
  535. package/dist/value/Value.d.ts +5 -2
  536. package/package.json +1 -1
  537. package/dist/cjs/SyntaxErrorException.js.map +0 -1
  538. package/dist/cjs/expression/function/IfcExpressionFunctionConfigException.js.map +0 -1
  539. package/dist/cjs/expression/numeric/NumParenthesisExpr.js +0 -15
  540. package/dist/cjs/expression/numeric/NumParenthesisExpr.js.map +0 -1
  541. package/dist/cjs/expression/reference/AttributeReferenceExpr.js +0 -30
  542. package/dist/cjs/expression/reference/AttributeReferenceExpr.js.map +0 -1
  543. package/dist/cjs/expression/reference/NestedObjectChainEndExpr.js +0 -28
  544. package/dist/cjs/expression/reference/NestedObjectChainEndExpr.js.map +0 -1
  545. package/dist/cjs/expression/reference/NestedObjectChainExpr.js +0 -40
  546. package/dist/cjs/expression/reference/NestedObjectChainExpr.js.map +0 -1
  547. package/dist/cjs/expression/reference/ObjectReferenceExpr.js.map +0 -1
  548. package/dist/cjs/value/LiteralValue.js.map +0 -1
  549. package/dist/cjs/value/LiteralValueAnyArity.js +0 -3
  550. package/dist/cjs/value/LiteralValueAnyArity.js.map +0 -1
  551. package/dist/cjs/value/PrimitiveValueType.js.map +0 -1
  552. package/dist/expression/numeric/NumParenthesisExpr.d.ts +0 -8
  553. package/dist/expression/reference/AttributeReferenceExpr.d.ts +0 -13
  554. package/dist/expression/reference/NestedObjectChainEndExpr.d.ts +0 -9
  555. package/dist/expression/reference/NestedObjectChainExpr.d.ts +0 -12
  556. package/dist/expression/reference/ObjectReferenceExpr.d.ts +0 -4
  557. package/dist/mjs/SyntaxErrorException.js.map +0 -1
  558. package/dist/mjs/expression/function/IfcExpressionFunctionConfigException.js.map +0 -1
  559. package/dist/mjs/expression/numeric/NumParenthesisExpr.js +0 -11
  560. package/dist/mjs/expression/numeric/NumParenthesisExpr.js.map +0 -1
  561. package/dist/mjs/expression/reference/AttributeReferenceExpr.js +0 -26
  562. package/dist/mjs/expression/reference/AttributeReferenceExpr.js.map +0 -1
  563. package/dist/mjs/expression/reference/NestedObjectChainEndExpr.js +0 -24
  564. package/dist/mjs/expression/reference/NestedObjectChainEndExpr.js.map +0 -1
  565. package/dist/mjs/expression/reference/NestedObjectChainExpr.js +0 -36
  566. package/dist/mjs/expression/reference/NestedObjectChainExpr.js.map +0 -1
  567. package/dist/mjs/expression/reference/ObjectReferenceExpr.js +0 -2
  568. package/dist/mjs/expression/reference/ObjectReferenceExpr.js.map +0 -1
  569. package/dist/mjs/value/LiteralValue.js +0 -2
  570. package/dist/mjs/value/LiteralValue.js.map +0 -1
  571. package/dist/mjs/value/LiteralValueAnyArity.js +0 -2
  572. package/dist/mjs/value/LiteralValueAnyArity.js.map +0 -1
  573. package/dist/mjs/value/PrimitiveValueType.js +0 -2
  574. package/dist/mjs/value/PrimitiveValueType.js.map +0 -1
  575. package/dist/value/LiteralValueAnyArity.d.ts +0 -2
  576. package/dist/value/PrimitiveValueType.d.ts +0 -2
  577. /package/dist/cjs/{expression/function → error}/IfcExpressionFunctionConfigException.js +0 -0
  578. /package/dist/{expression/function → error}/IfcExpressionFunctionConfigException.d.ts +0 -0
  579. /package/dist/mjs/{expression/function → error}/IfcExpressionFunctionConfigException.js +0 -0
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValidationException = void 0;
4
+ class ValidationException extends Error {
5
+ constructor(message, ctx) {
6
+ super(`Validation Failed: ${message} at ${ValidationException.makeColumnsString(ctx)}, near '${ctx.getText()}'`);
7
+ this.fromLine = ctx.start.line;
8
+ this.fromColumn = ctx.start.start;
9
+ this.toLine = ctx.stop.line;
10
+ this.toColumn = ctx.stop.stop;
11
+ }
12
+ static makeColumnsString(ctx) {
13
+ const fromLine = ctx.start.line;
14
+ const fromColumn = ctx.start.start;
15
+ const toLine = ctx.stop.line;
16
+ const toColumn = ctx.stop.stop;
17
+ if (fromLine == toLine) {
18
+ return fromColumn == toColumn
19
+ ? `line ${fromLine}, column ${fromColumn}`
20
+ : `line ${fromLine}, columns ${fromColumn}-${toColumn}`;
21
+ }
22
+ else {
23
+ return `line ${fromLine}, column ${fromColumn} to line ${toLine}, column ${toColumn}`;
24
+ }
25
+ }
26
+ }
27
+ exports.ValidationException = ValidationException;
28
+ //# sourceMappingURL=ValidationException.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/error/ValidationException.ts"],"names":[],"mappings":";;;AAEA,MAAa,mBAAoB,SAAQ,KAAK;IAM5C,YAAY,OAAe,EAAE,GAAsB;QACjD,KAAK,CACH,sBAAsB,OAAO,OAAO,mBAAmB,CAAC,iBAAiB,CACvE,GAAG,CACJ,WAAW,GAAG,CAAC,OAAO,EAAE,GAAG,CAC7B,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;IAChC,CAAC;IAEO,MAAM,CAAC,iBAAiB,CAAC,GAAsB;QACrD,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;QAChC,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;QACnC,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7B,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/B,IAAI,QAAQ,IAAI,MAAM,EAAE;YACtB,OAAO,UAAU,IAAI,QAAQ;gBAC3B,CAAC,CAAC,QAAQ,QAAQ,YAAY,UAAU,EAAE;gBAC1C,CAAC,CAAC,QAAQ,QAAQ,aAAa,UAAU,IAAI,QAAQ,EAAE,CAAC;SAC3D;aAAM;YACL,OAAO,QAAQ,QAAQ,YAAY,UAAU,YAAY,MAAM,YAAY,QAAQ,EAAE,CAAC;SACvF;IACH,CAAC;CACF;AA/BD,kDA+BC","file":"error/ValidationException.js","sourcesContent":["import { ParserRuleContext } from \"antlr4\";\n\nexport class ValidationException extends Error {\n public readonly fromLine: number;\n public readonly toLine: number;\n public readonly fromColumn: number;\n public readonly toColumn: number;\n\n constructor(message: string, ctx: ParserRuleContext) {\n super(\n `Validation Failed: ${message} at ${ValidationException.makeColumnsString(\n ctx\n )}, near '${ctx.getText()}'`\n );\n this.fromLine = ctx.start.line;\n this.fromColumn = ctx.start.start;\n this.toLine = ctx.stop.line;\n this.toColumn = ctx.stop.stop;\n }\n\n private static makeColumnsString(ctx: ParserRuleContext): string {\n const fromLine = ctx.start.line;\n const fromColumn = ctx.start.start;\n const toLine = ctx.stop.line;\n const toColumn = ctx.stop.stop;\n if (fromLine == toLine) {\n return fromColumn == toColumn\n ? `line ${fromLine}, column ${fromColumn}`\n : `line ${fromLine}, columns ${fromColumn}-${toColumn}`;\n } else {\n return `line ${fromLine}, column ${fromColumn} to line ${toLine}, column ${toColumn}`;\n }\n }\n}\n"]}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WrongFunctionArgumentTypeException = void 0;
4
+ const ExpressionTypeError_js_1 = require("./ExpressionTypeError.js");
5
+ class WrongFunctionArgumentTypeException extends ExpressionTypeError_js_1.ExpressionTypeError {
6
+ constructor(functionName, argumentName, expectedType, actualType, argumentIndex, ctx) {
7
+ super(`Function ${functionName}: Actual argument type '${actualType.getName()}' does not satisfy expected type '${expectedType.getName()}' for argument '${argumentName}' at 0-based position ${argumentIndex}.`, ctx);
8
+ this.functionName = functionName;
9
+ this.argumentName = argumentName;
10
+ this.expectedType = expectedType;
11
+ this.actualType = actualType;
12
+ this.argumentIndex = argumentIndex;
13
+ }
14
+ }
15
+ exports.WrongFunctionArgumentTypeException = WrongFunctionArgumentTypeException;
16
+ //# sourceMappingURL=WrongFunctionArgumentTypeException.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/error/WrongFunctionArgumentTypeException.ts"],"names":[],"mappings":";;;AAAA,qEAA+D;AAI/D,MAAa,kCAAmC,SAAQ,4CAAmB;IAOzE,YACE,YAAoB,EACpB,YAAoB,EACpB,YAAsB,EACtB,UAAoB,EACpB,aAAqB,EACrB,GAAsB;QAEtB,KAAK,CACH,YAAY,YAAY,2BAA2B,UAAU,CAAC,OAAO,EAAE,qCAAqC,YAAY,CAAC,OAAO,EAAE,mBAAmB,YAAY,yBAAyB,aAAa,GAAG,EAC1M,GAAG,CACJ,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;CACF;AAzBD,gFAyBC","file":"error/WrongFunctionArgumentTypeException.js","sourcesContent":["import { ExpressionTypeError } from \"./ExpressionTypeError.js\";\nimport { ParserRuleContext } from \"antlr4\";\nimport { ExprType } from \"../type/ExprType.js\";\n\nexport class WrongFunctionArgumentTypeException extends ExpressionTypeError {\n readonly functionName: string;\n readonly argumentName: string;\n readonly expectedType: ExprType;\n readonly actualType: ExprType;\n readonly argumentIndex: number;\n\n constructor(\n functionName: string,\n argumentName: string,\n expectedType: ExprType,\n actualType: ExprType,\n argumentIndex: number,\n ctx: ParserRuleContext\n ) {\n super(\n `Function ${functionName}: Actual argument type '${actualType.getName()}' does not satisfy expected type '${expectedType.getName()}' for argument '${argumentName}' at 0-based position ${argumentIndex}.`,\n ctx\n );\n this.functionName = functionName;\n this.argumentName = argumentName;\n this.expectedType = expectedType;\n this.actualType = actualType;\n this.argumentIndex = argumentIndex;\n }\n}\n"]}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MissingFunctionArgumentExceptionMapper = void 0;
4
+ const ExprEvalResult_js_1 = require("../../expression/ExprEvalResult.js");
5
+ class MissingFunctionArgumentExceptionMapper {
6
+ mapException(exception) {
7
+ return new ExprEvalResult_js_1.ExprEvalMissingFunctionArgumentErrorObj(exception.message, exception.fromLine, exception.fromColumn, exception.functionName, exception.argumentName, exception.index, exception.toLine, exception.toColumn);
8
+ }
9
+ }
10
+ exports.MissingFunctionArgumentExceptionMapper = MissingFunctionArgumentExceptionMapper;
11
+ //# sourceMappingURL=MissingFunctionArgumentExceptionMapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/error/mapper/MissingFunctionArgumentExceptionMapper.ts"],"names":[],"mappings":";;;AACA,0EAG4C;AAG5C,MAAa,sCAAsC;IAGjD,YAAY,CACV,SAA2C;QAE3C,OAAO,IAAI,2DAAuC,CAChD,SAAS,CAAC,OAAO,EACjB,SAAS,CAAC,QAAQ,EAClB,SAAS,CAAC,UAAU,EACpB,SAAS,CAAC,YAAY,EACtB,SAAS,CAAC,YAAY,EACtB,SAAS,CAAC,KAAK,EACf,SAAS,CAAC,MAAM,EAChB,SAAS,CAAC,QAAQ,CACnB,CAAC;IACJ,CAAC;CACF;AAjBD,wFAiBC","file":"error/mapper/MissingFunctionArgumentExceptionMapper.js","sourcesContent":["import { ExceptionToExprEvalErrorMapper } from \"../ExceptionToExprEvalErrorMapper.js\";\nimport {\n ExprEvalMissingFunctionArgumentErrorObj,\n ExprEvalValidationError,\n} from \"../../expression/ExprEvalResult.js\";\nimport { MissingFunctionArgumentException } from \"../MissingFunctionArgumentException.js\";\n\nexport class MissingFunctionArgumentExceptionMapper\n implements ExceptionToExprEvalErrorMapper<MissingFunctionArgumentException>\n{\n mapException(\n exception: MissingFunctionArgumentException\n ): ExprEvalValidationError {\n return new ExprEvalMissingFunctionArgumentErrorObj(\n exception.message,\n exception.fromLine,\n exception.fromColumn,\n exception.functionName,\n exception.argumentName,\n exception.index,\n exception.toLine,\n exception.toColumn\n );\n }\n}\n"]}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NoSuchFunctionExceptionMapper = void 0;
4
+ const ExprEvalResult_js_1 = require("../../expression/ExprEvalResult.js");
5
+ const NoSuchFunctionException_js_1 = require("../NoSuchFunctionException.js");
6
+ class NoSuchFunctionExceptionMapper {
7
+ mapException(exception) {
8
+ const name = exception instanceof NoSuchFunctionException_js_1.NoSuchFunctionException
9
+ ? exception.functionName
10
+ : exception.methodName;
11
+ return new ExprEvalResult_js_1.ExprEvalUnknownFunctionErrorObj(exception.message, exception.fromLine, exception.fromColumn, name, exception.toLine, exception.toColumn);
12
+ }
13
+ }
14
+ exports.NoSuchFunctionExceptionMapper = NoSuchFunctionExceptionMapper;
15
+ //# sourceMappingURL=NoSuchFunctionExceptionMapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/error/mapper/NoSuchFunctionExceptionMapper.ts"],"names":[],"mappings":";;;AACA,0EAG4C;AAC5C,8EAAwE;AAGxE,MAAa,6BAA6B;IAMxC,YAAY,CACV,SAA0D;QAE1D,MAAM,IAAI,GACR,SAAS,YAAY,oDAAuB;YAC1C,CAAC,CAAC,SAAS,CAAC,YAAY;YACxB,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC;QAC3B,OAAO,IAAI,mDAA+B,CACxC,SAAS,CAAC,OAAO,EACjB,SAAS,CAAC,QAAQ,EAClB,SAAS,CAAC,UAAU,EACpB,IAAI,EACJ,SAAS,CAAC,MAAM,EAChB,SAAS,CAAC,QAAQ,CACnB,CAAC;IACJ,CAAC;CACF;AAtBD,sEAsBC","file":"error/mapper/NoSuchFunctionExceptionMapper.js","sourcesContent":["import { ExceptionToExprEvalErrorMapper } from \"../ExceptionToExprEvalErrorMapper.js\";\nimport {\n ExprEvalUnknownFunctionErrorObj,\n ExprEvalValidationError,\n} from \"../../expression/ExprEvalResult.js\";\nimport { NoSuchFunctionException } from \"../NoSuchFunctionException.js\";\nimport { NoSuchMethodException } from \"../NoSuchMethodException.js\";\n\nexport class NoSuchFunctionExceptionMapper\n implements\n ExceptionToExprEvalErrorMapper<\n NoSuchFunctionException | NoSuchMethodException\n >\n{\n mapException(\n exception: NoSuchFunctionException | NoSuchMethodException\n ): ExprEvalValidationError {\n const name =\n exception instanceof NoSuchFunctionException\n ? exception.functionName\n : exception.methodName;\n return new ExprEvalUnknownFunctionErrorObj(\n exception.message,\n exception.fromLine,\n exception.fromColumn,\n name,\n exception.toLine,\n exception.toColumn\n );\n }\n}\n"]}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SyntaxErrorMapper = void 0;
4
+ const ExprEvalResult_js_1 = require("../../expression/ExprEvalResult.js");
5
+ class SyntaxErrorMapper {
6
+ mapException(exception) {
7
+ return new ExprEvalResult_js_1.ExprEvalParseErrorObj(ExprEvalResult_js_1.ExprEvalStatus.SYNTAX_ERROR, exception.message, exception.line, exception.column, "" + exception.offendingSymbol);
8
+ }
9
+ }
10
+ exports.SyntaxErrorMapper = SyntaxErrorMapper;
11
+ //# sourceMappingURL=SyntaxErrorMapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/error/mapper/SyntaxErrorMapper.ts"],"names":[],"mappings":";;;AAEA,0EAI4C;AAE5C,MAAa,iBAAiB;IAG5B,YAAY,CAAC,SAA+B;QAC1C,OAAO,IAAI,yCAAqB,CAC9B,kCAAc,CAAC,YAAY,EAC3B,SAAS,CAAC,OAAO,EACjB,SAAS,CAAC,IAAI,EACd,SAAS,CAAC,MAAM,EAChB,EAAE,GAAG,SAAS,CAAC,eAAe,CAC/B,CAAC;IACJ,CAAC;CACF;AAZD,8CAYC","file":"error/mapper/SyntaxErrorMapper.js","sourcesContent":["import { ExceptionToExprEvalErrorMapper } from \"../ExceptionToExprEvalErrorMapper.js\";\nimport { SyntaxErrorException } from \"../SyntaxErrorException.js\";\nimport {\n ExprEvalError,\n ExprEvalParseErrorObj,\n ExprEvalStatus,\n} from \"../../expression/ExprEvalResult.js\";\n\nexport class SyntaxErrorMapper\n implements ExceptionToExprEvalErrorMapper<SyntaxErrorException>\n{\n mapException(exception: SyntaxErrorException): ExprEvalError {\n return new ExprEvalParseErrorObj(\n ExprEvalStatus.SYNTAX_ERROR,\n exception.message,\n exception.line,\n exception.column,\n \"\" + exception.offendingSymbol\n );\n }\n}\n"]}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValidationExceptionMapper = void 0;
4
+ const ExprEvalResult_js_1 = require("../../expression/ExprEvalResult.js");
5
+ const InvalidSyntaxException_js_1 = require("../InvalidSyntaxException.js");
6
+ const ExpressionTypeError_js_1 = require("../ExpressionTypeError.js");
7
+ class ValidationExceptionMapper {
8
+ mapException(exception) {
9
+ let status = ExprEvalResult_js_1.ExprEvalStatus.VALIDATION_ERROR;
10
+ if (exception instanceof InvalidSyntaxException_js_1.InvalidSyntaxException) {
11
+ status = ExprEvalResult_js_1.ExprEvalStatus.SYNTAX_ERROR;
12
+ }
13
+ else if (exception instanceof ExpressionTypeError_js_1.ExpressionTypeError) {
14
+ status = ExprEvalResult_js_1.ExprEvalStatus.STATIC_TYPE_ERROR;
15
+ }
16
+ return new ExprEvalResult_js_1.ExprEvalValidationErrorObj(status, exception.message, exception.fromLine, exception.fromColumn, exception.toLine, exception.toColumn);
17
+ }
18
+ }
19
+ exports.ValidationExceptionMapper = ValidationExceptionMapper;
20
+ //# sourceMappingURL=ValidationExceptionMapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/error/mapper/ValidationExceptionMapper.ts"],"names":[],"mappings":";;;AACA,0EAI4C;AAC5C,4EAAsE;AAEtE,sEAAgE;AAEhE,MAAa,yBAAyB;IAMpC,YAAY,CACV,SAGuB;QAEvB,IAAI,MAAM,GAAG,kCAAc,CAAC,gBAAgB,CAAC;QAC7C,IAAI,SAAS,YAAY,kDAAsB,EAAE;YAC/C,MAAM,GAAG,kCAAc,CAAC,YAAY,CAAC;SACtC;aAAM,IAAI,SAAS,YAAY,4CAAmB,EAAE;YACnD,MAAM,GAAG,kCAAc,CAAC,iBAAiB,CAAC;SAC3C;QACD,OAAO,IAAI,8CAA0B,CACnC,MAAM,EACN,SAAS,CAAC,OAAO,EACjB,SAAS,CAAC,QAAQ,EAClB,SAAS,CAAC,UAAU,EACpB,SAAS,CAAC,MAAM,EAChB,SAAS,CAAC,QAAQ,CACnB,CAAC;IACJ,CAAC;CACF;AA3BD,8DA2BC","file":"error/mapper/ValidationExceptionMapper.js","sourcesContent":["import { ExceptionToExprEvalErrorMapper } from \"../ExceptionToExprEvalErrorMapper.js\";\nimport {\n ExprEvalStatus,\n ExprEvalValidationError,\n ExprEvalValidationErrorObj,\n} from \"../../expression/ExprEvalResult.js\";\nimport { InvalidSyntaxException } from \"../InvalidSyntaxException.js\";\nimport { ValidationException } from \"../ValidationException.js\";\nimport { ExpressionTypeError } from \"../ExpressionTypeError.js\";\n\nexport class ValidationExceptionMapper\n implements\n ExceptionToExprEvalErrorMapper<\n InvalidSyntaxException | ValidationException | ExpressionTypeError\n >\n{\n mapException(\n exception:\n | InvalidSyntaxException\n | ValidationException\n | ExpressionTypeError\n ): ExprEvalValidationError {\n let status = ExprEvalStatus.VALIDATION_ERROR;\n if (exception instanceof InvalidSyntaxException) {\n status = ExprEvalStatus.SYNTAX_ERROR;\n } else if (exception instanceof ExpressionTypeError) {\n status = ExprEvalStatus.STATIC_TYPE_ERROR;\n }\n return new ExprEvalValidationErrorObj(\n status,\n exception.message,\n exception.fromLine,\n exception.fromColumn,\n exception.toLine,\n exception.toColumn\n );\n }\n}\n"]}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WrongFunctionArgumentTypeExceptionMapper = void 0;
4
+ const ExprEvalResult_js_1 = require("../../expression/ExprEvalResult.js");
5
+ class WrongFunctionArgumentTypeExceptionMapper {
6
+ mapException(exception) {
7
+ return new ExprEvalResult_js_1.ExprEvalWrongFunctionArgumentTypeErrorObj(exception.message, exception.fromLine, exception.fromColumn, exception.functionName, exception.argumentName, exception.argumentIndex, exception.expectedType.getName(), exception.actualType.getName(), exception.toLine, exception.toColumn);
8
+ }
9
+ }
10
+ exports.WrongFunctionArgumentTypeExceptionMapper = WrongFunctionArgumentTypeExceptionMapper;
11
+ //# sourceMappingURL=WrongFunctionArgumentTypeExceptionMapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/error/mapper/WrongFunctionArgumentTypeExceptionMapper.ts"],"names":[],"mappings":";;;AACA,0EAG4C;AAG5C,MAAa,wCAAwC;IAGnD,YAAY,CACV,SAA6C;QAE7C,OAAO,IAAI,6DAAyC,CAClD,SAAS,CAAC,OAAO,EACjB,SAAS,CAAC,QAAQ,EAClB,SAAS,CAAC,UAAU,EACpB,SAAS,CAAC,YAAY,EACtB,SAAS,CAAC,YAAY,EACtB,SAAS,CAAC,aAAa,EACvB,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,EAChC,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,EAC9B,SAAS,CAAC,MAAM,EAChB,SAAS,CAAC,QAAQ,CACnB,CAAC;IACJ,CAAC;CACF;AAnBD,4FAmBC","file":"error/mapper/WrongFunctionArgumentTypeExceptionMapper.js","sourcesContent":["import { ExceptionToExprEvalErrorMapper } from \"../ExceptionToExprEvalErrorMapper.js\";\nimport {\n ExprEvalValidationError,\n ExprEvalWrongFunctionArgumentTypeErrorObj,\n} from \"../../expression/ExprEvalResult.js\";\nimport { WrongFunctionArgumentTypeException } from \"../WrongFunctionArgumentTypeException.js\";\n\nexport class WrongFunctionArgumentTypeExceptionMapper\n implements ExceptionToExprEvalErrorMapper<WrongFunctionArgumentTypeException>\n{\n mapException(\n exception: WrongFunctionArgumentTypeException\n ): ExprEvalValidationError {\n return new ExprEvalWrongFunctionArgumentTypeErrorObj(\n exception.message,\n exception.fromLine,\n exception.fromColumn,\n exception.functionName,\n exception.argumentName,\n exception.argumentIndex,\n exception.expectedType.getName(),\n exception.actualType.getName(),\n exception.toLine,\n exception.toColumn\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/Expr.ts"],"names":[],"mappings":"","file":"expression/Expr.js","sourcesContent":["import { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport { ExprKind } from \"./ExprKind.js\";\nimport { ExprEvalResult } from \"./ExprEvalResult.js\";\n\nexport interface Expr<T> {\n evaluate(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>\n ): ExprEvalResult<T>;\n getKind(): ExprKind;\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/Expr.ts"],"names":[],"mappings":"","file":"expression/Expr.js","sourcesContent":["import { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport { ExprKind } from \"./ExprKind.js\";\nimport { ExprEvalResult } from \"./ExprEvalResult.js\";\nimport { ExprType } from \"../type/ExprType.js\";\n\nexport interface Expr<T> {\n evaluate(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>\n ): ExprEvalResult<T>;\n getKind(): ExprKind;\n toExprString(): string;\n\n getType(): ExprType;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/ExprBase.ts"],"names":[],"mappings":";;;AAEA,2DAK6B;AAG7B,MAAsB,QAAQ;IAG5B,YAAY,QAAkB;QAC5B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAOD,OAAO;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAES,uBAAuB,CAC/B,MAAyB;QAEzB,IAAI,IAAA,mCAAe,EAAC,MAAM,CAAC,EAAE;YAC3B,OAAO,MAAM,CAAC;SACf;QACD,OAAO,IAAI,sCAAkB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;CACF;AAxBD,4BAwBC","file":"expression/ExprBase.js","sourcesContent":["import { Expr } from \"./Expr.js\";\nimport { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport {\n ExprEvalError,\n ExprEvalResult,\n ExprEvalSuccessObj,\n isExprEvalError,\n} from \"./ExprEvalResult.js\";\nimport { ExprKind } from \"./ExprKind.js\";\n\nexport abstract class ExprBase<T> implements Expr<T> {\n private readonly exprKind: ExprKind;\n\n constructor(exprKind: ExprKind) {\n this.exprKind = exprKind;\n }\n\n abstract evaluate(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>\n ): ExprEvalResult<T>;\n\n getKind(): ExprKind {\n return this.exprKind;\n }\n\n protected wrapInResultIfNecessary(\n result: T | ExprEvalError\n ): ExprEvalResult<T> {\n if (isExprEvalError(result)) {\n return result;\n }\n return new ExprEvalSuccessObj(result);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/ExprBase.ts"],"names":[],"mappings":";;;AAEA,2DAK6B;AAI7B,MAAsB,QAAQ;IAG5B,YAAsB,QAAkB;QACtC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAOD,OAAO;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAES,uBAAuB,CAC/B,MAAyB;QAEzB,IAAI,IAAA,mCAAe,EAAC,MAAM,CAAC,EAAE;YAC3B,OAAO,MAAM,CAAC;SACf;QACD,OAAO,IAAI,sCAAkB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;CAKF;AA5BD,4BA4BC","file":"expression/ExprBase.js","sourcesContent":["import { Expr } from \"./Expr.js\";\nimport { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport {\n ExprEvalError,\n ExprEvalResult,\n ExprEvalSuccessObj,\n isExprEvalError,\n} from \"./ExprEvalResult.js\";\nimport { ExprKind } from \"./ExprKind.js\";\nimport { ExprType } from \"../type/ExprType.js\";\n\nexport abstract class ExprBase<T> implements Expr<T> {\n private readonly exprKind: ExprKind;\n\n protected constructor(exprKind: ExprKind) {\n this.exprKind = exprKind;\n }\n\n abstract evaluate(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>\n ): ExprEvalResult<T>;\n\n getKind(): ExprKind {\n return this.exprKind;\n }\n\n protected wrapInResultIfNecessary(\n result: T | ExprEvalError\n ): ExprEvalResult<T> {\n if (isExprEvalError(result)) {\n return result;\n }\n return new ExprEvalSuccessObj(result);\n }\n\n abstract toExprString(): string;\n\n abstract getType(): ExprType;\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ExprEvalTypeErrorObj = exports.ExprEvalValueErrorObj = exports.ExprEvalMissingRequiredFunctionArgumentErrorObj = exports.ExprEvalFunctionEvaluationConsequentialErrorObj = exports.ExprEvalFunctionEvaluationErrorObj = exports.ExprEvalConsequentialError2Obj = exports.ExprEvalConsequentialError1Obj = exports.isExprEvalRefChainError = exports.isExprEvalError = exports.ExprEvalError2Obj = exports.ExprEvalError1Obj = exports.ExprEvalRefChainErrorObj = exports.ExprEvalErrorUndefinedResult = exports.mapErrorObjectToMessage = exports.ExprEvalErrorObj = exports.ExprEvalSuccessObj = exports.isExprEvalSuccess = exports.isExprEvalStatus = exports.ExprEvalStatus = void 0;
3
+ exports.ExprEvalWrongFunctionArgumentTypeErrorObj = exports.ExprEvalMissingFunctionArgumentErrorObj = exports.ExprEvalUnknownFunctionErrorObj = exports.ExprEvalValidationErrorObj = exports.ExprEvalParseErrorObj = exports.ExprEvalTypeErrorObj = exports.ExprEvalValueErrorObj = exports.ExprEvalMissingRequiredFunctionArgumentErrorObj = exports.ExprEvalFunctionEvaluationConsequentialErrorObj = exports.ExprEvalFunctionEvaluationObjectNotFoundErrorObj = exports.ExprEvalFunctionEvaluationErrorObj = exports.ExprEvalConsequentialError2Obj = exports.ExprEvalConsequentialError1Obj = exports.isExprEvalError = exports.ExprEvalError2Obj = exports.ExprEvalError1Obj = exports.ExprEvalErrorUndefinedResult = exports.mapErrorObjectToMessage = exports.ExprEvalErrorObj = exports.ExprEvalSuccessObj = exports.isExprEvalSuccess = exports.isExprEvalStatus = exports.ExprEvalStatus = void 0;
4
+ const ExprKind_js_1 = require("./ExprKind.js");
4
5
  const IfcExpressionUtils_js_1 = require("../IfcExpressionUtils.js");
5
6
  var ExprEvalStatus;
6
7
  (function (ExprEvalStatus) {
@@ -8,12 +9,21 @@ var ExprEvalStatus;
8
9
  ExprEvalStatus[ExprEvalStatus["ERROR"] = 2000] = "ERROR";
9
10
  ExprEvalStatus[ExprEvalStatus["UNDEFINED_RESULT"] = 2001] = "UNDEFINED_RESULT";
10
11
  ExprEvalStatus[ExprEvalStatus["REFERENCE_ERROR"] = 2010] = "REFERENCE_ERROR";
11
- ExprEvalStatus[ExprEvalStatus["MISSING_OPERAND"] = 2011] = "MISSING_OPERAND";
12
- ExprEvalStatus[ExprEvalStatus["MISSING_REQUIRED_FUNCTION_ARGUMENT"] = 2012] = "MISSING_REQUIRED_FUNCTION_ARGUMENT";
13
- ExprEvalStatus[ExprEvalStatus["UNKNOWN_FUNCTION"] = 2014] = "UNKNOWN_FUNCTION";
14
12
  ExprEvalStatus[ExprEvalStatus["CONSEQUENTIAL_ERROR"] = 2020] = "CONSEQUENTIAL_ERROR";
15
13
  ExprEvalStatus[ExprEvalStatus["MATH_ERROR"] = 2030] = "MATH_ERROR";
16
14
  ExprEvalStatus[ExprEvalStatus["TYPE_ERROR"] = 2040] = "TYPE_ERROR";
15
+ ExprEvalStatus[ExprEvalStatus["NOT_FOUND"] = 2050] = "NOT_FOUND";
16
+ ExprEvalStatus[ExprEvalStatus["IFC_PROPERTY_NOT_FOUND"] = 2051] = "IFC_PROPERTY_NOT_FOUND";
17
+ ExprEvalStatus[ExprEvalStatus["IFC_PROPERTY_SET_NOT_FOUND"] = 2052] = "IFC_PROPERTY_SET_NOT_FOUND";
18
+ ExprEvalStatus[ExprEvalStatus["IFC_TYPE_OBJECT_NOT_FOUND"] = 2053] = "IFC_TYPE_OBJECT_NOT_FOUND";
19
+ ExprEvalStatus[ExprEvalStatus["PARSE_ERROR"] = 2080] = "PARSE_ERROR";
20
+ ExprEvalStatus[ExprEvalStatus["SYNTAX_ERROR"] = 2081] = "SYNTAX_ERROR";
21
+ ExprEvalStatus[ExprEvalStatus["VALIDATION_ERROR"] = 2082] = "VALIDATION_ERROR";
22
+ ExprEvalStatus[ExprEvalStatus["STATIC_TYPE_ERROR"] = 2083] = "STATIC_TYPE_ERROR";
23
+ ExprEvalStatus[ExprEvalStatus["MISSING_OPERAND"] = 2084] = "MISSING_OPERAND";
24
+ ExprEvalStatus[ExprEvalStatus["MISSING_REQUIRED_FUNCTION_ARGUMENT"] = 2085] = "MISSING_REQUIRED_FUNCTION_ARGUMENT";
25
+ ExprEvalStatus[ExprEvalStatus["UNKNOWN_FUNCTION"] = 2086] = "UNKNOWN_FUNCTION";
26
+ ExprEvalStatus[ExprEvalStatus["WRONG_FUNCTION_ARGUMENT_TYPE"] = 2088] = "WRONG_FUNCTION_ARGUMENT_TYPE";
17
27
  })(ExprEvalStatus || (exports.ExprEvalStatus = ExprEvalStatus = {}));
18
28
  function isExprEvalStatus(candidate) {
19
29
  return (typeof candidate === "number" &&
@@ -68,23 +78,6 @@ class ExprEvalErrorUndefinedResult extends ExprEvalErrorObj {
68
78
  }
69
79
  }
70
80
  exports.ExprEvalErrorUndefinedResult = ExprEvalErrorUndefinedResult;
71
- class ExprEvalRefChainErrorObj extends ExprEvalErrorObj {
72
- constructor(exprKind, status, errorPathElement, message) {
73
- super(exprKind, status, message);
74
- this.errorPathElement = errorPathElement;
75
- this.path = [errorPathElement];
76
- }
77
- static bubbleUp(error, currentPathElement) {
78
- return {
79
- exprKind: error.exprKind,
80
- status: error.status,
81
- errorPathElement: error.errorPathElement,
82
- path: [currentPathElement, ...error.path],
83
- message: error.message,
84
- };
85
- }
86
- }
87
- exports.ExprEvalRefChainErrorObj = ExprEvalRefChainErrorObj;
88
81
  class ExprEvalError1Obj extends ExprEvalErrorObj {
89
82
  constructor(exprKind, sub, status, message) {
90
83
  super(exprKind, status, message);
@@ -104,13 +97,6 @@ function isExprEvalError(arg) {
104
97
  return isExprEvalStatus(arg.status) && arg.status >= ExprEvalStatus.ERROR;
105
98
  }
106
99
  exports.isExprEvalError = isExprEvalError;
107
- function isExprEvalRefChainError(arg) {
108
- return (isExprEvalStatus(arg.status) &&
109
- arg.status >= ExprEvalStatus.ERROR &&
110
- Array.isArray(arg.path) &&
111
- typeof arg.errorPathElement === "string");
112
- }
113
- exports.isExprEvalRefChainError = isExprEvalRefChainError;
114
100
  class ExprEvalConsequentialError1Obj extends ExprEvalErrorObj {
115
101
  constructor(exprKind, cause, message) {
116
102
  super(exprKind, ExprEvalStatus.CONSEQUENTIAL_ERROR, message || "Consequential error");
@@ -134,6 +120,13 @@ class ExprEvalFunctionEvaluationErrorObj extends ExprEvalErrorObj {
134
120
  }
135
121
  }
136
122
  exports.ExprEvalFunctionEvaluationErrorObj = ExprEvalFunctionEvaluationErrorObj;
123
+ class ExprEvalFunctionEvaluationObjectNotFoundErrorObj extends ExprEvalFunctionEvaluationErrorObj {
124
+ constructor(exprKind, status, message, functionName, objectKey) {
125
+ super(exprKind, status, message, functionName);
126
+ this.offendingKey = objectKey;
127
+ }
128
+ }
129
+ exports.ExprEvalFunctionEvaluationObjectNotFoundErrorObj = ExprEvalFunctionEvaluationObjectNotFoundErrorObj;
137
130
  class ExprEvalFunctionEvaluationConsequentialErrorObj extends ExprEvalFunctionEvaluationErrorObj {
138
131
  constructor(exprKind, functionName, cause) {
139
132
  super(exprKind, ExprEvalStatus.CONSEQUENTIAL_ERROR, `Error evaluating function ${functionName}`, functionName);
@@ -162,4 +155,50 @@ class ExprEvalTypeErrorObj extends ExprEvalValueErrorObj {
162
155
  }
163
156
  }
164
157
  exports.ExprEvalTypeErrorObj = ExprEvalTypeErrorObj;
158
+ class ExprEvalParseErrorObj extends ExprEvalErrorObj {
159
+ constructor(status, message, line, column, offendingInput) {
160
+ super(ExprKind_js_1.ExprKind.PARSE_ERROR, status, message);
161
+ this.line = line;
162
+ this.column = column;
163
+ this.offendingInput = offendingInput;
164
+ }
165
+ }
166
+ exports.ExprEvalParseErrorObj = ExprEvalParseErrorObj;
167
+ class ExprEvalValidationErrorObj extends ExprEvalErrorObj {
168
+ constructor(status, message, line, column, toLine, toColumn) {
169
+ super(ExprKind_js_1.ExprKind.PARSE_ERROR, status, message);
170
+ this.line = line;
171
+ this.toLine = toLine;
172
+ this.column = column;
173
+ this.toColumn = toColumn;
174
+ }
175
+ }
176
+ exports.ExprEvalValidationErrorObj = ExprEvalValidationErrorObj;
177
+ class ExprEvalUnknownFunctionErrorObj extends ExprEvalValidationErrorObj {
178
+ constructor(message, line, column, functionName, toLine, toColumn) {
179
+ super(ExprEvalStatus.UNKNOWN_FUNCTION, message, line, column, toLine, toColumn);
180
+ this.functionName = functionName;
181
+ }
182
+ }
183
+ exports.ExprEvalUnknownFunctionErrorObj = ExprEvalUnknownFunctionErrorObj;
184
+ class ExprEvalMissingFunctionArgumentErrorObj extends ExprEvalValidationErrorObj {
185
+ constructor(message, line, column, functionName, argumentName, argumentIndex, toLine, toColumn) {
186
+ super(ExprEvalStatus.MISSING_REQUIRED_FUNCTION_ARGUMENT, message, line, column, toLine, toColumn);
187
+ this.functionName = functionName;
188
+ this.argumentName = argumentName;
189
+ this.argumentIndex = argumentIndex;
190
+ }
191
+ }
192
+ exports.ExprEvalMissingFunctionArgumentErrorObj = ExprEvalMissingFunctionArgumentErrorObj;
193
+ class ExprEvalWrongFunctionArgumentTypeErrorObj extends ExprEvalValidationErrorObj {
194
+ constructor(message, line, column, functionName, argumentName, argumentIndex, expectedType, actualType, toLine, toColumn) {
195
+ super(ExprEvalStatus.WRONG_FUNCTION_ARGUMENT_TYPE, message, line, column, toLine, toColumn);
196
+ this.functionName = functionName;
197
+ this.argumentName = argumentName;
198
+ this.argumentIndex = argumentIndex;
199
+ this.expectedType = expectedType;
200
+ this.actualType = actualType;
201
+ }
202
+ }
203
+ exports.ExprEvalWrongFunctionArgumentTypeErrorObj = ExprEvalWrongFunctionArgumentTypeErrorObj;
165
204
  //# sourceMappingURL=ExprEvalResult.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/ExprEvalResult.ts"],"names":[],"mappings":"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","file":"expression/ExprEvalResult.js","sourcesContent":["import { Expr } from \"./Expr.js\";\nimport { ExprKind } from \"./ExprKind.js\";\nimport { isNullish } from \"../IfcExpressionUtils.js\";\n\nexport enum ExprEvalStatus {\n SUCCESS = 1000,\n ERROR = 2000,\n UNDEFINED_RESULT = 2001,\n REFERENCE_ERROR = 2010,\n MISSING_OPERAND,\n MISSING_REQUIRED_FUNCTION_ARGUMENT = 2012,\n UNKNOWN_FUNCTION = 2014,\n CONSEQUENTIAL_ERROR = 2020,\n MATH_ERROR = 2030,\n TYPE_ERROR = 2040,\n}\n\nexport function isExprEvalStatus(candidate: number): boolean {\n return (\n typeof candidate === \"number\" &&\n typeof ExprEvalStatus[candidate] !== \"undefined\"\n );\n}\n\nexport type ExprEvalResult<T> = ExprEvalSuccess<T> | ExprEvalError;\n\nexport type ExprEvalSuccess<T> = {\n status: ExprEvalStatus;\n result: T;\n};\n\nexport function isExprEvalSuccess(arg: any): arg is ExprEvalSuccess<unknown> {\n return (\n isExprEvalStatus(arg.status) &&\n arg.status >= ExprEvalStatus.SUCCESS &&\n arg.status < ExprEvalStatus.ERROR &&\n typeof arg.result !== \"undefined\"\n );\n}\n\nexport class ExprEvalSuccessObj<T> {\n public readonly result: T;\n public readonly status: ExprEvalStatus;\n\n constructor(result: T) {\n this.result = result;\n this.status = ExprEvalStatus.SUCCESS;\n }\n}\n\nexport class ExprEvalErrorObj {\n public readonly status: ExprEvalStatus;\n public readonly exprKind: ExprKind;\n public readonly message?: string;\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus = ExprEvalStatus.ERROR,\n message?: any\n ) {\n if (!isExprEvalStatus(status) || status < ExprEvalStatus.ERROR) {\n throw new Error(`ExprEvalStatus ${status} is not an error status\"`);\n }\n this.status = status;\n this.exprKind = exprKind;\n if (!isNullish(message)) {\n this.message = mapErrorObjectToMessage(message);\n }\n }\n}\n\nexport function mapErrorObjectToMessage(errorObjectOrMessage: any): string {\n if (typeof errorObjectOrMessage === \"string\") {\n return errorObjectOrMessage;\n } else if (errorObjectOrMessage instanceof Error) {\n return errorObjectOrMessage.message;\n } else if (Array.isArray(errorObjectOrMessage)) {\n return errorObjectOrMessage\n .map((m) => this.createErrorMessage(m))\n .join(\" \");\n }\n return JSON.stringify(errorObjectOrMessage);\n}\n\nexport class ExprEvalErrorUndefinedResult extends ExprEvalErrorObj {\n constructor(epxrKind: ExprKind) {\n super(\n epxrKind,\n ExprEvalStatus.UNDEFINED_RESULT,\n \"Expression evaluated to undefined or null - this should never happen\"\n );\n }\n}\n\nexport class ExprEvalRefChainErrorObj extends ExprEvalErrorObj {\n public readonly errorPathElement: string;\n public readonly path: Array<string>;\n\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus,\n errorPathElement: string,\n message?: any\n ) {\n super(exprKind, status, message);\n this.errorPathElement = errorPathElement;\n this.path = [errorPathElement];\n }\n\n public static bubbleUp(\n error: ExprEvalRefChainError,\n currentPathElement\n ): ExprEvalRefChainError {\n return {\n exprKind: error.exprKind,\n status: error.status,\n errorPathElement: error.errorPathElement,\n path: [currentPathElement, ...error.path],\n message: error.message,\n };\n }\n}\n\nexport class ExprEvalError1Obj extends ExprEvalErrorObj {\n public readonly sub: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n sub: ExprEvalResult<unknown>,\n status: ExprEvalStatus,\n message?: any\n ) {\n super(exprKind, status, message);\n this.sub = sub;\n }\n}\n\nexport class ExprEvalError2Obj extends ExprEvalErrorObj {\n public readonly left: ExprEvalResult<unknown>;\n public readonly right: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n left: ExprEvalResult<unknown>,\n right: ExprEvalResult<unknown>,\n status?: ExprEvalStatus,\n message?: any\n ) {\n super(exprKind, status, message);\n this.left = left;\n this.right = right;\n }\n}\n\nexport function isExprEvalError(arg: any): arg is ExprEvalError {\n return isExprEvalStatus(arg.status) && arg.status >= ExprEvalStatus.ERROR;\n}\n\nexport type ExprEvalError =\n | ExprEvalUnspecificError\n | ExprEvalReferencError\n | ExprEvalErrorUndefinedResult\n | ExprEvalMissingRequiredFunctionArgumentError\n | ExprEvalValueError<unknown>;\n\ntype ExprEvalUnspecificError = {\n readonly exprKind: ExprKind;\n readonly status: ExprEvalStatus;\n readonly message?: string;\n};\n\nexport type ExprEvalRefChainError = ExprEvalUnspecificError & {\n readonly errorPathElement: string;\n readonly path: Array<string>;\n};\n\nexport function isExprEvalRefChainError(\n arg: any\n): arg is ExprEvalRefChainError {\n return (\n isExprEvalStatus(arg.status) &&\n arg.status >= ExprEvalStatus.ERROR &&\n Array.isArray(arg.path) &&\n typeof arg.errorPathElement === \"string\"\n );\n}\n\nexport type ExprEvalReferencError = ExprEvalUnspecificError & {\n readonly status: ExprEvalStatus.REFERENCE_ERROR;\n readonly expr: Expr<unknown>;\n};\n\nexport type ExprEvalConsequentialError1 = ExprEvalUnspecificError & {\n readonly status: ExprEvalStatus.CONSEQUENTIAL_ERROR;\n readonly exprKind: ExprKind;\n readonly cause: ExprEvalError;\n};\n\nexport class ExprEvalConsequentialError1Obj extends ExprEvalErrorObj {\n public readonly exprKind: ExprKind;\n public readonly cause: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n cause: ExprEvalResult<unknown>,\n message?: any\n ) {\n super(\n exprKind,\n ExprEvalStatus.CONSEQUENTIAL_ERROR,\n message || \"Consequential error\"\n );\n this.exprKind = exprKind;\n this.cause = cause;\n }\n}\n\nexport type ExprEvalConsequentialError2 = ExprEvalUnspecificError & {\n readonly status: ExprEvalStatus.CONSEQUENTIAL_ERROR;\n readonly exprKind: ExprKind;\n readonly leftCause: ExprEvalResult<unknown>;\n readonly rightCause: ExprEvalResult<unknown>;\n};\n\nexport class ExprEvalConsequentialError2Obj extends ExprEvalErrorObj {\n public readonly leftCause: ExprEvalResult<unknown>;\n public readonly rightCause: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n leftCause: ExprEvalResult<unknown>,\n rightCause: ExprEvalResult<unknown>,\n message?: any\n ) {\n super(\n exprKind,\n ExprEvalStatus.CONSEQUENTIAL_ERROR,\n message || \"Consequential error\"\n );\n this.leftCause = leftCause;\n this.rightCause = rightCause;\n }\n}\n\nexport type ExprEvalFunctionEvaluationError = ExprEvalUnspecificError & {\n functionName: string;\n};\n\nexport type ExprEvalMissingRequiredFunctionArgumentError =\n ExprEvalFunctionEvaluationError & {\n argumentName: string;\n argumentIndex: number;\n };\n\nexport type ExprEvalFunctionEvaluationConsequentialError =\n ExprEvalFunctionEvaluationError & {\n cause: ExprEvalUnspecificError;\n };\n\nexport class ExprEvalFunctionEvaluationErrorObj extends ExprEvalErrorObj {\n public readonly functionName: string;\n\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus,\n message: any,\n functionName: string\n ) {\n super(exprKind, status, message);\n this.functionName = functionName;\n }\n}\n\nexport class ExprEvalFunctionEvaluationConsequentialErrorObj extends ExprEvalFunctionEvaluationErrorObj {\n public readonly cause: ExprEvalError;\n\n constructor(exprKind: ExprKind, functionName: string, cause: ExprEvalError) {\n super(\n exprKind,\n ExprEvalStatus.CONSEQUENTIAL_ERROR,\n `Error evaluating function ${functionName}`,\n functionName\n );\n this.cause = cause;\n }\n}\n\nexport class ExprEvalMissingRequiredFunctionArgumentErrorObj extends ExprEvalFunctionEvaluationErrorObj {\n public readonly argumentName: string;\n public readonly argumentIndex: number;\n\n constructor(\n exprKind: ExprKind,\n message: any,\n functionName: string,\n argumentName: string,\n argumentIndex: number\n ) {\n super(\n exprKind,\n ExprEvalStatus.MISSING_REQUIRED_FUNCTION_ARGUMENT,\n message,\n functionName\n );\n this.argumentName = argumentName;\n this.argumentIndex = argumentIndex;\n }\n}\n\nexport type ExprEvalTypeError = ExprEvalUnspecificError & {\n status: ExprEvalStatus.TYPE_ERROR;\n};\n\nexport type ExprEvalValueError<T> = ExprEvalUnspecificError & {\n offendingValue: T;\n};\n\nexport class ExprEvalValueErrorObj<T> extends ExprEvalErrorObj {\n public readonly offendingValue: T;\n\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus,\n message: any,\n offendingValue: T\n ) {\n super(exprKind, status, message);\n this.offendingValue = offendingValue;\n }\n}\n\nexport class ExprEvalTypeErrorObj<T> extends ExprEvalValueErrorObj<T> {\n constructor(exprKind: ExprKind, message: any, offendingValue: T) {\n super(exprKind, ExprEvalStatus.TYPE_ERROR, message, offendingValue);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/ExprEvalResult.ts"],"names":[],"mappings":"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","file":"expression/ExprEvalResult.js","sourcesContent":["import { Expr } from \"./Expr.js\";\nimport { ExprKind } from \"./ExprKind.js\";\nimport { isNullish } from \"../IfcExpressionUtils.js\";\n\nexport enum ExprEvalStatus {\n SUCCESS = 1000,\n ERROR = 2000,\n UNDEFINED_RESULT = 2001,\n REFERENCE_ERROR = 2010,\n CONSEQUENTIAL_ERROR = 2020,\n MATH_ERROR = 2030,\n TYPE_ERROR = 2040,\n NOT_FOUND = 2050,\n IFC_PROPERTY_NOT_FOUND = 2051,\n IFC_PROPERTY_SET_NOT_FOUND = 2052,\n IFC_TYPE_OBJECT_NOT_FOUND = 2053,\n PARSE_ERROR = 2080,\n SYNTAX_ERROR = 2081,\n VALIDATION_ERROR = 2082,\n STATIC_TYPE_ERROR = 2083,\n MISSING_OPERAND = 2084,\n MISSING_REQUIRED_FUNCTION_ARGUMENT = 2085,\n UNKNOWN_FUNCTION = 2086,\n WRONG_FUNCTION_ARGUMENT_TYPE = 2088,\n}\n\nexport function isExprEvalStatus(candidate: number): boolean {\n return (\n typeof candidate === \"number\" &&\n typeof ExprEvalStatus[candidate] !== \"undefined\"\n );\n}\n\nexport type ExprEvalResult<T> = ExprEvalSuccess<T> | ExprEvalError;\n\nexport type ExprEvalSuccess<T> = {\n status: ExprEvalStatus;\n result: T;\n};\n\nexport function isExprEvalSuccess(arg: any): arg is ExprEvalSuccess<unknown> {\n return (\n isExprEvalStatus(arg.status) &&\n arg.status >= ExprEvalStatus.SUCCESS &&\n arg.status < ExprEvalStatus.ERROR &&\n typeof arg.result !== \"undefined\"\n );\n}\n\nexport class ExprEvalSuccessObj<T> {\n public readonly result: T;\n public readonly status: ExprEvalStatus;\n\n constructor(result: T) {\n this.result = result;\n this.status = ExprEvalStatus.SUCCESS;\n }\n}\n\nexport class ExprEvalErrorObj {\n public readonly status: ExprEvalStatus;\n public readonly exprKind: ExprKind;\n public readonly message?: string;\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus = ExprEvalStatus.ERROR,\n message?: any\n ) {\n if (!isExprEvalStatus(status) || status < ExprEvalStatus.ERROR) {\n throw new Error(`ExprEvalStatus ${status} is not an error status\"`);\n }\n this.status = status;\n this.exprKind = exprKind;\n if (!isNullish(message)) {\n this.message = mapErrorObjectToMessage(message);\n }\n }\n}\n\nexport function mapErrorObjectToMessage(errorObjectOrMessage: any): string {\n if (typeof errorObjectOrMessage === \"string\") {\n return errorObjectOrMessage;\n } else if (errorObjectOrMessage instanceof Error) {\n return errorObjectOrMessage.message;\n } else if (Array.isArray(errorObjectOrMessage)) {\n return errorObjectOrMessage\n .map((m) => this.createErrorMessage(m))\n .join(\" \");\n }\n return JSON.stringify(errorObjectOrMessage);\n}\n\nexport class ExprEvalErrorUndefinedResult extends ExprEvalErrorObj {\n constructor(epxrKind: ExprKind) {\n super(\n epxrKind,\n ExprEvalStatus.UNDEFINED_RESULT,\n \"Expression evaluated to undefined or null - this should never happen\"\n );\n }\n}\n\nexport class ExprEvalError1Obj extends ExprEvalErrorObj {\n public readonly sub: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n sub: ExprEvalResult<unknown>,\n status: ExprEvalStatus,\n message?: any\n ) {\n super(exprKind, status, message);\n this.sub = sub;\n }\n}\n\nexport class ExprEvalError2Obj extends ExprEvalErrorObj {\n public readonly left: ExprEvalResult<unknown>;\n public readonly right: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n left: ExprEvalResult<unknown>,\n right: ExprEvalResult<unknown>,\n status?: ExprEvalStatus,\n message?: any\n ) {\n super(exprKind, status, message);\n this.left = left;\n this.right = right;\n }\n}\n\nexport function isExprEvalError(arg: any): arg is ExprEvalError {\n return isExprEvalStatus(arg.status) && arg.status >= ExprEvalStatus.ERROR;\n}\n\nexport type ExprEvalError =\n | ExprEvalUnspecificError\n | ExprEvalReferencError\n | ExprEvalErrorUndefinedResult\n | ExprEvalMissingRequiredFunctionArgumentError\n | ExprEvalValueError<unknown>;\n\ntype ExprEvalUnspecificError = {\n readonly exprKind: ExprKind;\n readonly status: ExprEvalStatus;\n readonly message?: string;\n};\n\nexport type ExprEvalReferencError = ExprEvalUnspecificError & {\n readonly status: ExprEvalStatus.REFERENCE_ERROR;\n readonly expr: Expr<unknown>;\n};\n\nexport type ExprEvalConsequentialError1 = ExprEvalUnspecificError & {\n readonly status: ExprEvalStatus.CONSEQUENTIAL_ERROR;\n readonly exprKind: ExprKind;\n readonly cause: ExprEvalError;\n};\n\nexport class ExprEvalConsequentialError1Obj extends ExprEvalErrorObj {\n public readonly exprKind: ExprKind;\n public readonly cause: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n cause: ExprEvalResult<unknown>,\n message?: any\n ) {\n super(\n exprKind,\n ExprEvalStatus.CONSEQUENTIAL_ERROR,\n message || \"Consequential error\"\n );\n this.exprKind = exprKind;\n this.cause = cause;\n }\n}\n\nexport type ExprEvalConsequentialError2 = ExprEvalUnspecificError & {\n readonly status: ExprEvalStatus.CONSEQUENTIAL_ERROR;\n readonly exprKind: ExprKind;\n readonly leftCause: ExprEvalResult<unknown>;\n readonly rightCause: ExprEvalResult<unknown>;\n};\n\nexport class ExprEvalConsequentialError2Obj extends ExprEvalErrorObj {\n public readonly leftCause: ExprEvalResult<unknown>;\n public readonly rightCause: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n leftCause: ExprEvalResult<unknown>,\n rightCause: ExprEvalResult<unknown>,\n message?: any\n ) {\n super(\n exprKind,\n ExprEvalStatus.CONSEQUENTIAL_ERROR,\n message || \"Consequential error\"\n );\n this.leftCause = leftCause;\n this.rightCause = rightCause;\n }\n}\n\nexport type ExprEvalFunctionEvaluationError = ExprEvalUnspecificError & {\n functionName: string;\n};\n\nexport type ExprEvalMissingRequiredFunctionArgumentError =\n ExprEvalFunctionEvaluationError & {\n argumentName: string;\n argumentIndex: number;\n };\n\nexport type ExprEvalFunctionEvaluationConsequentialError =\n ExprEvalFunctionEvaluationError & {\n cause: ExprEvalUnspecificError;\n };\n\nexport class ExprEvalFunctionEvaluationErrorObj extends ExprEvalErrorObj {\n public readonly functionName: string;\n\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus,\n message: any,\n functionName: string\n ) {\n super(exprKind, status, message);\n this.functionName = functionName;\n }\n}\n\nexport class ExprEvalFunctionEvaluationObjectNotFoundErrorObj extends ExprEvalFunctionEvaluationErrorObj {\n public readonly offendingKey: string;\n\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus,\n message: any,\n functionName: string,\n objectKey: string\n ) {\n super(exprKind, status, message, functionName);\n this.offendingKey = objectKey;\n }\n}\n\nexport class ExprEvalFunctionEvaluationConsequentialErrorObj extends ExprEvalFunctionEvaluationErrorObj {\n public readonly cause: ExprEvalError;\n\n constructor(exprKind: ExprKind, functionName: string, cause: ExprEvalError) {\n super(\n exprKind,\n ExprEvalStatus.CONSEQUENTIAL_ERROR,\n `Error evaluating function ${functionName}`,\n functionName\n );\n this.cause = cause;\n }\n}\n\nexport class ExprEvalMissingRequiredFunctionArgumentErrorObj extends ExprEvalFunctionEvaluationErrorObj {\n public readonly argumentName: string;\n public readonly argumentIndex: number;\n\n constructor(\n exprKind: ExprKind,\n message: any,\n functionName: string,\n argumentName: string,\n argumentIndex: number\n ) {\n super(\n exprKind,\n ExprEvalStatus.MISSING_REQUIRED_FUNCTION_ARGUMENT,\n message,\n functionName\n );\n this.argumentName = argumentName;\n this.argumentIndex = argumentIndex;\n }\n}\n\nexport type ExprEvalTypeError = ExprEvalUnspecificError & {\n status: ExprEvalStatus.TYPE_ERROR;\n};\n\nexport type ExprEvalValueError<T> = ExprEvalUnspecificError & {\n offendingValue: T;\n};\n\nexport class ExprEvalValueErrorObj<T> extends ExprEvalErrorObj {\n public readonly offendingValue: T;\n\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus,\n message: any,\n offendingValue: T\n ) {\n super(exprKind, status, message);\n this.offendingValue = offendingValue;\n }\n}\n\nexport class ExprEvalTypeErrorObj<T> extends ExprEvalValueErrorObj<T> {\n constructor(exprKind: ExprKind, message: any, offendingValue: T) {\n super(exprKind, ExprEvalStatus.TYPE_ERROR, message, offendingValue);\n }\n}\n\nexport type ExprEvalParseError = ExprEvalUnspecificError & {\n exprKind: ExprKind.PARSE_ERROR;\n line: number;\n column: number;\n offendingInput: string;\n};\n\nexport type ExprEvalValidationError = ExprEvalUnspecificError & {\n line: number;\n column: number;\n toLine?: number;\n toColumn?: number;\n};\n\nexport class ExprEvalParseErrorObj extends ExprEvalErrorObj {\n public readonly line: number;\n public readonly column: number;\n public readonly offendingInput: string;\n\n constructor(\n status: ExprEvalStatus,\n message: any,\n line: number,\n column: number,\n offendingInput: string\n ) {\n super(ExprKind.PARSE_ERROR, status, message);\n this.line = line;\n this.column = column;\n this.offendingInput = offendingInput;\n }\n}\n\nexport class ExprEvalValidationErrorObj extends ExprEvalErrorObj {\n public readonly line: number;\n public readonly toLine?: number;\n public readonly column: number;\n public readonly toColumn?: number;\n\n constructor(\n status: ExprEvalStatus,\n message: any,\n line: number,\n column: number,\n toLine?: number,\n toColumn?: number\n ) {\n super(ExprKind.PARSE_ERROR, status, message);\n this.line = line;\n this.toLine = toLine;\n this.column = column;\n this.toColumn = toColumn;\n }\n}\n\nexport class ExprEvalUnknownFunctionErrorObj extends ExprEvalValidationErrorObj {\n public readonly functionName: string;\n\n constructor(\n message: any,\n line: number,\n column: number,\n functionName,\n toLine?: number,\n toColumn?: number\n ) {\n super(\n ExprEvalStatus.UNKNOWN_FUNCTION,\n message,\n line,\n column,\n toLine,\n toColumn\n );\n this.functionName = functionName;\n }\n}\n\nexport class ExprEvalMissingFunctionArgumentErrorObj extends ExprEvalValidationErrorObj {\n public readonly functionName: string;\n public readonly argumentName: string;\n public readonly argumentIndex: number;\n\n constructor(\n message: any,\n line: number,\n column: number,\n functionName: string,\n argumentName: string,\n argumentIndex: number,\n toLine?: number,\n toColumn?: number\n ) {\n super(\n ExprEvalStatus.MISSING_REQUIRED_FUNCTION_ARGUMENT,\n message,\n line,\n column,\n toLine,\n toColumn\n );\n this.functionName = functionName;\n this.argumentName = argumentName;\n this.argumentIndex = argumentIndex;\n }\n}\n\nexport class ExprEvalWrongFunctionArgumentTypeErrorObj extends ExprEvalValidationErrorObj {\n public readonly functionName: string;\n public readonly argumentName: string;\n public readonly argumentIndex: number;\n public readonly expectedType: string;\n public readonly actualType: string;\n\n constructor(\n message: any,\n line: number,\n column: number,\n functionName: string,\n argumentName: string,\n argumentIndex: number,\n expectedType: string,\n actualType: string,\n toLine?: number,\n toColumn?: number\n ) {\n super(\n ExprEvalStatus.WRONG_FUNCTION_ARGUMENT_TYPE,\n message,\n line,\n column,\n toLine,\n toColumn\n );\n this.functionName = functionName;\n this.argumentName = argumentName;\n this.argumentIndex = argumentIndex;\n this.expectedType = expectedType;\n this.actualType = actualType;\n }\n}\n"]}
@@ -7,6 +7,8 @@ var ExprKind;
7
7
  ExprKind["NUM_MULTIPLY"] = "NUM_MULTIPLY";
8
8
  ExprKind["NUM_PLUS"] = "NUM_PLUS";
9
9
  ExprKind["NUM_MINUS"] = "NUM_MINUS";
10
+ ExprKind["NUM_POWER"] = "POWER";
11
+ ExprKind["NUM_UNARY_MINUS"] = "UNARY_MINUS";
10
12
  ExprKind["NUM_LITERAL"] = "NUM_LiTERAL";
11
13
  ExprKind["NUM_PARENTHESIS"] = "NUM_PARENTHESIS";
12
14
  ExprKind["REF_ATTRIBUTE"] = "REF_ATTRIBUTE";
@@ -17,8 +19,23 @@ var ExprKind;
17
19
  ExprKind["REF_PROPERTY"] = "REF_PROPERTY";
18
20
  ExprKind["STR_CONCAT"] = "STR_CONCAT";
19
21
  ExprKind["STR_LITERAL"] = "STR_LITERAL";
22
+ ExprKind["STR_PARENTHESIS"] = "STR_PARENTHESIS";
20
23
  ExprKind["FUNCTION_ARGUMENTS"] = "FUNCTION_ARGUMENTS";
21
24
  ExprKind["FUNCTION"] = "FUNCTION";
22
25
  ExprKind["ARRAY"] = "ARRAY";
26
+ ExprKind["METHOD_CALL"] = "METHOD_CALL";
27
+ ExprKind["BOOLEAN_AND"] = "BOOLEAN_AND";
28
+ ExprKind["BOOLEAN_OR"] = "BOOLEAN_OR";
29
+ ExprKind["BOOLEAN_XOR"] = "BOOLEAN_XOR";
30
+ ExprKind["BOOLEAN_NOT"] = "BOOLEAN_NOT";
31
+ ExprKind["BOOLEAN_LITERAL"] = "BOOLEAN_LITERAL";
32
+ ExprKind["BOOLEAN_PARENTHESIS"] = "BOOLEAN_PARENTHESIS";
33
+ ExprKind["CMP_EQUALS"] = "CMP_EQUALS";
34
+ ExprKind["CMP_NOT_EQUALS"] = "CMP_NOT_EQUALS";
35
+ ExprKind["CMP_LESS_THAN"] = "CMP_LESS_THAN";
36
+ ExprKind["CMP_LESS_THAN_OR_EQUAL"] = "CMP_LESS_THAN_OR_EQUAL";
37
+ ExprKind["CMP_GREATER_THAN"] = "CMP_GREATER_THAN";
38
+ ExprKind["CMP_GREATER_THAN_OR_EQUAL"] = "CMP_GREATER_THAN_OR_EQUAL";
39
+ ExprKind["PARSE_ERROR"] = "PARSE_ERROR"; /* to be used when no expr was compiled due to a parse/validation error */
23
40
  })(ExprKind || (exports.ExprKind = ExprKind = {}));
24
41
  //# sourceMappingURL=ExprKind.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/expression/ExprKind.ts"],"names":[],"mappings":";;;AAAA,IAAY,QAkBX;AAlBD,WAAY,QAAQ;IAClB,qCAAyB,CAAA;IACzB,yCAA6B,CAAA;IAC7B,iCAAqB,CAAA;IACrB,mCAAuB,CAAA;IACvB,uCAA2B,CAAA;IAC3B,+CAAmC,CAAA;IACnC,2CAA+B,CAAA;IAC/B,uCAA2B,CAAA;IAC3B,uEAA2D,CAAA;IAC3D,gEAAoD,CAAA;IACpD,qCAAyB,CAAA;IACzB,yCAA6B,CAAA;IAC7B,qCAAyB,CAAA;IACzB,uCAA2B,CAAA;IAC3B,qDAAyC,CAAA;IACzC,iCAAqB,CAAA;IACrB,2BAAe,CAAA;AACjB,CAAC,EAlBW,QAAQ,wBAAR,QAAQ,QAkBnB","file":"expression/ExprKind.js","sourcesContent":["export enum ExprKind {\n NUM_DIVIDE = \"NUM_DIVIDE\",\n NUM_MULTIPLY = \"NUM_MULTIPLY\",\n NUM_PLUS = \"NUM_PLUS\",\n NUM_MINUS = \"NUM_MINUS\",\n NUM_LITERAL = \"NUM_LiTERAL\",\n NUM_PARENTHESIS = \"NUM_PARENTHESIS\",\n REF_ATTRIBUTE = \"REF_ATTRIBUTE\",\n REF_ELEMENT = \"REF_ELEMENT\",\n REF_NESTED_OBJECT_CHAIN_END = \"REF_NESTED_OBJECT_CHAIN_END\",\n REF_NESTED_OBJECT_CHAIN = \"REF_NESTED_OBJECT_CHAIN \",\n REF_OBJECT = \"REF_OBJECT\",\n REF_PROPERTY = \"REF_PROPERTY\",\n STR_CONCAT = \"STR_CONCAT\",\n STR_LITERAL = \"STR_LITERAL\",\n FUNCTION_ARGUMENTS = \"FUNCTION_ARGUMENTS\",\n FUNCTION = \"FUNCTION\",\n ARRAY = \"ARRAY\",\n}\n"]}
1
+ {"version":3,"sources":["../../src/expression/ExprKind.ts"],"names":[],"mappings":";;;AAAA,IAAY,QAmCX;AAnCD,WAAY,QAAQ;IAClB,qCAAyB,CAAA;IACzB,yCAA6B,CAAA;IAC7B,iCAAqB,CAAA;IACrB,mCAAuB,CAAA;IACvB,+BAAmB,CAAA;IACnB,2CAA+B,CAAA;IAC/B,uCAA2B,CAAA;IAC3B,+CAAmC,CAAA;IACnC,2CAA+B,CAAA;IAC/B,uCAA2B,CAAA;IAC3B,uEAA2D,CAAA;IAC3D,gEAAoD,CAAA;IACpD,qCAAyB,CAAA;IACzB,yCAA6B,CAAA;IAC7B,qCAAyB,CAAA;IACzB,uCAA2B,CAAA;IAC3B,+CAAmC,CAAA;IACnC,qDAAyC,CAAA;IACzC,iCAAqB,CAAA;IACrB,2BAAe,CAAA;IACf,uCAA2B,CAAA;IAC3B,uCAA2B,CAAA;IAC3B,qCAAyB,CAAA;IACzB,uCAA2B,CAAA;IAC3B,uCAA2B,CAAA;IAC3B,+CAAmC,CAAA;IACnC,uDAA2C,CAAA;IAC3C,qCAAyB,CAAA;IACzB,6CAAiC,CAAA;IACjC,2CAA+B,CAAA;IAC/B,6DAAiD,CAAA;IACjD,iDAAqC,CAAA;IACrC,mEAAuD,CAAA;IACvD,uCAA2B,CAAA,CAAC,0EAA0E;AACxG,CAAC,EAnCW,QAAQ,wBAAR,QAAQ,QAmCnB","file":"expression/ExprKind.js","sourcesContent":["export enum ExprKind {\n NUM_DIVIDE = \"NUM_DIVIDE\",\n NUM_MULTIPLY = \"NUM_MULTIPLY\",\n NUM_PLUS = \"NUM_PLUS\",\n NUM_MINUS = \"NUM_MINUS\",\n NUM_POWER = \"POWER\",\n NUM_UNARY_MINUS = \"UNARY_MINUS\",\n NUM_LITERAL = \"NUM_LiTERAL\",\n NUM_PARENTHESIS = \"NUM_PARENTHESIS\",\n REF_ATTRIBUTE = \"REF_ATTRIBUTE\",\n REF_ELEMENT = \"REF_ELEMENT\",\n REF_NESTED_OBJECT_CHAIN_END = \"REF_NESTED_OBJECT_CHAIN_END\",\n REF_NESTED_OBJECT_CHAIN = \"REF_NESTED_OBJECT_CHAIN \",\n REF_OBJECT = \"REF_OBJECT\",\n REF_PROPERTY = \"REF_PROPERTY\",\n STR_CONCAT = \"STR_CONCAT\",\n STR_LITERAL = \"STR_LITERAL\",\n STR_PARENTHESIS = \"STR_PARENTHESIS\",\n FUNCTION_ARGUMENTS = \"FUNCTION_ARGUMENTS\",\n FUNCTION = \"FUNCTION\",\n ARRAY = \"ARRAY\",\n METHOD_CALL = \"METHOD_CALL\",\n BOOLEAN_AND = \"BOOLEAN_AND\",\n BOOLEAN_OR = \"BOOLEAN_OR\",\n BOOLEAN_XOR = \"BOOLEAN_XOR\",\n BOOLEAN_NOT = \"BOOLEAN_NOT\",\n BOOLEAN_LITERAL = \"BOOLEAN_LITERAL\",\n BOOLEAN_PARENTHESIS = \"BOOLEAN_PARENTHESIS\",\n CMP_EQUALS = \"CMP_EQUALS\",\n CMP_NOT_EQUALS = \"CMP_NOT_EQUALS\",\n CMP_LESS_THAN = \"CMP_LESS_THAN\",\n CMP_LESS_THAN_OR_EQUAL = \"CMP_LESS_THAN_OR_EQUAL\",\n CMP_GREATER_THAN = \"CMP_GREATER_THAN\",\n CMP_GREATER_THAN_OR_EQUAL = \"CMP_GREATER_THAN_OR_EQUAL\",\n PARSE_ERROR = \"PARSE_ERROR\" /* to be used when no expr was compiled due to a parse/validation error */,\n}\n"]}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AndExpr = void 0;
4
+ const BooleanValue_js_1 = require("../../value/BooleanValue.js");
5
+ const Expr2_js_1 = require("../Expr2.js");
6
+ const ExprKind_js_1 = require("../ExprKind.js");
7
+ const Types_js_1 = require("../../type/Types.js");
8
+ class AndExpr extends Expr2_js_1.Expr2 {
9
+ constructor(left, right) {
10
+ super(ExprKind_js_1.ExprKind.BOOLEAN_AND, left, right);
11
+ }
12
+ calculateResult(ctx, localCtx, leftOperand, rightOperand) {
13
+ return BooleanValue_js_1.BooleanValue.of(leftOperand.getValue() && rightOperand.getValue());
14
+ }
15
+ toExprString() {
16
+ return `${this.left.toExprString()} && ${this.right.toExprString()}`;
17
+ }
18
+ getType() {
19
+ return Types_js_1.Type.BOOLEAN;
20
+ }
21
+ }
22
+ exports.AndExpr = AndExpr;
23
+ //# sourceMappingURL=AndExpr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/expression/boolean/AndExpr.ts"],"names":[],"mappings":";;;AAAA,iEAA2D;AAC3D,0CAAoC;AACpC,gDAA0C;AAI1C,kDAA2C;AAG3C,MAAa,OAAQ,SAAQ,gBAA+C;IAC1E,YAAY,IAAwB,EAAE,KAAyB;QAC7D,KAAK,CAAC,sBAAQ,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,WAAyB,EACzB,YAA0B;QAE1B,OAAO,8BAAY,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,YAAY;QACV,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC;IACvE,CAAC;IAED,OAAO;QACL,OAAO,eAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AArBD,0BAqBC","file":"expression/boolean/AndExpr.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 } from \"../../type/Types.js\";\nimport { ExprType } from \"../../type/ExprType.js\";\n\nexport class AndExpr extends Expr2<BooleanValue, BooleanValue, BooleanValue> {\n constructor(left: Expr<BooleanValue>, right: Expr<BooleanValue>) {\n super(ExprKind.BOOLEAN_AND, left, right);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n leftOperand: BooleanValue,\n rightOperand: BooleanValue\n ): ExprEvalError | BooleanValue {\n return BooleanValue.of(leftOperand.getValue() && rightOperand.getValue());\n }\n\n toExprString(): string {\n return `${this.left.toExprString()} && ${this.right.toExprString()}`;\n }\n\n getType(): ExprType {\n return Type.BOOLEAN;\n }\n}\n"]}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BooleanLiteralExpr = void 0;
4
+ const LiteralExpr_js_1 = require("../LiteralExpr.js");
5
+ const BooleanValue_js_1 = require("../../value/BooleanValue.js");
6
+ const ExprKind_js_1 = require("../ExprKind.js");
7
+ const Types_js_1 = require("../../type/Types.js");
8
+ class BooleanLiteralExpr extends LiteralExpr_js_1.LiteralExpr {
9
+ constructor(value) {
10
+ super(ExprKind_js_1.ExprKind.BOOLEAN_LITERAL, value);
11
+ }
12
+ calculateResult(ctx) {
13
+ return BooleanValue_js_1.BooleanValue.of(this.value);
14
+ }
15
+ toExprString() {
16
+ return this.value === true ? "TRUE" : "FALSE";
17
+ }
18
+ getType() {
19
+ return Types_js_1.Type.BOOLEAN;
20
+ }
21
+ }
22
+ exports.BooleanLiteralExpr = BooleanLiteralExpr;
23
+ //# sourceMappingURL=BooleanLiteralExpr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/expression/boolean/BooleanLiteralExpr.ts"],"names":[],"mappings":";;;AAAA,sDAAgD;AAChD,iEAA2D;AAC3D,gDAA0C;AAG1C,kDAA2C;AAG3C,MAAa,kBAAmB,SAAQ,4BAAkC;IACxE,YAAY,KAAc;QACxB,KAAK,CAAC,sBAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAES,eAAe,CACvB,GAAyB;QAEzB,OAAO,8BAAY,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAChD,CAAC;IAED,OAAO;QACL,OAAO,eAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAlBD,gDAkBC","file":"expression/boolean/BooleanLiteralExpr.js","sourcesContent":["import { LiteralExpr } from \"../LiteralExpr.js\";\nimport { BooleanValue } from \"../../value/BooleanValue.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\";\n\nexport class BooleanLiteralExpr extends LiteralExpr<boolean, BooleanValue> {\n constructor(value: boolean) {\n super(ExprKind.BOOLEAN_LITERAL, value);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext\n ): ExprEvalError | BooleanValue {\n return BooleanValue.of(this.value);\n }\n\n toExprString(): string {\n return this.value === true ? \"TRUE\" : \"FALSE\";\n }\n\n getType(): ExprType {\n return Type.BOOLEAN;\n }\n}\n"]}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NotExpr = void 0;
4
+ const BooleanValue_js_1 = require("../../value/BooleanValue.js");
5
+ const Expr1_js_1 = require("../Expr1.js");
6
+ const ExprKind_js_1 = require("../ExprKind.js");
7
+ const Types_js_1 = require("../../type/Types.js");
8
+ class NotExpr extends Expr1_js_1.Expr1 {
9
+ constructor(value) {
10
+ super(ExprKind_js_1.ExprKind.BOOLEAN_NOT, value);
11
+ }
12
+ calculateResult(ctx, localCtx, subExpressionResult) {
13
+ return BooleanValue_js_1.BooleanValue.of(!subExpressionResult.getValue());
14
+ }
15
+ toExprString() {
16
+ return `!${this.value}`;
17
+ }
18
+ getType() {
19
+ return Types_js_1.Type.BOOLEAN;
20
+ }
21
+ }
22
+ exports.NotExpr = NotExpr;
23
+ //# sourceMappingURL=NotExpr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/expression/boolean/NotExpr.ts"],"names":[],"mappings":";;;AAAA,iEAA2D;AAC3D,0CAAoC;AAEpC,gDAA0C;AAG1C,kDAA2C;AAG3C,MAAa,OAAQ,SAAQ,gBAAiC;IAC5D,YAAY,KAAyB;QACnC,KAAK,CAAC,sBAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,mBAAiC;QAEjC,OAAO,8BAAY,CAAC,EAAE,CAAC,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,YAAY;QACV,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAED,OAAO;QACL,OAAO,eAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AApBD,0BAoBC","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 { Type } from \"../../type/Types.js\";\nimport { ExprType } from \"../../type/ExprType.js\";\n\nexport class NotExpr extends Expr1<BooleanValue, BooleanValue> {\n constructor(value: Expr<BooleanValue>) {\n super(ExprKind.BOOLEAN_NOT, value);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n subExpressionResult: BooleanValue\n ): ExprEvalError | BooleanValue {\n return BooleanValue.of(!subExpressionResult.getValue());\n }\n\n toExprString(): string {\n return `!${this.value}`;\n }\n\n getType(): ExprType {\n return Type.BOOLEAN;\n }\n}\n"]}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OrExpr = void 0;
4
+ const BooleanValue_js_1 = require("../../value/BooleanValue.js");
5
+ const Expr2_js_1 = require("../Expr2.js");
6
+ const ExprKind_js_1 = require("../ExprKind.js");
7
+ const Types_js_1 = require("../../type/Types.js");
8
+ class OrExpr extends Expr2_js_1.Expr2 {
9
+ constructor(left, right) {
10
+ super(ExprKind_js_1.ExprKind.BOOLEAN_OR, left, right);
11
+ }
12
+ calculateResult(ctx, localCtx, leftOperand, rightOperand) {
13
+ return BooleanValue_js_1.BooleanValue.of(leftOperand.getValue() || rightOperand.getValue());
14
+ }
15
+ toExprString() {
16
+ return `${this.left.toExprString()} || ${this.right.toExprString()}`;
17
+ }
18
+ getType() {
19
+ return Types_js_1.Type.BOOLEAN;
20
+ }
21
+ }
22
+ exports.OrExpr = OrExpr;
23
+ //# sourceMappingURL=OrExpr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/expression/boolean/OrExpr.ts"],"names":[],"mappings":";;;AAAA,iEAA2D;AAC3D,0CAAoC;AACpC,gDAA0C;AAI1C,kDAA2C;AAG3C,MAAa,MAAO,SAAQ,gBAA+C;IACzE,YAAY,IAAwB,EAAE,KAAyB;QAC7D,KAAK,CAAC,sBAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,WAAyB,EACzB,YAA0B;QAE1B,OAAO,8BAAY,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,YAAY;QACV,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC;IACvE,CAAC;IAED,OAAO;QACL,OAAO,eAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AArBD,wBAqBC","file":"expression/boolean/OrExpr.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 } from \"../../type/Types.js\";\nimport { ExprType } from \"../../type/ExprType.js\";\n\nexport class OrExpr extends Expr2<BooleanValue, BooleanValue, BooleanValue> {\n constructor(left: Expr<BooleanValue>, right: Expr<BooleanValue>) {\n super(ExprKind.BOOLEAN_OR, left, right);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n leftOperand: BooleanValue,\n rightOperand: BooleanValue\n ): ExprEvalError | BooleanValue {\n return BooleanValue.of(leftOperand.getValue() || rightOperand.getValue());\n }\n\n toExprString(): string {\n return `${this.left.toExprString()} || ${this.right.toExprString()}`;\n }\n\n getType(): ExprType {\n return Type.BOOLEAN;\n }\n}\n"]}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.XorExpr = void 0;
4
+ const BooleanValue_js_1 = require("../../value/BooleanValue.js");
5
+ const Expr2_js_1 = require("../Expr2.js");
6
+ const ExprKind_js_1 = require("../ExprKind.js");
7
+ const Types_js_1 = require("../../type/Types.js");
8
+ class XorExpr extends Expr2_js_1.Expr2 {
9
+ constructor(left, right) {
10
+ super(ExprKind_js_1.ExprKind.BOOLEAN_XOR, left, right);
11
+ }
12
+ calculateResult(ctx, localCtx, leftOperand, rightOperand) {
13
+ const left = leftOperand.getValue();
14
+ const right = rightOperand.getValue();
15
+ return BooleanValue_js_1.BooleanValue.of(left ? !right : right);
16
+ }
17
+ toExprString() {
18
+ return `${this.left.toExprString()} ^ ${this.right.toExprString()}`;
19
+ }
20
+ getType() {
21
+ return Types_js_1.Type.BOOLEAN;
22
+ }
23
+ }
24
+ exports.XorExpr = XorExpr;
25
+ //# sourceMappingURL=XorExpr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/expression/boolean/XorExpr.ts"],"names":[],"mappings":";;;AAAA,iEAA2D;AAC3D,0CAAoC;AACpC,gDAA0C;AAI1C,kDAA2C;AAG3C,MAAa,OAAQ,SAAQ,gBAA+C;IAC1E,YAAY,IAAwB,EAAE,KAAyB;QAC7D,KAAK,CAAC,sBAAQ,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,WAAyB,EACzB,YAA0B;QAE1B,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;QACtC,OAAO,8BAAY,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,YAAY;QACV,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC;IACtE,CAAC;IAED,OAAO;QACL,OAAO,eAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAvBD,0BAuBC","file":"expression/boolean/XorExpr.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 } from \"../../type/Types.js\";\nimport { ExprType } from \"../../type/ExprType.js\";\n\nexport class XorExpr extends Expr2<BooleanValue, BooleanValue, BooleanValue> {\n constructor(left: Expr<BooleanValue>, right: Expr<BooleanValue>) {\n super(ExprKind.BOOLEAN_XOR, left, right);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n leftOperand: BooleanValue,\n rightOperand: BooleanValue\n ): ExprEvalError | BooleanValue {\n const left = leftOperand.getValue();\n const right = rightOperand.getValue();\n return BooleanValue.of(left ? !right : right);\n }\n\n toExprString(): string {\n return `${this.left.toExprString()} ^ ${this.right.toExprString()}`;\n }\n\n getType(): ExprType {\n return Type.BOOLEAN;\n }\n}\n"]}