ifc-expressions 0.2.0 → 0.2.2

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 (234) hide show
  1. package/dist/IfcExpression.d.ts +7 -1
  2. package/dist/cjs/ExprVisitor.js +126 -0
  3. package/dist/cjs/ExprVisitor.js.map +1 -0
  4. package/dist/cjs/IfcExpression.js +11 -1
  5. package/dist/cjs/IfcExpression.js.map +1 -0
  6. package/dist/cjs/IfcExpressionErrorListener.js +23 -0
  7. package/dist/cjs/IfcExpressionErrorListener.js.map +1 -0
  8. package/dist/cjs/SyntaxErrorException.js +24 -0
  9. package/dist/cjs/SyntaxErrorException.js.map +1 -0
  10. package/dist/cjs/context/IfcElementAccessor.js +34 -0
  11. package/dist/cjs/context/IfcElementAccessor.js.map +1 -0
  12. package/dist/cjs/context/IfcExpressionContext.js +3 -0
  13. package/dist/cjs/context/IfcExpressionContext.js.map +1 -0
  14. package/dist/cjs/context/IfcPropertyAccessor.js +28 -0
  15. package/dist/cjs/context/IfcPropertyAccessor.js.map +1 -0
  16. package/dist/cjs/context/IfcPropertySetAccessor.js +17 -0
  17. package/dist/cjs/context/IfcPropertySetAccessor.js.map +1 -0
  18. package/dist/cjs/context/IfcRootObjectAccessor.js +19 -0
  19. package/dist/cjs/context/IfcRootObjectAccessor.js.map +1 -0
  20. package/dist/cjs/context/IfcTypeObjectAccessor.js +22 -0
  21. package/dist/cjs/context/IfcTypeObjectAccessor.js.map +1 -0
  22. package/dist/cjs/context/NamedObjectAccessor.js +26 -0
  23. package/dist/cjs/context/NamedObjectAccessor.js.map +1 -0
  24. package/dist/cjs/context/ObjectAccessor.js +3 -0
  25. package/dist/cjs/context/ObjectAccessor.js.map +1 -0
  26. package/dist/cjs/expression/ArrayExpr.js +3 -0
  27. package/dist/cjs/expression/ArrayExpr.js.map +1 -0
  28. package/dist/cjs/expression/Expr.js +3 -0
  29. package/dist/cjs/expression/Expr.js.map +1 -0
  30. package/dist/cjs/expression/Expr0.js +8 -0
  31. package/dist/cjs/expression/Expr0.js.map +1 -0
  32. package/dist/cjs/expression/Expr1.js +10 -0
  33. package/dist/cjs/expression/Expr1.js.map +1 -0
  34. package/dist/cjs/expression/Expr2.js +11 -0
  35. package/dist/cjs/expression/Expr2.js.map +1 -0
  36. package/dist/cjs/expression/IfcExpressionEvaluationException.js +10 -0
  37. package/dist/cjs/expression/IfcExpressionEvaluationException.js.map +1 -0
  38. package/dist/cjs/expression/numeric/DivideExpr.js +18 -0
  39. package/dist/cjs/expression/numeric/DivideExpr.js.map +1 -0
  40. package/dist/cjs/expression/numeric/MinusExpr.js +18 -0
  41. package/dist/cjs/expression/numeric/MinusExpr.js.map +1 -0
  42. package/dist/cjs/expression/numeric/MultiplyByExpr.js +18 -0
  43. package/dist/cjs/expression/numeric/MultiplyByExpr.js.map +1 -0
  44. package/dist/cjs/expression/numeric/MultiplyExpr.js +18 -0
  45. package/dist/cjs/expression/numeric/MultiplyExpr.js.map +1 -0
  46. package/dist/cjs/expression/numeric/NumParenthesisExpr.js +14 -0
  47. package/dist/cjs/expression/numeric/NumParenthesisExpr.js.map +1 -0
  48. package/dist/cjs/expression/numeric/NumericLiteralExpr.js +14 -0
  49. package/dist/cjs/expression/numeric/NumericLiteralExpr.js.map +1 -0
  50. package/dist/cjs/expression/numeric/PlusExpr.js +18 -0
  51. package/dist/cjs/expression/numeric/PlusExpr.js.map +1 -0
  52. package/dist/cjs/expression/reference/AttributeReferenceExpr.js +16 -0
  53. package/dist/cjs/expression/reference/AttributeReferenceExpr.js.map +1 -0
  54. package/dist/cjs/expression/reference/ElemObjectReferenceExpr.js +14 -0
  55. package/dist/cjs/expression/reference/ElemObjectReferenceExpr.js.map +1 -0
  56. package/dist/cjs/expression/reference/NestedObjectChainEndExpr.js +14 -0
  57. package/dist/cjs/expression/reference/NestedObjectChainEndExpr.js.map +1 -0
  58. package/dist/cjs/expression/reference/NestedObjectChainExpr.js +15 -0
  59. package/dist/cjs/expression/reference/NestedObjectChainExpr.js.map +1 -0
  60. package/dist/cjs/expression/reference/ObjectReferenceExpr.js +3 -0
  61. package/dist/cjs/expression/reference/ObjectReferenceExpr.js.map +1 -0
  62. package/dist/cjs/expression/reference/PropObjectReferenceExpr.js +14 -0
  63. package/dist/cjs/expression/reference/PropObjectReferenceExpr.js.map +1 -0
  64. package/dist/cjs/expression/string/StringConcatExpr.js +15 -0
  65. package/dist/cjs/expression/string/StringConcatExpr.js.map +1 -0
  66. package/dist/cjs/expression/string/StringLiteralExpr.js +14 -0
  67. package/dist/cjs/expression/string/StringLiteralExpr.js.map +1 -0
  68. package/dist/cjs/package.json +1 -0
  69. package/dist/cjs/parser/IfcExpressionLexer.js +140 -0
  70. package/dist/cjs/parser/IfcExpressionLexer.js.map +1 -0
  71. package/dist/cjs/parser/IfcExpressionListener.js +12 -0
  72. package/dist/cjs/parser/IfcExpressionListener.js.map +1 -0
  73. package/dist/cjs/parser/IfcExpressionParser.js +1514 -0
  74. package/dist/cjs/parser/IfcExpressionParser.js.map +1 -0
  75. package/dist/cjs/parser/IfcExpressionVisitor.js +15 -0
  76. package/dist/cjs/parser/IfcExpressionVisitor.js.map +1 -0
  77. package/dist/cjs/utils.js +12 -0
  78. package/dist/cjs/utils.js.map +1 -0
  79. package/dist/cjs/value/BooleanValue.js +14 -0
  80. package/dist/cjs/value/BooleanValue.js.map +1 -0
  81. package/dist/cjs/value/LiteralValue.js +3 -0
  82. package/dist/cjs/value/LiteralValue.js.map +1 -0
  83. package/dist/cjs/value/LiteralValueAnyArity.js +3 -0
  84. package/dist/cjs/value/LiteralValueAnyArity.js.map +1 -0
  85. package/dist/cjs/value/LogicalValue.js +14 -0
  86. package/dist/cjs/value/LogicalValue.js.map +1 -0
  87. package/dist/cjs/value/NumericValue.js +18 -0
  88. package/dist/cjs/value/NumericValue.js.map +1 -0
  89. package/dist/cjs/value/PrimitiveValueType.js +3 -0
  90. package/dist/cjs/value/PrimitiveValueType.js.map +1 -0
  91. package/dist/cjs/value/ReferenceValue.js +14 -0
  92. package/dist/cjs/value/ReferenceValue.js.map +1 -0
  93. package/dist/cjs/value/StringValue.js +14 -0
  94. package/dist/cjs/value/StringValue.js.map +1 -0
  95. package/dist/cjs/value/Value.js +13 -0
  96. package/dist/cjs/value/Value.js.map +1 -0
  97. package/dist/context/IfcElementAccessor.d.ts +18 -0
  98. package/dist/context/IfcExpressionContext.d.ts +6 -0
  99. package/dist/context/IfcPropertyAccessor.d.ts +12 -0
  100. package/dist/context/IfcPropertySetAccessor.d.ts +11 -0
  101. package/dist/context/IfcRootObjectAccessor.d.ts +7 -0
  102. package/dist/context/IfcTypeObjectAccessor.d.ts +13 -0
  103. package/dist/context/NamedObjectAccessor.d.ts +10 -0
  104. package/dist/context/ObjectAccessor.d.ts +16 -0
  105. package/dist/expression/ArrayExpr.d.ts +3 -0
  106. package/dist/expression/Expr.d.ts +4 -0
  107. package/dist/expression/Expr0.d.ts +6 -0
  108. package/dist/expression/Expr1.d.ts +7 -0
  109. package/dist/expression/Expr2.d.ts +8 -0
  110. package/dist/expression/IfcExpressionEvaluationException.d.ts +3 -0
  111. package/dist/expression/numeric/DivideExpr.d.ts +8 -0
  112. package/dist/expression/numeric/MinusExpr.d.ts +8 -0
  113. package/dist/expression/numeric/MultiplyByExpr.d.ts +8 -0
  114. package/dist/expression/numeric/MultiplyExpr.d.ts +8 -0
  115. package/dist/expression/numeric/NumParenthesisExpr.d.ts +8 -0
  116. package/dist/expression/numeric/NumericLiteralExpr.d.ts +7 -0
  117. package/dist/expression/numeric/PlusExpr.d.ts +8 -0
  118. package/dist/expression/reference/AttributeReferenceExpr.d.ts +9 -0
  119. package/dist/expression/reference/ElemObjectReferenceExpr.d.ts +8 -0
  120. package/dist/expression/reference/NestedObjectChainEndExpr.d.ts +8 -0
  121. package/dist/expression/reference/NestedObjectChainExpr.d.ts +9 -0
  122. package/dist/expression/reference/ObjectReferenceExpr.d.ts +4 -0
  123. package/dist/expression/reference/PropObjectReferenceExpr.d.ts +8 -0
  124. package/dist/expression/string/StringConcatExpr.d.ts +8 -0
  125. package/dist/expression/string/StringLiteralExpr.d.ts +7 -0
  126. package/dist/mjs/ExprVisitor.js +119 -0
  127. package/dist/mjs/ExprVisitor.js.map +1 -0
  128. package/dist/mjs/IfcExpression.js +48 -0
  129. package/dist/mjs/IfcExpression.js.map +1 -0
  130. package/dist/mjs/IfcExpressionErrorListener.js +19 -0
  131. package/dist/mjs/IfcExpressionErrorListener.js.map +1 -0
  132. package/dist/mjs/SyntaxErrorException.js +20 -0
  133. package/dist/mjs/SyntaxErrorException.js.map +1 -0
  134. package/dist/mjs/context/IfcElementAccessor.js +30 -0
  135. package/dist/mjs/context/IfcElementAccessor.js.map +1 -0
  136. package/dist/mjs/context/IfcExpressionContext.js +2 -0
  137. package/dist/mjs/context/IfcExpressionContext.js.map +1 -0
  138. package/dist/mjs/context/IfcPropertyAccessor.js +24 -0
  139. package/dist/mjs/context/IfcPropertyAccessor.js.map +1 -0
  140. package/dist/mjs/context/IfcPropertySetAccessor.js +13 -0
  141. package/dist/mjs/context/IfcPropertySetAccessor.js.map +1 -0
  142. package/dist/mjs/context/IfcRootObjectAccessor.js +15 -0
  143. package/dist/mjs/context/IfcRootObjectAccessor.js.map +1 -0
  144. package/dist/mjs/context/IfcTypeObjectAccessor.js +18 -0
  145. package/dist/mjs/context/IfcTypeObjectAccessor.js.map +1 -0
  146. package/dist/mjs/context/NamedObjectAccessor.js +22 -0
  147. package/dist/mjs/context/NamedObjectAccessor.js.map +1 -0
  148. package/dist/mjs/context/ObjectAccessor.js +2 -0
  149. package/dist/mjs/context/ObjectAccessor.js.map +1 -0
  150. package/dist/mjs/expression/ArrayExpr.js +2 -0
  151. package/dist/mjs/expression/ArrayExpr.js.map +1 -0
  152. package/dist/mjs/expression/Expr.js +2 -0
  153. package/dist/mjs/expression/Expr.js.map +1 -0
  154. package/dist/mjs/expression/Expr0.js +4 -0
  155. package/dist/mjs/expression/Expr0.js.map +1 -0
  156. package/dist/mjs/expression/Expr1.js +6 -0
  157. package/dist/mjs/expression/Expr1.js.map +1 -0
  158. package/dist/mjs/expression/Expr2.js +7 -0
  159. package/dist/mjs/expression/Expr2.js.map +1 -0
  160. package/dist/mjs/expression/IfcExpressionEvaluationException.js +6 -0
  161. package/dist/mjs/expression/IfcExpressionEvaluationException.js.map +1 -0
  162. package/dist/mjs/expression/numeric/DivideExpr.js +14 -0
  163. package/dist/mjs/expression/numeric/DivideExpr.js.map +1 -0
  164. package/dist/mjs/expression/numeric/MinusExpr.js +14 -0
  165. package/dist/mjs/expression/numeric/MinusExpr.js.map +1 -0
  166. package/dist/mjs/expression/numeric/MultiplyByExpr.js +14 -0
  167. package/dist/mjs/expression/numeric/MultiplyByExpr.js.map +1 -0
  168. package/dist/mjs/expression/numeric/MultiplyExpr.js +14 -0
  169. package/dist/mjs/expression/numeric/MultiplyExpr.js.map +1 -0
  170. package/dist/mjs/expression/numeric/NumParenthesisExpr.js +10 -0
  171. package/dist/mjs/expression/numeric/NumParenthesisExpr.js.map +1 -0
  172. package/dist/mjs/expression/numeric/NumericLiteralExpr.js +10 -0
  173. package/dist/mjs/expression/numeric/NumericLiteralExpr.js.map +1 -0
  174. package/dist/mjs/expression/numeric/PlusExpr.js +14 -0
  175. package/dist/mjs/expression/numeric/PlusExpr.js.map +1 -0
  176. package/dist/mjs/expression/reference/AttributeReferenceExpr.js +12 -0
  177. package/dist/mjs/expression/reference/AttributeReferenceExpr.js.map +1 -0
  178. package/dist/mjs/expression/reference/ElemObjectReferenceExpr.js +10 -0
  179. package/dist/mjs/expression/reference/ElemObjectReferenceExpr.js.map +1 -0
  180. package/dist/mjs/expression/reference/NestedObjectChainEndExpr.js +10 -0
  181. package/dist/mjs/expression/reference/NestedObjectChainEndExpr.js.map +1 -0
  182. package/dist/mjs/expression/reference/NestedObjectChainExpr.js +11 -0
  183. package/dist/mjs/expression/reference/NestedObjectChainExpr.js.map +1 -0
  184. package/dist/mjs/expression/reference/ObjectReferenceExpr.js +2 -0
  185. package/dist/mjs/expression/reference/ObjectReferenceExpr.js.map +1 -0
  186. package/dist/mjs/expression/reference/PropObjectReferenceExpr.js +10 -0
  187. package/dist/mjs/expression/reference/PropObjectReferenceExpr.js.map +1 -0
  188. package/dist/mjs/expression/string/StringConcatExpr.js +11 -0
  189. package/dist/mjs/expression/string/StringConcatExpr.js.map +1 -0
  190. package/dist/mjs/expression/string/StringLiteralExpr.js +10 -0
  191. package/dist/mjs/expression/string/StringLiteralExpr.js.map +1 -0
  192. package/dist/mjs/package.json +1 -0
  193. package/dist/mjs/parser/IfcExpressionLexer.js +138 -0
  194. package/dist/mjs/parser/IfcExpressionLexer.js.map +1 -0
  195. package/dist/mjs/parser/IfcExpressionListener.js +9 -0
  196. package/dist/mjs/parser/IfcExpressionListener.js.map +1 -0
  197. package/dist/mjs/parser/IfcExpressionParser.js +1487 -0
  198. package/dist/mjs/parser/IfcExpressionParser.js.map +1 -0
  199. package/dist/mjs/parser/IfcExpressionVisitor.js +12 -0
  200. package/dist/mjs/parser/IfcExpressionVisitor.js.map +1 -0
  201. package/dist/mjs/utils.js +7 -0
  202. package/dist/mjs/utils.js.map +1 -0
  203. package/dist/mjs/value/BooleanValue.js +10 -0
  204. package/dist/mjs/value/BooleanValue.js.map +1 -0
  205. package/dist/mjs/value/LiteralValue.js +2 -0
  206. package/dist/mjs/value/LiteralValue.js.map +1 -0
  207. package/dist/mjs/value/LiteralValueAnyArity.js +2 -0
  208. package/dist/mjs/value/LiteralValueAnyArity.js.map +1 -0
  209. package/dist/mjs/value/LogicalValue.js +10 -0
  210. package/dist/mjs/value/LogicalValue.js.map +1 -0
  211. package/dist/mjs/value/NumericValue.js +11 -0
  212. package/dist/mjs/value/NumericValue.js.map +1 -0
  213. package/dist/mjs/value/PrimitiveValueType.js +2 -0
  214. package/dist/mjs/value/PrimitiveValueType.js.map +1 -0
  215. package/dist/mjs/value/ReferenceValue.js +10 -0
  216. package/dist/mjs/value/ReferenceValue.js.map +1 -0
  217. package/dist/mjs/value/StringValue.js +10 -0
  218. package/dist/mjs/value/StringValue.js.map +1 -0
  219. package/dist/mjs/value/Value.js +9 -0
  220. package/dist/mjs/value/Value.js.map +1 -0
  221. package/dist/parser/IfcExpressionLexer.d.ts +43 -0
  222. package/dist/parser/IfcExpressionListener.d.ts +262 -0
  223. package/dist/parser/IfcExpressionParser.d.ts +265 -0
  224. package/dist/parser/IfcExpressionVisitor.d.ts +169 -0
  225. package/dist/value/BooleanValue.d.ts +5 -0
  226. package/dist/value/LiteralValue.d.ts +6 -0
  227. package/dist/value/LiteralValueAnyArity.d.ts +2 -0
  228. package/dist/value/LogicalValue.d.ts +5 -0
  229. package/dist/value/NumericValue.d.ts +6 -0
  230. package/dist/value/PrimitiveValueType.d.ts +2 -0
  231. package/dist/value/ReferenceValue.d.ts +5 -0
  232. package/dist/value/StringValue.d.ts +5 -0
  233. package/dist/value/Value.d.ts +6 -0
  234. package/package.json +2 -2
