ifc-expressions 0.2.2 → 0.2.3

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 (215) hide show
  1. package/dist/ExprVisitor.d.ts +3 -3
  2. package/dist/IfcExpression.d.ts +25 -23
  3. package/dist/IfcExpressionErrorListener.d.ts +1 -1
  4. package/dist/IfcExpressionUtils.d.ts +2 -0
  5. package/dist/cjs/ExprVisitor.js +36 -36
  6. package/dist/cjs/ExprVisitor.js.map +1 -1
  7. package/dist/cjs/IfcExpression.js +43 -40
  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 +6 -6
  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.map +1 -1
  29. package/dist/cjs/expression/ArrayExpr.js.map +1 -1
  30. package/dist/cjs/expression/Expr.js.map +1 -1
  31. package/dist/cjs/expression/Expr0.js.map +1 -1
  32. package/dist/cjs/expression/Expr1.js.map +1 -1
  33. package/dist/cjs/expression/Expr2.js.map +1 -1
  34. package/dist/cjs/expression/IfcExpressionEvaluationException.js.map +1 -1
  35. package/dist/cjs/expression/numeric/DivideExpr.js +4 -4
  36. package/dist/cjs/expression/numeric/DivideExpr.js.map +1 -1
  37. package/dist/cjs/expression/numeric/MinusExpr.js +4 -4
  38. package/dist/cjs/expression/numeric/MinusExpr.js.map +1 -1
  39. package/dist/cjs/expression/numeric/MultiplyByExpr.js +4 -4
  40. package/dist/cjs/expression/numeric/MultiplyByExpr.js.map +1 -1
  41. package/dist/cjs/expression/numeric/MultiplyExpr.js +4 -4
  42. package/dist/cjs/expression/numeric/MultiplyExpr.js.map +1 -1
  43. package/dist/cjs/expression/numeric/NumParenthesisExpr.js +2 -2
  44. package/dist/cjs/expression/numeric/NumParenthesisExpr.js.map +1 -1
  45. package/dist/cjs/expression/numeric/NumericLiteralExpr.js +2 -2
  46. package/dist/cjs/expression/numeric/NumericLiteralExpr.js.map +1 -1
  47. package/dist/cjs/expression/numeric/PlusExpr.js +4 -4
  48. package/dist/cjs/expression/numeric/PlusExpr.js.map +1 -1
  49. package/dist/cjs/expression/reference/AttributeReferenceExpr.js +2 -2
  50. package/dist/cjs/expression/reference/AttributeReferenceExpr.js.map +1 -1
  51. package/dist/cjs/expression/reference/ElemObjectReferenceExpr.js +2 -2
  52. package/dist/cjs/expression/reference/ElemObjectReferenceExpr.js.map +1 -1
  53. package/dist/cjs/expression/reference/NestedObjectChainEndExpr.js +2 -2
  54. package/dist/cjs/expression/reference/NestedObjectChainEndExpr.js.map +1 -1
  55. package/dist/cjs/expression/reference/NestedObjectChainExpr.js +2 -2
  56. package/dist/cjs/expression/reference/NestedObjectChainExpr.js.map +1 -1
  57. package/dist/cjs/expression/reference/ObjectReferenceExpr.js.map +1 -1
  58. package/dist/cjs/expression/reference/PropObjectReferenceExpr.js +2 -2
  59. package/dist/cjs/expression/reference/PropObjectReferenceExpr.js.map +1 -1
  60. package/dist/cjs/expression/string/StringConcatExpr.js +4 -4
  61. package/dist/cjs/expression/string/StringConcatExpr.js.map +1 -1
  62. package/dist/cjs/expression/string/StringLiteralExpr.js +2 -2
  63. package/dist/cjs/expression/string/StringLiteralExpr.js.map +1 -1
  64. package/dist/cjs/gen/parser/IfcExpressionLexer.js.map +1 -0
  65. package/dist/cjs/gen/parser/IfcExpressionListener.js.map +1 -0
  66. package/dist/{mjs → cjs/gen}/parser/IfcExpressionParser.js.map +1 -1
  67. package/dist/cjs/gen/parser/IfcExpressionVisitor.js.map +1 -0
  68. package/dist/cjs/value/BooleanValue.js +2 -2
  69. package/dist/cjs/value/BooleanValue.js.map +1 -1
  70. package/dist/cjs/value/LiteralValue.js.map +1 -1
  71. package/dist/cjs/value/LiteralValueAnyArity.js.map +1 -1
  72. package/dist/cjs/value/LogicalValue.js +2 -2
  73. package/dist/cjs/value/LogicalValue.js.map +1 -1
  74. package/dist/cjs/value/NumericValue.js +2 -2
  75. package/dist/cjs/value/NumericValue.js.map +1 -1
  76. package/dist/cjs/value/PrimitiveValueType.js.map +1 -1
  77. package/dist/cjs/value/ReferenceValue.js +2 -2
  78. package/dist/cjs/value/ReferenceValue.js.map +1 -1
  79. package/dist/cjs/value/StringValue.js +2 -2
  80. package/dist/cjs/value/StringValue.js.map +1 -1
  81. package/dist/cjs/value/Value.js.map +1 -1
  82. package/dist/context/IfcElementAccessor.d.ts +6 -6
  83. package/dist/context/IfcExpressionContext.d.ts +2 -2
  84. package/dist/context/IfcPropertyAccessor.d.ts +4 -4
  85. package/dist/context/IfcPropertySetAccessor.d.ts +4 -4
  86. package/dist/context/IfcRootObjectAccessor.d.ts +2 -2
  87. package/dist/context/IfcTypeObjectAccessor.d.ts +4 -4
  88. package/dist/context/NamedObjectAccessor.d.ts +2 -2
  89. package/dist/context/ObjectAccessor.d.ts +1 -1
  90. package/dist/expression/Expr.d.ts +1 -1
  91. package/dist/expression/Expr0.d.ts +2 -2
  92. package/dist/expression/Expr1.d.ts +2 -2
  93. package/dist/expression/Expr2.d.ts +2 -2
  94. package/dist/expression/numeric/DivideExpr.d.ts +4 -4
  95. package/dist/expression/numeric/MinusExpr.d.ts +4 -4
  96. package/dist/expression/numeric/MultiplyByExpr.d.ts +4 -4
  97. package/dist/expression/numeric/MultiplyExpr.d.ts +4 -4
  98. package/dist/expression/numeric/NumParenthesisExpr.d.ts +4 -4
  99. package/dist/expression/numeric/NumericLiteralExpr.d.ts +3 -3
  100. package/dist/expression/numeric/PlusExpr.d.ts +4 -4
  101. package/dist/expression/reference/AttributeReferenceExpr.d.ts +5 -5
  102. package/dist/expression/reference/ElemObjectReferenceExpr.d.ts +4 -4
  103. package/dist/expression/reference/NestedObjectChainEndExpr.d.ts +4 -4
  104. package/dist/expression/reference/NestedObjectChainExpr.d.ts +5 -5
  105. package/dist/expression/reference/ObjectReferenceExpr.d.ts +2 -2
  106. package/dist/expression/reference/PropObjectReferenceExpr.d.ts +4 -4
  107. package/dist/expression/string/StringConcatExpr.d.ts +4 -4
  108. package/dist/expression/string/StringLiteralExpr.d.ts +3 -3
  109. package/dist/mjs/ExprVisitor.js +21 -21
  110. package/dist/mjs/ExprVisitor.js.map +1 -1
  111. package/dist/mjs/IfcExpression.js +21 -21
  112. package/dist/mjs/IfcExpression.js.map +1 -1
  113. package/dist/mjs/IfcExpressionErrorListener.js +3 -3
  114. package/dist/mjs/IfcExpressionErrorListener.js.map +1 -1
  115. package/dist/mjs/IfcExpressionUtils.js +7 -0
  116. package/dist/mjs/IfcExpressionUtils.js.map +1 -0
  117. package/dist/mjs/SyntaxErrorException.js +2 -2
  118. package/dist/mjs/SyntaxErrorException.js.map +1 -1
  119. package/dist/mjs/context/IfcElementAccessor.js +4 -4
  120. package/dist/mjs/context/IfcElementAccessor.js.map +1 -1
  121. package/dist/mjs/context/IfcExpressionContext.js.map +1 -1
  122. package/dist/mjs/context/IfcPropertyAccessor.js +1 -1
  123. package/dist/mjs/context/IfcPropertyAccessor.js.map +1 -1
  124. package/dist/mjs/context/IfcPropertySetAccessor.js +1 -1
  125. package/dist/mjs/context/IfcPropertySetAccessor.js.map +1 -1
  126. package/dist/mjs/context/IfcRootObjectAccessor.js +2 -2
  127. package/dist/mjs/context/IfcRootObjectAccessor.js.map +1 -1
  128. package/dist/mjs/context/IfcTypeObjectAccessor.js +3 -3
  129. package/dist/mjs/context/IfcTypeObjectAccessor.js.map +1 -1
  130. package/dist/mjs/context/NamedObjectAccessor.js +1 -1
  131. package/dist/mjs/context/NamedObjectAccessor.js.map +1 -1
  132. package/dist/mjs/context/ObjectAccessor.js.map +1 -1
  133. package/dist/mjs/expression/Expr.js.map +1 -1
  134. package/dist/mjs/expression/Expr0.js.map +1 -1
  135. package/dist/mjs/expression/Expr1.js.map +1 -1
  136. package/dist/mjs/expression/Expr2.js.map +1 -1
  137. package/dist/mjs/expression/numeric/DivideExpr.js +2 -2
  138. package/dist/mjs/expression/numeric/DivideExpr.js.map +1 -1
  139. package/dist/mjs/expression/numeric/MinusExpr.js +2 -2
  140. package/dist/mjs/expression/numeric/MinusExpr.js.map +1 -1
  141. package/dist/mjs/expression/numeric/MultiplyByExpr.js +2 -2
  142. package/dist/mjs/expression/numeric/MultiplyByExpr.js.map +1 -1
  143. package/dist/mjs/expression/numeric/MultiplyExpr.js +2 -2
  144. package/dist/mjs/expression/numeric/MultiplyExpr.js.map +1 -1
  145. package/dist/mjs/expression/numeric/NumParenthesisExpr.js +1 -1
  146. package/dist/mjs/expression/numeric/NumParenthesisExpr.js.map +1 -1
  147. package/dist/mjs/expression/numeric/NumericLiteralExpr.js +1 -1
  148. package/dist/mjs/expression/numeric/NumericLiteralExpr.js.map +1 -1
  149. package/dist/mjs/expression/numeric/PlusExpr.js +2 -2
  150. package/dist/mjs/expression/numeric/PlusExpr.js.map +1 -1
  151. package/dist/mjs/expression/reference/AttributeReferenceExpr.js +1 -1
  152. package/dist/mjs/expression/reference/AttributeReferenceExpr.js.map +1 -1
  153. package/dist/mjs/expression/reference/ElemObjectReferenceExpr.js +1 -1
  154. package/dist/mjs/expression/reference/ElemObjectReferenceExpr.js.map +1 -1
  155. package/dist/mjs/expression/reference/NestedObjectChainEndExpr.js +1 -1
  156. package/dist/mjs/expression/reference/NestedObjectChainEndExpr.js.map +1 -1
  157. package/dist/mjs/expression/reference/NestedObjectChainExpr.js +1 -1
  158. package/dist/mjs/expression/reference/NestedObjectChainExpr.js.map +1 -1
  159. package/dist/mjs/expression/reference/ObjectReferenceExpr.js.map +1 -1
  160. package/dist/mjs/expression/reference/PropObjectReferenceExpr.js +1 -1
  161. package/dist/mjs/expression/reference/PropObjectReferenceExpr.js.map +1 -1
  162. package/dist/mjs/expression/string/StringConcatExpr.js +2 -2
  163. package/dist/mjs/expression/string/StringConcatExpr.js.map +1 -1
  164. package/dist/mjs/expression/string/StringLiteralExpr.js +1 -1
  165. package/dist/mjs/expression/string/StringLiteralExpr.js.map +1 -1
  166. package/dist/mjs/gen/parser/IfcExpressionLexer.js.map +1 -0
  167. package/dist/mjs/gen/parser/IfcExpressionListener.js.map +1 -0
  168. package/dist/mjs/gen/parser/IfcExpressionParser.js.map +1 -0
  169. package/dist/mjs/gen/parser/IfcExpressionVisitor.js.map +1 -0
  170. package/dist/mjs/value/BooleanValue.js +1 -1
  171. package/dist/mjs/value/BooleanValue.js.map +1 -1
  172. package/dist/mjs/value/LiteralValue.js.map +1 -1
  173. package/dist/mjs/value/LiteralValueAnyArity.js.map +1 -1
  174. package/dist/mjs/value/LogicalValue.js +1 -1
  175. package/dist/mjs/value/LogicalValue.js.map +1 -1
  176. package/dist/mjs/value/NumericValue.js +1 -1
  177. package/dist/mjs/value/NumericValue.js.map +1 -1
  178. package/dist/mjs/value/ReferenceValue.js +1 -1
  179. package/dist/mjs/value/ReferenceValue.js.map +1 -1
  180. package/dist/mjs/value/StringValue.js +1 -1
  181. package/dist/mjs/value/StringValue.js.map +1 -1
  182. package/dist/mjs/value/Value.js.map +1 -1
  183. package/dist/value/BooleanValue.d.ts +1 -1
  184. package/dist/value/LiteralValue.d.ts +5 -5
  185. package/dist/value/LiteralValueAnyArity.d.ts +1 -1
  186. package/dist/value/LogicalValue.d.ts +1 -1
  187. package/dist/value/NumericValue.d.ts +1 -1
  188. package/dist/value/ReferenceValue.d.ts +1 -1
  189. package/dist/value/StringValue.d.ts +1 -1
  190. package/dist/value/Value.d.ts +1 -1
  191. package/package.json +4 -3
  192. package/dist/cjs/parser/IfcExpressionLexer.js.map +0 -1
  193. package/dist/cjs/parser/IfcExpressionListener.js.map +0 -1
  194. package/dist/cjs/parser/IfcExpressionParser.js.map +0 -1
  195. package/dist/cjs/parser/IfcExpressionVisitor.js.map +0 -1
  196. package/dist/cjs/utils.js +0 -12
  197. package/dist/cjs/utils.js.map +0 -1
  198. package/dist/mjs/parser/IfcExpressionLexer.js.map +0 -1
  199. package/dist/mjs/parser/IfcExpressionListener.js.map +0 -1
  200. package/dist/mjs/parser/IfcExpressionVisitor.js.map +0 -1
  201. package/dist/mjs/utils.js +0 -7
  202. package/dist/mjs/utils.js.map +0 -1
  203. package/dist/utils.d.ts +0 -2
  204. /package/dist/cjs/{parser → gen/parser}/IfcExpressionLexer.js +0 -0
  205. /package/dist/cjs/{parser → gen/parser}/IfcExpressionListener.js +0 -0
  206. /package/dist/cjs/{parser → gen/parser}/IfcExpressionParser.js +0 -0
  207. /package/dist/cjs/{parser → gen/parser}/IfcExpressionVisitor.js +0 -0
  208. /package/dist/{parser → gen/parser}/IfcExpressionLexer.d.ts +0 -0
  209. /package/dist/{parser → gen/parser}/IfcExpressionListener.d.ts +0 -0
  210. /package/dist/{parser → gen/parser}/IfcExpressionParser.d.ts +0 -0
  211. /package/dist/{parser → gen/parser}/IfcExpressionVisitor.d.ts +0 -0
  212. /package/dist/mjs/{parser → gen/parser}/IfcExpressionLexer.js +0 -0
  213. /package/dist/mjs/{parser → gen/parser}/IfcExpressionListener.js +0 -0
  214. /package/dist/mjs/{parser → gen/parser}/IfcExpressionParser.js +0 -0
  215. /package/dist/mjs/{parser → gen/parser}/IfcExpressionVisitor.js +0 -0
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ReferenceValue = void 0;
4
- const Value_1 = require("./Value");
5
- class ReferenceValue extends Value_1.Value {
4
+ const Value_js_1 = require("./Value.js");
5
+ class ReferenceValue extends Value_js_1.Value {
6
6
  constructor(value) {
7
7
  super(value);
8
8
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/value/ReferenceValue.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAEhC,MAAa,cAAe,SAAQ,aAAa;IAC/C,YAAY,KAAa;QACvB,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEM,MAAM,CAAC,EAAE,CAAC,KAAa;QAC5B,OAAO,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;CACF;AARD,wCAQC","file":"value/ReferenceValue.js","sourcesContent":["import { Value } from \"./Value\";\n\nexport class ReferenceValue extends Value<string> {\n constructor(value: string) {\n super(value);\n }\n\n public static of(value: string): ReferenceValue {\n return new ReferenceValue(value);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/value/ReferenceValue.ts"],"names":[],"mappings":";;;AAAA,yCAAmC;AAEnC,MAAa,cAAe,SAAQ,gBAAa;IAC/C,YAAY,KAAa;QACvB,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEM,MAAM,CAAC,EAAE,CAAC,KAAa;QAC5B,OAAO,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;CACF;AARD,wCAQC","file":"value/ReferenceValue.js","sourcesContent":["import { Value } from \"./Value.js\";\n\nexport class ReferenceValue extends Value<string> {\n constructor(value: string) {\n super(value);\n }\n\n public static of(value: string): ReferenceValue {\n return new ReferenceValue(value);\n }\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.StringValue = void 0;
4
- const Value_1 = require("./Value");
5
- class StringValue extends Value_1.Value {
4
+ const Value_js_1 = require("./Value.js");
5
+ class StringValue extends Value_js_1.Value {
6
6
  constructor(value) {
7
7
  super(value);
8
8
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/value/StringValue.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAEhC,MAAa,WAAY,SAAQ,aAAa;IAC5C,YAAY,KAAa;QACvB,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEM,MAAM,CAAC,EAAE,CAAC,KAAa;QAC5B,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;CACF;AARD,kCAQC","file":"value/StringValue.js","sourcesContent":["import { Value } from \"./Value\";\n\nexport class StringValue extends Value<string> {\n constructor(value: string) {\n super(value);\n }\n\n public static of(value: string): StringValue {\n return new StringValue(value);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/value/StringValue.ts"],"names":[],"mappings":";;;AAAA,yCAAmC;AAEnC,MAAa,WAAY,SAAQ,gBAAa;IAC5C,YAAY,KAAa;QACvB,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEM,MAAM,CAAC,EAAE,CAAC,KAAa;QAC5B,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;CACF;AARD,kCAQC","file":"value/StringValue.js","sourcesContent":["import { Value } from \"./Value.js\";\n\nexport class StringValue extends Value<string> {\n constructor(value: string) {\n super(value);\n }\n\n public static of(value: string): StringValue {\n return new StringValue(value);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/value/Value.ts"],"names":[],"mappings":";;;AAEA,MAAa,KAAK;IAGhB,YAAY,KAAQ;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAVD,sBAUC","file":"value/Value.js","sourcesContent":["import { PrimitiveValueType } from \"./PrimitiveValueType\";\n\nexport class Value<T extends PrimitiveValueType> {\n private readonly value: T;\n\n constructor(value: T) {\n this.value = value;\n }\n\n public getValue(): T {\n return this.value;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/value/Value.ts"],"names":[],"mappings":";;;AAEA,MAAa,KAAK;IAGhB,YAAY,KAAQ;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAVD,sBAUC","file":"value/Value.js","sourcesContent":["import { PrimitiveValueType } from \"./PrimitiveValueType.js\";\n\nexport class Value<T extends PrimitiveValueType> {\n private readonly value: T;\n\n constructor(value: T) {\n this.value = value;\n }\n\n public getValue(): T {\n return this.value;\n }\n}\n"]}
@@ -1,9 +1,9 @@
1
- import { ObjectAccessor } from "./ObjectAccessor";
2
- import { IfcRootObjectAccessor } from "./IfcRootObjectAccessor";
3
- import { IfcTypeObjectAccessor } from "./IfcTypeObjectAccessor";
4
- import { IfcPropertyAccessor } from "./IfcPropertyAccessor";
5
- import { LiteralValueAnyArity } from "../value/LiteralValueAnyArity";
6
- import { IfcPropertySetAccessor } from "./IfcPropertySetAccessor";
1
+ import { ObjectAccessor } from "./ObjectAccessor.js";
2
+ import { IfcRootObjectAccessor } from "./IfcRootObjectAccessor.js";
3
+ import { IfcTypeObjectAccessor } from "./IfcTypeObjectAccessor.js";
4
+ import { IfcPropertyAccessor } from "./IfcPropertyAccessor.js";
5
+ import { LiteralValueAnyArity } from "../value/LiteralValueAnyArity.js";
6
+ import { IfcPropertySetAccessor } from "./IfcPropertySetAccessor.js";
7
7
  export declare abstract class IfcElementAccessor extends IfcRootObjectAccessor {
8
8
  getNestedObjectAccessor(name: string): ObjectAccessor | undefined;
9
9
  getAttribute(name: string): LiteralValueAnyArity | undefined;
@@ -1,5 +1,5 @@
1
- import { IfcPropertyAccessor } from "./IfcPropertyAccessor";
2
- import { IfcElementAccessor } from "./IfcElementAccessor";
1
+ import { IfcPropertyAccessor } from "./IfcPropertyAccessor.js";
2
+ import { IfcElementAccessor } from "./IfcElementAccessor.js";
3
3
  export interface IfcExpressionContext {
4
4
  resolvePropRef(): IfcPropertyAccessor;
5
5
  resolveElemRef(): IfcElementAccessor;
@@ -1,7 +1,7 @@
1
- import { ObjectAccessor } from "./ObjectAccessor";
2
- import { NamedObjectAccessor } from "./NamedObjectAccessor";
3
- import { IfcPropertySetAccessor } from "./IfcPropertySetAccessor";
4
- import { LiteralValueAnyArity } from "../value/LiteralValueAnyArity";
1
+ import { ObjectAccessor } from "./ObjectAccessor.js";
2
+ import { NamedObjectAccessor } from "./NamedObjectAccessor.js";
3
+ import { IfcPropertySetAccessor } from "./IfcPropertySetAccessor.js";
4
+ import { LiteralValueAnyArity } from "../value/LiteralValueAnyArity.js";
5
5
  export declare abstract class IfcPropertyAccessor extends NamedObjectAccessor {
6
6
  getNestedObjectAccessor(name: string): ObjectAccessor | undefined;
7
7
  listNestedObjects(): Array<string>;
@@ -1,7 +1,7 @@
1
- import { IfcRootObjectAccessor } from "./IfcRootObjectAccessor";
2
- import { LiteralValueAnyArity } from "../value/LiteralValueAnyArity";
3
- import { IfcPropertyAccessor } from "./IfcPropertyAccessor";
4
- import { ObjectAccessor } from "./ObjectAccessor";
1
+ import { IfcRootObjectAccessor } from "./IfcRootObjectAccessor.js";
2
+ import { LiteralValueAnyArity } from "../value/LiteralValueAnyArity.js";
3
+ import { IfcPropertyAccessor } from "./IfcPropertyAccessor.js";
4
+ import { ObjectAccessor } from "./ObjectAccessor.js";
5
5
  export declare abstract class IfcPropertySetAccessor extends IfcRootObjectAccessor {
6
6
  listAttributes(): Array<string>;
7
7
  getAttribute(name: string): LiteralValueAnyArity | undefined;
@@ -1,5 +1,5 @@
1
- import { NamedObjectAccessor } from "./NamedObjectAccessor";
2
- import { LiteralValueAnyArity } from "../value/LiteralValueAnyArity";
1
+ import { NamedObjectAccessor } from "./NamedObjectAccessor.js";
2
+ import { LiteralValueAnyArity } from "../value/LiteralValueAnyArity.js";
3
3
  export declare abstract class IfcRootObjectAccessor extends NamedObjectAccessor {
4
4
  getAttribute(name: string): LiteralValueAnyArity | undefined;
5
5
  abstract getGuid(): string;
@@ -1,7 +1,7 @@
1
- import { ObjectAccessor } from "./ObjectAccessor";
2
- import { IfcRootObjectAccessor } from "./IfcRootObjectAccessor";
3
- import { IfcPropertySetAccessor } from "./IfcPropertySetAccessor";
4
- import { IfcPropertyAccessor } from "./IfcPropertyAccessor";
1
+ import { ObjectAccessor } from "./ObjectAccessor.js";
2
+ import { IfcRootObjectAccessor } from "./IfcRootObjectAccessor.js";
3
+ import { IfcPropertySetAccessor } from "./IfcPropertySetAccessor.js";
4
+ import { IfcPropertyAccessor } from "./IfcPropertyAccessor.js";
5
5
  export declare abstract class IfcTypeObjectAccessor extends IfcRootObjectAccessor {
6
6
  getNestedObjectAccessor(name: string): ObjectAccessor | undefined;
7
7
  listNestedObjects(): Array<string>;
@@ -1,5 +1,5 @@
1
- import { ObjectAccessor } from "./ObjectAccessor";
2
- import { LiteralValueAnyArity } from "../value/LiteralValueAnyArity";
1
+ import { ObjectAccessor } from "./ObjectAccessor.js";
2
+ import { LiteralValueAnyArity } from "../value/LiteralValueAnyArity.js";
3
3
  export declare abstract class NamedObjectAccessor implements ObjectAccessor {
4
4
  abstract getName(): string;
5
5
  abstract getDescription(): string;
@@ -1,4 +1,4 @@
1
- import { LiteralValueAnyArity } from "../value/LiteralValueAnyArity";
1
+ import { LiteralValueAnyArity } from "../value/LiteralValueAnyArity.js";
2
2
  export interface ObjectAccessor {
3
3
  /**
4
4
  * If there is a nested object with the specified name (.e.g the 'pset' in $prop.pset),
@@ -1,4 +1,4 @@
1
- import { IfcExpressionContext } from "../context/IfcExpressionContext";
1
+ import { IfcExpressionContext } from "../context/IfcExpressionContext.js";
2
2
  export interface Expr<T> {
3
3
  evaluate(ctx: IfcExpressionContext): T;
4
4
  }
@@ -1,5 +1,5 @@
1
- import { Expr } from "./Expr";
2
- import { IfcExpressionContext } from "../context/IfcExpressionContext";
1
+ import { Expr } from "./Expr.js";
2
+ import { IfcExpressionContext } from "../context/IfcExpressionContext.js";
3
3
  export declare abstract class Expr0<E> implements Expr<E> {
4
4
  protected constructor();
5
5
  abstract evaluate(ctx: IfcExpressionContext): E;
@@ -1,5 +1,5 @@
1
- import { Expr } from "./Expr";
2
- import { IfcExpressionContext } from "../context/IfcExpressionContext";
1
+ import { Expr } from "./Expr.js";
2
+ import { IfcExpressionContext } from "../context/IfcExpressionContext.js";
3
3
  export declare abstract class Expr1<V, E> implements Expr<E> {
4
4
  readonly value: V;
5
5
  protected constructor(value: V);
@@ -1,5 +1,5 @@
1
- import { Expr } from "./Expr";
2
- import { IfcExpressionContext } from "../context/IfcExpressionContext";
1
+ import { Expr } from "./Expr.js";
2
+ import { IfcExpressionContext } from "../context/IfcExpressionContext.js";
3
3
  export declare abstract class Expr2<L, R, E> implements Expr<E> {
4
4
  readonly left: L;
5
5
  readonly right: R;
@@ -1,7 +1,7 @@
1
- import { Expr2 } from "../Expr2";
2
- import { Expr } from "../Expr";
3
- import { IfcExpressionContext } from "../../context/IfcExpressionContext";
4
- import { NumericValue } from "../../value/NumericValue";
1
+ import { Expr2 } from "../Expr2.js";
2
+ import { Expr } from "../Expr.js";
3
+ import { IfcExpressionContext } from "../../context/IfcExpressionContext.js";
4
+ import { NumericValue } from "../../value/NumericValue.js";
5
5
  export declare class DivideExpr extends Expr2<Expr<NumericValue>, Expr<NumericValue>, NumericValue> {
6
6
  constructor(left: Expr<NumericValue>, right: Expr<NumericValue>);
7
7
  evaluate(ctx: IfcExpressionContext): NumericValue;
@@ -1,7 +1,7 @@
1
- import { Expr2 } from "../Expr2";
2
- import { Expr } from "../Expr";
3
- import { IfcExpressionContext } from "../../context/IfcExpressionContext";
4
- import { NumericValue } from "../../value/NumericValue";
1
+ import { Expr2 } from "../Expr2.js";
2
+ import { Expr } from "../Expr.js";
3
+ import { IfcExpressionContext } from "../../context/IfcExpressionContext.js";
4
+ import { NumericValue } from "../../value/NumericValue.js";
5
5
  export declare class MinusExpr extends Expr2<Expr<NumericValue>, Expr<NumericValue>, NumericValue> {
6
6
  constructor(left: Expr<NumericValue>, right: Expr<NumericValue>);
7
7
  evaluate(ctx: IfcExpressionContext): NumericValue;
@@ -1,7 +1,7 @@
1
- import { Expr2 } from "../Expr2";
2
- import { Expr } from "../Expr";
3
- import { IfcExpressionContext } from "../../context/IfcExpressionContext";
4
- import { NumericValue } from "../../value/NumericValue";
1
+ import { Expr2 } from "../Expr2.js";
2
+ import { Expr } from "../Expr.js";
3
+ import { IfcExpressionContext } from "../../context/IfcExpressionContext.js";
4
+ import { NumericValue } from "../../value/NumericValue.js";
5
5
  export declare class PlusExpr extends Expr2<Expr<NumericValue>, Expr<NumericValue>, NumericValue> {
6
6
  constructor(left: Expr<NumericValue>, right: Expr<NumericValue>);
7
7
  evaluate(ctx: IfcExpressionContext): NumericValue;
@@ -1,7 +1,7 @@
1
- import { Expr2 } from "../Expr2";
2
- import { Expr } from "../Expr";
3
- import { IfcExpressionContext } from "../../context/IfcExpressionContext";
4
- import { NumericValue } from "../../value/NumericValue";
1
+ import { Expr2 } from "../Expr2.js";
2
+ import { Expr } from "../Expr.js";
3
+ import { IfcExpressionContext } from "../../context/IfcExpressionContext.js";
4
+ import { NumericValue } from "../../value/NumericValue.js";
5
5
  export declare class MultiplyExpr extends Expr2<Expr<NumericValue>, Expr<NumericValue>, NumericValue> {
6
6
  constructor(left: Expr<NumericValue>, right: Expr<NumericValue>);
7
7
  evaluate(ctx: IfcExpressionContext): NumericValue;
@@ -1,7 +1,7 @@
1
- import { Expr1 } from "../Expr1";
2
- import { Expr } from "../Expr";
3
- import { IfcExpressionContext } from "../../context/IfcExpressionContext";
4
- import { NumericValue } from "../../value/NumericValue";
1
+ import { Expr1 } from "../Expr1.js";
2
+ import { Expr } from "../Expr.js";
3
+ import { IfcExpressionContext } from "../../context/IfcExpressionContext.js";
4
+ import { NumericValue } from "../../value/NumericValue.js";
5
5
  export declare class NumParenthesisExpr extends Expr1<Expr<NumericValue>, NumericValue> {
6
6
  constructor(expression: Expr<NumericValue>);
7
7
  evaluate(ctx: IfcExpressionContext): NumericValue;
@@ -1,6 +1,6 @@
1
- import { Expr1 } from "../Expr1";
2
- import { IfcExpressionContext } from "../../context/IfcExpressionContext";
3
- import { NumericValue } from "../../value/NumericValue";
1
+ import { Expr1 } from "../Expr1.js";
2
+ import { IfcExpressionContext } from "../../context/IfcExpressionContext.js";
3
+ import { NumericValue } from "../../value/NumericValue.js";
4
4
  export declare class NumericLiteralExpr extends Expr1<NumericValue, NumericValue> {
5
5
  constructor(value: NumericValue);
6
6
  evaluate(ctx: IfcExpressionContext): NumericValue;
@@ -1,7 +1,7 @@
1
- import { Expr2 } from "../Expr2";
2
- import { Expr } from "../Expr";
3
- import { IfcExpressionContext } from "../../context/IfcExpressionContext";
4
- import { NumericValue } from "../../value/NumericValue";
1
+ import { Expr2 } from "../Expr2.js";
2
+ import { Expr } from "../Expr.js";
3
+ import { IfcExpressionContext } from "../../context/IfcExpressionContext.js";
4
+ import { NumericValue } from "../../value/NumericValue.js";
5
5
  export declare class PlusExpr extends Expr2<Expr<NumericValue>, Expr<NumericValue>, NumericValue> {
6
6
  constructor(left: Expr<NumericValue>, right: Expr<NumericValue>);
7
7
  evaluate(ctx: IfcExpressionContext): NumericValue;
@@ -1,8 +1,8 @@
1
- import { IfcExpressionContext } from "../../context/IfcExpressionContext";
2
- import { Expr2 } from "../Expr2";
3
- import { NestedObjectChainExpr } from "./NestedObjectChainExpr";
4
- import { ObjectReferenceExpr } from "./ObjectReferenceExpr";
5
- import { LiteralValueAnyArity } from "../../value/LiteralValueAnyArity";
1
+ import { IfcExpressionContext } from "../../context/IfcExpressionContext.js";
2
+ import { Expr2 } from "../Expr2.js";
3
+ import { NestedObjectChainExpr } from "./NestedObjectChainExpr.js";
4
+ import { ObjectReferenceExpr } from "./ObjectReferenceExpr.js";
5
+ import { LiteralValueAnyArity } from "../../value/LiteralValueAnyArity.js";
6
6
  export declare class AttributeReferenceExpr extends Expr2<ObjectReferenceExpr, NestedObjectChainExpr, LiteralValueAnyArity> {
7
7
  constructor(left: ObjectReferenceExpr, right: NestedObjectChainExpr);
8
8
  evaluate(ctx: IfcExpressionContext): LiteralValueAnyArity;
@@ -1,7 +1,7 @@
1
- import { IfcExpressionContext } from "../../context/IfcExpressionContext";
2
- import { ObjectReferenceExpr } from "./ObjectReferenceExpr";
3
- import { ObjectAccessor } from "../../context/ObjectAccessor";
4
- import { Expr0 } from "../Expr0";
1
+ import { IfcExpressionContext } from "../../context/IfcExpressionContext.js";
2
+ import { ObjectReferenceExpr } from "./ObjectReferenceExpr.js";
3
+ import { ObjectAccessor } from "../../context/ObjectAccessor.js";
4
+ import { Expr0 } from "../Expr0.js";
5
5
  export declare class ElemObjectReferenceExpr extends Expr0<ObjectAccessor> implements ObjectReferenceExpr {
6
6
  constructor();
7
7
  evaluate(ctx: IfcExpressionContext): ObjectAccessor;
@@ -1,7 +1,7 @@
1
- import { IfcExpressionContext } from "../../context/IfcExpressionContext";
2
- import { Expr1 } from "../Expr1";
3
- import { ObjectAccessor } from "../../context/ObjectAccessor";
4
- import { LiteralValueAnyArity } from "../../value/LiteralValueAnyArity";
1
+ import { IfcExpressionContext } from "../../context/IfcExpressionContext.js";
2
+ import { Expr1 } from "../Expr1.js";
3
+ import { ObjectAccessor } from "../../context/ObjectAccessor.js";
4
+ import { LiteralValueAnyArity } from "../../value/LiteralValueAnyArity.js";
5
5
  export declare class NestedObjectChainEndExpr extends Expr1<string, (oa: ObjectAccessor) => LiteralValueAnyArity> {
6
6
  constructor(value: string);
7
7
  evaluate(ctx: IfcExpressionContext): (oa: ObjectAccessor) => LiteralValueAnyArity;
@@ -1,8 +1,8 @@
1
- import { IfcExpressionContext } from "../../context/IfcExpressionContext";
2
- import { Expr2 } from "../Expr2";
3
- import { NestedObjectChainEndExpr } from "./NestedObjectChainEndExpr";
4
- import { ObjectAccessor } from "../../context/ObjectAccessor";
5
- import { LiteralValueAnyArity } from "../../value/LiteralValueAnyArity";
1
+ import { IfcExpressionContext } from "../../context/IfcExpressionContext.js";
2
+ import { Expr2 } from "../Expr2.js";
3
+ import { NestedObjectChainEndExpr } from "./NestedObjectChainEndExpr.js";
4
+ import { ObjectAccessor } from "../../context/ObjectAccessor.js";
5
+ import { LiteralValueAnyArity } from "../../value/LiteralValueAnyArity.js";
6
6
  export declare class NestedObjectChainExpr extends Expr2<string, NestedObjectChainExpr | NestedObjectChainEndExpr, (oa: ObjectAccessor) => LiteralValueAnyArity> {
7
7
  constructor(left: string, right: NestedObjectChainExpr);
8
8
  evaluate(ctx: IfcExpressionContext): (oa: ObjectAccessor) => LiteralValueAnyArity;
@@ -1,4 +1,4 @@
1
- import { Expr } from "../Expr";
2
- import { ObjectAccessor } from "../../context/ObjectAccessor";
1
+ import { Expr } from "../Expr.js";
2
+ import { ObjectAccessor } from "../../context/ObjectAccessor.js";
3
3
  export interface ObjectReferenceExpr extends Expr<ObjectAccessor> {
4
4
  }
@@ -1,7 +1,7 @@
1
- import { IfcExpressionContext } from "../../context/IfcExpressionContext";
2
- import { Expr0 } from "../Expr0";
3
- import { ObjectReferenceExpr } from "./ObjectReferenceExpr";
4
- import { ObjectAccessor } from "../../context/ObjectAccessor";
1
+ import { IfcExpressionContext } from "../../context/IfcExpressionContext.js";
2
+ import { Expr0 } from "../Expr0.js";
3
+ import { ObjectReferenceExpr } from "./ObjectReferenceExpr.js";
4
+ import { ObjectAccessor } from "../../context/ObjectAccessor.js";
5
5
  export declare class PropObjectReferenceExpr extends Expr0<ObjectAccessor> implements ObjectReferenceExpr {
6
6
  constructor();
7
7
  evaluate(ctx: IfcExpressionContext): ObjectAccessor;
@@ -1,7 +1,7 @@
1
- import { Expr2 } from "../Expr2";
2
- import { Expr } from "../Expr";
3
- import { IfcExpressionContext } from "../../context/IfcExpressionContext";
4
- import { StringValue } from "../../value/StringValue";
1
+ import { Expr2 } from "../Expr2.js";
2
+ import { Expr } from "../Expr.js";
3
+ import { IfcExpressionContext } from "../../context/IfcExpressionContext.js";
4
+ import { StringValue } from "../../value/StringValue.js";
5
5
  export declare class StringConcatExpr extends Expr2<Expr<StringValue>, Expr<StringValue>, StringValue> {
6
6
  constructor(left: Expr<StringValue>, right: Expr<StringValue>);
7
7
  evaluate(ctx: IfcExpressionContext): StringValue;
@@ -1,6 +1,6 @@
1
- import { Expr1 } from "../Expr1";
2
- import { IfcExpressionContext } from "../../context/IfcExpressionContext";
3
- import { StringValue } from "../../value/StringValue";
1
+ import { Expr1 } from "../Expr1.js";
2
+ import { IfcExpressionContext } from "../../context/IfcExpressionContext.js";
3
+ import { StringValue } from "../../value/StringValue.js";
4
4
  export declare class StringLiteralExpr extends Expr1<StringValue, StringValue> {
5
5
  constructor(value: StringValue);
6
6
  evaluate(ctx: IfcExpressionContext): StringValue;
@@ -1,21 +1,21 @@
1
- import IfcExpressionVisitor from "../generated/parser/IfcExpressionVisitor";
2
- import { NumericLiteralExpr } from "./expression/numeric/NumericLiteralExpr";
3
- import { notNullish } from "./utils";
1
+ import IfcExpressionVisitor from "./gen/parser/IfcExpressionVisitor.js";
2
+ import { NumericLiteralExpr } from "./expression/numeric/NumericLiteralExpr.js";
3
+ import { isPresent } from "./IfcExpressionUtils.js";
4
4
  import Decimal from "decimal.js";
5
- import { PlusExpr } from "./expression/numeric/PlusExpr";
6
- import { MinusExpr } from "./expression/numeric/MinusExpr";
7
- import { MultiplyExpr } from "./expression/numeric/MultiplyExpr";
8
- import { DivideExpr } from "./expression/numeric/DivideExpr";
9
- import { NumParenthesisExpr } from "./expression/numeric/NumParenthesisExpr";
10
- import { AttributeReferenceExpr } from "./expression/reference/AttributeReferenceExpr";
11
- import { PropObjectReferenceExpr } from "./expression/reference/PropObjectReferenceExpr";
12
- import { ElemObjectReferenceExpr } from "./expression/reference/ElemObjectReferenceExpr";
13
- import { NestedObjectChainExpr } from "./expression/reference/NestedObjectChainExpr";
14
- import { NestedObjectChainEndExpr } from "./expression/reference/NestedObjectChainEndExpr";
15
- import { NumericValue } from "./value/NumericValue";
16
- import { StringValue } from "./value/StringValue";
17
- import { StringLiteralExpr } from "./expression/string/StringLiteralExpr";
18
- import { StringConcatExpr } from "./expression/string/StringConcatExpr";
5
+ import { PlusExpr } from "./expression/numeric/PlusExpr.js";
6
+ import { MinusExpr } from "./expression/numeric/MinusExpr.js";
7
+ import { MultiplyExpr } from "./expression/numeric/MultiplyExpr.js";
8
+ import { DivideExpr } from "./expression/numeric/DivideExpr.js";
9
+ import { NumParenthesisExpr } from "./expression/numeric/NumParenthesisExpr.js";
10
+ import { AttributeReferenceExpr } from "./expression/reference/AttributeReferenceExpr.js";
11
+ import { PropObjectReferenceExpr } from "./expression/reference/PropObjectReferenceExpr.js";
12
+ import { ElemObjectReferenceExpr } from "./expression/reference/ElemObjectReferenceExpr.js";
13
+ import { NestedObjectChainExpr } from "./expression/reference/NestedObjectChainExpr.js";
14
+ import { NestedObjectChainEndExpr } from "./expression/reference/NestedObjectChainEndExpr.js";
15
+ import { NumericValue } from "./value/NumericValue.js";
16
+ import { StringValue } from "./value/StringValue.js";
17
+ import { StringLiteralExpr } from "./expression/string/StringLiteralExpr.js";
18
+ import { StringConcatExpr } from "./expression/string/StringConcatExpr.js";
19
19
  export class ExprVisitor extends IfcExpressionVisitor {
20
20
  constructor() {
21
21
  super();
@@ -28,10 +28,10 @@ export class ExprVisitor extends IfcExpressionVisitor {
28
28
  return new AttributeReferenceExpr(objectRefExpr, nestedObjectChainExpr);
29
29
  };
30
30
  this.visitObjectRef = (ctx) => {
31
- if (notNullish(ctx.PROP())) {
31
+ if (isPresent(ctx.PROP())) {
32
32
  return new PropObjectReferenceExpr();
33
33
  }
34
- else if (notNullish(ctx.ELEM())) {
34
+ else if (isPresent(ctx.ELEM())) {
35
35
  return new ElemObjectReferenceExpr();
36
36
  }
37
37
  this.failNode(ctx);
@@ -67,11 +67,11 @@ export class ExprVisitor extends IfcExpressionVisitor {
67
67
  };
68
68
  this.visitNumLiteral = (ctx) => {
69
69
  let val = ctx.INT();
70
- if (notNullish(val)) {
70
+ if (isPresent(val)) {
71
71
  return new NumericLiteralExpr(new NumericValue(new Decimal(val.symbol.text)));
72
72
  }
73
73
  val = ctx.FLOAT();
74
- if (notNullish(val)) {
74
+ if (isPresent(val)) {
75
75
  return new NumericLiteralExpr(new NumericValue(new Decimal(val.symbol.text)));
76
76
  }
77
77
  this.failNode(ctx);
@@ -1 +1 @@
1
- {"version":3,"sources":["ExprVisitor.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAkB7E,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,uBAAuB,EAAE,MAAM,gDAAgD,CAAC;AACzF,OAAO,EAAE,uBAAuB,EAAE,MAAM,gDAAgD,CAAC;AACzF,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAExE,MAAM,OAAO,WAAY,SAAQ,oBAA+B;IAC9D;QACE,KAAK,EAAE,CAAC;QAGV;;0DAEkD;QAElD,sBAAiB,GAA4C,CAAC,GAAG,EAAE,EAAE;YACnE,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;YAClD,MAAM,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC;YAClE,OAAO,IAAI,sBAAsB,CAC/B,aAAa,EACb,qBAA8C,CAC/C,CAAC;QACJ,CAAC,CAAC;QAEF,mBAAc,GAAyC,CAAC,GAAG,EAAE,EAAE;YAC7D,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE;gBAC1B,OAAO,IAAI,uBAAuB,EAAE,CAAC;aACtC;iBAAM,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE;gBACjC,OAAO,IAAI,uBAAuB,EAAE,CAAC;aACtC;YACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF,gCAA2B,GAEV,CAAC,GAAG,EAAE,EAAE;YACvB,IAAI,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAChD,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAChC,OAAO,IAAI,qBAAqB,CAC9B,IAAI,EACJ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAA0B,CAC7D,CAAC;QACJ,CAAC,CAAC;QAEF,8BAAyB,GAAoD,CAC3E,GAAG,EACH,EAAE;YACF,IAAI,IAAI,GAAG,GAAG,CAAC,uBAAuB,EAAE,CAAC,OAAO,EAAE,CAAC;YACnD,OAAO,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC,CAAC;QASF;;2DAEmD;QAEnD,uBAAkB,GAA6C,CAAC,GAAG,EAAE,EAAE;YACrE,MAAM,YAAY,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,CAAC;YACnD,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAChE,OAAO,IAAI,iBAAiB,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC;QAEF,4BAAuB,GAAkD,CACvE,GAAG,EACH,EAAE;YACF,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC;QAEF,sBAAiB,GAA4C,CAAC,GAAG,EAAE,EAAE;YACnE,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7E,CAAC,CAAC;QAEF;;2DAEmD;QAEnD,yBAAoB,GAA+C,CAAC,GAAG,EAAE,EAAE;YACzE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC;QAEF,oBAAe,GAA0C,CAAC,GAAG,EAAE,EAAE;YAC/D,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;YACpB,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE;gBACnB,OAAO,IAAI,kBAAkB,CAC3B,IAAI,YAAY,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAC/C,CAAC;aACH;YACD,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE;gBACnB,OAAO,IAAI,kBAAkB,CAC3B,IAAI,YAAY,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAC/C,CAAC;aACH;YACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF,mBAAc,GAAyC,CAAC,GAAG,EAAE,EAAE;YAC7D,QAAQ,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE;gBACpB,KAAK,GAAG;oBACN,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAC5B,CAAC;gBACJ,KAAK,GAAG;oBACN,OAAO,IAAI,SAAS,CAClB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAC5B,CAAC;gBACJ;oBACE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;aACtB;QACH,CAAC,CAAC;QAEF,mBAAc,GAAyC,CAAC,GAAG,EAAE,EAAE;YAC7D,QAAQ,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE;gBACpB,KAAK,GAAG;oBACN,OAAO,IAAI,YAAY,CACrB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAC5B,CAAC;gBACJ,KAAK,GAAG;oBACN,OAAO,IAAI,UAAU,CACnB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAC5B,CAAC;gBACJ;oBACE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;aACtB;QACH,CAAC,CAAC;QAEF,mBAAc,GAAyC,CAAC,GAAG,EAAE,EAAE;YAC7D,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC;QAEF,cAAS,GAAoC,CAAC,GAAG,EAAE,EAAE;YACnD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC;QAEF,gBAAW,GAAsC,CAAC,GAAG,EAAE,EAAE;YACvD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC;IAzIF,CAAC;IA0CO,aAAa,CAAC,IAAY;QAChC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACxB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SAC3C;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IA4FO,QAAQ,CAAC,GAAsB;QACrC,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC;CACF","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":["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 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 \"./gen/parser/IfcExpressionParser.js\";\nimport { Expr } from \"./expression/Expr.js\";\nimport { 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\";\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(val.symbol.text))\n );\n }\n val = ctx.FLOAT();\n if (isPresent(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,31 +1,31 @@
1
1
  import { CharStream, CommonTokenStream } from "antlr4";
2
- import { ExprVisitor } from "./ExprVisitor";
3
- import { IfcExpressionErrorListener } from "./IfcExpressionErrorListener";
4
- import { notNullish } from "./utils";
5
- import IfcExpressionParser from "../generated/parser/IfcExpressionParser";
6
- import IfcExpressionLexer from "../generated/parser/IfcExpressionLexer";
7
- import { IfcElementAccessor } from "./context/IfcElementAccessor";
8
- import { Value } from "./value/Value";
9
- import { StringValue } from "./value/StringValue";
10
- import { NumericValue } from "./value/NumericValue";
11
- import { BooleanValue } from "./value/BooleanValue";
12
- import { LogicalValue } from "./value/LogicalValue";
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 { IfcExpressionEvaluationException } from "./expression/IfcExpressionEvaluationException";
20
- import IfcExpressionVisitor from "../generated/parser/IfcExpressionVisitor";
21
- export { IfcElementAccessor, Value, StringValue, BooleanValue, LogicalValue, NumericValue, ReferenceValue, IfcPropertySetAccessor, IfcPropertyAccessor, IfcRootObjectAccessor, IfcTypeObjectAccessor, NamedObjectAccessor, IfcExpressionEvaluationException, IfcExpressionErrorListener, IfcExpressionVisitor, };
2
+ import { ExprVisitor } from "./ExprVisitor.js";
3
+ import { IfcExpressionErrorListener } from "./IfcExpressionErrorListener.js";
4
+ import { isPresent, isNullish } from "./IfcExpressionUtils.js";
5
+ import { IfcElementAccessor } from "./context/IfcElementAccessor.js";
6
+ import { Value } from "./value/Value.js";
7
+ import { StringValue } from "./value/StringValue.js";
8
+ import { NumericValue } from "./value/NumericValue.js";
9
+ import { BooleanValue } from "./value/BooleanValue.js";
10
+ import { LogicalValue } from "./value/LogicalValue.js";
11
+ import { ReferenceValue } from "./value/ReferenceValue.js";
12
+ import { IfcPropertySetAccessor } from "./context/IfcPropertySetAccessor.js";
13
+ import { IfcPropertyAccessor } from "./context/IfcPropertyAccessor.js";
14
+ import { IfcRootObjectAccessor } from "./context/IfcRootObjectAccessor.js";
15
+ import { IfcTypeObjectAccessor } from "./context/IfcTypeObjectAccessor.js";
16
+ import { NamedObjectAccessor } from "./context/NamedObjectAccessor.js";
17
+ import IfcExpressionParser from "./gen/parser/IfcExpressionParser.js";
18
+ import IfcExpressionVisitor from "./gen/parser/IfcExpressionVisitor.js";
19
+ import IfcExpressionLexer from "./gen/parser/IfcExpressionLexer.js";
20
+ import { IfcExpressionEvaluationException } from "./expression/IfcExpressionEvaluationException.js";
21
+ export { IfcElementAccessor, Value, StringValue, BooleanValue, LogicalValue, NumericValue, ReferenceValue, IfcPropertySetAccessor, IfcPropertyAccessor, IfcRootObjectAccessor, IfcTypeObjectAccessor, NamedObjectAccessor, ExprVisitor, IfcExpressionEvaluationException, IfcExpressionErrorListener, IfcExpressionVisitor, isPresent, isNullish, };
22
22
  export class IfcExpression {
23
23
  static parse(input, errorListener) {
24
24
  const chars = new CharStream(input); // replace this with a FileStream as required
25
25
  const lexer = new IfcExpressionLexer(chars);
26
26
  const tokens = new CommonTokenStream(lexer);
27
27
  const parser = new IfcExpressionParser(tokens);
28
- if (notNullish(errorListener)) {
28
+ if (isPresent(errorListener)) {
29
29
  parser.removeErrorListeners();
30
30
  parser.addErrorListener(errorListener);
31
31
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["IfcExpression.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAwB,MAAM,QAAQ,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGrC,OAAO,mBAEN,MAAM,yCAAyC,CAAC;AACjD,OAAO,kBAAkB,MAAM,wCAAwC,CAAC;AAExE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,OAAO,EAAE,gCAAgC,EAAE,MAAM,+CAA+C,CAAC;AACjG,OAAO,oBAAoB,MAAM,0CAA0C,CAAC;AAG5E,OAAO,EACL,kBAAkB,EAElB,KAAK,EACL,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,YAAY,EAEZ,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EAGnB,gCAAgC,EAChC,0BAA0B,EAC1B,oBAAoB,GACrB,CAAC;AAIF,MAAM,OAAO,aAAa;IACjB,MAAM,CAAC,KAAK,CACjB,KAAa,EACb,aAAoC;QAEpC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,6CAA6C;QAClF,MAAM,KAAK,GAAG,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,UAAU,CAAC,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,0BAA0B,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,WAAW,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF","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":["IfcExpression.ts"],"names":[],"mappings":"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","file":"IfcExpression.js","sourcesContent":["import { CharStream, CommonTokenStream, ErrorListener, Token } from \"antlr4\";\nimport { ExprVisitor } from \"./ExprVisitor.js\";\nimport { IfcExpressionErrorListener } from \"./IfcExpressionErrorListener.js\";\nimport { isPresent, isNullish } 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 { ExprContext } from \"./gen/parser/IfcExpressionParser.js\";\nimport IfcExpressionParser 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\";\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 ): 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"]}