ifc-expressions 0.2.2 → 0.3.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 (322) hide show
  1. package/dist/ExprVisitor.d.ts +7 -3
  2. package/dist/IfcExpression.d.ts +27 -24
  3. package/dist/IfcExpressionErrorListener.d.ts +1 -1
  4. package/dist/IfcExpressionUtils.d.ts +2 -0
  5. package/dist/cjs/ExprVisitor.js +70 -36
  6. package/dist/cjs/ExprVisitor.js.map +1 -1
  7. package/dist/cjs/IfcExpression.js +42 -41
  8. package/dist/cjs/IfcExpression.js.map +1 -1
  9. package/dist/cjs/IfcExpressionErrorListener.js +4 -4
  10. package/dist/cjs/IfcExpressionErrorListener.js.map +1 -1
  11. package/dist/cjs/IfcExpressionUtils.js +12 -0
  12. package/dist/cjs/IfcExpressionUtils.js.map +1 -0
  13. package/dist/cjs/SyntaxErrorException.js +2 -2
  14. package/dist/cjs/SyntaxErrorException.js.map +1 -1
  15. package/dist/cjs/context/IfcElementAccessor.js +8 -8
  16. package/dist/cjs/context/IfcElementAccessor.js.map +1 -1
  17. package/dist/cjs/context/IfcExpressionContext.js.map +1 -1
  18. package/dist/cjs/context/IfcPropertyAccessor.js +2 -2
  19. package/dist/cjs/context/IfcPropertyAccessor.js.map +1 -1
  20. package/dist/cjs/context/IfcPropertySetAccessor.js +2 -2
  21. package/dist/cjs/context/IfcPropertySetAccessor.js.map +1 -1
  22. package/dist/cjs/context/IfcRootObjectAccessor.js +4 -4
  23. package/dist/cjs/context/IfcRootObjectAccessor.js.map +1 -1
  24. package/dist/cjs/context/IfcTypeObjectAccessor.js +4 -4
  25. package/dist/cjs/context/IfcTypeObjectAccessor.js.map +1 -1
  26. package/dist/cjs/context/NamedObjectAccessor.js +3 -3
  27. package/dist/cjs/context/NamedObjectAccessor.js.map +1 -1
  28. package/dist/cjs/context/ObjectAccessor.js +9 -0
  29. package/dist/cjs/context/ObjectAccessor.js.map +1 -1
  30. package/dist/cjs/expression/Expr.js.map +1 -1
  31. package/dist/cjs/expression/Expr0.js +18 -2
  32. package/dist/cjs/expression/Expr0.js.map +1 -1
  33. package/dist/cjs/expression/Expr1.js +46 -2
  34. package/dist/cjs/expression/Expr1.js.map +1 -1
  35. package/dist/cjs/expression/Expr2.js +48 -2
  36. package/dist/cjs/expression/Expr2.js.map +1 -1
  37. package/dist/cjs/expression/Expr2LeftBeforeRight.js +45 -0
  38. package/dist/cjs/expression/Expr2LeftBeforeRight.js.map +1 -0
  39. package/dist/cjs/expression/ExprBase.js +20 -0
  40. package/dist/cjs/expression/ExprBase.js.map +1 -0
  41. package/dist/cjs/expression/ExprEvalResult.js +165 -0
  42. package/dist/cjs/expression/ExprEvalResult.js.map +1 -0
  43. package/dist/cjs/expression/ExprKind.js +24 -0
  44. package/dist/cjs/expression/ExprKind.js.map +1 -0
  45. package/dist/cjs/expression/IfcExpressionEvaluationException.js.map +1 -1
  46. package/dist/cjs/expression/LiteralExpr.js +25 -0
  47. package/dist/cjs/expression/LiteralExpr.js.map +1 -0
  48. package/dist/cjs/expression/LocalContextKeys.js +7 -0
  49. package/dist/cjs/expression/LocalContextKeys.js.map +1 -0
  50. package/dist/cjs/expression/function/Func.js +93 -0
  51. package/dist/cjs/expression/function/Func.js.map +1 -0
  52. package/dist/cjs/expression/function/FuncArg.js +33 -0
  53. package/dist/cjs/expression/function/FuncArg.js.map +1 -0
  54. package/dist/cjs/expression/function/FunctionExpr.js +33 -0
  55. package/dist/cjs/expression/function/FunctionExpr.js.map +1 -0
  56. package/dist/cjs/expression/function/IfcExpressionFunctionConfigException.js +10 -0
  57. package/dist/cjs/expression/function/IfcExpressionFunctionConfigException.js.map +1 -0
  58. package/dist/cjs/expression/function/IfcExpressionFunctions.js +26 -0
  59. package/dist/cjs/expression/function/IfcExpressionFunctions.js.map +1 -0
  60. package/dist/cjs/expression/function/arg/FuncArgBase.js +34 -0
  61. package/dist/cjs/expression/function/arg/FuncArgBase.js.map +1 -0
  62. package/dist/cjs/expression/function/arg/FuncArgInt.js +25 -0
  63. package/dist/cjs/expression/function/arg/FuncArgInt.js.map +1 -0
  64. package/dist/cjs/expression/function/arg/FuncArgNumeric.js +22 -0
  65. package/dist/cjs/expression/function/arg/FuncArgNumeric.js.map +1 -0
  66. package/dist/cjs/expression/function/impl/MAP.js +77 -0
  67. package/dist/cjs/expression/function/impl/MAP.js.map +1 -0
  68. package/dist/cjs/expression/function/impl/ROUND.js +29 -0
  69. package/dist/cjs/expression/function/impl/ROUND.js.map +1 -0
  70. package/dist/cjs/expression/numeric/DivideExpr.js +11 -9
  71. package/dist/cjs/expression/numeric/DivideExpr.js.map +1 -1
  72. package/dist/cjs/expression/numeric/MinusExpr.js +7 -9
  73. package/dist/cjs/expression/numeric/MinusExpr.js.map +1 -1
  74. package/dist/cjs/expression/numeric/MultiplyExpr.js +7 -9
  75. package/dist/cjs/expression/numeric/MultiplyExpr.js.map +1 -1
  76. package/dist/cjs/expression/numeric/NumParenthesisExpr.js +6 -5
  77. package/dist/cjs/expression/numeric/NumParenthesisExpr.js.map +1 -1
  78. package/dist/cjs/expression/numeric/NumericLiteralExpr.js +5 -4
  79. package/dist/cjs/expression/numeric/NumericLiteralExpr.js.map +1 -1
  80. package/dist/cjs/expression/numeric/PlusExpr.js +7 -9
  81. package/dist/cjs/expression/numeric/PlusExpr.js.map +1 -1
  82. package/dist/cjs/expression/reference/AttributeReferenceExpr.js +21 -7
  83. package/dist/cjs/expression/reference/AttributeReferenceExpr.js.map +1 -1
  84. package/dist/cjs/expression/reference/ElemObjectReferenceExpr.js +5 -4
  85. package/dist/cjs/expression/reference/ElemObjectReferenceExpr.js.map +1 -1
  86. package/dist/cjs/expression/reference/NestedObjectChainEndExpr.js +19 -5
  87. package/dist/cjs/expression/reference/NestedObjectChainEndExpr.js.map +1 -1
  88. package/dist/cjs/expression/reference/NestedObjectChainExpr.js +33 -8
  89. package/dist/cjs/expression/reference/NestedObjectChainExpr.js.map +1 -1
  90. package/dist/cjs/expression/reference/ObjectReferenceExpr.js.map +1 -1
  91. package/dist/cjs/expression/reference/PropObjectReferenceExpr.js +5 -4
  92. package/dist/cjs/expression/reference/PropObjectReferenceExpr.js.map +1 -1
  93. package/dist/cjs/expression/string/StringConcatExpr.js +7 -6
  94. package/dist/cjs/expression/string/StringConcatExpr.js.map +1 -1
  95. package/dist/cjs/expression/string/StringLiteralExpr.js +5 -4
  96. package/dist/cjs/expression/string/StringLiteralExpr.js.map +1 -1
  97. package/dist/cjs/expression/structure/ArrayExpr.js +26 -0
  98. package/dist/cjs/expression/structure/ArrayExpr.js.map +1 -0
  99. package/dist/cjs/gen/parser/IfcExpressionLexer.js +142 -0
  100. package/dist/cjs/gen/parser/IfcExpressionLexer.js.map +1 -0
  101. package/dist/cjs/gen/parser/IfcExpressionListener.js.map +1 -0
  102. package/dist/cjs/{parser → gen/parser}/IfcExpressionParser.js +148 -104
  103. package/dist/cjs/gen/parser/IfcExpressionParser.js.map +1 -0
  104. package/dist/cjs/gen/parser/IfcExpressionVisitor.js.map +1 -0
  105. package/dist/cjs/value/ArrayValue.js +23 -0
  106. package/dist/cjs/value/ArrayValue.js.map +1 -0
  107. package/dist/cjs/value/BooleanValue.js +12 -3
  108. package/dist/cjs/value/BooleanValue.js.map +1 -1
  109. package/dist/cjs/value/LiteralValue.js.map +1 -1
  110. package/dist/cjs/value/LiteralValueAnyArity.js.map +1 -1
  111. package/dist/cjs/value/LogicalValue.js +14 -3
  112. package/dist/cjs/value/LogicalValue.js.map +1 -1
  113. package/dist/cjs/value/NumericValue.js +16 -7
  114. package/dist/cjs/value/NumericValue.js.map +1 -1
  115. package/dist/cjs/value/PrimitiveValueType.js.map +1 -1
  116. package/dist/cjs/value/ReferenceValue.js +12 -3
  117. package/dist/cjs/value/ReferenceValue.js.map +1 -1
  118. package/dist/cjs/value/StringValue.js +12 -3
  119. package/dist/cjs/value/StringValue.js.map +1 -1
  120. package/dist/cjs/value/Value.js +0 -10
  121. package/dist/cjs/value/Value.js.map +1 -1
  122. package/dist/context/IfcElementAccessor.d.ts +6 -6
  123. package/dist/context/IfcExpressionContext.d.ts +2 -2
  124. package/dist/context/IfcPropertyAccessor.d.ts +4 -4
  125. package/dist/context/IfcPropertySetAccessor.d.ts +4 -4
  126. package/dist/context/IfcRootObjectAccessor.d.ts +2 -2
  127. package/dist/context/IfcTypeObjectAccessor.d.ts +4 -4
  128. package/dist/context/NamedObjectAccessor.d.ts +2 -2
  129. package/dist/context/ObjectAccessor.d.ts +2 -1
  130. package/dist/expression/Expr.d.ts +5 -2
  131. package/dist/expression/Expr0.d.ts +9 -5
  132. package/dist/expression/Expr1.d.ts +20 -5
  133. package/dist/expression/Expr2.d.ts +15 -6
  134. package/dist/expression/Expr2LeftBeforeRight.d.ts +14 -0
  135. package/dist/expression/ExprBase.d.ts +11 -0
  136. package/dist/expression/ExprEvalResult.d.ts +125 -0
  137. package/dist/expression/ExprKind.d.ts +19 -0
  138. package/dist/expression/LiteralExpr.d.ts +11 -0
  139. package/dist/expression/LocalContextKeys.d.ts +3 -0
  140. package/dist/expression/function/Func.d.ts +30 -0
  141. package/dist/expression/function/FuncArg.d.ts +18 -0
  142. package/dist/expression/function/FunctionExpr.d.ts +13 -0
  143. package/dist/expression/function/IfcExpressionFunctionConfigException.d.ts +3 -0
  144. package/dist/expression/function/IfcExpressionFunctions.d.ts +7 -0
  145. package/dist/expression/function/arg/FuncArgBase.d.ts +19 -0
  146. package/dist/expression/function/arg/FuncArgInt.d.ts +8 -0
  147. package/dist/expression/function/arg/FuncArgNumeric.d.ts +8 -0
  148. package/dist/expression/function/impl/MAP.d.ts +10 -0
  149. package/dist/expression/function/impl/ROUND.d.ts +9 -0
  150. package/dist/expression/numeric/DivideExpr.d.ts +8 -6
  151. package/dist/expression/numeric/MinusExpr.d.ts +7 -6
  152. package/dist/expression/numeric/MultiplyExpr.d.ts +7 -6
  153. package/dist/expression/numeric/NumParenthesisExpr.d.ts +6 -6
  154. package/dist/expression/numeric/NumericLiteralExpr.d.ts +6 -5
  155. package/dist/expression/numeric/PlusExpr.d.ts +6 -6
  156. package/dist/expression/reference/AttributeReferenceExpr.d.ts +12 -8
  157. package/dist/expression/reference/ElemObjectReferenceExpr.d.ts +5 -5
  158. package/dist/expression/reference/NestedObjectChainEndExpr.d.ts +7 -6
  159. package/dist/expression/reference/NestedObjectChainExpr.d.ts +11 -8
  160. package/dist/expression/reference/ObjectReferenceExpr.d.ts +2 -2
  161. package/dist/expression/reference/PropObjectReferenceExpr.d.ts +5 -5
  162. package/dist/expression/string/StringConcatExpr.d.ts +6 -6
  163. package/dist/expression/string/StringLiteralExpr.d.ts +5 -5
  164. package/dist/expression/structure/ArrayExpr.d.ts +11 -0
  165. package/dist/{parser → gen/parser}/IfcExpressionLexer.d.ts +10 -9
  166. package/dist/{parser → gen/parser}/IfcExpressionParser.d.ts +10 -9
  167. package/dist/mjs/ExprVisitor.js +57 -23
  168. package/dist/mjs/ExprVisitor.js.map +1 -1
  169. package/dist/mjs/IfcExpression.js +21 -22
  170. package/dist/mjs/IfcExpression.js.map +1 -1
  171. package/dist/mjs/IfcExpressionErrorListener.js +3 -3
  172. package/dist/mjs/IfcExpressionErrorListener.js.map +1 -1
  173. package/dist/mjs/IfcExpressionUtils.js +7 -0
  174. package/dist/mjs/IfcExpressionUtils.js.map +1 -0
  175. package/dist/mjs/SyntaxErrorException.js +2 -2
  176. package/dist/mjs/SyntaxErrorException.js.map +1 -1
  177. package/dist/mjs/context/IfcElementAccessor.js +6 -6
  178. package/dist/mjs/context/IfcElementAccessor.js.map +1 -1
  179. package/dist/mjs/context/IfcExpressionContext.js.map +1 -1
  180. package/dist/mjs/context/IfcPropertyAccessor.js +1 -1
  181. package/dist/mjs/context/IfcPropertyAccessor.js.map +1 -1
  182. package/dist/mjs/context/IfcPropertySetAccessor.js +1 -1
  183. package/dist/mjs/context/IfcPropertySetAccessor.js.map +1 -1
  184. package/dist/mjs/context/IfcRootObjectAccessor.js +2 -2
  185. package/dist/mjs/context/IfcRootObjectAccessor.js.map +1 -1
  186. package/dist/mjs/context/IfcTypeObjectAccessor.js +3 -3
  187. package/dist/mjs/context/IfcTypeObjectAccessor.js.map +1 -1
  188. package/dist/mjs/context/NamedObjectAccessor.js +1 -1
  189. package/dist/mjs/context/NamedObjectAccessor.js.map +1 -1
  190. package/dist/mjs/context/ObjectAccessor.js +7 -1
  191. package/dist/mjs/context/ObjectAccessor.js.map +1 -1
  192. package/dist/mjs/expression/Expr.js.map +1 -1
  193. package/dist/mjs/expression/Expr0.js +18 -2
  194. package/dist/mjs/expression/Expr0.js.map +1 -1
  195. package/dist/mjs/expression/Expr1.js +46 -2
  196. package/dist/mjs/expression/Expr1.js.map +1 -1
  197. package/dist/mjs/expression/Expr2.js +48 -2
  198. package/dist/mjs/expression/Expr2.js.map +1 -1
  199. package/dist/mjs/expression/Expr2LeftBeforeRight.js +41 -0
  200. package/dist/mjs/expression/Expr2LeftBeforeRight.js.map +1 -0
  201. package/dist/mjs/expression/ExprBase.js +16 -0
  202. package/dist/mjs/expression/ExprBase.js.map +1 -0
  203. package/dist/mjs/expression/ExprEvalResult.js +144 -0
  204. package/dist/mjs/expression/ExprEvalResult.js.map +1 -0
  205. package/dist/mjs/expression/ExprKind.js +21 -0
  206. package/dist/mjs/expression/ExprKind.js.map +1 -0
  207. package/dist/mjs/expression/LiteralExpr.js +21 -0
  208. package/dist/mjs/expression/LiteralExpr.js.map +1 -0
  209. package/dist/mjs/expression/LocalContextKeys.js +4 -0
  210. package/dist/mjs/expression/LocalContextKeys.js.map +1 -0
  211. package/dist/mjs/expression/function/Func.js +89 -0
  212. package/dist/mjs/expression/function/Func.js.map +1 -0
  213. package/dist/mjs/expression/function/FuncArg.js +29 -0
  214. package/dist/mjs/expression/function/FuncArg.js.map +1 -0
  215. package/dist/mjs/expression/function/FunctionExpr.js +29 -0
  216. package/dist/mjs/expression/function/FunctionExpr.js.map +1 -0
  217. package/dist/mjs/expression/function/IfcExpressionFunctionConfigException.js +6 -0
  218. package/dist/mjs/expression/function/IfcExpressionFunctionConfigException.js.map +1 -0
  219. package/dist/mjs/expression/function/IfcExpressionFunctions.js +22 -0
  220. package/dist/mjs/expression/function/IfcExpressionFunctions.js.map +1 -0
  221. package/dist/mjs/expression/function/arg/FuncArgBase.js +30 -0
  222. package/dist/mjs/expression/function/arg/FuncArgBase.js.map +1 -0
  223. package/dist/mjs/expression/function/arg/FuncArgInt.js +21 -0
  224. package/dist/mjs/expression/function/arg/FuncArgInt.js.map +1 -0
  225. package/dist/mjs/expression/function/arg/FuncArgNumeric.js +18 -0
  226. package/dist/mjs/expression/function/arg/FuncArgNumeric.js.map +1 -0
  227. package/dist/mjs/expression/function/impl/MAP.js +73 -0
  228. package/dist/mjs/expression/function/impl/MAP.js.map +1 -0
  229. package/dist/mjs/expression/function/impl/ROUND.js +25 -0
  230. package/dist/mjs/expression/function/impl/ROUND.js.map +1 -0
  231. package/dist/mjs/expression/numeric/DivideExpr.js +10 -8
  232. package/dist/mjs/expression/numeric/DivideExpr.js.map +1 -1
  233. package/dist/mjs/expression/numeric/MinusExpr.js +6 -8
  234. package/dist/mjs/expression/numeric/MinusExpr.js.map +1 -1
  235. package/dist/mjs/expression/numeric/MultiplyExpr.js +6 -8
  236. package/dist/mjs/expression/numeric/MultiplyExpr.js.map +1 -1
  237. package/dist/mjs/expression/numeric/NumParenthesisExpr.js +5 -4
  238. package/dist/mjs/expression/numeric/NumParenthesisExpr.js.map +1 -1
  239. package/dist/mjs/expression/numeric/NumericLiteralExpr.js +5 -4
  240. package/dist/mjs/expression/numeric/NumericLiteralExpr.js.map +1 -1
  241. package/dist/mjs/expression/numeric/PlusExpr.js +6 -8
  242. package/dist/mjs/expression/numeric/PlusExpr.js.map +1 -1
  243. package/dist/mjs/expression/reference/AttributeReferenceExpr.js +20 -6
  244. package/dist/mjs/expression/reference/AttributeReferenceExpr.js.map +1 -1
  245. package/dist/mjs/expression/reference/ElemObjectReferenceExpr.js +4 -3
  246. package/dist/mjs/expression/reference/ElemObjectReferenceExpr.js.map +1 -1
  247. package/dist/mjs/expression/reference/NestedObjectChainEndExpr.js +19 -5
  248. package/dist/mjs/expression/reference/NestedObjectChainEndExpr.js.map +1 -1
  249. package/dist/mjs/expression/reference/NestedObjectChainExpr.js +33 -8
  250. package/dist/mjs/expression/reference/NestedObjectChainExpr.js.map +1 -1
  251. package/dist/mjs/expression/reference/ObjectReferenceExpr.js.map +1 -1
  252. package/dist/mjs/expression/reference/PropObjectReferenceExpr.js +4 -3
  253. package/dist/mjs/expression/reference/PropObjectReferenceExpr.js.map +1 -1
  254. package/dist/mjs/expression/string/StringConcatExpr.js +6 -5
  255. package/dist/mjs/expression/string/StringConcatExpr.js.map +1 -1
  256. package/dist/mjs/expression/string/StringLiteralExpr.js +5 -4
  257. package/dist/mjs/expression/string/StringLiteralExpr.js.map +1 -1
  258. package/dist/mjs/expression/structure/ArrayExpr.js +22 -0
  259. package/dist/mjs/expression/structure/ArrayExpr.js.map +1 -0
  260. package/dist/mjs/gen/parser/IfcExpressionLexer.js +140 -0
  261. package/dist/mjs/gen/parser/IfcExpressionLexer.js.map +1 -0
  262. package/dist/mjs/gen/parser/IfcExpressionListener.js.map +1 -0
  263. package/dist/mjs/{parser → gen/parser}/IfcExpressionParser.js +148 -104
  264. package/dist/mjs/gen/parser/IfcExpressionParser.js.map +1 -0
  265. package/dist/mjs/gen/parser/IfcExpressionVisitor.js.map +1 -0
  266. package/dist/mjs/value/ArrayValue.js +19 -0
  267. package/dist/mjs/value/ArrayValue.js.map +1 -0
  268. package/dist/mjs/value/BooleanValue.js +12 -3
  269. package/dist/mjs/value/BooleanValue.js.map +1 -1
  270. package/dist/mjs/value/LiteralValue.js.map +1 -1
  271. package/dist/mjs/value/LiteralValueAnyArity.js.map +1 -1
  272. package/dist/mjs/value/LogicalValue.js +14 -3
  273. package/dist/mjs/value/LogicalValue.js.map +1 -1
  274. package/dist/mjs/value/NumericValue.js +16 -4
  275. package/dist/mjs/value/NumericValue.js.map +1 -1
  276. package/dist/mjs/value/ReferenceValue.js +12 -3
  277. package/dist/mjs/value/ReferenceValue.js.map +1 -1
  278. package/dist/mjs/value/StringValue.js +12 -3
  279. package/dist/mjs/value/StringValue.js.map +1 -1
  280. package/dist/mjs/value/Value.js +1 -8
  281. package/dist/mjs/value/Value.js.map +1 -1
  282. package/dist/value/ArrayValue.d.ts +12 -0
  283. package/dist/value/BooleanValue.d.ts +9 -2
  284. package/dist/value/LiteralValue.d.ts +7 -6
  285. package/dist/value/LiteralValueAnyArity.d.ts +2 -2
  286. package/dist/value/LogicalValue.d.ts +9 -2
  287. package/dist/value/NumericValue.d.ts +12 -5
  288. package/dist/value/ReferenceValue.d.ts +9 -2
  289. package/dist/value/StringValue.d.ts +9 -2
  290. package/dist/value/Value.d.ts +3 -4
  291. package/package.json +4 -3
  292. package/dist/cjs/expression/ArrayExpr.js +0 -3
  293. package/dist/cjs/expression/ArrayExpr.js.map +0 -1
  294. package/dist/cjs/expression/numeric/MultiplyByExpr.js +0 -18
  295. package/dist/cjs/expression/numeric/MultiplyByExpr.js.map +0 -1
  296. package/dist/cjs/parser/IfcExpressionLexer.js +0 -140
  297. package/dist/cjs/parser/IfcExpressionLexer.js.map +0 -1
  298. package/dist/cjs/parser/IfcExpressionListener.js.map +0 -1
  299. package/dist/cjs/parser/IfcExpressionParser.js.map +0 -1
  300. package/dist/cjs/parser/IfcExpressionVisitor.js.map +0 -1
  301. package/dist/cjs/utils.js +0 -12
  302. package/dist/cjs/utils.js.map +0 -1
  303. package/dist/expression/ArrayExpr.d.ts +0 -3
  304. package/dist/expression/numeric/MultiplyByExpr.d.ts +0 -8
  305. package/dist/mjs/expression/ArrayExpr.js +0 -2
  306. package/dist/mjs/expression/ArrayExpr.js.map +0 -1
  307. package/dist/mjs/expression/numeric/MultiplyByExpr.js +0 -14
  308. package/dist/mjs/expression/numeric/MultiplyByExpr.js.map +0 -1
  309. package/dist/mjs/parser/IfcExpressionLexer.js +0 -138
  310. package/dist/mjs/parser/IfcExpressionLexer.js.map +0 -1
  311. package/dist/mjs/parser/IfcExpressionListener.js.map +0 -1
  312. package/dist/mjs/parser/IfcExpressionParser.js.map +0 -1
  313. package/dist/mjs/parser/IfcExpressionVisitor.js.map +0 -1
  314. package/dist/mjs/utils.js +0 -7
  315. package/dist/mjs/utils.js.map +0 -1
  316. package/dist/utils.d.ts +0 -2
  317. /package/dist/cjs/{parser → gen/parser}/IfcExpressionListener.js +0 -0
  318. /package/dist/cjs/{parser → gen/parser}/IfcExpressionVisitor.js +0 -0
  319. /package/dist/{parser → gen/parser}/IfcExpressionListener.d.ts +0 -0
  320. /package/dist/{parser → gen/parser}/IfcExpressionVisitor.d.ts +0 -0
  321. /package/dist/mjs/{parser → gen/parser}/IfcExpressionListener.js +0 -0
  322. /package/dist/mjs/{parser → gen/parser}/IfcExpressionVisitor.js +0 -0