@@ -11,11 +11,17 @@ import { BooleanValue } from "./value/BooleanValue";
11
11
  import { LogicalValue } from "./value/LogicalValue";
12
12
  import { LiteralValue } from "./value/LiteralValue";
13
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";
14
20
  import { IfcExpressionEvaluationException } from "./expression/IfcExpressionEvaluationException";
15
21
  import IfcExpressionVisitor from "../generated/parser/IfcExpressionVisitor";
16
22
  import type { LiteralValueAnyArity } from "./value/LiteralValueAnyArity";
17
23
  import type { PrimitiveValueType } from "./value/PrimitiveValueType";
18
- export { IfcElementAccessor, IfcExpressionContext, Value, StringValue, BooleanValue, LogicalValue, NumericValue, LiteralValue, ReferenceValue, Expr, IfcExpressionEvaluationException, IfcExpressionErrorListener, IfcExpressionVisitor, };
24
+ export { IfcElementAccessor, IfcExpressionContext, Value, StringValue, BooleanValue, LogicalValue, NumericValue, LiteralValue, ReferenceValue, IfcPropertySetAccessor, IfcPropertyAccessor, IfcRootObjectAccessor, IfcTypeObjectAccessor, NamedObjectAccessor, ObjectAccessor, Expr, IfcExpressionEvaluationException, IfcExpressionErrorListener, IfcExpressionVisitor, };
19
25
  export type { PrimitiveValueType, LiteralValueAnyArity };
