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.
- package/dist/ExprVisitor.d.ts +3 -3
- package/dist/IfcExpression.d.ts +25 -23
- package/dist/IfcExpressionErrorListener.d.ts +1 -1
- package/dist/IfcExpressionUtils.d.ts +2 -0
- package/dist/cjs/ExprVisitor.js +36 -36
- package/dist/cjs/ExprVisitor.js.map +1 -1
- package/dist/cjs/IfcExpression.js +43 -40
- package/dist/cjs/IfcExpression.js.map +1 -1
- package/dist/cjs/IfcExpressionErrorListener.js +4 -4
- package/dist/cjs/IfcExpressionErrorListener.js.map +1 -1
- package/dist/cjs/IfcExpressionUtils.js +12 -0
- package/dist/cjs/IfcExpressionUtils.js.map +1 -0
- package/dist/cjs/SyntaxErrorException.js +2 -2
- package/dist/cjs/SyntaxErrorException.js.map +1 -1
- package/dist/cjs/context/IfcElementAccessor.js +6 -6
- package/dist/cjs/context/IfcElementAccessor.js.map +1 -1
- package/dist/cjs/context/IfcExpressionContext.js.map +1 -1
- package/dist/cjs/context/IfcPropertyAccessor.js +2 -2
- package/dist/cjs/context/IfcPropertyAccessor.js.map +1 -1
- package/dist/cjs/context/IfcPropertySetAccessor.js +2 -2
- package/dist/cjs/context/IfcPropertySetAccessor.js.map +1 -1
- package/dist/cjs/context/IfcRootObjectAccessor.js +4 -4
- package/dist/cjs/context/IfcRootObjectAccessor.js.map +1 -1
- package/dist/cjs/context/IfcTypeObjectAccessor.js +4 -4
- package/dist/cjs/context/IfcTypeObjectAccessor.js.map +1 -1
- package/dist/cjs/context/NamedObjectAccessor.js +3 -3
- package/dist/cjs/context/NamedObjectAccessor.js.map +1 -1
- package/dist/cjs/context/ObjectAccessor.js.map +1 -1
- package/dist/cjs/expression/ArrayExpr.js.map +1 -1
- package/dist/cjs/expression/Expr.js.map +1 -1
- package/dist/cjs/expression/Expr0.js.map +1 -1
- package/dist/cjs/expression/Expr1.js.map +1 -1
- package/dist/cjs/expression/Expr2.js.map +1 -1
- package/dist/cjs/expression/IfcExpressionEvaluationException.js.map +1 -1
- package/dist/cjs/expression/numeric/DivideExpr.js +4 -4
- package/dist/cjs/expression/numeric/DivideExpr.js.map +1 -1
- package/dist/cjs/expression/numeric/MinusExpr.js +4 -4
- package/dist/cjs/expression/numeric/MinusExpr.js.map +1 -1
- package/dist/cjs/expression/numeric/MultiplyByExpr.js +4 -4
- package/dist/cjs/expression/numeric/MultiplyByExpr.js.map +1 -1
- package/dist/cjs/expression/numeric/MultiplyExpr.js +4 -4
- package/dist/cjs/expression/numeric/MultiplyExpr.js.map +1 -1
- package/dist/cjs/expression/numeric/NumParenthesisExpr.js +2 -2
- package/dist/cjs/expression/numeric/NumParenthesisExpr.js.map +1 -1
- package/dist/cjs/expression/numeric/NumericLiteralExpr.js +2 -2
- package/dist/cjs/expression/numeric/NumericLiteralExpr.js.map +1 -1
- package/dist/cjs/expression/numeric/PlusExpr.js +4 -4
- package/dist/cjs/expression/numeric/PlusExpr.js.map +1 -1
- package/dist/cjs/expression/reference/AttributeReferenceExpr.js +2 -2
- package/dist/cjs/expression/reference/AttributeReferenceExpr.js.map +1 -1
- package/dist/cjs/expression/reference/ElemObjectReferenceExpr.js +2 -2
- package/dist/cjs/expression/reference/ElemObjectReferenceExpr.js.map +1 -1
- package/dist/cjs/expression/reference/NestedObjectChainEndExpr.js +2 -2
- package/dist/cjs/expression/reference/NestedObjectChainEndExpr.js.map +1 -1
- package/dist/cjs/expression/reference/NestedObjectChainExpr.js +2 -2
- package/dist/cjs/expression/reference/NestedObjectChainExpr.js.map +1 -1
- package/dist/cjs/expression/reference/ObjectReferenceExpr.js.map +1 -1
- package/dist/cjs/expression/reference/PropObjectReferenceExpr.js +2 -2
- package/dist/cjs/expression/reference/PropObjectReferenceExpr.js.map +1 -1
- package/dist/cjs/expression/string/StringConcatExpr.js +4 -4
- package/dist/cjs/expression/string/StringConcatExpr.js.map +1 -1
- package/dist/cjs/expression/string/StringLiteralExpr.js +2 -2
- package/dist/cjs/expression/string/StringLiteralExpr.js.map +1 -1
- package/dist/cjs/gen/parser/IfcExpressionLexer.js.map +1 -0
- package/dist/cjs/gen/parser/IfcExpressionListener.js.map +1 -0
- package/dist/{mjs → cjs/gen}/parser/IfcExpressionParser.js.map +1 -1
- package/dist/cjs/gen/parser/IfcExpressionVisitor.js.map +1 -0
- package/dist/cjs/value/BooleanValue.js +2 -2
- package/dist/cjs/value/BooleanValue.js.map +1 -1
- package/dist/cjs/value/LiteralValue.js.map +1 -1
- package/dist/cjs/value/LiteralValueAnyArity.js.map +1 -1
- package/dist/cjs/value/LogicalValue.js +2 -2
- package/dist/cjs/value/LogicalValue.js.map +1 -1
- package/dist/cjs/value/NumericValue.js +2 -2
- package/dist/cjs/value/NumericValue.js.map +1 -1
- package/dist/cjs/value/PrimitiveValueType.js.map +1 -1
- package/dist/cjs/value/ReferenceValue.js +2 -2
- package/dist/cjs/value/ReferenceValue.js.map +1 -1
- package/dist/cjs/value/StringValue.js +2 -2
- package/dist/cjs/value/StringValue.js.map +1 -1
- package/dist/cjs/value/Value.js.map +1 -1
- package/dist/context/IfcElementAccessor.d.ts +6 -6
- package/dist/context/IfcExpressionContext.d.ts +2 -2
- package/dist/context/IfcPropertyAccessor.d.ts +4 -4
- package/dist/context/IfcPropertySetAccessor.d.ts +4 -4
- package/dist/context/IfcRootObjectAccessor.d.ts +2 -2
- package/dist/context/IfcTypeObjectAccessor.d.ts +4 -4
- package/dist/context/NamedObjectAccessor.d.ts +2 -2
- package/dist/context/ObjectAccessor.d.ts +1 -1
- package/dist/expression/Expr.d.ts +1 -1
- package/dist/expression/Expr0.d.ts +2 -2
- package/dist/expression/Expr1.d.ts +2 -2
- package/dist/expression/Expr2.d.ts +2 -2
- package/dist/expression/numeric/DivideExpr.d.ts +4 -4
- package/dist/expression/numeric/MinusExpr.d.ts +4 -4
- package/dist/expression/numeric/MultiplyByExpr.d.ts +4 -4
- package/dist/expression/numeric/MultiplyExpr.d.ts +4 -4
- package/dist/expression/numeric/NumParenthesisExpr.d.ts +4 -4
- package/dist/expression/numeric/NumericLiteralExpr.d.ts +3 -3
- package/dist/expression/numeric/PlusExpr.d.ts +4 -4
- package/dist/expression/reference/AttributeReferenceExpr.d.ts +5 -5
- package/dist/expression/reference/ElemObjectReferenceExpr.d.ts +4 -4
- package/dist/expression/reference/NestedObjectChainEndExpr.d.ts +4 -4
- package/dist/expression/reference/NestedObjectChainExpr.d.ts +5 -5
- package/dist/expression/reference/ObjectReferenceExpr.d.ts +2 -2
- package/dist/expression/reference/PropObjectReferenceExpr.d.ts +4 -4
- package/dist/expression/string/StringConcatExpr.d.ts +4 -4
- package/dist/expression/string/StringLiteralExpr.d.ts +3 -3
- package/dist/mjs/ExprVisitor.js +21 -21
- package/dist/mjs/ExprVisitor.js.map +1 -1
- package/dist/mjs/IfcExpression.js +21 -21
- package/dist/mjs/IfcExpression.js.map +1 -1
- package/dist/mjs/IfcExpressionErrorListener.js +3 -3
- package/dist/mjs/IfcExpressionErrorListener.js.map +1 -1
- package/dist/mjs/IfcExpressionUtils.js +7 -0
- package/dist/mjs/IfcExpressionUtils.js.map +1 -0
- package/dist/mjs/SyntaxErrorException.js +2 -2
- package/dist/mjs/SyntaxErrorException.js.map +1 -1
- package/dist/mjs/context/IfcElementAccessor.js +4 -4
- package/dist/mjs/context/IfcElementAccessor.js.map +1 -1
- package/dist/mjs/context/IfcExpressionContext.js.map +1 -1
- package/dist/mjs/context/IfcPropertyAccessor.js +1 -1
- package/dist/mjs/context/IfcPropertyAccessor.js.map +1 -1
- package/dist/mjs/context/IfcPropertySetAccessor.js +1 -1
- package/dist/mjs/context/IfcPropertySetAccessor.js.map +1 -1
- package/dist/mjs/context/IfcRootObjectAccessor.js +2 -2
- package/dist/mjs/context/IfcRootObjectAccessor.js.map +1 -1
- package/dist/mjs/context/IfcTypeObjectAccessor.js +3 -3
- package/dist/mjs/context/IfcTypeObjectAccessor.js.map +1 -1
- package/dist/mjs/context/NamedObjectAccessor.js +1 -1
- package/dist/mjs/context/NamedObjectAccessor.js.map +1 -1
- package/dist/mjs/context/ObjectAccessor.js.map +1 -1
- package/dist/mjs/expression/Expr.js.map +1 -1
- package/dist/mjs/expression/Expr0.js.map +1 -1
- package/dist/mjs/expression/Expr1.js.map +1 -1
- package/dist/mjs/expression/Expr2.js.map +1 -1
- package/dist/mjs/expression/numeric/DivideExpr.js +2 -2
- package/dist/mjs/expression/numeric/DivideExpr.js.map +1 -1
- package/dist/mjs/expression/numeric/MinusExpr.js +2 -2
- package/dist/mjs/expression/numeric/MinusExpr.js.map +1 -1
- package/dist/mjs/expression/numeric/MultiplyByExpr.js +2 -2
- package/dist/mjs/expression/numeric/MultiplyByExpr.js.map +1 -1
- package/dist/mjs/expression/numeric/MultiplyExpr.js +2 -2
- package/dist/mjs/expression/numeric/MultiplyExpr.js.map +1 -1
- package/dist/mjs/expression/numeric/NumParenthesisExpr.js +1 -1
- package/dist/mjs/expression/numeric/NumParenthesisExpr.js.map +1 -1
- package/dist/mjs/expression/numeric/NumericLiteralExpr.js +1 -1
- package/dist/mjs/expression/numeric/NumericLiteralExpr.js.map +1 -1
- package/dist/mjs/expression/numeric/PlusExpr.js +2 -2
- package/dist/mjs/expression/numeric/PlusExpr.js.map +1 -1
- package/dist/mjs/expression/reference/AttributeReferenceExpr.js +1 -1
- package/dist/mjs/expression/reference/AttributeReferenceExpr.js.map +1 -1
- package/dist/mjs/expression/reference/ElemObjectReferenceExpr.js +1 -1
- package/dist/mjs/expression/reference/ElemObjectReferenceExpr.js.map +1 -1
- package/dist/mjs/expression/reference/NestedObjectChainEndExpr.js +1 -1
- package/dist/mjs/expression/reference/NestedObjectChainEndExpr.js.map +1 -1
- package/dist/mjs/expression/reference/NestedObjectChainExpr.js +1 -1
- package/dist/mjs/expression/reference/NestedObjectChainExpr.js.map +1 -1
- package/dist/mjs/expression/reference/ObjectReferenceExpr.js.map +1 -1
- package/dist/mjs/expression/reference/PropObjectReferenceExpr.js +1 -1
- package/dist/mjs/expression/reference/PropObjectReferenceExpr.js.map +1 -1
- package/dist/mjs/expression/string/StringConcatExpr.js +2 -2
- package/dist/mjs/expression/string/StringConcatExpr.js.map +1 -1
- package/dist/mjs/expression/string/StringLiteralExpr.js +1 -1
- package/dist/mjs/expression/string/StringLiteralExpr.js.map +1 -1
- package/dist/mjs/gen/parser/IfcExpressionLexer.js.map +1 -0
- package/dist/mjs/gen/parser/IfcExpressionListener.js.map +1 -0
- package/dist/mjs/gen/parser/IfcExpressionParser.js.map +1 -0
- package/dist/mjs/gen/parser/IfcExpressionVisitor.js.map +1 -0
- package/dist/mjs/value/BooleanValue.js +1 -1
- package/dist/mjs/value/BooleanValue.js.map +1 -1
- package/dist/mjs/value/LiteralValue.js.map +1 -1
- package/dist/mjs/value/LiteralValueAnyArity.js.map +1 -1
- package/dist/mjs/value/LogicalValue.js +1 -1
- package/dist/mjs/value/LogicalValue.js.map +1 -1
- package/dist/mjs/value/NumericValue.js +1 -1
- package/dist/mjs/value/NumericValue.js.map +1 -1
- package/dist/mjs/value/ReferenceValue.js +1 -1
- package/dist/mjs/value/ReferenceValue.js.map +1 -1
- package/dist/mjs/value/StringValue.js +1 -1
- package/dist/mjs/value/StringValue.js.map +1 -1
- package/dist/mjs/value/Value.js.map +1 -1
- package/dist/value/BooleanValue.d.ts +1 -1
- package/dist/value/LiteralValue.d.ts +5 -5
- package/dist/value/LiteralValueAnyArity.d.ts +1 -1
- package/dist/value/LogicalValue.d.ts +1 -1
- package/dist/value/NumericValue.d.ts +1 -1
- package/dist/value/ReferenceValue.d.ts +1 -1
- package/dist/value/StringValue.d.ts +1 -1
- package/dist/value/Value.d.ts +1 -1
- package/package.json +4 -3
- package/dist/cjs/parser/IfcExpressionLexer.js.map +0 -1
- package/dist/cjs/parser/IfcExpressionListener.js.map +0 -1
- package/dist/cjs/parser/IfcExpressionParser.js.map +0 -1
- package/dist/cjs/parser/IfcExpressionVisitor.js.map +0 -1
- package/dist/cjs/utils.js +0 -12
- package/dist/cjs/utils.js.map +0 -1
- package/dist/mjs/parser/IfcExpressionLexer.js.map +0 -1
- package/dist/mjs/parser/IfcExpressionListener.js.map +0 -1
- package/dist/mjs/parser/IfcExpressionVisitor.js.map +0 -1
- package/dist/mjs/utils.js +0 -7
- package/dist/mjs/utils.js.map +0 -1
- package/dist/utils.d.ts +0 -2
- /package/dist/cjs/{parser → gen/parser}/IfcExpressionLexer.js +0 -0
- /package/dist/cjs/{parser → gen/parser}/IfcExpressionListener.js +0 -0
- /package/dist/cjs/{parser → gen/parser}/IfcExpressionParser.js +0 -0
- /package/dist/cjs/{parser → gen/parser}/IfcExpressionVisitor.js +0 -0
- /package/dist/{parser → gen/parser}/IfcExpressionLexer.d.ts +0 -0
- /package/dist/{parser → gen/parser}/IfcExpressionListener.d.ts +0 -0
- /package/dist/{parser → gen/parser}/IfcExpressionParser.d.ts +0 -0
- /package/dist/{parser → gen/parser}/IfcExpressionVisitor.d.ts +0 -0
- /package/dist/mjs/{parser → gen/parser}/IfcExpressionLexer.js +0 -0
- /package/dist/mjs/{parser → gen/parser}/IfcExpressionListener.js +0 -0
- /package/dist/mjs/{parser → gen/parser}/IfcExpressionParser.js +0 -0
- /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
|
|
5
|
-
class ReferenceValue extends
|
|
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":["
|
|
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
|
|
5
|
-
class StringValue extends
|
|
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":["
|
|
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":["
|
|
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,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;
|
package/dist/mjs/ExprVisitor.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import IfcExpressionVisitor from "
|
|
2
|
-
import { NumericLiteralExpr } from "./expression/numeric/NumericLiteralExpr";
|
|
3
|
-
import {
|
|
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 (
|
|
31
|
+
if (isPresent(ctx.PROP())) {
|
|
32
32
|
return new PropObjectReferenceExpr();
|
|
33
33
|
}
|
|
34
|
-
else if (
|
|
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 (
|
|
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 (
|
|
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 {
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
import
|
|
20
|
-
import
|
|
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 (
|
|
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,
|
|
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"]}
|