@@ -1,6 +1,6 @@
1
- import IfcExpressionVisitor from "../generated/parser/IfcExpressionVisitor";
2
- import { AttributeRefContext, ExprContext, NestedObjectChainEndContext, NestedObjectChainInnerContext, NumAddSubContext, NumAttributeRefContext, NumLitContext, NumLiteralContext, NumMulDivContext, NumParensContext, ObjectRefContext, StringAttributeRefContext, StringConcatContext, StringLiteralContext } from "../generated/parser/IfcExpressionParser";
3
- import { Expr } from "./expression/Expr";
1
+ import IfcExpressionVisitor from "./gen/parser/IfcExpressionVisitor.js";
2
+ import { ArrayContext, ArrayElementListContext, AttributeRefContext, ExprContext, ExprListContext, FunctionCallContext, NestedObjectChainEndContext, NestedObjectChainInnerContext, NumAddSubContext, NumAttributeRefContext, NumLitContext, NumLiteralContext, NumMulDivContext, NumParensContext, ObjectRefContext, StringAttributeRefContext, StringConcatContext, StringLiteralContext } from "./gen/parser/IfcExpressionParser.js";
3
+ import { Expr } from "./expression/Expr.js";
4
4
  export declare class ExprVisitor extends IfcExpressionVisitor<Expr<any>> {
5
5
  constructor();
6
6
  visitAttributeRef: (ctx: AttributeRefContext) => Expr<any>;
@@ -18,5 +18,9 @@ export declare class ExprVisitor extends IfcExpressionVisitor<Expr<any>> {
18
18
  visitNumParens: (ctx: NumParensContext) => Expr<any>;
19
19
  visitExpr: (ctx: ExprContext) => Expr<any>;
20
20
  visitNumLit: (ctx: NumLitContext) => Expr<any>;
21
+ visitArray: (ctx: ArrayContext) => Expr<any>;
22
+ collectArrayElements: (ctx: ArrayElementListContext) => Array<Expr<any>>;
23
+ visitFunctionCall: (ctx: FunctionCallContext) => Expr<any>;
24
+ collectFunctionArguments: (ctx: ExprListContext) => Array<Expr<any>>;
21
25
  private failNode;
22
26
  }
@@ -1,30 +1,33 @@
1
1
  import { ErrorListener, Token } from "antlr4";
2
- import { IfcExpressionErrorListener } from "./IfcExpressionErrorListener";
3
- import { IfcExpressionContext } from "./context/IfcExpressionContext";
4
- import { Expr } from "./expression/Expr";
5
- import { ExprContext } from "../generated/parser/IfcExpressionParser";
6
- import { IfcElementAccessor } from "./context/IfcElementAccessor";
7
- import { Value } from "./value/Value";
8
- import { StringValue } from "./value/StringValue";
9
- import { NumericValue } from "./value/NumericValue";
10
- import { BooleanValue } from "./value/BooleanValue";
11
- import { LogicalValue } from "./value/LogicalValue";
12
- import { LiteralValue } from "./value/LiteralValue";
13
- import { ReferenceValue } from "./value/ReferenceValue";
14
- import { IfcPropertySetAccessor } from "./context/IfcPropertySetAccessor";
15
- import { IfcPropertyAccessor } from "./context/IfcPropertyAccessor";
16
- import { IfcRootObjectAccessor } from "./context/IfcRootObjectAccessor";
17
- import { IfcTypeObjectAccessor } from "./context/IfcTypeObjectAccessor";
18
- import { NamedObjectAccessor } from "./context/NamedObjectAccessor";
19
- import { ObjectAccessor } from "./context/ObjectAccessor";
20
- import { IfcExpressionEvaluationException } from "./expression/IfcExpressionEvaluationException";
21
- import IfcExpressionVisitor from "../generated/parser/IfcExpressionVisitor";
22
- import type { LiteralValueAnyArity } from "./value/LiteralValueAnyArity";
23
- import type { PrimitiveValueType } from "./value/PrimitiveValueType";
24
- export { IfcElementAccessor, IfcExpressionContext, Value, StringValue, BooleanValue, LogicalValue, NumericValue, LiteralValue, ReferenceValue, IfcPropertySetAccessor, IfcPropertyAccessor, IfcRootObjectAccessor, IfcTypeObjectAccessor, NamedObjectAccessor, ObjectAccessor, Expr, IfcExpressionEvaluationException, IfcExpressionErrorListener, IfcExpressionVisitor, };
2
+ import { ExprVisitor } from "./ExprVisitor.js";
3
+ import { IfcExpressionErrorListener } from "./IfcExpressionErrorListener.js";
4
+ import { isNullish, isPresent } from "./IfcExpressionUtils.js";
5
+ import { IfcExpressionContext } from "./context/IfcExpressionContext.js";
6
+ import { Expr } from "./expression/Expr.js";
7
+ import { IfcElementAccessor } from "./context/IfcElementAccessor.js";
8
+ import { Value } from "./value/Value.js";
9
+ import { StringValue } from "./value/StringValue.js";
10
+ import { NumericValue } from "./value/NumericValue.js";
11
+ import { BooleanValue } from "./value/BooleanValue.js";
12
+ import { LogicalValue } from "./value/LogicalValue.js";
13
+ import { LiteralValue } from "./value/LiteralValue.js";
14
+ import { ReferenceValue } from "./value/ReferenceValue.js";
15
+ import { IfcPropertySetAccessor } from "./context/IfcPropertySetAccessor.js";
16
+ import { IfcPropertyAccessor } from "./context/IfcPropertyAccessor.js";
17
+ import { IfcRootObjectAccessor } from "./context/IfcRootObjectAccessor.js";
18
+ import { IfcTypeObjectAccessor } from "./context/IfcTypeObjectAccessor.js";
19
+ import { NamedObjectAccessor } from "./context/NamedObjectAccessor.js";
20
+ import { ExprContext } from "./gen/parser/IfcExpressionParser.js";
21
+ import IfcExpressionVisitor from "./gen/parser/IfcExpressionVisitor.js";
22
+ import { ObjectAccessor } from "./context/ObjectAccessor.js";
23
+ import { IfcExpressionEvaluationException } from "./expression/IfcExpressionEvaluationException.js";
24
+ import type { LiteralValueAnyArity } from "./value/LiteralValueAnyArity.js";
25
+ import type { PrimitiveValueType } from "./value/PrimitiveValueType.js";
26
+ import { ExprEvalResult } from "./expression/ExprEvalResult";
27
+ export { IfcElementAccessor, IfcExpressionContext, Value, StringValue, BooleanValue, LogicalValue, NumericValue, LiteralValue, ReferenceValue, IfcPropertySetAccessor, IfcPropertyAccessor, IfcRootObjectAccessor, IfcTypeObjectAccessor, NamedObjectAccessor, ObjectAccessor, Expr, ExprVisitor, IfcExpressionEvaluationException, IfcExpressionErrorListener, IfcExpressionVisitor, isPresent, isNullish, };
25
28
  export type { PrimitiveValueType, LiteralValueAnyArity };
26
29
  export declare class IfcExpression {
27
30
  static parse(input: string, errorListener?: ErrorListener<Token>): ExprContext;
28
- static evaluate(expression: string, context: IfcExpressionContext): LiteralValueAnyArity;
31
+ static evaluate(expression: string, context: IfcExpressionContext): ExprEvalResult<any>;
29
32
  private static extractExprTree;
30
33
  }
@@ -1,5 +1,5 @@
1
1
  import { ErrorListener, RecognitionException, Recognizer, Token } from "antlr4";
2
- import { SyntaxErrorException } from "./SyntaxErrorException";
2
+ import { SyntaxErrorException } from "./SyntaxErrorException.js";
3
3
  export declare class IfcExpressionErrorListener extends ErrorListener<Token> {
4
4
  private exception;
5
5
  syntaxError(recognizer: Recognizer<Token>, offendingSymbol: Token, line: number, column: number, msg: string, e: RecognitionException | undefined): void;
@@ -0,0 +1,2 @@
1
+ export declare function isNullish(val: any): boolean;
2
+ export declare function isPresent(val: any): boolean;
@@ -4,25 +4,27 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.ExprVisitor = void 0;
7
- const IfcExpressionVisitor_1 = __importDefault(require("../generated/parser/IfcExpressionVisitor"));
8
- const NumericLiteralExpr_1 = require("./expression/numeric/NumericLiteralExpr");
9
- const utils_1 = require("./utils");
7
+ const IfcExpressionVisitor_js_1 = __importDefault(require("./gen/parser/IfcExpressionVisitor.js"));
8
+ const NumericLiteralExpr_js_1 = require("./expression/numeric/NumericLiteralExpr.js");
9
+ const IfcExpressionUtils_js_1 = require("./IfcExpressionUtils.js");
10
10
  const decimal_js_1 = __importDefault(require("decimal.js"));
11
- const PlusExpr_1 = require("./expression/numeric/PlusExpr");
12
- const MinusExpr_1 = require("./expression/numeric/MinusExpr");
13
- const MultiplyExpr_1 = require("./expression/numeric/MultiplyExpr");
14
- const DivideExpr_1 = require("./expression/numeric/DivideExpr");
15
- const NumParenthesisExpr_1 = require("./expression/numeric/NumParenthesisExpr");
16
- const AttributeReferenceExpr_1 = require("./expression/reference/AttributeReferenceExpr");
17
- const PropObjectReferenceExpr_1 = require("./expression/reference/PropObjectReferenceExpr");
18
- const ElemObjectReferenceExpr_1 = require("./expression/reference/ElemObjectReferenceExpr");
19
- const NestedObjectChainExpr_1 = require("./expression/reference/NestedObjectChainExpr");
20
- const NestedObjectChainEndExpr_1 = require("./expression/reference/NestedObjectChainEndExpr");
21
- const NumericValue_1 = require("./value/NumericValue");
22
- const StringValue_1 = require("./value/StringValue");
23
- const StringLiteralExpr_1 = require("./expression/string/StringLiteralExpr");
24
- const StringConcatExpr_1 = require("./expression/string/StringConcatExpr");
25
- class ExprVisitor extends IfcExpressionVisitor_1.default {
11
+ const PlusExpr_js_1 = require("./expression/numeric/PlusExpr.js");
12
+ const MinusExpr_js_1 = require("./expression/numeric/MinusExpr.js");
13
+ const MultiplyExpr_js_1 = require("./expression/numeric/MultiplyExpr.js");
14
+ const DivideExpr_js_1 = require("./expression/numeric/DivideExpr.js");
15
+ const NumParenthesisExpr_js_1 = require("./expression/numeric/NumParenthesisExpr.js");
16
+ const AttributeReferenceExpr_js_1 = require("./expression/reference/AttributeReferenceExpr.js");
17
+ const PropObjectReferenceExpr_js_1 = require("./expression/reference/PropObjectReferenceExpr.js");
18
+ const ElemObjectReferenceExpr_js_1 = require("./expression/reference/ElemObjectReferenceExpr.js");
19
+ const NestedObjectChainExpr_js_1 = require("./expression/reference/NestedObjectChainExpr.js");
20
+ const NestedObjectChainEndExpr_js_1 = require("./expression/reference/NestedObjectChainEndExpr.js");
21
+ const NumericValue_js_1 = require("./value/NumericValue.js");
22
+ const StringValue_js_1 = require("./value/StringValue.js");
23
+ const StringLiteralExpr_js_1 = require("./expression/string/StringLiteralExpr.js");
24
+ const StringConcatExpr_js_1 = require("./expression/string/StringConcatExpr.js");
25
+ const ArrayExpr_1 = require("./expression/structure/ArrayExpr");
26
+ const FunctionExpr_1 = require("./expression/function/FunctionExpr");
27
+ class ExprVisitor extends IfcExpressionVisitor_js_1.default {
26
28
  constructor() {
27
29
  super();
28
30
  /*================================================
@@ -31,25 +33,25 @@ class ExprVisitor extends IfcExpressionVisitor_1.default {
31
33
  this.visitAttributeRef = (ctx) => {
32
34
  const objectRefExpr = this.visit(ctx.objectRef());
33
35
  const nestedObjectChainExpr = this.visit(ctx.nestedObjectChain());
34
- return new AttributeReferenceExpr_1.AttributeReferenceExpr(objectRefExpr, nestedObjectChainExpr);
36
+ return new AttributeReferenceExpr_js_1.AttributeReferenceExpr(objectRefExpr, nestedObjectChainExpr);
35
37
  };
36
38
  this.visitObjectRef = (ctx) => {
37
- if ((0, utils_1.notNullish)(ctx.PROP())) {
38
- return new PropObjectReferenceExpr_1.PropObjectReferenceExpr();
39
+ if ((0, IfcExpressionUtils_js_1.isPresent)(ctx.PROP())) {
40
+ return new PropObjectReferenceExpr_js_1.PropObjectReferenceExpr();
39
41
  }
40
- else if ((0, utils_1.notNullish)(ctx.ELEM())) {
41
- return new ElemObjectReferenceExpr_1.ElemObjectReferenceExpr();
42
+ else if ((0, IfcExpressionUtils_js_1.isPresent)(ctx.ELEM())) {
43
+ return new ElemObjectReferenceExpr_js_1.ElemObjectReferenceExpr();
42
44
  }
43
45
  this.failNode(ctx);
44
46
  };
45
47
  this.visitNestedObjectChainInner = (ctx) => {
46
48
  let name = ctx.namedRef().getChild(0).getText();
47
49
  name = this.stripBrackets(name);
48
- return new NestedObjectChainExpr_1.NestedObjectChainExpr(name, this.visit(ctx.nestedObjectChain()));
50
+ return new NestedObjectChainExpr_js_1.NestedObjectChainExpr(name, this.visit(ctx.nestedObjectChain()));
49
51
  };
50
52
  this.visitNestedObjectChainEnd = (ctx) => {
51
53
  let name = ctx.RESERVED_ATTRIBUTE_NAME().getText();
52
- return new NestedObjectChainEndExpr_1.NestedObjectChainEndExpr(name);
54
+ return new NestedObjectChainEndExpr_js_1.NestedObjectChainEndExpr(name);
53
55
  };
54
56
  /*================================================
55
57
  * StringExpr
@@ -57,13 +59,13 @@ class ExprVisitor extends IfcExpressionVisitor_1.default {
57
59
  this.visitStringLiteral = (ctx) => {
58
60
  const quotedString = ctx.QUOTED_STRING().getText();
59
61
  const text = quotedString.substring(1, quotedString.length - 1);
60
- return new StringLiteralExpr_1.StringLiteralExpr(new StringValue_1.StringValue(text));
62
+ return new StringLiteralExpr_js_1.StringLiteralExpr(new StringValue_js_1.StringValue(text));
61
63
  };
62
64
  this.visitStringAttributeRef = (ctx) => {
63
65
  return this.visit(ctx.getChild(0));
64
66
  };
65
67
  this.visitStringConcat = (ctx) => {
66
- return new StringConcatExpr_1.StringConcatExpr(this.visit(ctx._left), this.visit(ctx._right));
68
+ return new StringConcatExpr_js_1.StringConcatExpr(this.visit(ctx._left), this.visit(ctx._right));
67
69
  };
68
70
  /*================================================
69
71
  * NumExpr
@@ -73,21 +75,21 @@ class ExprVisitor extends IfcExpressionVisitor_1.default {
73
75
  };
74
76
  this.visitNumLiteral = (ctx) => {
75
77
  let val = ctx.INT();
76
- if ((0, utils_1.notNullish)(val)) {
77
- return new NumericLiteralExpr_1.NumericLiteralExpr(new NumericValue_1.NumericValue(new decimal_js_1.default(val.symbol.text)));
78
+ if ((0, IfcExpressionUtils_js_1.isPresent)(val)) {
79
+ return new NumericLiteralExpr_js_1.NumericLiteralExpr(new NumericValue_js_1.NumericValue(new decimal_js_1.default(ctx.getText())));
78
80
  }
79
81
  val = ctx.FLOAT();
80
- if ((0, utils_1.notNullish)(val)) {
81
- return new NumericLiteralExpr_1.NumericLiteralExpr(new NumericValue_1.NumericValue(new decimal_js_1.default(val.symbol.text)));
82
+ if ((0, IfcExpressionUtils_js_1.isPresent)(val)) {
83
+ return new NumericLiteralExpr_js_1.NumericLiteralExpr(new NumericValue_js_1.NumericValue(new decimal_js_1.default(ctx.getText())));
82
84
  }
83
85
  this.failNode(ctx);
84
86
  };
85
87
  this.visitNumAddSub = (ctx) => {
86
88
  switch (ctx._op.text) {
87
89
  case "+":
88
- return new PlusExpr_1.PlusExpr(this.visit(ctx.getChild(0)), this.visit(ctx.getChild(2)));
90
+ return new PlusExpr_js_1.PlusExpr(this.visit(ctx.getChild(0)), this.visit(ctx.getChild(2)));
89
91
  case "-":
90
- return new MinusExpr_1.MinusExpr(this.visit(ctx.getChild(0)), this.visit(ctx.getChild(2)));
92
+ return new MinusExpr_js_1.MinusExpr(this.visit(ctx.getChild(0)), this.visit(ctx.getChild(2)));
91
93
  default:
92
94
  this.failNode(ctx);
93
95
  }
@@ -95,15 +97,15 @@ class ExprVisitor extends IfcExpressionVisitor_1.default {
95
97
  this.visitNumMulDiv = (ctx) => {
96
98
  switch (ctx._op.text) {
97
99
  case "*":
98
- return new MultiplyExpr_1.MultiplyExpr(this.visit(ctx.getChild(0)), this.visit(ctx.getChild(2)));
100
+ return new MultiplyExpr_js_1.MultiplyExpr(this.visit(ctx.getChild(0)), this.visit(ctx.getChild(2)));
99
101
  case "/":
100
- return new DivideExpr_1.DivideExpr(this.visit(ctx.getChild(0)), this.visit(ctx.getChild(2)));
102
+ return new DivideExpr_js_1.DivideExpr(this.visit(ctx.getChild(0)), this.visit(ctx.getChild(2)));
101
103
  default:
102
104
  this.failNode(ctx);
103
105
  }
104
106
  };
105
107
  this.visitNumParens = (ctx) => {
106
- return new NumParenthesisExpr_1.NumParenthesisExpr(this.visit(ctx.getChild(1)));
108
+ return new NumParenthesisExpr_js_1.NumParenthesisExpr(this.visit(ctx.getChild(1)));
107
109
  };
108
110
  this.visitExpr = (ctx) => {
109
111
  return this.visit(ctx.getChild(0));
@@ -111,6 +113,38 @@ class ExprVisitor extends IfcExpressionVisitor_1.default {
111
113
  this.visitNumLit = (ctx) => {
112
114
  return this.visit(ctx.getChild(0));
113
115
  };
116
+ /*================================================
117
+ * ArrayExpr
118
+ *===============================================*/
119
+ this.visitArray = (ctx) => {
120
+ return new ArrayExpr_1.ArrayExpr(this.collectArrayElements(ctx.arrayElementList()));
121
+ };
122
+ this.collectArrayElements = (ctx) => {
123
+ const first = this.visit(ctx.expr());
124
+ const rest = ctx.arrayElementList();
125
+ if (!(0, IfcExpressionUtils_js_1.isNullish)(rest)) {
126
+ const arr = this.collectArrayElements(rest);
127
+ arr.unshift(first);
128
+ return arr;
129
+ }
130
+ return [first];
131
+ };
132
+ /*================================================
133
+ * FuncExpr
134
+ *===============================================*/
135
+ this.visitFunctionCall = (ctx) => {
136
+ return new FunctionExpr_1.FunctionExpr(ctx._name.text, this.collectFunctionArguments(ctx.exprList()));
137
+ };
138
+ this.collectFunctionArguments = (ctx) => {
139
+ const first = this.visit(ctx.expr());
140
+ const rest = ctx.exprList();
141
+ if (!(0, IfcExpressionUtils_js_1.isNullish)(rest)) {
142
+ const arr = this.collectFunctionArguments(rest);
143
+ arr.unshift(first);
144
+ return arr;
145
+ }
146
+ return [first];
147
+ };
114
148
  }
115
149
  stripBrackets(name) {
116
150
  if (name.startsWith("{")) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/ExprVisitor.ts"],"names":[],"mappings":"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","file":"ExprVisitor.js","sourcesContent":["import IfcExpressionVisitor from \"../generated/parser/IfcExpressionVisitor\";\nimport { NumericLiteralExpr } from \"./expression/numeric/NumericLiteralExpr\";\nimport {\n AttributeRefContext,\n ExprContext,\n NestedObjectChainEndContext,\n NestedObjectChainInnerContext,\n NumAddSubContext,\n NumAttributeRefContext,\n NumLitContext,\n NumLiteralContext,\n NumMulDivContext,\n NumParensContext,\n ObjectRefContext,\n StringAttributeRefContext,\n StringConcatContext,\n StringLiteralContext,\n} from \"../generated/parser/IfcExpressionParser\";\nimport { Expr } from \"./expression/Expr\";\nimport { notNullish } from \"./utils\";\nimport Decimal from \"decimal.js\";\nimport { PlusExpr } from \"./expression/numeric/PlusExpr\";\nimport { MinusExpr } from \"./expression/numeric/MinusExpr\";\nimport { ParserRuleContext } from \"antlr4\";\nimport { MultiplyExpr } from \"./expression/numeric/MultiplyExpr\";\nimport { DivideExpr } from \"./expression/numeric/DivideExpr\";\nimport { NumParenthesisExpr } from \"./expression/numeric/NumParenthesisExpr\";\nimport { AttributeReferenceExpr } from \"./expression/reference/AttributeReferenceExpr\";\nimport { PropObjectReferenceExpr } from \"./expression/reference/PropObjectReferenceExpr\";\nimport { ElemObjectReferenceExpr } from \"./expression/reference/ElemObjectReferenceExpr\";\nimport { NestedObjectChainExpr } from \"./expression/reference/NestedObjectChainExpr\";\nimport { NestedObjectChainEndExpr } from \"./expression/reference/NestedObjectChainEndExpr\";\nimport { NumericValue } from \"./value/NumericValue\";\nimport { StringValue } from \"./value/StringValue\";\nimport { StringLiteralExpr } from \"./expression/string/StringLiteralExpr\";\nimport { StringConcatExpr } from \"./expression/string/StringConcatExpr\";\n\nexport class ExprVisitor extends IfcExpressionVisitor<Expr<any>> {\n constructor() {\n super();\n }\n\n /*================================================\n * AttributeRef\n *==============================================*/\n\n visitAttributeRef: (ctx: AttributeRefContext) => Expr<any> = (ctx) => {\n const objectRefExpr = this.visit(ctx.objectRef());\n const nestedObjectChainExpr = this.visit(ctx.nestedObjectChain());\n return new AttributeReferenceExpr(\n objectRefExpr,\n nestedObjectChainExpr as NestedObjectChainExpr\n );\n };\n\n visitObjectRef: (ctx: ObjectRefContext) => Expr<any> = (ctx) => {\n if (notNullish(ctx.PROP())) {\n return new PropObjectReferenceExpr();\n } else if (notNullish(ctx.ELEM())) {\n return new ElemObjectReferenceExpr();\n }\n this.failNode(ctx);\n };\n\n visitNestedObjectChainInner: (\n ctx: NestedObjectChainInnerContext\n ) => Expr<any> = (ctx) => {\n let name = ctx.namedRef().getChild(0).getText();\n name = this.stripBrackets(name);\n return new NestedObjectChainExpr(\n name,\n this.visit(ctx.nestedObjectChain()) as NestedObjectChainExpr\n );\n };\n\n visitNestedObjectChainEnd: (ctx: NestedObjectChainEndContext) => Expr<any> = (\n ctx\n ) => {\n let name = ctx.RESERVED_ATTRIBUTE_NAME().getText();\n return new NestedObjectChainEndExpr(name);\n };\n\n private stripBrackets(name: string) {\n if (name.startsWith(\"{\")) {\n return name.substring(1, name.length - 1);\n }\n return name;\n }\n\n /*================================================\n * StringExpr\n *===============================================*/\n\n visitStringLiteral: (ctx: StringLiteralContext) => Expr<any> = (ctx) => {\n const quotedString = ctx.QUOTED_STRING().getText();\n const text = quotedString.substring(1, quotedString.length - 1);\n return new StringLiteralExpr(new StringValue(text));\n };\n\n visitStringAttributeRef: (ctx: StringAttributeRefContext) => Expr<any> = (\n ctx\n ) => {\n return this.visit(ctx.getChild(0));\n };\n\n visitStringConcat: (ctx: StringConcatContext) => Expr<any> = (ctx) => {\n return new StringConcatExpr(this.visit(ctx._left), this.visit(ctx._right));\n };\n\n /*================================================\n * NumExpr\n *===============================================*/\n\n visitNumAttributeRef: (ctx: NumAttributeRefContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.getChild(0));\n };\n\n visitNumLiteral: (ctx: NumLiteralContext) => Expr<any> = (ctx) => {\n let val = ctx.INT();\n if (notNullish(val)) {\n return new NumericLiteralExpr(\n new NumericValue(new Decimal(val.symbol.text))\n );\n }\n val = ctx.FLOAT();\n if (notNullish(val)) {\n return new NumericLiteralExpr(\n new NumericValue(new Decimal(val.symbol.text))\n );\n }\n this.failNode(ctx);\n };\n\n visitNumAddSub: (ctx: NumAddSubContext) => Expr<any> = (ctx) => {\n switch (ctx._op.text) {\n case \"+\":\n return new PlusExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n case \"-\":\n return new MinusExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n default:\n this.failNode(ctx);\n }\n };\n\n visitNumMulDiv: (ctx: NumMulDivContext) => Expr<any> = (ctx) => {\n switch (ctx._op.text) {\n case \"*\":\n return new MultiplyExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n case \"/\":\n return new DivideExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n default:\n this.failNode(ctx);\n }\n };\n\n visitNumParens: (ctx: NumParensContext) => Expr<any> = (ctx) => {\n return new NumParenthesisExpr(this.visit(ctx.getChild(1)));\n };\n\n visitExpr: (ctx: ExprContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.getChild(0));\n };\n\n visitNumLit: (ctx: NumLitContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.getChild(0));\n };\n\n private failNode(ctx: ParserRuleContext) {\n throw new Error(`Cannot parse (sub)expression ${ctx.getText()}`);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/ExprVisitor.ts"],"names":[],"mappings":"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","file":"ExprVisitor.js","sourcesContent":["import IfcExpressionVisitor from \"./gen/parser/IfcExpressionVisitor.js\";\nimport { NumericLiteralExpr } from \"./expression/numeric/NumericLiteralExpr.js\";\nimport {\n ArrayContext,\n ArrayElementListContext,\n AttributeRefContext,\n ExprContext,\n ExprListContext,\n FunctionCallContext,\n NestedObjectChainEndContext,\n NestedObjectChainInnerContext,\n NumAddSubContext,\n NumAttributeRefContext,\n NumLitContext,\n NumLiteralContext,\n NumMulDivContext,\n NumParensContext,\n ObjectRefContext,\n StringAttributeRefContext,\n StringConcatContext,\n StringLiteralContext,\n} from \"./gen/parser/IfcExpressionParser.js\";\nimport { Expr } from \"./expression/Expr.js\";\nimport { isNullish, isPresent } from \"./IfcExpressionUtils.js\";\nimport Decimal from \"decimal.js\";\nimport { PlusExpr } from \"./expression/numeric/PlusExpr.js\";\nimport { MinusExpr } from \"./expression/numeric/MinusExpr.js\";\nimport { ParserRuleContext } from \"antlr4\";\nimport { MultiplyExpr } from \"./expression/numeric/MultiplyExpr.js\";\nimport { DivideExpr } from \"./expression/numeric/DivideExpr.js\";\nimport { NumParenthesisExpr } from \"./expression/numeric/NumParenthesisExpr.js\";\nimport { AttributeReferenceExpr } from \"./expression/reference/AttributeReferenceExpr.js\";\nimport { PropObjectReferenceExpr } from \"./expression/reference/PropObjectReferenceExpr.js\";\nimport { ElemObjectReferenceExpr } from \"./expression/reference/ElemObjectReferenceExpr.js\";\nimport { NestedObjectChainExpr } from \"./expression/reference/NestedObjectChainExpr.js\";\nimport { NestedObjectChainEndExpr } from \"./expression/reference/NestedObjectChainEndExpr.js\";\nimport { NumericValue } from \"./value/NumericValue.js\";\nimport { StringValue } from \"./value/StringValue.js\";\nimport { StringLiteralExpr } from \"./expression/string/StringLiteralExpr.js\";\nimport { StringConcatExpr } from \"./expression/string/StringConcatExpr.js\";\nimport { ArrayExpr } from \"./expression/structure/ArrayExpr\";\nimport { FunctionExpr } from \"./expression/function/FunctionExpr\";\n\nexport class ExprVisitor extends IfcExpressionVisitor<Expr<any>> {\n constructor() {\n super();\n }\n\n /*================================================\n * AttributeRef\n *==============================================*/\n\n visitAttributeRef: (ctx: AttributeRefContext) => Expr<any> = (ctx) => {\n const objectRefExpr = this.visit(ctx.objectRef());\n const nestedObjectChainExpr = this.visit(ctx.nestedObjectChain());\n return new AttributeReferenceExpr(\n objectRefExpr,\n nestedObjectChainExpr as NestedObjectChainExpr\n );\n };\n\n visitObjectRef: (ctx: ObjectRefContext) => Expr<any> = (ctx) => {\n if (isPresent(ctx.PROP())) {\n return new PropObjectReferenceExpr();\n } else if (isPresent(ctx.ELEM())) {\n return new ElemObjectReferenceExpr();\n }\n this.failNode(ctx);\n };\n\n visitNestedObjectChainInner: (\n ctx: NestedObjectChainInnerContext\n ) => Expr<any> = (ctx) => {\n let name = ctx.namedRef().getChild(0).getText();\n name = this.stripBrackets(name);\n return new NestedObjectChainExpr(\n name,\n this.visit(ctx.nestedObjectChain()) as NestedObjectChainExpr\n );\n };\n\n visitNestedObjectChainEnd: (ctx: NestedObjectChainEndContext) => Expr<any> = (\n ctx\n ) => {\n let name = ctx.RESERVED_ATTRIBUTE_NAME().getText();\n return new NestedObjectChainEndExpr(name);\n };\n\n private stripBrackets(name: string) {\n if (name.startsWith(\"{\")) {\n return name.substring(1, name.length - 1);\n }\n return name;\n }\n\n /*================================================\n * StringExpr\n *===============================================*/\n\n visitStringLiteral: (ctx: StringLiteralContext) => Expr<any> = (ctx) => {\n const quotedString = ctx.QUOTED_STRING().getText();\n const text = quotedString.substring(1, quotedString.length - 1);\n return new StringLiteralExpr(new StringValue(text));\n };\n\n visitStringAttributeRef: (ctx: StringAttributeRefContext) => Expr<any> = (\n ctx\n ) => {\n return this.visit(ctx.getChild(0));\n };\n\n visitStringConcat: (ctx: StringConcatContext) => Expr<any> = (ctx) => {\n return new StringConcatExpr(this.visit(ctx._left), this.visit(ctx._right));\n };\n\n /*================================================\n * NumExpr\n *===============================================*/\n\n visitNumAttributeRef: (ctx: NumAttributeRefContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.getChild(0));\n };\n\n visitNumLiteral: (ctx: NumLiteralContext) => Expr<any> = (ctx) => {\n let val = ctx.INT();\n if (isPresent(val)) {\n return new NumericLiteralExpr(\n new NumericValue(new Decimal(ctx.getText()))\n );\n }\n val = ctx.FLOAT();\n if (isPresent(val)) {\n return new NumericLiteralExpr(\n new NumericValue(new Decimal(ctx.getText()))\n );\n }\n this.failNode(ctx);\n };\n\n visitNumAddSub: (ctx: NumAddSubContext) => Expr<any> = (ctx) => {\n switch (ctx._op.text) {\n case \"+\":\n return new PlusExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n case \"-\":\n return new MinusExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n default:\n this.failNode(ctx);\n }\n };\n\n visitNumMulDiv: (ctx: NumMulDivContext) => Expr<any> = (ctx) => {\n switch (ctx._op.text) {\n case \"*\":\n return new MultiplyExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n case \"/\":\n return new DivideExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n default:\n this.failNode(ctx);\n }\n };\n\n visitNumParens: (ctx: NumParensContext) => Expr<any> = (ctx) => {\n return new NumParenthesisExpr(this.visit(ctx.getChild(1)));\n };\n\n visitExpr: (ctx: ExprContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.getChild(0));\n };\n\n visitNumLit: (ctx: NumLitContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.getChild(0));\n };\n\n /*================================================\n * ArrayExpr\n *===============================================*/\n\n visitArray: (ctx: ArrayContext) => Expr<any> = (ctx) => {\n return new ArrayExpr(this.collectArrayElements(ctx.arrayElementList()));\n };\n\n collectArrayElements: (ctx: ArrayElementListContext) => Array<Expr<any>> = (\n ctx\n ) => {\n const first = this.visit(ctx.expr());\n const rest = ctx.arrayElementList();\n if (!isNullish(rest)) {\n const arr = this.collectArrayElements(rest);\n arr.unshift(first);\n return arr;\n }\n return [first];\n };\n\n /*================================================\n * FuncExpr\n *===============================================*/\n\n visitFunctionCall: (ctx: FunctionCallContext) => Expr<any> = (ctx) => {\n return new FunctionExpr(\n ctx._name.text,\n this.collectFunctionArguments(ctx.exprList())\n );\n };\n\n collectFunctionArguments: (ctx: ExprListContext) => Array<Expr<any>> = (\n ctx\n ) => {\n const first = this.visit(ctx.expr());\n const rest = ctx.exprList();\n if (!isNullish(rest)) {\n const arr = this.collectFunctionArguments(rest);\n arr.unshift(first);\n return arr;\n }\n return [first];\n };\n\n private failNode(ctx: ParserRuleContext) {\n throw new Error(`Cannot parse (sub)expression ${ctx.getText()}`);\n }\n}\n"]}
@@ -3,65 +3,66 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.IfcExpression = exports.IfcExpressionVisitor = exports.IfcExpressionErrorListener = exports.IfcExpressionEvaluationException = exports.NamedObjectAccessor = exports.IfcTypeObjectAccessor = exports.IfcRootObjectAccessor = exports.IfcPropertyAccessor = exports.IfcPropertySetAccessor = exports.ReferenceValue = exports.NumericValue = exports.LogicalValue = exports.BooleanValue = exports.StringValue = exports.Value = exports.IfcElementAccessor = void 0;
6
+ exports.IfcExpression = exports.isNullish = exports.isPresent = exports.IfcExpressionVisitor = exports.IfcExpressionErrorListener = exports.IfcExpressionEvaluationException = exports.ExprVisitor = exports.NamedObjectAccessor = exports.IfcTypeObjectAccessor = exports.IfcRootObjectAccessor = exports.IfcPropertyAccessor = exports.IfcPropertySetAccessor = exports.ReferenceValue = exports.NumericValue = exports.LogicalValue = exports.BooleanValue = exports.StringValue = exports.IfcElementAccessor = void 0;
7
7
  const antlr4_1 = require("antlr4");
8
- const ExprVisitor_1 = require("./ExprVisitor");
9
- const IfcExpressionErrorListener_1 = require("./IfcExpressionErrorListener");
10
- Object.defineProperty(exports, "IfcExpressionErrorListener", { enumerable: true, get: function () { return IfcExpressionErrorListener_1.IfcExpressionErrorListener; } });
11
- const utils_1 = require("./utils");
12
- const IfcExpressionParser_1 = __importDefault(require("../generated/parser/IfcExpressionParser"));
13
- const IfcExpressionLexer_1 = __importDefault(require("../generated/parser/IfcExpressionLexer"));
14
- const IfcElementAccessor_1 = require("./context/IfcElementAccessor");
15
- Object.defineProperty(exports, "IfcElementAccessor", { enumerable: true, get: function () { return IfcElementAccessor_1.IfcElementAccessor; } });
16
- const Value_1 = require("./value/Value");
17
- Object.defineProperty(exports, "Value", { enumerable: true, get: function () { return Value_1.Value; } });
18
- const StringValue_1 = require("./value/StringValue");
19
- Object.defineProperty(exports, "StringValue", { enumerable: true, get: function () { return StringValue_1.StringValue; } });
20
- const NumericValue_1 = require("./value/NumericValue");
21
- Object.defineProperty(exports, "NumericValue", { enumerable: true, get: function () { return NumericValue_1.NumericValue; } });
22
- const BooleanValue_1 = require("./value/BooleanValue");
23
- Object.defineProperty(exports, "BooleanValue", { enumerable: true, get: function () { return BooleanValue_1.BooleanValue; } });
24
- const LogicalValue_1 = require("./value/LogicalValue");
25
- Object.defineProperty(exports, "LogicalValue", { enumerable: true, get: function () { return LogicalValue_1.LogicalValue; } });
26
- const ReferenceValue_1 = require("./value/ReferenceValue");
27
- Object.defineProperty(exports, "ReferenceValue", { enumerable: true, get: function () { return ReferenceValue_1.ReferenceValue; } });
28
- const IfcPropertySetAccessor_1 = require("./context/IfcPropertySetAccessor");
29
- Object.defineProperty(exports, "IfcPropertySetAccessor", { enumerable: true, get: function () { return IfcPropertySetAccessor_1.IfcPropertySetAccessor; } });
30
- const IfcPropertyAccessor_1 = require("./context/IfcPropertyAccessor");
31
- Object.defineProperty(exports, "IfcPropertyAccessor", { enumerable: true, get: function () { return IfcPropertyAccessor_1.IfcPropertyAccessor; } });
32
- const IfcRootObjectAccessor_1 = require("./context/IfcRootObjectAccessor");
33
- Object.defineProperty(exports, "IfcRootObjectAccessor", { enumerable: true, get: function () { return IfcRootObjectAccessor_1.IfcRootObjectAccessor; } });
34
- const IfcTypeObjectAccessor_1 = require("./context/IfcTypeObjectAccessor");
35
- Object.defineProperty(exports, "IfcTypeObjectAccessor", { enumerable: true, get: function () { return IfcTypeObjectAccessor_1.IfcTypeObjectAccessor; } });
36
- const NamedObjectAccessor_1 = require("./context/NamedObjectAccessor");
37
- Object.defineProperty(exports, "NamedObjectAccessor", { enumerable: true, get: function () { return NamedObjectAccessor_1.NamedObjectAccessor; } });
38
- const IfcExpressionEvaluationException_1 = require("./expression/IfcExpressionEvaluationException");
39
- Object.defineProperty(exports, "IfcExpressionEvaluationException", { enumerable: true, get: function () { return IfcExpressionEvaluationException_1.IfcExpressionEvaluationException; } });
40
- const IfcExpressionVisitor_1 = __importDefault(require("../generated/parser/IfcExpressionVisitor"));
41
- exports.IfcExpressionVisitor = IfcExpressionVisitor_1.default;
8
+ const ExprVisitor_js_1 = require("./ExprVisitor.js");
9
+ Object.defineProperty(exports, "ExprVisitor", { enumerable: true, get: function () { return ExprVisitor_js_1.ExprVisitor; } });
10
+ const IfcExpressionErrorListener_js_1 = require("./IfcExpressionErrorListener.js");
11
+ Object.defineProperty(exports, "IfcExpressionErrorListener", { enumerable: true, get: function () { return IfcExpressionErrorListener_js_1.IfcExpressionErrorListener; } });
12
+ const IfcExpressionUtils_js_1 = require("./IfcExpressionUtils.js");
13
+ Object.defineProperty(exports, "isNullish", { enumerable: true, get: function () { return IfcExpressionUtils_js_1.isNullish; } });
14
+ Object.defineProperty(exports, "isPresent", { enumerable: true, get: function () { return IfcExpressionUtils_js_1.isPresent; } });
15
+ const IfcElementAccessor_js_1 = require("./context/IfcElementAccessor.js");
16
+ Object.defineProperty(exports, "IfcElementAccessor", { enumerable: true, get: function () { return IfcElementAccessor_js_1.IfcElementAccessor; } });
17
+ const StringValue_js_1 = require("./value/StringValue.js");
18
+ Object.defineProperty(exports, "StringValue", { enumerable: true, get: function () { return StringValue_js_1.StringValue; } });
19
+ const NumericValue_js_1 = require("./value/NumericValue.js");
20
+ Object.defineProperty(exports, "NumericValue", { enumerable: true, get: function () { return NumericValue_js_1.NumericValue; } });
21
+ const BooleanValue_js_1 = require("./value/BooleanValue.js");
22
+ Object.defineProperty(exports, "BooleanValue", { enumerable: true, get: function () { return BooleanValue_js_1.BooleanValue; } });
23
+ const LogicalValue_js_1 = require("./value/LogicalValue.js");
24
+ Object.defineProperty(exports, "LogicalValue", { enumerable: true, get: function () { return LogicalValue_js_1.LogicalValue; } });
25
+ const ReferenceValue_js_1 = require("./value/ReferenceValue.js");
26
+ Object.defineProperty(exports, "ReferenceValue", { enumerable: true, get: function () { return ReferenceValue_js_1.ReferenceValue; } });
27
+ const IfcPropertySetAccessor_js_1 = require("./context/IfcPropertySetAccessor.js");
28
+ Object.defineProperty(exports, "IfcPropertySetAccessor", { enumerable: true, get: function () { return IfcPropertySetAccessor_js_1.IfcPropertySetAccessor; } });
29
+ const IfcPropertyAccessor_js_1 = require("./context/IfcPropertyAccessor.js");
30
+ Object.defineProperty(exports, "IfcPropertyAccessor", { enumerable: true, get: function () { return IfcPropertyAccessor_js_1.IfcPropertyAccessor; } });
31
+ const IfcRootObjectAccessor_js_1 = require("./context/IfcRootObjectAccessor.js");
32
+ Object.defineProperty(exports, "IfcRootObjectAccessor", { enumerable: true, get: function () { return IfcRootObjectAccessor_js_1.IfcRootObjectAccessor; } });
33
+ const IfcTypeObjectAccessor_js_1 = require("./context/IfcTypeObjectAccessor.js");
34
+ Object.defineProperty(exports, "IfcTypeObjectAccessor", { enumerable: true, get: function () { return IfcTypeObjectAccessor_js_1.IfcTypeObjectAccessor; } });
35
+ const NamedObjectAccessor_js_1 = require("./context/NamedObjectAccessor.js");
36
+ Object.defineProperty(exports, "NamedObjectAccessor", { enumerable: true, get: function () { return NamedObjectAccessor_js_1.NamedObjectAccessor; } });
37
+ const IfcExpressionParser_js_1 = __importDefault(require("./gen/parser/IfcExpressionParser.js"));
38
+ const IfcExpressionVisitor_js_1 = __importDefault(require("./gen/parser/IfcExpressionVisitor.js"));
39
+ exports.IfcExpressionVisitor = IfcExpressionVisitor_js_1.default;
40
+ const IfcExpressionLexer_js_1 = __importDefault(require("./gen/parser/IfcExpressionLexer.js"));
41
+ const IfcExpressionEvaluationException_js_1 = require("./expression/IfcExpressionEvaluationException.js");
42
+ Object.defineProperty(exports, "IfcExpressionEvaluationException", { enumerable: true, get: function () { return IfcExpressionEvaluationException_js_1.IfcExpressionEvaluationException; } });
42
43
  class IfcExpression {
43
44
  static parse(input, errorListener) {
44
45
  const chars = new antlr4_1.CharStream(input); // replace this with a FileStream as required
45
- const lexer = new IfcExpressionLexer_1.default(chars);
46
+ const lexer = new IfcExpressionLexer_js_1.default(chars);
46
47
  const tokens = new antlr4_1.CommonTokenStream(lexer);
47
- const parser = new IfcExpressionParser_1.default(tokens);
48
- if ((0, utils_1.notNullish)(errorListener)) {
48
+ const parser = new IfcExpressionParser_js_1.default(tokens);
49
+ if ((0, IfcExpressionUtils_js_1.isPresent)(errorListener)) {
49
50
  parser.removeErrorListeners();
50
51
  parser.addErrorListener(errorListener);
51
52
  }
52
53
  return parser.expr();
53
54
  }
54
55
  static evaluate(expression, context) {
55
- const errorListener = new IfcExpressionErrorListener_1.IfcExpressionErrorListener();
56
+ const errorListener = new IfcExpressionErrorListener_js_1.IfcExpressionErrorListener();
56
57
  const tree = IfcExpression.parse(expression, errorListener);
57
58
  if (errorListener.isErrorOccurred()) {
58
59
  throw errorListener.getException();
59
60
  }
60
61
  const parsedExpression = this.extractExprTree(tree);
61
- return parsedExpression.evaluate(context);
62
+ return parsedExpression.evaluate(context, new Map());
62
63
  }
63
64
  static extractExprTree(tree) {
64
- const visitor = new ExprVisitor_1.ExprVisitor();
65
+ const visitor = new ExprVisitor_js_1.ExprVisitor();
65
66
  return visitor.visit(tree);
66
67
  }
67
68
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/IfcExpression.ts"],"names":[],"mappings":";;;;;;AAAA,mCAA6E;AAC7E,+CAA4C;AAC5C,6EAA0E;AA6CxE,2GA7CO,uDAA0B,OA6CP;AA5C5B,mCAAqC;AAGrC,kGAEiD;AACjD,gGAAwE;AAExE,qEAAkE;AAmBhE,mGAnBO,uCAAkB,OAmBP;AAlBpB,yCAAsC;AAoBpC,sFApBO,aAAK,OAoBP;AAnBP,qDAAkD;AAoBhD,4FApBO,yBAAW,OAoBP;AAnBb,uDAAoD;AAsBlD,6FAtBO,2BAAY,OAsBP;AArBd,uDAAoD;AAmBlD,6FAnBO,2BAAY,OAmBP;AAlBd,uDAAoD;AAmBlD,6FAnBO,2BAAY,OAmBP;AAjBd,2DAAwD;AAoBtD,+FApBO,+BAAc,OAoBP;AAnBhB,6EAA0E;AAoBxE,uGApBO,+CAAsB,OAoBP;AAnBxB,uEAAoE;AAoBlE,oGApBO,yCAAmB,OAoBP;AAnBrB,2EAAwE;AAoBtE,sGApBO,6CAAqB,OAoBP;AAnBvB,2EAAwE;AAoBtE,sGApBO,6CAAqB,OAoBP;AAnBvB,uEAAoE;AAoBlE,oGApBO,yCAAmB,OAoBP;AAlBrB,oGAAiG;AAqB/F,iHArBO,mEAAgC,OAqBP;AApBlC,oGAA4E;AAsB1E,+BAtBK,8BAAoB,CAsBL;AAKtB,MAAa,aAAa;IACjB,MAAM,CAAC,KAAK,CACjB,KAAa,EACb,aAAoC;QAEpC,MAAM,KAAK,GAAG,IAAI,mBAAU,CAAC,KAAK,CAAC,CAAC,CAAC,6CAA6C;QAClF,MAAM,KAAK,GAAG,IAAI,4BAAkB,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,0BAAiB,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,6BAAmB,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,IAAA,kBAAU,EAAC,aAAa,CAAC,EAAE;YAC7B,MAAM,CAAC,oBAAoB,EAAE,CAAC;YAC9B,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;SACxC;QACD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAEM,MAAM,CAAC,QAAQ,CACpB,UAAkB,EAClB,OAA6B;QAE7B,MAAM,aAAa,GAAG,IAAI,uDAA0B,EAAE,CAAC;QACvD,MAAM,IAAI,GAAgB,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QACzE,IAAI,aAAa,CAAC,eAAe,EAAE,EAAE;YACnC,MAAM,aAAa,CAAC,YAAY,EAAE,CAAC;SACpC;QACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACpD,OAAO,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,IAAiB;QAC9C,MAAM,OAAO,GAAG,IAAI,yBAAW,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF;AAjCD,sCAiCC","file":"IfcExpression.js","sourcesContent":["import { CharStream, CommonTokenStream, ErrorListener, Token } from \"antlr4\";\nimport { ExprVisitor } from \"./ExprVisitor\";\nimport { IfcExpressionErrorListener } from \"./IfcExpressionErrorListener\";\nimport { notNullish } from \"./utils\";\nimport { IfcExpressionContext } from \"./context/IfcExpressionContext\";\nimport { Expr } from \"./expression/Expr\";\nimport IfcExpressionParser, {\n ExprContext,\n} from \"../generated/parser/IfcExpressionParser\";\nimport IfcExpressionLexer from \"../generated/parser/IfcExpressionLexer\";\n\nimport { IfcElementAccessor } from \"./context/IfcElementAccessor\";\nimport { Value } from \"./value/Value\";\nimport { StringValue } from \"./value/StringValue\";\nimport { NumericValue } from \"./value/NumericValue\";\nimport { BooleanValue } from \"./value/BooleanValue\";\nimport { LogicalValue } from \"./value/LogicalValue\";\nimport { LiteralValue } from \"./value/LiteralValue\";\nimport { ReferenceValue } from \"./value/ReferenceValue\";\nimport { IfcPropertySetAccessor } from \"./context/IfcPropertySetAccessor\";\nimport { IfcPropertyAccessor } from \"./context/IfcPropertyAccessor\";\nimport { IfcRootObjectAccessor } from \"./context/IfcRootObjectAccessor\";\nimport { IfcTypeObjectAccessor } from \"./context/IfcTypeObjectAccessor\";\nimport { NamedObjectAccessor } from \"./context/NamedObjectAccessor\";\nimport { ObjectAccessor } from \"./context/ObjectAccessor\";\nimport { IfcExpressionEvaluationException } from \"./expression/IfcExpressionEvaluationException\";\nimport IfcExpressionVisitor from \"../generated/parser/IfcExpressionVisitor\";\nimport type { LiteralValueAnyArity } from \"./value/LiteralValueAnyArity\";\nimport type { PrimitiveValueType } from \"./value/PrimitiveValueType\";\nexport {\n IfcElementAccessor,\n IfcExpressionContext,\n Value,\n StringValue,\n BooleanValue,\n LogicalValue,\n NumericValue,\n LiteralValue,\n ReferenceValue,\n IfcPropertySetAccessor,\n IfcPropertyAccessor,\n IfcRootObjectAccessor,\n IfcTypeObjectAccessor,\n NamedObjectAccessor,\n ObjectAccessor,\n Expr,\n IfcExpressionEvaluationException,\n IfcExpressionErrorListener,\n IfcExpressionVisitor,\n};\n\nexport type { PrimitiveValueType, LiteralValueAnyArity };\n\nexport class IfcExpression {\n public static parse(\n input: string,\n errorListener?: ErrorListener<Token>\n ): ExprContext {\n const chars = new CharStream(input); // replace this with a FileStream as required\n const lexer = new IfcExpressionLexer(chars);\n const tokens = new CommonTokenStream(lexer);\n const parser = new IfcExpressionParser(tokens);\n if (notNullish(errorListener)) {\n parser.removeErrorListeners();\n parser.addErrorListener(errorListener);\n }\n return parser.expr();\n }\n\n public static evaluate(\n expression: string,\n context: IfcExpressionContext\n ): LiteralValueAnyArity {\n const errorListener = new IfcExpressionErrorListener();\n const tree: ExprContext = IfcExpression.parse(expression, errorListener);\n if (errorListener.isErrorOccurred()) {\n throw errorListener.getException();\n }\n const parsedExpression = this.extractExprTree(tree);\n return parsedExpression.evaluate(context);\n }\n\n private static extractExprTree(tree: ExprContext): Expr<any> {\n const visitor = new ExprVisitor();\n return visitor.visit(tree);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/IfcExpression.ts"],"names":[],"mappings":";;;;;;AAAA,mCAA6E;AAC7E,qDAA+C;AA+C7C,4FA/CO,4BAAW,OA+CP;AA9Cb,mFAA6E;AAgD3E,2GAhDO,0DAA0B,OAgDP;AA/C5B,mEAA+D;AAkD7D,0FAlDO,iCAAS,OAkDP;AADT,0FAjDkB,iCAAS,OAiDlB;AA7CX,2EAAqE;AAyBnE,mGAzBO,0CAAkB,OAyBP;AAvBpB,2DAAqD;AA0BnD,4FA1BO,4BAAW,OA0BP;AAzBb,6DAAuD;AA4BrD,6FA5BO,8BAAY,OA4BP;AA3Bd,6DAAuD;AAyBrD,6FAzBO,8BAAY,OAyBP;AAxBd,6DAAuD;AAyBrD,6FAzBO,8BAAY,OAyBP;AAvBd,iEAA2D;AA0BzD,+FA1BO,kCAAc,OA0BP;AAzBhB,mFAA6E;AA0B3E,uGA1BO,kDAAsB,OA0BP;AAzBxB,6EAAuE;AA0BrE,oGA1BO,4CAAmB,OA0BP;AAzBrB,iFAA2E;AA0BzE,sGA1BO,gDAAqB,OA0BP;AAzBvB,iFAA2E;AA0BzE,sGA1BO,gDAAqB,OA0BP;AAzBvB,6EAAuE;AA0BrE,oGA1BO,4CAAmB,OA0BP;AAzBrB,iGAE6C;AAC7C,mGAAwE;AA4BtE,+BA5BK,iCAAoB,CA4BL;AA3BtB,+FAAoE;AAEpE,0GAAoG;AAuBlG,iHAvBO,sEAAgC,OAuBP;AASlC,MAAa,aAAa;IACjB,MAAM,CAAC,KAAK,CACjB,KAAa,EACb,aAAoC;QAEpC,MAAM,KAAK,GAAG,IAAI,mBAAU,CAAC,KAAK,CAAC,CAAC,CAAC,6CAA6C;QAClF,MAAM,KAAK,GAAG,IAAI,+BAAkB,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,0BAAiB,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,gCAAmB,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,IAAA,iCAAS,EAAC,aAAa,CAAC,EAAE;YAC5B,MAAM,CAAC,oBAAoB,EAAE,CAAC;YAC9B,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;SACxC;QACD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAEM,MAAM,CAAC,QAAQ,CACpB,UAAkB,EAClB,OAA6B;QAE7B,MAAM,aAAa,GAAG,IAAI,0DAA0B,EAAE,CAAC;QACvD,MAAM,IAAI,GAAgB,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QACzE,IAAI,aAAa,CAAC,eAAe,EAAE,EAAE;YACnC,MAAM,aAAa,CAAC,YAAY,EAAE,CAAC;SACpC;QACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACpD,OAAO,gBAAgB,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,GAAG,EAAe,CAAC,CAAC;IACpE,CAAC;IAEO,MAAM,CAAC,eAAe,CAC5B,IAAiB;QAEjB,MAAM,OAAO,GAAG,IAAI,4BAAW,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF;AAnCD,sCAmCC","file":"IfcExpression.js","sourcesContent":["import { CharStream, CommonTokenStream, ErrorListener, Token } from \"antlr4\";\nimport { ExprVisitor } from \"./ExprVisitor.js\";\nimport { IfcExpressionErrorListener } from \"./IfcExpressionErrorListener.js\";\nimport { isNullish, isPresent } from \"./IfcExpressionUtils.js\";\nimport { IfcExpressionContext } from \"./context/IfcExpressionContext.js\";\nimport { Expr } from \"./expression/Expr.js\";\n\nimport { IfcElementAccessor } from \"./context/IfcElementAccessor.js\";\nimport { Value } from \"./value/Value.js\";\nimport { StringValue } from \"./value/StringValue.js\";\nimport { NumericValue } from \"./value/NumericValue.js\";\nimport { BooleanValue } from \"./value/BooleanValue.js\";\nimport { LogicalValue } from \"./value/LogicalValue.js\";\nimport { LiteralValue } from \"./value/LiteralValue.js\";\nimport { ReferenceValue } from \"./value/ReferenceValue.js\";\nimport { IfcPropertySetAccessor } from \"./context/IfcPropertySetAccessor.js\";\nimport { IfcPropertyAccessor } from \"./context/IfcPropertyAccessor.js\";\nimport { IfcRootObjectAccessor } from \"./context/IfcRootObjectAccessor.js\";\nimport { IfcTypeObjectAccessor } from \"./context/IfcTypeObjectAccessor.js\";\nimport { NamedObjectAccessor } from \"./context/NamedObjectAccessor.js\";\nimport IfcExpressionParser, {\n ExprContext,\n} from \"./gen/parser/IfcExpressionParser.js\";\nimport IfcExpressionVisitor from \"./gen/parser/IfcExpressionVisitor.js\";\nimport IfcExpressionLexer from \"./gen/parser/IfcExpressionLexer.js\";\nimport { ObjectAccessor } from \"./context/ObjectAccessor.js\";\nimport { IfcExpressionEvaluationException } from \"./expression/IfcExpressionEvaluationException.js\";\nimport type { LiteralValueAnyArity } from \"./value/LiteralValueAnyArity.js\";\nimport type { PrimitiveValueType } from \"./value/PrimitiveValueType.js\";\nimport { ExprEvalResult } from \"./expression/ExprEvalResult\";\n\nexport {\n IfcElementAccessor,\n IfcExpressionContext,\n Value,\n StringValue,\n BooleanValue,\n LogicalValue,\n NumericValue,\n LiteralValue,\n ReferenceValue,\n IfcPropertySetAccessor,\n IfcPropertyAccessor,\n IfcRootObjectAccessor,\n IfcTypeObjectAccessor,\n NamedObjectAccessor,\n ObjectAccessor,\n Expr,\n ExprVisitor,\n IfcExpressionEvaluationException,\n IfcExpressionErrorListener,\n IfcExpressionVisitor,\n isPresent,\n isNullish,\n};\n\nexport type { PrimitiveValueType, LiteralValueAnyArity };\n\nexport class IfcExpression {\n public static parse(\n input: string,\n errorListener?: ErrorListener<Token>\n ): ExprContext {\n const chars = new CharStream(input); // replace this with a FileStream as required\n const lexer = new IfcExpressionLexer(chars);\n const tokens = new CommonTokenStream(lexer);\n const parser = new IfcExpressionParser(tokens);\n if (isPresent(errorListener)) {\n parser.removeErrorListeners();\n parser.addErrorListener(errorListener);\n }\n return parser.expr();\n }\n\n public static evaluate(\n expression: string,\n context: IfcExpressionContext\n ): ExprEvalResult<any> {\n const errorListener = new IfcExpressionErrorListener();\n const tree: ExprContext = IfcExpression.parse(expression, errorListener);\n if (errorListener.isErrorOccurred()) {\n throw errorListener.getException();\n }\n const parsedExpression = this.extractExprTree(tree);\n return parsedExpression.evaluate(context, new Map<string, any>());\n }\n\n private static extractExprTree(\n tree: ExprContext\n ): Expr<LiteralValueAnyArity> {\n const visitor = new ExprVisitor();\n return visitor.visit(tree);\n }\n}\n"]}
@@ -2,18 +2,18 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IfcExpressionErrorListener = void 0;
4
4
  const antlr4_1 = require("antlr4");
5
- const utils_1 = require("./utils");
6
- const SyntaxErrorException_1 = require("./SyntaxErrorException");
5
+ const IfcExpressionUtils_js_1 = require("./IfcExpressionUtils.js");
6
+ const SyntaxErrorException_js_1 = require("./SyntaxErrorException.js");
7
7
  class IfcExpressionErrorListener extends antlr4_1.ErrorListener {
8
8
  constructor() {
9
9
  super(...arguments);
10
10
  this.exception = null;
11
11
  }
12
12
  syntaxError(recognizer, offendingSymbol, line, column, msg, e) {
13
- this.exception = new SyntaxErrorException_1.SyntaxErrorException(offendingSymbol, line, column, msg);
13
+ this.exception = new SyntaxErrorException_js_1.SyntaxErrorException(offendingSymbol, line, column, msg);
14
14
  }
15
15
  isErrorOccurred() {
16
- return (0, utils_1.notNullish)(this.exception);
16
+ return (0, IfcExpressionUtils_js_1.isPresent)(this.exception);
17
17
  }
18
18
  getException() {
19
19
  return this.exception;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/IfcExpressionErrorListener.ts"],"names":[],"mappings":";;;AAAA,mCAAgF;AAChF,mCAAqC;AACrC,iEAA8D;AAE9D,MAAa,0BAA2B,SAAQ,sBAAoB;IAApE;;QACU,cAAS,GAAyB,IAAI,CAAC;IAyBjD,CAAC;IAvBC,WAAW,CACT,UAA6B,EAC7B,eAAsB,EACtB,IAAY,EACZ,MAAc,EACd,GAAW,EACX,CAAmC;QAEnC,IAAI,CAAC,SAAS,GAAG,IAAI,2CAAoB,CACvC,eAAe,EACf,IAAI,EACJ,MAAM,EACN,GAAG,CACJ,CAAC;IACJ,CAAC;IAEM,eAAe;QACpB,OAAO,IAAA,kBAAU,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF;AA1BD,gEA0BC","file":"IfcExpressionErrorListener.js","sourcesContent":["import { ErrorListener, RecognitionException, Recognizer, Token } from \"antlr4\";\nimport { notNullish } from \"./utils\";\nimport { SyntaxErrorException } from \"./SyntaxErrorException\";\n\nexport class IfcExpressionErrorListener extends ErrorListener<Token> {\n private exception: SyntaxErrorException = null;\n\n syntaxError(\n recognizer: Recognizer<Token>,\n offendingSymbol: Token,\n line: number,\n column: number,\n msg: string,\n e: RecognitionException | undefined\n ) {\n this.exception = new SyntaxErrorException(\n offendingSymbol,\n line,\n column,\n msg\n );\n }\n\n public isErrorOccurred(): boolean {\n return notNullish(this.exception);\n }\n\n public getException(): SyntaxErrorException {\n return this.exception;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/IfcExpressionErrorListener.ts"],"names":[],"mappings":";;;AAAA,mCAAgF;AAChF,mEAAoD;AACpD,uEAAiE;AAEjE,MAAa,0BAA2B,SAAQ,sBAAoB;IAApE;;QACU,cAAS,GAAyB,IAAI,CAAC;IAyBjD,CAAC;IAvBC,WAAW,CACT,UAA6B,EAC7B,eAAsB,EACtB,IAAY,EACZ,MAAc,EACd,GAAW,EACX,CAAmC;QAEnC,IAAI,CAAC,SAAS,GAAG,IAAI,8CAAoB,CACvC,eAAe,EACf,IAAI,EACJ,MAAM,EACN,GAAG,CACJ,CAAC;IACJ,CAAC;IAEM,eAAe;QACpB,OAAO,IAAA,iCAAS,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF;AA1BD,gEA0BC","file":"IfcExpressionErrorListener.js","sourcesContent":["import { ErrorListener, RecognitionException, Recognizer, Token } from \"antlr4\";\nimport { isPresent } from \"./IfcExpressionUtils.js\";\nimport { SyntaxErrorException } from \"./SyntaxErrorException.js\";\n\nexport class IfcExpressionErrorListener extends ErrorListener<Token> {\n private exception: SyntaxErrorException = null;\n\n syntaxError(\n recognizer: Recognizer<Token>,\n offendingSymbol: Token,\n line: number,\n column: number,\n msg: string,\n e: RecognitionException | undefined\n ) {\n this.exception = new SyntaxErrorException(\n offendingSymbol,\n line,\n column,\n msg\n );\n }\n\n public isErrorOccurred(): boolean {\n return isPresent(this.exception);\n }\n\n public getException(): SyntaxErrorException {\n return this.exception;\n }\n}\n"]}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isPresent = exports.isNullish = void 0;
4
+ function isNullish(val) {
5
+ return typeof val === "undefined" || val === null;
6
+ }
7
+ exports.isNullish = isNullish;
8
+ function isPresent(val) {
9
+ return !isNullish(val);
10
+ }
11
+ exports.isPresent = isPresent;
12
+ //# sourceMappingURL=IfcExpressionUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/IfcExpressionUtils.ts"],"names":[],"mappings":";;;AAAA,SAAgB,SAAS,CAAC,GAAQ;IAChC,OAAO,OAAO,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI,CAAC;AACpD,CAAC;AAFD,8BAEC;AAED,SAAgB,SAAS,CAAC,GAAQ;IAChC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAFD,8BAEC","file":"IfcExpressionUtils.js","sourcesContent":["export function isNullish(val: any) {\n return typeof val === \"undefined\" || val === null;\n}\n\nexport function isPresent(val: any): boolean {\n return !isNullish(val);\n}\n"]}
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SyntaxErrorException = void 0;
4
- const utils_1 = require("./utils");
4
+ const IfcExpressionUtils_js_1 = require("./IfcExpressionUtils.js");
5
5
  class SyntaxErrorException extends Error {
6
6
  constructor(offendingSymbol, line, column, msg) {
7
7
  super(`Syntax Error in line ${line}, column ${column}` +
8
- ((0, utils_1.notNullish)(msg) ? `: ${msg}` : ""));
8
+ ((0, IfcExpressionUtils_js_1.isPresent)(msg) ? `: ${msg}` : ""));
9
9
  this._offendingSymbol = offendingSymbol;
10
10
  this._line = line;
11
11
  this._column = column;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/SyntaxErrorException.ts"],"names":[],"mappings":";;;AACA,mCAAqC;AAErC,MAAa,oBAAqB,SAAQ,KAAK;IAK7C,YACE,eAAsB,EACtB,IAAY,EACZ,MAAc,EACd,GAAW;QAEX,KAAK,CACH,wBAAwB,IAAI,YAAY,MAAM,EAAE;YAC9C,CAAC,IAAA,kBAAU,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACtC,CAAC;QACF,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AA/BD,oDA+BC","file":"SyntaxErrorException.js","sourcesContent":["import { Token } from \"antlr4\";\nimport { notNullish } from \"./utils\";\n\nexport class SyntaxErrorException extends Error {\n private readonly _offendingSymbol: Token;\n private readonly _line: number;\n private readonly _column: number;\n\n constructor(\n offendingSymbol: Token,\n line: number,\n column: number,\n msg: string\n ) {\n super(\n `Syntax Error in line ${line}, column ${column}` +\n (notNullish(msg) ? `: ${msg}` : \"\")\n );\n this._offendingSymbol = offendingSymbol;\n this._line = line;\n this._column = column;\n }\n\n get offendingSymbol(): Token {\n return this._offendingSymbol;\n }\n\n get line(): number {\n return this._line;\n }\n\n get column(): number {\n return this._column;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/SyntaxErrorException.ts"],"names":[],"mappings":";;;AACA,mEAAoD;AAEpD,MAAa,oBAAqB,SAAQ,KAAK;IAK7C,YACE,eAAsB,EACtB,IAAY,EACZ,MAAc,EACd,GAAW;QAEX,KAAK,CACH,wBAAwB,IAAI,YAAY,MAAM,EAAE;YAC9C,CAAC,IAAA,iCAAS,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACrC,CAAC;QACF,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AA/BD,oDA+BC","file":"SyntaxErrorException.js","sourcesContent":["import { Token } from \"antlr4\";\nimport { isPresent } from \"./IfcExpressionUtils.js\";\n\nexport class SyntaxErrorException extends Error {\n private readonly _offendingSymbol: Token;\n private readonly _line: number;\n private readonly _column: number;\n\n constructor(\n offendingSymbol: Token,\n line: number,\n column: number,\n msg: string\n ) {\n super(\n `Syntax Error in line ${line}, column ${column}` +\n (isPresent(msg) ? `: ${msg}` : \"\")\n );\n this._offendingSymbol = offendingSymbol;\n this._line = line;\n this._column = column;\n }\n\n get offendingSymbol(): Token {\n return this._offendingSymbol;\n }\n\n get line(): number {\n return this._line;\n }\n\n get column(): number {\n return this._column;\n }\n}\n"]}