20
26
  export declare class IfcExpression {
21
27
  static parse(input: string, errorListener?: ErrorListener<Token>): ExprContext;
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
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");
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 {
26
+ constructor() {
27
+ super();
28
+ /*================================================
29
+ * AttributeRef
30
+ *==============================================*/
31
+ this.visitAttributeRef = (ctx) => {
32
+ const objectRefExpr = this.visit(ctx.objectRef());
33
+ const nestedObjectChainExpr = this.visit(ctx.nestedObjectChain());
34
+ return new AttributeReferenceExpr_1.AttributeReferenceExpr(objectRefExpr, nestedObjectChainExpr);
35
+ };
36
+ this.visitObjectRef = (ctx) => {
37
+ if ((0, utils_1.notNullish)(ctx.PROP())) {
38
+ return new PropObjectReferenceExpr_1.PropObjectReferenceExpr();
39
+ }
40
+ else if ((0, utils_1.notNullish)(ctx.ELEM())) {
41
+ return new ElemObjectReferenceExpr_1.ElemObjectReferenceExpr();
42
+ }
43
+ this.failNode(ctx);
44
+ };
45
+ this.visitNestedObjectChainInner = (ctx) => {
46
+ let name = ctx.namedRef().getChild(0).getText();
47
+ name = this.stripBrackets(name);
48
+ return new NestedObjectChainExpr_1.NestedObjectChainExpr(name, this.visit(ctx.nestedObjectChain()));
49
+ };
50
+ this.visitNestedObjectChainEnd = (ctx) => {
51
+ let name = ctx.RESERVED_ATTRIBUTE_NAME().getText();
52
+ return new NestedObjectChainEndExpr_1.NestedObjectChainEndExpr(name);
53
+ };
54
+ /*================================================
55
+ * StringExpr
56
+ *===============================================*/
57
+ this.visitStringLiteral = (ctx) => {
58
+ const quotedString = ctx.QUOTED_STRING().getText();
59
+ const text = quotedString.substring(1, quotedString.length - 1);
60
+ return new StringLiteralExpr_1.StringLiteralExpr(new StringValue_1.StringValue(text));
61
+ };
62
+ this.visitStringAttributeRef = (ctx) => {
63
+ return this.visit(ctx.getChild(0));
64
+ };
65
+ this.visitStringConcat = (ctx) => {
66
+ return new StringConcatExpr_1.StringConcatExpr(this.visit(ctx._left), this.visit(ctx._right));
67
+ };
68
+ /*================================================
69
+ * NumExpr
70
+ *===============================================*/
71
+ this.visitNumAttributeRef = (ctx) => {
72
+ return this.visit(ctx.getChild(0));
73
+ };
74
+ this.visitNumLiteral = (ctx) => {
75
+ 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
+ }
79
+ 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
+ }
83
+ this.failNode(ctx);
84
+ };
85
+ this.visitNumAddSub = (ctx) => {
86
+ switch (ctx._op.text) {
87
+ case "+":
88
+ return new PlusExpr_1.PlusExpr(this.visit(ctx.getChild(0)), this.visit(ctx.getChild(2)));
89
+ case "-":
90
+ return new MinusExpr_1.MinusExpr(this.visit(ctx.getChild(0)), this.visit(ctx.getChild(2)));
91
+ default:
92
+ this.failNode(ctx);
93
+ }
94
+ };
95
+ this.visitNumMulDiv = (ctx) => {
96
+ switch (ctx._op.text) {
97
+ case "*":
98
+ return new MultiplyExpr_1.MultiplyExpr(this.visit(ctx.getChild(0)), this.visit(ctx.getChild(2)));
99
+ case "/":
100
+ return new DivideExpr_1.DivideExpr(this.visit(ctx.getChild(0)), this.visit(ctx.getChild(2)));
101
+ default:
102
+ this.failNode(ctx);
103
+ }
104
+ };
105
+ this.visitNumParens = (ctx) => {
106
+ return new NumParenthesisExpr_1.NumParenthesisExpr(this.visit(ctx.getChild(1)));
107
+ };
108
+ this.visitExpr = (ctx) => {
109
+ return this.visit(ctx.getChild(0));
110
+ };
111
+ this.visitNumLit = (ctx) => {
112
+ return this.visit(ctx.getChild(0));
113
+ };
114
+ }
115
+ stripBrackets(name) {
116
+ if (name.startsWith("{")) {
117
+ return name.substring(1, name.length - 1);
118
+ }
119
+ return name;
120
+ }
121
+ failNode(ctx) {
122
+ throw new Error(`Cannot parse (sub)expression ${ctx.getText()}`);
123
+ }
124
+ }
125
+ exports.ExprVisitor = ExprVisitor;
126
+ //# sourceMappingURL=ExprVisitor.js.map
@@ -0,0 +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"]}
@@ -3,7 +3,7 @@ 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.ReferenceValue = exports.NumericValue = exports.LogicalValue = exports.BooleanValue = exports.StringValue = exports.Value = exports.IfcElementAccessor = void 0;
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;
7
7
  const antlr4_1 = require("antlr4");
8
8
  const ExprVisitor_1 = require("./ExprVisitor");
9
9
  const IfcExpressionErrorListener_1 = require("./IfcExpressionErrorListener");
@@ -25,6 +25,16 @@ const LogicalValue_1 = require("./value/LogicalValue");
25
25
  Object.defineProperty(exports, "LogicalValue", { enumerable: true, get: function () { return LogicalValue_1.LogicalValue; } });
26
26
  const ReferenceValue_1 = require("./value/ReferenceValue");
27
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; } });
28
38
  const IfcExpressionEvaluationException_1 = require("./expression/IfcExpressionEvaluationException");
29
39
  Object.defineProperty(exports, "IfcExpressionEvaluationException", { enumerable: true, get: function () { return IfcExpressionEvaluationException_1.IfcExpressionEvaluationException; } });
30
40
  const IfcExpressionVisitor_1 = __importDefault(require("../generated/parser/IfcExpressionVisitor"));
@@ -0,0 +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"]}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IfcExpressionErrorListener = void 0;
4
+ const antlr4_1 = require("antlr4");
5
+ const utils_1 = require("./utils");
6
+ const SyntaxErrorException_1 = require("./SyntaxErrorException");
7
+ class IfcExpressionErrorListener extends antlr4_1.ErrorListener {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.exception = null;
11
+ }
12
+ syntaxError(recognizer, offendingSymbol, line, column, msg, e) {
13
+ this.exception = new SyntaxErrorException_1.SyntaxErrorException(offendingSymbol, line, column, msg);
14
+ }
15
+ isErrorOccurred() {
16
+ return (0, utils_1.notNullish)(this.exception);
17
+ }
18
+ getException() {
19
+ return this.exception;
20
+ }
21
+ }
22
+ exports.IfcExpressionErrorListener = IfcExpressionErrorListener;
23
+ //# sourceMappingURL=IfcExpressionErrorListener.js.map
@@ -0,0 +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"]}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SyntaxErrorException = void 0;
4
+ const utils_1 = require("./utils");
5
+ class SyntaxErrorException extends Error {
6
+ constructor(offendingSymbol, line, column, msg) {
7
+ super(`Syntax Error in line ${line}, column ${column}` +
8
+ ((0, utils_1.notNullish)(msg) ? `: ${msg}` : ""));
9
+ this._offendingSymbol = offendingSymbol;
10
+ this._line = line;
11
+ this._column = column;
12
+ }
13
+ get offendingSymbol() {
14
+ return this._offendingSymbol;
15
+ }
16
+ get line() {
17
+ return this._line;
18
+ }
19
+ get column() {
20
+ return this._column;
21
+ }
22
+ }
23
+ exports.SyntaxErrorException = SyntaxErrorException;
24
+ //# sourceMappingURL=SyntaxErrorException.js.map
@@ -0,0 +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"]}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IfcElementAccessor = void 0;
4
+ const IfcRootObjectAccessor_1 = require("./IfcRootObjectAccessor");
5
+ const StringValue_1 = require("../value/StringValue");
6
+ const utils_1 = require("../utils");
7
+ class IfcElementAccessor extends IfcRootObjectAccessor_1.IfcRootObjectAccessor {
8
+ getNestedObjectAccessor(name) {
9
+ if (name === "type") {
10
+ return this.getTypeObjectAccessor();
11
+ }
12
+ let val = this.getIfcPropertyAccessor(name);
13
+ if ((0, utils_1.notNullish)(val)) {
14
+ return val;
15
+ }
16
+ return this.getIfcPropertySetAccessor(name);
17
+ }
18
+ getAttribute(name) {
19
+ switch (name) {
20
+ case "ifcClass":
21
+ return new StringValue_1.StringValue(this.getIfcClass());
22
+ default:
23
+ return super.getAttribute(name);
24
+ }
25
+ }
26
+ listNestedObjects() {
27
+ return ["type", ...this.listIfcProperties(), ...this.listIfcPropertySets()];
28
+ }
29
+ listAttributes() {
30
+ return ["ifcClass", ...super.listAttributes()];
31
+ }
32
+ }
33
+ exports.IfcElementAccessor = IfcElementAccessor;
34
+ //# sourceMappingURL=IfcElementAccessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/context/IfcElementAccessor.ts"],"names":[],"mappings":";;;AACA,mEAAgE;AAIhE,sDAAmD;AACnD,oCAAsC;AAGtC,MAAsB,kBAAmB,SAAQ,6CAAqB;IACpE,uBAAuB,CAAC,IAAY;QAClC,IAAI,IAAI,KAAK,MAAM,EAAE;YACnB,OAAO,IAAI,CAAC,qBAAqB,EAAE,CAAC;SACrC;QACD,IAAI,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,IAAA,kBAAU,EAAC,GAAG,CAAC,EAAE;YACnB,OAAO,GAAG,CAAC;SACZ;QACD,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,YAAY,CAAC,IAAY;QACvB,QAAQ,IAAI,EAAE;YACZ,KAAK,UAAU;gBACb,OAAO,IAAI,yBAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAC7C;gBACE,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;SACnC;IACH,CAAC;IAID,iBAAiB;QACf,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,cAAc;QACZ,OAAO,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;IACjD,CAAC;CAcF;AA3CD,gDA2CC","file":"context/IfcElementAccessor.js","sourcesContent":["import { ObjectAccessor } from \"./ObjectAccessor\";\nimport { IfcRootObjectAccessor } from \"./IfcRootObjectAccessor\";\nimport { IfcTypeObjectAccessor } from \"./IfcTypeObjectAccessor\";\nimport { IfcPropertyAccessor } from \"./IfcPropertyAccessor\";\nimport { LiteralValueAnyArity } from \"../value/LiteralValueAnyArity\";\nimport { StringValue } from \"../value/StringValue\";\nimport { notNullish } from \"../utils\";\nimport { IfcPropertySetAccessor } from \"./IfcPropertySetAccessor\";\n\nexport abstract class IfcElementAccessor extends IfcRootObjectAccessor {\n getNestedObjectAccessor(name: string): ObjectAccessor | undefined {\n if (name === \"type\") {\n return this.getTypeObjectAccessor();\n }\n let val = this.getIfcPropertyAccessor(name);\n if (notNullish(val)) {\n return val;\n }\n return this.getIfcPropertySetAccessor(name);\n }\n\n getAttribute(name: string): LiteralValueAnyArity | undefined {\n switch (name) {\n case \"ifcClass\":\n return new StringValue(this.getIfcClass());\n default:\n return super.getAttribute(name);\n }\n }\n\n abstract getIfcClass(): string;\n\n listNestedObjects(): Array<string> {\n return [\"type\", ...this.listIfcProperties(), ...this.listIfcPropertySets()];\n }\n\n listAttributes(): Array<string> {\n return [\"ifcClass\", ...super.listAttributes()];\n }\n\n abstract listIfcProperties(): Array<string>;\n\n abstract listIfcPropertySets(): Array<string>;\n\n abstract getTypeObjectAccessor(): IfcTypeObjectAccessor | undefined;\n abstract getIfcPropertyAccessor(\n propertyName: string\n ): IfcPropertyAccessor | undefined;\n\n abstract getIfcPropertySetAccessor(\n name: string\n ): IfcPropertySetAccessor | undefined;\n}\n"]}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IfcExpressionContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/context/IfcExpressionContext.ts"],"names":[],"mappings":"","file":"context/IfcExpressionContext.js","sourcesContent":["import { IfcPropertyAccessor } from \"./IfcPropertyAccessor\";\nimport { IfcElementAccessor } from \"./IfcElementAccessor\";\n\nexport interface IfcExpressionContext {\n resolvePropRef(): IfcPropertyAccessor;\n\n resolveElemRef(): IfcElementAccessor;\n}\n"]}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IfcPropertyAccessor = void 0;
4
+ const NamedObjectAccessor_1 = require("./NamedObjectAccessor");
5
+ class IfcPropertyAccessor extends NamedObjectAccessor_1.NamedObjectAccessor {
6
+ getNestedObjectAccessor(name) {
7
+ switch (name) {
8
+ case "pset":
9
+ return this.getPropertySetAccessor();
10
+ }
11
+ return undefined;
12
+ }
13
+ listNestedObjects() {
14
+ return ["pset"];
15
+ }
16
+ listAttributes() {
17
+ return ["value", ...super.listAttributes()];
18
+ }
19
+ getAttribute(name) {
20
+ switch (name) {
21
+ case "value":
22
+ return this.getValue();
23
+ }
24
+ return super.getAttribute(name);
25
+ }
26
+ }
27
+ exports.IfcPropertyAccessor = IfcPropertyAccessor;
28
+ //# sourceMappingURL=IfcPropertyAccessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/context/IfcPropertyAccessor.ts"],"names":[],"mappings":";;;AACA,+DAA4D;AAI5D,MAAsB,mBAAoB,SAAQ,yCAAmB;IACnE,uBAAuB,CAAC,IAAY;QAClC,QAAQ,IAAI,EAAE;YACZ,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;SACxC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,iBAAiB;QACf,OAAO,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAED,cAAc;QACZ,OAAO,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,YAAY,CAAC,IAAY;QACvB,QAAQ,IAAI,EAAE;YACZ,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;SAC1B;QACD,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;CAIF;AA3BD,kDA2BC","file":"context/IfcPropertyAccessor.js","sourcesContent":["import { ObjectAccessor } from \"./ObjectAccessor\";\nimport { NamedObjectAccessor } from \"./NamedObjectAccessor\";\nimport { IfcPropertySetAccessor } from \"./IfcPropertySetAccessor\";\nimport { LiteralValueAnyArity } from \"../value/LiteralValueAnyArity\";\n\nexport abstract class IfcPropertyAccessor extends NamedObjectAccessor {\n getNestedObjectAccessor(name: string): ObjectAccessor | undefined {\n switch (name) {\n case \"pset\":\n return this.getPropertySetAccessor();\n }\n return undefined;\n }\n\n listNestedObjects(): Array<string> {\n return [\"pset\"];\n }\n\n listAttributes(): Array<string> {\n return [\"value\", ...super.listAttributes()];\n }\n\n getAttribute(name: string): LiteralValueAnyArity | undefined {\n switch (name) {\n case \"value\":\n return this.getValue();\n }\n return super.getAttribute(name);\n }\n\n protected abstract getValue(): LiteralValueAnyArity;\n protected abstract getPropertySetAccessor(): IfcPropertySetAccessor;\n}\n"]}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IfcPropertySetAccessor = void 0;
4
+ const IfcRootObjectAccessor_1 = require("./IfcRootObjectAccessor");
5
+ class IfcPropertySetAccessor extends IfcRootObjectAccessor_1.IfcRootObjectAccessor {
6
+ listAttributes() {
7
+ return [...super.listAttributes(), ...this.listIfcProperties()];
8
+ }
9
+ getAttribute(name) {
10
+ return super.getAttribute(name);
11
+ }
12
+ getNestedObjectAccessor(name) {
13
+ return this.getIfcPropertyAccessor(name);
14
+ }
15
+ }
16
+ exports.IfcPropertySetAccessor = IfcPropertySetAccessor;
17
+ //# sourceMappingURL=IfcPropertySetAccessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/context/IfcPropertySetAccessor.ts"],"names":[],"mappings":";;;AAAA,mEAAgE;AAKhE,MAAsB,sBAAuB,SAAQ,6CAAqB;IACxE,cAAc;QACZ,OAAO,CAAC,GAAG,KAAK,CAAC,cAAc,EAAE,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,YAAY,CAAC,IAAY;QACvB,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,uBAAuB,CAAC,IAAY;QAClC,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;CAMF;AAjBD,wDAiBC","file":"context/IfcPropertySetAccessor.js","sourcesContent":["import { IfcRootObjectAccessor } from \"./IfcRootObjectAccessor\";\nimport { LiteralValueAnyArity } from \"../value/LiteralValueAnyArity\";\nimport { IfcPropertyAccessor } from \"./IfcPropertyAccessor\";\nimport { ObjectAccessor } from \"./ObjectAccessor\";\n\nexport abstract class IfcPropertySetAccessor extends IfcRootObjectAccessor {\n listAttributes(): Array<string> {\n return [...super.listAttributes(), ...this.listIfcProperties()];\n }\n\n getAttribute(name: string): LiteralValueAnyArity | undefined {\n return super.getAttribute(name);\n }\n\n getNestedObjectAccessor(name: string): ObjectAccessor | undefined {\n return this.getIfcPropertyAccessor(name);\n }\n\n protected abstract listIfcProperties(): Array<string>;\n protected abstract getIfcPropertyAccessor(\n name: string\n ): IfcPropertyAccessor | undefined;\n}\n"]}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IfcRootObjectAccessor = void 0;
4
+ const NamedObjectAccessor_1 = require("./NamedObjectAccessor");
5
+ const StringValue_1 = require("../value/StringValue");
6
+ class IfcRootObjectAccessor extends NamedObjectAccessor_1.NamedObjectAccessor {
7
+ getAttribute(name) {
8
+ switch (name) {
9
+ case "guid":
10
+ return new StringValue_1.StringValue(this.getGuid());
11
+ }
12
+ return super.getAttribute(name);
13
+ }
14
+ listAttributes() {
15
+ return ["guid", ...super.listAttributes()];
16
+ }
17
+ }
18
+ exports.IfcRootObjectAccessor = IfcRootObjectAccessor;
19
+ //# sourceMappingURL=IfcRootObjectAccessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/context/IfcRootObjectAccessor.ts"],"names":[],"mappings":";;;AAAA,+DAA4D;AAE5D,sDAAmD;AAEnD,MAAsB,qBAAsB,SAAQ,yCAAmB;IACrE,YAAY,CAAC,IAAY;QACvB,QAAQ,IAAI,EAAE;YACZ,KAAK,MAAM;gBACT,OAAO,IAAI,yBAAW,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;SAC1C;QACD,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAID,cAAc;QACZ,OAAO,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;IAC7C,CAAC;CACF;AAdD,sDAcC","file":"context/IfcRootObjectAccessor.js","sourcesContent":["import { NamedObjectAccessor } from \"./NamedObjectAccessor\";\nimport { LiteralValueAnyArity } from \"../value/LiteralValueAnyArity\";\nimport { StringValue } from \"../value/StringValue\";\n\nexport abstract class IfcRootObjectAccessor extends NamedObjectAccessor {\n getAttribute(name: string): LiteralValueAnyArity | undefined {\n switch (name) {\n case \"guid\":\n return new StringValue(this.getGuid());\n }\n return super.getAttribute(name);\n }\n\n abstract getGuid(): string;\n\n listAttributes(): Array<string> {\n return [\"guid\", ...super.listAttributes()];\n }\n}\n"]}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IfcTypeObjectAccessor = void 0;
4
+ const IfcRootObjectAccessor_1 = require("./IfcRootObjectAccessor");
5
+ const utils_1 = require("../utils");
6
+ class IfcTypeObjectAccessor extends IfcRootObjectAccessor_1.IfcRootObjectAccessor {
7
+ getNestedObjectAccessor(name) {
8
+ let val = this.getIfcPropertyAccessor(name);
9
+ if ((0, utils_1.notNullish)(val)) {
10
+ return val;
11
+ }
12
+ return this.getIfcPropertySetAccessor(name);
13
+ }
14
+ listNestedObjects() {
15
+ return [...this.listIfcPropertyNames(), ...this.listIfcPropertySetNames()];
16
+ }
17
+ listAttributes() {
18
+ return [...super.listAttributes()];
19
+ }
20
+ }
21
+ exports.IfcTypeObjectAccessor = IfcTypeObjectAccessor;
22
+ //# sourceMappingURL=IfcTypeObjectAccessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/context/IfcTypeObjectAccessor.ts"],"names":[],"mappings":";;;AACA,mEAAgE;AAEhE,oCAAsC;AAGtC,MAAsB,qBAAsB,SAAQ,6CAAqB;IACvE,uBAAuB,CAAC,IAAY;QAClC,IAAI,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,IAAA,kBAAU,EAAC,GAAG,CAAC,EAAE;YACnB,OAAO,GAAG,CAAC;SACZ;QACD,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,iBAAiB;QACf,OAAO,CAAC,GAAG,IAAI,CAAC,oBAAoB,EAAE,EAAE,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,cAAc;QACZ,OAAO,CAAC,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;IACrC,CAAC;CAYF;AA3BD,sDA2BC","file":"context/IfcTypeObjectAccessor.js","sourcesContent":["import { ObjectAccessor } from \"./ObjectAccessor\";\nimport { IfcRootObjectAccessor } from \"./IfcRootObjectAccessor\";\nimport { IfcPropertySetAccessor } from \"./IfcPropertySetAccessor\";\nimport { notNullish } from \"../utils\";\nimport { IfcPropertyAccessor } from \"./IfcPropertyAccessor\";\n\nexport abstract class IfcTypeObjectAccessor extends IfcRootObjectAccessor {\n getNestedObjectAccessor(name: string): ObjectAccessor | undefined {\n let val = this.getIfcPropertyAccessor(name);\n if (notNullish(val)) {\n return val;\n }\n return this.getIfcPropertySetAccessor(name);\n }\n\n listNestedObjects(): Array<string> {\n return [...this.listIfcPropertyNames(), ...this.listIfcPropertySetNames()];\n }\n\n listAttributes(): Array<string> {\n return [...super.listAttributes()];\n }\n\n protected abstract getIfcPropertySetAccessor(\n name: string\n ): IfcPropertySetAccessor | undefined;\n\n protected abstract getIfcPropertyAccessor(\n name: string\n ): IfcPropertyAccessor | undefined;\n\n abstract listIfcPropertySetNames(): Array<string>;\n abstract listIfcPropertyNames(): Array<string>;\n}\n"]}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NamedObjectAccessor = void 0;
4
+ const StringValue_1 = require("../value/StringValue");
5
+ class NamedObjectAccessor {
6
+ getAttribute(name) {
7
+ switch (name) {
8
+ case "name":
9
+ return new StringValue_1.StringValue(this.getName());
10
+ case "description":
11
+ return new StringValue_1.StringValue(this.getDescription());
12
+ }
13
+ return undefined;
14
+ }
15
+ listAttributes() {
16
+ return ["name", "description"];
17
+ }
18
+ getNestedObjectAccessor(name) {
19
+ return undefined;
20
+ }
21
+ listNestedObjects() {
22
+ return [];
23
+ }
24
+ }
25
+ exports.NamedObjectAccessor = NamedObjectAccessor;
26
+ //# sourceMappingURL=NamedObjectAccessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/context/NamedObjectAccessor.ts"],"names":[],"mappings":";;;AAEA,sDAAmD;AAEnD,MAAsB,mBAAmB;IAKvC,YAAY,CAAC,IAAY;QACvB,QAAQ,IAAI,EAAE;YACZ,KAAK,MAAM;gBACT,OAAO,IAAI,yBAAW,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YACzC,KAAK,aAAa;gBAChB,OAAO,IAAI,yBAAW,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;SACjD;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,cAAc;QACZ,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACjC,CAAC;IAED,uBAAuB,CAAC,IAAY;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,iBAAiB;QACf,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AA1BD,kDA0BC","file":"context/NamedObjectAccessor.js","sourcesContent":["import { ObjectAccessor } from \"./ObjectAccessor\";\nimport { LiteralValueAnyArity } from \"../value/LiteralValueAnyArity\";\nimport { StringValue } from \"../value/StringValue\";\n\nexport abstract class NamedObjectAccessor implements ObjectAccessor {\n abstract getName(): string;\n\n abstract getDescription(): string;\n\n getAttribute(name: string): LiteralValueAnyArity | undefined {\n switch (name) {\n case \"name\":\n return new StringValue(this.getName());\n case \"description\":\n return new StringValue(this.getDescription());\n }\n return undefined;\n }\n\n listAttributes(): Array<string> {\n return [\"name\", \"description\"];\n }\n\n getNestedObjectAccessor(name: string): ObjectAccessor | undefined {\n return undefined;\n }\n\n listNestedObjects(): Array<string> {\n return [];\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ObjectAccessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/context/ObjectAccessor.ts"],"names":[],"mappings":"","file":"context/ObjectAccessor.js","sourcesContent":["import { LiteralValueAnyArity } from \"../value/LiteralValueAnyArity\";\n\nexport interface ObjectAccessor {\n /**\n * If there is a nested object with the specified name (.e.g the 'pset' in $prop.pset),\n * return an ObjectAccessor for it.\n * @param name\n */\n getNestedObjectAccessor(name: string): ObjectAccessor | undefined;\n\n /**\n * If the object has the attribute of the specified name, return it as (an array of (array of)) LiteralValue.\n * @param name\n */\n getAttribute(name: string): LiteralValueAnyArity | undefined;\n\n listNestedObjects(): Array<string>;\n\n listAttributes(): Array<string>;\n}\n"]}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ArrayExpr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/expression/ArrayExpr.ts"],"names":[],"mappings":"","file":"expression/ArrayExpr.js","sourcesContent":["export interface ArrayExpr<T> {\n evaluate(): Array<T>;\n}\n"]}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Expr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/expression/Expr.ts"],"names":[],"mappings":"","file":"expression/Expr.js","sourcesContent":["import { IfcExpressionContext } from \"../context/IfcExpressionContext\";\n\nexport interface Expr<T> {\n evaluate(ctx: IfcExpressionContext): T;\n}\n"]}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Expr0 = void 0;
4
+ class Expr0 {
5
+ constructor() { }
6
+ }
7
+ exports.Expr0 = Expr0;
8
+ //# sourceMappingURL=Expr0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/expression/Expr0.ts"],"names":[],"mappings":";;;AAGA,MAAsB,KAAK;IACzB,gBAAyB,CAAC;CAG3B;AAJD,sBAIC","file":"expression/Expr0.js","sourcesContent":["import { Expr } from \"./Expr\";\nimport { IfcExpressionContext } from \"../context/IfcExpressionContext\";\n\nexport abstract class Expr0<E> implements Expr<E> {\n protected constructor() {}\n\n abstract evaluate(ctx: IfcExpressionContext): E;\n}\n"]}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Expr1 = void 0;
4
+ class Expr1 {
5
+ constructor(value) {
6
+ this.value = value;
7
+ }
8
+ }
9
+ exports.Expr1 = Expr1;
10
+ //# sourceMappingURL=Expr1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/expression/Expr1.ts"],"names":[],"mappings":";;;AAGA,MAAsB,KAAK;IAGzB,YAAsB,KAAQ;QAC5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CAGF;AARD,sBAQC","file":"expression/Expr1.js","sourcesContent":["import { Expr } from \"./Expr\";\nimport { IfcExpressionContext } from \"../context/IfcExpressionContext\";\n\nexport abstract class Expr1<V, E> implements Expr<E> {\n readonly value: V;\n\n protected constructor(value: V) {\n this.value = value;\n }\n\n abstract evaluate(ctx: IfcExpressionContext): E;\n}\n"]}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Expr2 = void 0;
4
+ class Expr2 {
5
+ constructor(left, right) {
6
+ this.left = left;
7
+ this.right = right;
8
+ }
9
+ }
10
+ exports.Expr2 = Expr2;
11
+ //# sourceMappingURL=Expr2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/expression/Expr2.ts"],"names":[],"mappings":";;;AAGA,MAAsB,KAAK;IAIzB,YAAsB,IAAO,EAAE,KAAQ;QACrC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CAGF;AAVD,sBAUC","file":"expression/Expr2.js","sourcesContent":["import { Expr } from \"./Expr\";\nimport { IfcExpressionContext } from \"../context/IfcExpressionContext\";\n\nexport abstract class Expr2<L, R, E> implements Expr<E> {\n readonly left: L;\n readonly right: R;\n\n protected constructor(left: L, right: R) {\n this.left = left;\n this.right = right;\n }\n\n abstract evaluate(ctx: IfcExpressionContext): E;\n}\n"]}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IfcExpressionEvaluationException = void 0;
4
+ class IfcExpressionEvaluationException extends Error {
5
+ constructor(message) {
6
+ super(message);
7
+ }
8
+ }
9
+ exports.IfcExpressionEvaluationException = IfcExpressionEvaluationException;
10
+ //# sourceMappingURL=IfcExpressionEvaluationException.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/expression/IfcExpressionEvaluationException.ts"],"names":[],"mappings":";;;AAAA,MAAa,gCAAiC,SAAQ,KAAK;IACzD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF;AAJD,4EAIC","file":"expression/IfcExpressionEvaluationException.js","sourcesContent":["export class IfcExpressionEvaluationException extends Error {\n constructor(message: string) {\n super(message);\n }\n}\n"]}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DivideExpr = void 0;
4
+ const Expr2_1 = require("../Expr2");
5
+ const NumericValue_1 = require("../../value/NumericValue");
6
+ class DivideExpr extends Expr2_1.Expr2 {
7
+ constructor(left, right) {
8
+ super(left, right);
9
+ }
10
+ evaluate(ctx) {
11
+ return NumericValue_1.NumericValue.of(this.left
12
+ .evaluate(ctx)
13
+ .getValue()
14
+ .dividedBy(this.right.evaluate(ctx).getValue()));
15
+ }
16
+ }
17
+ exports.DivideExpr = DivideExpr;
18
+ //# sourceMappingURL=DivideExpr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/expression/numeric/DivideExpr.ts"],"names":[],"mappings":";;;AAAA,oCAAiC;AAGjC,2DAAwD;AAExD,MAAa,UAAW,SAAQ,aAI/B;IACC,YAAY,IAAwB,EAAE,KAAyB;QAC7D,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,QAAQ,CAAC,GAAyB;QAChC,OAAO,2BAAY,CAAC,EAAE,CACpB,IAAI,CAAC,IAAI;aACN,QAAQ,CAAC,GAAG,CAAC;aACb,QAAQ,EAAE;aACV,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAClD,CAAC;IACJ,CAAC;CACF;AAjBD,gCAiBC","file":"expression/numeric/DivideExpr.js","sourcesContent":["import { Expr2 } from \"../Expr2\";\nimport { Expr } from \"../Expr\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext\";\nimport { NumericValue } from \"../../value/NumericValue\";\n\nexport class DivideExpr extends Expr2<\n Expr<NumericValue>,\n Expr<NumericValue>,\n NumericValue\n> {\n constructor(left: Expr<NumericValue>, right: Expr<NumericValue>) {\n super(left, right);\n }\n\n evaluate(ctx: IfcExpressionContext): NumericValue {\n return NumericValue.of(\n this.left\n .evaluate(ctx)\n .getValue()\n .dividedBy(this.right.evaluate(ctx).getValue())\n );\n }\n}\n"]}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MinusExpr = void 0;
4
+ const Expr2_1 = require("../Expr2");
5
+ const NumericValue_1 = require("../../value/NumericValue");
6
+ class MinusExpr extends Expr2_1.Expr2 {
7
+ constructor(left, right) {
8
+ super(left, right);
9
+ }
10
+ evaluate(ctx) {
11
+ return NumericValue_1.NumericValue.of(this.left
12
+ .evaluate(ctx)
13
+ .getValue()
14
+ .minus(this.right.evaluate(ctx).getValue()));
15
+ }
16
+ }
17
+ exports.MinusExpr = MinusExpr;
18
+ //# sourceMappingURL=MinusExpr.js.map