ifc-expressions 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/ExprVisitor.js +126 -0
- package/dist/cjs/ExprVisitor.js.map +1 -0
- package/dist/cjs/IfcExpression.js.map +1 -0
- package/dist/cjs/IfcExpressionErrorListener.js +23 -0
- package/dist/cjs/IfcExpressionErrorListener.js.map +1 -0
- package/dist/cjs/SyntaxErrorException.js +24 -0
- package/dist/cjs/SyntaxErrorException.js.map +1 -0
- package/dist/cjs/context/IfcElementAccessor.js +34 -0
- package/dist/cjs/context/IfcElementAccessor.js.map +1 -0
- package/dist/cjs/context/IfcExpressionContext.js +3 -0
- package/dist/cjs/context/IfcExpressionContext.js.map +1 -0
- package/dist/cjs/context/IfcPropertyAccessor.js +28 -0
- package/dist/cjs/context/IfcPropertyAccessor.js.map +1 -0
- package/dist/cjs/context/IfcPropertySetAccessor.js +17 -0
- package/dist/cjs/context/IfcPropertySetAccessor.js.map +1 -0
- package/dist/cjs/context/IfcRootObjectAccessor.js +19 -0
- package/dist/cjs/context/IfcRootObjectAccessor.js.map +1 -0
- package/dist/cjs/context/IfcTypeObjectAccessor.js +22 -0
- package/dist/cjs/context/IfcTypeObjectAccessor.js.map +1 -0
- package/dist/cjs/context/NamedObjectAccessor.js +26 -0
- package/dist/cjs/context/NamedObjectAccessor.js.map +1 -0
- package/dist/cjs/context/ObjectAccessor.js +3 -0
- package/dist/cjs/context/ObjectAccessor.js.map +1 -0
- package/dist/cjs/expression/ArrayExpr.js +3 -0
- package/dist/cjs/expression/ArrayExpr.js.map +1 -0
- package/dist/cjs/expression/Expr.js +3 -0
- package/dist/cjs/expression/Expr.js.map +1 -0
- package/dist/cjs/expression/Expr0.js +8 -0
- package/dist/cjs/expression/Expr0.js.map +1 -0
- package/dist/cjs/expression/Expr1.js +10 -0
- package/dist/cjs/expression/Expr1.js.map +1 -0
- package/dist/cjs/expression/Expr2.js +11 -0
- package/dist/cjs/expression/Expr2.js.map +1 -0
- package/dist/cjs/expression/IfcExpressionEvaluationException.js +10 -0
- package/dist/cjs/expression/IfcExpressionEvaluationException.js.map +1 -0
- package/dist/cjs/expression/numeric/DivideExpr.js +18 -0
- package/dist/cjs/expression/numeric/DivideExpr.js.map +1 -0
- package/dist/cjs/expression/numeric/MinusExpr.js +18 -0
- package/dist/cjs/expression/numeric/MinusExpr.js.map +1 -0
- package/dist/cjs/expression/numeric/MultiplyByExpr.js +18 -0
- package/dist/cjs/expression/numeric/MultiplyByExpr.js.map +1 -0
- package/dist/cjs/expression/numeric/MultiplyExpr.js +18 -0
- package/dist/cjs/expression/numeric/MultiplyExpr.js.map +1 -0
- package/dist/cjs/expression/numeric/NumParenthesisExpr.js +14 -0
- package/dist/cjs/expression/numeric/NumParenthesisExpr.js.map +1 -0
- package/dist/cjs/expression/numeric/NumericLiteralExpr.js +14 -0
- package/dist/cjs/expression/numeric/NumericLiteralExpr.js.map +1 -0
- package/dist/cjs/expression/numeric/PlusExpr.js +18 -0
- package/dist/cjs/expression/numeric/PlusExpr.js.map +1 -0
- package/dist/cjs/expression/reference/AttributeReferenceExpr.js +16 -0
- package/dist/cjs/expression/reference/AttributeReferenceExpr.js.map +1 -0
- package/dist/cjs/expression/reference/ElemObjectReferenceExpr.js +14 -0
- package/dist/cjs/expression/reference/ElemObjectReferenceExpr.js.map +1 -0
- package/dist/cjs/expression/reference/NestedObjectChainEndExpr.js +14 -0
- package/dist/cjs/expression/reference/NestedObjectChainEndExpr.js.map +1 -0
- package/dist/cjs/expression/reference/NestedObjectChainExpr.js +15 -0
- package/dist/cjs/expression/reference/NestedObjectChainExpr.js.map +1 -0
- package/dist/cjs/expression/reference/ObjectReferenceExpr.js +3 -0
- package/dist/cjs/expression/reference/ObjectReferenceExpr.js.map +1 -0
- package/dist/cjs/expression/reference/PropObjectReferenceExpr.js +14 -0
- package/dist/cjs/expression/reference/PropObjectReferenceExpr.js.map +1 -0
- package/dist/cjs/expression/string/StringConcatExpr.js +15 -0
- package/dist/cjs/expression/string/StringConcatExpr.js.map +1 -0
- package/dist/cjs/expression/string/StringLiteralExpr.js +14 -0
- package/dist/cjs/expression/string/StringLiteralExpr.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/parser/IfcExpressionLexer.js +140 -0
- package/dist/cjs/parser/IfcExpressionLexer.js.map +1 -0
- package/dist/cjs/parser/IfcExpressionListener.js +12 -0
- package/dist/cjs/parser/IfcExpressionListener.js.map +1 -0
- package/dist/cjs/parser/IfcExpressionParser.js +1514 -0
- package/dist/cjs/parser/IfcExpressionParser.js.map +1 -0
- package/dist/cjs/parser/IfcExpressionVisitor.js +15 -0
- package/dist/cjs/parser/IfcExpressionVisitor.js.map +1 -0
- package/dist/cjs/utils.js +12 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/cjs/value/BooleanValue.js +14 -0
- package/dist/cjs/value/BooleanValue.js.map +1 -0
- package/dist/cjs/value/LiteralValue.js +3 -0
- package/dist/cjs/value/LiteralValue.js.map +1 -0
- package/dist/cjs/value/LiteralValueAnyArity.js +3 -0
- package/dist/cjs/value/LiteralValueAnyArity.js.map +1 -0
- package/dist/cjs/value/LogicalValue.js +14 -0
- package/dist/cjs/value/LogicalValue.js.map +1 -0
- package/dist/cjs/value/NumericValue.js +18 -0
- package/dist/cjs/value/NumericValue.js.map +1 -0
- package/dist/cjs/value/PrimitiveValueType.js +3 -0
- package/dist/cjs/value/PrimitiveValueType.js.map +1 -0
- package/dist/cjs/value/ReferenceValue.js +14 -0
- package/dist/cjs/value/ReferenceValue.js.map +1 -0
- package/dist/cjs/value/StringValue.js +14 -0
- package/dist/cjs/value/StringValue.js.map +1 -0
- package/dist/cjs/value/Value.js +13 -0
- package/dist/cjs/value/Value.js.map +1 -0
- package/dist/context/IfcElementAccessor.d.ts +18 -0
- package/dist/context/IfcExpressionContext.d.ts +6 -0
- package/dist/context/IfcPropertyAccessor.d.ts +12 -0
- package/dist/context/IfcPropertySetAccessor.d.ts +11 -0
- package/dist/context/IfcRootObjectAccessor.d.ts +7 -0
- package/dist/context/IfcTypeObjectAccessor.d.ts +13 -0
- package/dist/context/NamedObjectAccessor.d.ts +10 -0
- package/dist/context/ObjectAccessor.d.ts +16 -0
- package/dist/expression/ArrayExpr.d.ts +3 -0
- package/dist/expression/Expr.d.ts +4 -0
- package/dist/expression/Expr0.d.ts +6 -0
- package/dist/expression/Expr1.d.ts +7 -0
- package/dist/expression/Expr2.d.ts +8 -0
- package/dist/expression/IfcExpressionEvaluationException.d.ts +3 -0
- package/dist/expression/numeric/DivideExpr.d.ts +8 -0
- package/dist/expression/numeric/MinusExpr.d.ts +8 -0
- package/dist/expression/numeric/MultiplyByExpr.d.ts +8 -0
- package/dist/expression/numeric/MultiplyExpr.d.ts +8 -0
- package/dist/expression/numeric/NumParenthesisExpr.d.ts +8 -0
- package/dist/expression/numeric/NumericLiteralExpr.d.ts +7 -0
- package/dist/expression/numeric/PlusExpr.d.ts +8 -0
- package/dist/expression/reference/AttributeReferenceExpr.d.ts +9 -0
- package/dist/expression/reference/ElemObjectReferenceExpr.d.ts +8 -0
- package/dist/expression/reference/NestedObjectChainEndExpr.d.ts +8 -0
- package/dist/expression/reference/NestedObjectChainExpr.d.ts +9 -0
- package/dist/expression/reference/ObjectReferenceExpr.d.ts +4 -0
- package/dist/expression/reference/PropObjectReferenceExpr.d.ts +8 -0
- package/dist/expression/string/StringConcatExpr.d.ts +8 -0
- package/dist/expression/string/StringLiteralExpr.d.ts +7 -0
- package/dist/mjs/ExprVisitor.js +119 -0
- package/dist/mjs/ExprVisitor.js.map +1 -0
- package/dist/mjs/IfcExpression.js +48 -0
- package/dist/mjs/IfcExpression.js.map +1 -0
- package/dist/mjs/IfcExpressionErrorListener.js +19 -0
- package/dist/mjs/IfcExpressionErrorListener.js.map +1 -0
- package/dist/mjs/SyntaxErrorException.js +20 -0
- package/dist/mjs/SyntaxErrorException.js.map +1 -0
- package/dist/mjs/context/IfcElementAccessor.js +30 -0
- package/dist/mjs/context/IfcElementAccessor.js.map +1 -0
- package/dist/mjs/context/IfcExpressionContext.js +2 -0
- package/dist/mjs/context/IfcExpressionContext.js.map +1 -0
- package/dist/mjs/context/IfcPropertyAccessor.js +24 -0
- package/dist/mjs/context/IfcPropertyAccessor.js.map +1 -0
- package/dist/mjs/context/IfcPropertySetAccessor.js +13 -0
- package/dist/mjs/context/IfcPropertySetAccessor.js.map +1 -0
- package/dist/mjs/context/IfcRootObjectAccessor.js +15 -0
- package/dist/mjs/context/IfcRootObjectAccessor.js.map +1 -0
- package/dist/mjs/context/IfcTypeObjectAccessor.js +18 -0
- package/dist/mjs/context/IfcTypeObjectAccessor.js.map +1 -0
- package/dist/mjs/context/NamedObjectAccessor.js +22 -0
- package/dist/mjs/context/NamedObjectAccessor.js.map +1 -0
- package/dist/mjs/context/ObjectAccessor.js +2 -0
- package/dist/mjs/context/ObjectAccessor.js.map +1 -0
- package/dist/mjs/expression/ArrayExpr.js +2 -0
- package/dist/mjs/expression/ArrayExpr.js.map +1 -0
- package/dist/mjs/expression/Expr.js +2 -0
- package/dist/mjs/expression/Expr.js.map +1 -0
- package/dist/mjs/expression/Expr0.js +4 -0
- package/dist/mjs/expression/Expr0.js.map +1 -0
- package/dist/mjs/expression/Expr1.js +6 -0
- package/dist/mjs/expression/Expr1.js.map +1 -0
- package/dist/mjs/expression/Expr2.js +7 -0
- package/dist/mjs/expression/Expr2.js.map +1 -0
- package/dist/mjs/expression/IfcExpressionEvaluationException.js +6 -0
- package/dist/mjs/expression/IfcExpressionEvaluationException.js.map +1 -0
- package/dist/mjs/expression/numeric/DivideExpr.js +14 -0
- package/dist/mjs/expression/numeric/DivideExpr.js.map +1 -0
- package/dist/mjs/expression/numeric/MinusExpr.js +14 -0
- package/dist/mjs/expression/numeric/MinusExpr.js.map +1 -0
- package/dist/mjs/expression/numeric/MultiplyByExpr.js +14 -0
- package/dist/mjs/expression/numeric/MultiplyByExpr.js.map +1 -0
- package/dist/mjs/expression/numeric/MultiplyExpr.js +14 -0
- package/dist/mjs/expression/numeric/MultiplyExpr.js.map +1 -0
- package/dist/mjs/expression/numeric/NumParenthesisExpr.js +10 -0
- package/dist/mjs/expression/numeric/NumParenthesisExpr.js.map +1 -0
- package/dist/mjs/expression/numeric/NumericLiteralExpr.js +10 -0
- package/dist/mjs/expression/numeric/NumericLiteralExpr.js.map +1 -0
- package/dist/mjs/expression/numeric/PlusExpr.js +14 -0
- package/dist/mjs/expression/numeric/PlusExpr.js.map +1 -0
- package/dist/mjs/expression/reference/AttributeReferenceExpr.js +12 -0
- package/dist/mjs/expression/reference/AttributeReferenceExpr.js.map +1 -0
- package/dist/mjs/expression/reference/ElemObjectReferenceExpr.js +10 -0
- package/dist/mjs/expression/reference/ElemObjectReferenceExpr.js.map +1 -0
- package/dist/mjs/expression/reference/NestedObjectChainEndExpr.js +10 -0
- package/dist/mjs/expression/reference/NestedObjectChainEndExpr.js.map +1 -0
- package/dist/mjs/expression/reference/NestedObjectChainExpr.js +11 -0
- package/dist/mjs/expression/reference/NestedObjectChainExpr.js.map +1 -0
- package/dist/mjs/expression/reference/ObjectReferenceExpr.js +2 -0
- package/dist/mjs/expression/reference/ObjectReferenceExpr.js.map +1 -0
- package/dist/mjs/expression/reference/PropObjectReferenceExpr.js +10 -0
- package/dist/mjs/expression/reference/PropObjectReferenceExpr.js.map +1 -0
- package/dist/mjs/expression/string/StringConcatExpr.js +11 -0
- package/dist/mjs/expression/string/StringConcatExpr.js.map +1 -0
- package/dist/mjs/expression/string/StringLiteralExpr.js +10 -0
- package/dist/mjs/expression/string/StringLiteralExpr.js.map +1 -0
- package/dist/mjs/package.json +1 -0
- package/dist/mjs/parser/IfcExpressionLexer.js +138 -0
- package/dist/mjs/parser/IfcExpressionLexer.js.map +1 -0
- package/dist/mjs/parser/IfcExpressionListener.js +9 -0
- package/dist/mjs/parser/IfcExpressionListener.js.map +1 -0
- package/dist/mjs/parser/IfcExpressionParser.js +1487 -0
- package/dist/mjs/parser/IfcExpressionParser.js.map +1 -0
- package/dist/mjs/parser/IfcExpressionVisitor.js +12 -0
- package/dist/mjs/parser/IfcExpressionVisitor.js.map +1 -0
- package/dist/mjs/utils.js +7 -0
- package/dist/mjs/utils.js.map +1 -0
- package/dist/mjs/value/BooleanValue.js +10 -0
- package/dist/mjs/value/BooleanValue.js.map +1 -0
- package/dist/mjs/value/LiteralValue.js +2 -0
- package/dist/mjs/value/LiteralValue.js.map +1 -0
- package/dist/mjs/value/LiteralValueAnyArity.js +2 -0
- package/dist/mjs/value/LiteralValueAnyArity.js.map +1 -0
- package/dist/mjs/value/LogicalValue.js +10 -0
- package/dist/mjs/value/LogicalValue.js.map +1 -0
- package/dist/mjs/value/NumericValue.js +11 -0
- package/dist/mjs/value/NumericValue.js.map +1 -0
- package/dist/mjs/value/PrimitiveValueType.js +2 -0
- package/dist/mjs/value/PrimitiveValueType.js.map +1 -0
- package/dist/mjs/value/ReferenceValue.js +10 -0
- package/dist/mjs/value/ReferenceValue.js.map +1 -0
- package/dist/mjs/value/StringValue.js +10 -0
- package/dist/mjs/value/StringValue.js.map +1 -0
- package/dist/mjs/value/Value.js +9 -0
- package/dist/mjs/value/Value.js.map +1 -0
- package/dist/parser/IfcExpressionLexer.d.ts +43 -0
- package/dist/parser/IfcExpressionListener.d.ts +262 -0
- package/dist/parser/IfcExpressionParser.d.ts +265 -0
- package/dist/parser/IfcExpressionVisitor.d.ts +169 -0
- package/dist/value/BooleanValue.d.ts +5 -0
- package/dist/value/LiteralValue.d.ts +6 -0
- package/dist/value/LiteralValueAnyArity.d.ts +2 -0
- package/dist/value/LogicalValue.d.ts +5 -0
- package/dist/value/NumericValue.d.ts +6 -0
- package/dist/value/PrimitiveValueType.d.ts +2 -0
- package/dist/value/ReferenceValue.d.ts +5 -0
- package/dist/value/StringValue.d.ts +5 -0
- package/dist/value/Value.d.ts +6 -0
- package/package.json +2 -2
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Expr2 } from "../Expr2";
|
|
2
|
+
import { Expr } from "../Expr";
|
|
3
|
+
import { IfcExpressionContext } from "../../context/IfcExpressionContext";
|
|
4
|
+
import { NumericValue } from "../../value/NumericValue";
|
|
5
|
+
export declare class MinusExpr extends Expr2<Expr<NumericValue>, Expr<NumericValue>, NumericValue> {
|
|
6
|
+
constructor(left: Expr<NumericValue>, right: Expr<NumericValue>);
|
|
7
|
+
evaluate(ctx: IfcExpressionContext): NumericValue;
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Expr2 } from "../Expr2";
|
|
2
|
+
import { Expr } from "../Expr";
|
|
3
|
+
import { IfcExpressionContext } from "../../context/IfcExpressionContext";
|
|
4
|
+
import { NumericValue } from "../../value/NumericValue";
|
|
5
|
+
export declare class PlusExpr extends Expr2<Expr<NumericValue>, Expr<NumericValue>, NumericValue> {
|
|
6
|
+
constructor(left: Expr<NumericValue>, right: Expr<NumericValue>);
|
|
7
|
+
evaluate(ctx: IfcExpressionContext): NumericValue;
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Expr2 } from "../Expr2";
|
|
2
|
+
import { Expr } from "../Expr";
|
|
3
|
+
import { IfcExpressionContext } from "../../context/IfcExpressionContext";
|
|
4
|
+
import { NumericValue } from "../../value/NumericValue";
|
|
5
|
+
export declare class MultiplyExpr extends Expr2<Expr<NumericValue>, Expr<NumericValue>, NumericValue> {
|
|
6
|
+
constructor(left: Expr<NumericValue>, right: Expr<NumericValue>);
|
|
7
|
+
evaluate(ctx: IfcExpressionContext): NumericValue;
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Expr1 } from "../Expr1";
|
|
2
|
+
import { Expr } from "../Expr";
|
|
3
|
+
import { IfcExpressionContext } from "../../context/IfcExpressionContext";
|
|
4
|
+
import { NumericValue } from "../../value/NumericValue";
|
|
5
|
+
export declare class NumParenthesisExpr extends Expr1<Expr<NumericValue>, NumericValue> {
|
|
6
|
+
constructor(expression: Expr<NumericValue>);
|
|
7
|
+
evaluate(ctx: IfcExpressionContext): NumericValue;
|
|
8
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Expr1 } from "../Expr1";
|
|
2
|
+
import { IfcExpressionContext } from "../../context/IfcExpressionContext";
|
|
3
|
+
import { NumericValue } from "../../value/NumericValue";
|
|
4
|
+
export declare class NumericLiteralExpr extends Expr1<NumericValue, NumericValue> {
|
|
5
|
+
constructor(value: NumericValue);
|
|
6
|
+
evaluate(ctx: IfcExpressionContext): NumericValue;
|
|
7
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Expr2 } from "../Expr2";
|
|
2
|
+
import { Expr } from "../Expr";
|
|
3
|
+
import { IfcExpressionContext } from "../../context/IfcExpressionContext";
|
|
4
|
+
import { NumericValue } from "../../value/NumericValue";
|
|
5
|
+
export declare class PlusExpr extends Expr2<Expr<NumericValue>, Expr<NumericValue>, NumericValue> {
|
|
6
|
+
constructor(left: Expr<NumericValue>, right: Expr<NumericValue>);
|
|
7
|
+
evaluate(ctx: IfcExpressionContext): NumericValue;
|
|
8
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
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";
|
|
6
|
+
export declare class AttributeReferenceExpr extends Expr2<ObjectReferenceExpr, NestedObjectChainExpr, LiteralValueAnyArity> {
|
|
7
|
+
constructor(left: ObjectReferenceExpr, right: NestedObjectChainExpr);
|
|
8
|
+
evaluate(ctx: IfcExpressionContext): LiteralValueAnyArity;
|
|
9
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IfcExpressionContext } from "../../context/IfcExpressionContext";
|
|
2
|
+
import { ObjectReferenceExpr } from "./ObjectReferenceExpr";
|
|
3
|
+
import { ObjectAccessor } from "../../context/ObjectAccessor";
|
|
4
|
+
import { Expr0 } from "../Expr0";
|
|
5
|
+
export declare class ElemObjectReferenceExpr extends Expr0<ObjectAccessor> implements ObjectReferenceExpr {
|
|
6
|
+
constructor();
|
|
7
|
+
evaluate(ctx: IfcExpressionContext): ObjectAccessor;
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IfcExpressionContext } from "../../context/IfcExpressionContext";
|
|
2
|
+
import { Expr1 } from "../Expr1";
|
|
3
|
+
import { ObjectAccessor } from "../../context/ObjectAccessor";
|
|
4
|
+
import { LiteralValueAnyArity } from "../../value/LiteralValueAnyArity";
|
|
5
|
+
export declare class NestedObjectChainEndExpr extends Expr1<string, (oa: ObjectAccessor) => LiteralValueAnyArity> {
|
|
6
|
+
constructor(value: string);
|
|
7
|
+
evaluate(ctx: IfcExpressionContext): (oa: ObjectAccessor) => LiteralValueAnyArity;
|
|
8
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
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";
|
|
6
|
+
export declare class NestedObjectChainExpr extends Expr2<string, NestedObjectChainExpr | NestedObjectChainEndExpr, (oa: ObjectAccessor) => LiteralValueAnyArity> {
|
|
7
|
+
constructor(left: string, right: NestedObjectChainExpr);
|
|
8
|
+
evaluate(ctx: IfcExpressionContext): (oa: ObjectAccessor) => LiteralValueAnyArity;
|
|
9
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IfcExpressionContext } from "../../context/IfcExpressionContext";
|
|
2
|
+
import { Expr0 } from "../Expr0";
|
|
3
|
+
import { ObjectReferenceExpr } from "./ObjectReferenceExpr";
|
|
4
|
+
import { ObjectAccessor } from "../../context/ObjectAccessor";
|
|
5
|
+
export declare class PropObjectReferenceExpr extends Expr0<ObjectAccessor> implements ObjectReferenceExpr {
|
|
6
|
+
constructor();
|
|
7
|
+
evaluate(ctx: IfcExpressionContext): ObjectAccessor;
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Expr2 } from "../Expr2";
|
|
2
|
+
import { Expr } from "../Expr";
|
|
3
|
+
import { IfcExpressionContext } from "../../context/IfcExpressionContext";
|
|
4
|
+
import { StringValue } from "../../value/StringValue";
|
|
5
|
+
export declare class StringConcatExpr extends Expr2<Expr<StringValue>, Expr<StringValue>, StringValue> {
|
|
6
|
+
constructor(left: Expr<StringValue>, right: Expr<StringValue>);
|
|
7
|
+
evaluate(ctx: IfcExpressionContext): StringValue;
|
|
8
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Expr1 } from "../Expr1";
|
|
2
|
+
import { IfcExpressionContext } from "../../context/IfcExpressionContext";
|
|
3
|
+
import { StringValue } from "../../value/StringValue";
|
|
4
|
+
export declare class StringLiteralExpr extends Expr1<StringValue, StringValue> {
|
|
5
|
+
constructor(value: StringValue);
|
|
6
|
+
evaluate(ctx: IfcExpressionContext): StringValue;
|
|
7
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import IfcExpressionVisitor from "../generated/parser/IfcExpressionVisitor";
|
|
2
|
+
import { NumericLiteralExpr } from "./expression/numeric/NumericLiteralExpr";
|
|
3
|
+
import { notNullish } from "./utils";
|
|
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";
|
|
19
|
+
export class ExprVisitor extends IfcExpressionVisitor {
|
|
20
|
+
constructor() {
|
|
21
|
+
super();
|
|
22
|
+
/*================================================
|
|
23
|
+
* AttributeRef
|
|
24
|
+
*==============================================*/
|
|
25
|
+
this.visitAttributeRef = (ctx) => {
|
|
26
|
+
const objectRefExpr = this.visit(ctx.objectRef());
|
|
27
|
+
const nestedObjectChainExpr = this.visit(ctx.nestedObjectChain());
|
|
28
|
+
return new AttributeReferenceExpr(objectRefExpr, nestedObjectChainExpr);
|
|
29
|
+
};
|
|
30
|
+
this.visitObjectRef = (ctx) => {
|
|
31
|
+
if (notNullish(ctx.PROP())) {
|
|
32
|
+
return new PropObjectReferenceExpr();
|
|
33
|
+
}
|
|
34
|
+
else if (notNullish(ctx.ELEM())) {
|
|
35
|
+
return new ElemObjectReferenceExpr();
|
|
36
|
+
}
|
|
37
|
+
this.failNode(ctx);
|
|
38
|
+
};
|
|
39
|
+
this.visitNestedObjectChainInner = (ctx) => {
|
|
40
|
+
let name = ctx.namedRef().getChild(0).getText();
|
|
41
|
+
name = this.stripBrackets(name);
|
|
42
|
+
return new NestedObjectChainExpr(name, this.visit(ctx.nestedObjectChain()));
|
|
43
|
+
};
|
|
44
|
+
this.visitNestedObjectChainEnd = (ctx) => {
|
|
45
|
+
let name = ctx.RESERVED_ATTRIBUTE_NAME().getText();
|
|
46
|
+
return new NestedObjectChainEndExpr(name);
|
|
47
|
+
};
|
|
48
|
+
/*================================================
|
|
49
|
+
* StringExpr
|
|
50
|
+
*===============================================*/
|
|
51
|
+
this.visitStringLiteral = (ctx) => {
|
|
52
|
+
const quotedString = ctx.QUOTED_STRING().getText();
|
|
53
|
+
const text = quotedString.substring(1, quotedString.length - 1);
|
|
54
|
+
return new StringLiteralExpr(new StringValue(text));
|
|
55
|
+
};
|
|
56
|
+
this.visitStringAttributeRef = (ctx) => {
|
|
57
|
+
return this.visit(ctx.getChild(0));
|
|
58
|
+
};
|
|
59
|
+
this.visitStringConcat = (ctx) => {
|
|
60
|
+
return new StringConcatExpr(this.visit(ctx._left), this.visit(ctx._right));
|
|
61
|
+
};
|
|
62
|
+
/*================================================
|
|
63
|
+
* NumExpr
|
|
64
|
+
*===============================================*/
|
|
65
|
+
this.visitNumAttributeRef = (ctx) => {
|
|
66
|
+
return this.visit(ctx.getChild(0));
|
|
67
|
+
};
|
|
68
|
+
this.visitNumLiteral = (ctx) => {
|
|
69
|
+
let val = ctx.INT();
|
|
70
|
+
if (notNullish(val)) {
|
|
71
|
+
return new NumericLiteralExpr(new NumericValue(new Decimal(val.symbol.text)));
|
|
72
|
+
}
|
|
73
|
+
val = ctx.FLOAT();
|
|
74
|
+
if (notNullish(val)) {
|
|
75
|
+
return new NumericLiteralExpr(new NumericValue(new Decimal(val.symbol.text)));
|
|
76
|
+
}
|
|
77
|
+
this.failNode(ctx);
|
|
78
|
+
};
|
|
79
|
+
this.visitNumAddSub = (ctx) => {
|
|
80
|
+
switch (ctx._op.text) {
|
|
81
|
+
case "+":
|
|
82
|
+
return new PlusExpr(this.visit(ctx.getChild(0)), this.visit(ctx.getChild(2)));
|
|
83
|
+
case "-":
|
|
84
|
+
return new MinusExpr(this.visit(ctx.getChild(0)), this.visit(ctx.getChild(2)));
|
|
85
|
+
default:
|
|
86
|
+
this.failNode(ctx);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
this.visitNumMulDiv = (ctx) => {
|
|
90
|
+
switch (ctx._op.text) {
|
|
91
|
+
case "*":
|
|
92
|
+
return new MultiplyExpr(this.visit(ctx.getChild(0)), this.visit(ctx.getChild(2)));
|
|
93
|
+
case "/":
|
|
94
|
+
return new DivideExpr(this.visit(ctx.getChild(0)), this.visit(ctx.getChild(2)));
|
|
95
|
+
default:
|
|
96
|
+
this.failNode(ctx);
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
this.visitNumParens = (ctx) => {
|
|
100
|
+
return new NumParenthesisExpr(this.visit(ctx.getChild(1)));
|
|
101
|
+
};
|
|
102
|
+
this.visitExpr = (ctx) => {
|
|
103
|
+
return this.visit(ctx.getChild(0));
|
|
104
|
+
};
|
|
105
|
+
this.visitNumLit = (ctx) => {
|
|
106
|
+
return this.visit(ctx.getChild(0));
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
stripBrackets(name) {
|
|
110
|
+
if (name.startsWith("{")) {
|
|
111
|
+
return name.substring(1, name.length - 1);
|
|
112
|
+
}
|
|
113
|
+
return name;
|
|
114
|
+
}
|
|
115
|
+
failNode(ctx) {
|
|
116
|
+
throw new Error(`Cannot parse (sub)expression ${ctx.getText()}`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=ExprVisitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["ExprVisitor.ts"],"names":[],"mappings":"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","file":"ExprVisitor.js","sourcesContent":["import IfcExpressionVisitor from \"../generated/parser/IfcExpressionVisitor\";\nimport { NumericLiteralExpr } from \"./expression/numeric/NumericLiteralExpr\";\nimport {\n AttributeRefContext,\n ExprContext,\n NestedObjectChainEndContext,\n NestedObjectChainInnerContext,\n NumAddSubContext,\n NumAttributeRefContext,\n NumLitContext,\n NumLiteralContext,\n NumMulDivContext,\n NumParensContext,\n ObjectRefContext,\n StringAttributeRefContext,\n StringConcatContext,\n StringLiteralContext,\n} from \"../generated/parser/IfcExpressionParser\";\nimport { Expr } from \"./expression/Expr\";\nimport { notNullish } from \"./utils\";\nimport Decimal from \"decimal.js\";\nimport { PlusExpr } from \"./expression/numeric/PlusExpr\";\nimport { MinusExpr } from \"./expression/numeric/MinusExpr\";\nimport { ParserRuleContext } from \"antlr4\";\nimport { MultiplyExpr } from \"./expression/numeric/MultiplyExpr\";\nimport { DivideExpr } from \"./expression/numeric/DivideExpr\";\nimport { NumParenthesisExpr } from \"./expression/numeric/NumParenthesisExpr\";\nimport { AttributeReferenceExpr } from \"./expression/reference/AttributeReferenceExpr\";\nimport { PropObjectReferenceExpr } from \"./expression/reference/PropObjectReferenceExpr\";\nimport { ElemObjectReferenceExpr } from \"./expression/reference/ElemObjectReferenceExpr\";\nimport { NestedObjectChainExpr } from \"./expression/reference/NestedObjectChainExpr\";\nimport { NestedObjectChainEndExpr } from \"./expression/reference/NestedObjectChainEndExpr\";\nimport { NumericValue } from \"./value/NumericValue\";\nimport { StringValue } from \"./value/StringValue\";\nimport { StringLiteralExpr } from \"./expression/string/StringLiteralExpr\";\nimport { StringConcatExpr } from \"./expression/string/StringConcatExpr\";\n\nexport class ExprVisitor extends IfcExpressionVisitor<Expr<any>> {\n constructor() {\n super();\n }\n\n /*================================================\n * AttributeRef\n *==============================================*/\n\n visitAttributeRef: (ctx: AttributeRefContext) => Expr<any> = (ctx) => {\n const objectRefExpr = this.visit(ctx.objectRef());\n const nestedObjectChainExpr = this.visit(ctx.nestedObjectChain());\n return new AttributeReferenceExpr(\n objectRefExpr,\n nestedObjectChainExpr as NestedObjectChainExpr\n );\n };\n\n visitObjectRef: (ctx: ObjectRefContext) => Expr<any> = (ctx) => {\n if (notNullish(ctx.PROP())) {\n return new PropObjectReferenceExpr();\n } else if (notNullish(ctx.ELEM())) {\n return new ElemObjectReferenceExpr();\n }\n this.failNode(ctx);\n };\n\n visitNestedObjectChainInner: (\n ctx: NestedObjectChainInnerContext\n ) => Expr<any> = (ctx) => {\n let name = ctx.namedRef().getChild(0).getText();\n name = this.stripBrackets(name);\n return new NestedObjectChainExpr(\n name,\n this.visit(ctx.nestedObjectChain()) as NestedObjectChainExpr\n );\n };\n\n visitNestedObjectChainEnd: (ctx: NestedObjectChainEndContext) => Expr<any> = (\n ctx\n ) => {\n let name = ctx.RESERVED_ATTRIBUTE_NAME().getText();\n return new NestedObjectChainEndExpr(name);\n };\n\n private stripBrackets(name: string) {\n if (name.startsWith(\"{\")) {\n return name.substring(1, name.length - 1);\n }\n return name;\n }\n\n /*================================================\n * StringExpr\n *===============================================*/\n\n visitStringLiteral: (ctx: StringLiteralContext) => Expr<any> = (ctx) => {\n const quotedString = ctx.QUOTED_STRING().getText();\n const text = quotedString.substring(1, quotedString.length - 1);\n return new StringLiteralExpr(new StringValue(text));\n };\n\n visitStringAttributeRef: (ctx: StringAttributeRefContext) => Expr<any> = (\n ctx\n ) => {\n return this.visit(ctx.getChild(0));\n };\n\n visitStringConcat: (ctx: StringConcatContext) => Expr<any> = (ctx) => {\n return new StringConcatExpr(this.visit(ctx._left), this.visit(ctx._right));\n };\n\n /*================================================\n * NumExpr\n *===============================================*/\n\n visitNumAttributeRef: (ctx: NumAttributeRefContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.getChild(0));\n };\n\n visitNumLiteral: (ctx: NumLiteralContext) => Expr<any> = (ctx) => {\n let val = ctx.INT();\n if (notNullish(val)) {\n return new NumericLiteralExpr(\n new NumericValue(new Decimal(val.symbol.text))\n );\n }\n val = ctx.FLOAT();\n if (notNullish(val)) {\n return new NumericLiteralExpr(\n new NumericValue(new Decimal(val.symbol.text))\n );\n }\n this.failNode(ctx);\n };\n\n visitNumAddSub: (ctx: NumAddSubContext) => Expr<any> = (ctx) => {\n switch (ctx._op.text) {\n case \"+\":\n return new PlusExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n case \"-\":\n return new MinusExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n default:\n this.failNode(ctx);\n }\n };\n\n visitNumMulDiv: (ctx: NumMulDivContext) => Expr<any> = (ctx) => {\n switch (ctx._op.text) {\n case \"*\":\n return new MultiplyExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n case \"/\":\n return new DivideExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n default:\n this.failNode(ctx);\n }\n };\n\n visitNumParens: (ctx: NumParensContext) => Expr<any> = (ctx) => {\n return new NumParenthesisExpr(this.visit(ctx.getChild(1)));\n };\n\n visitExpr: (ctx: ExprContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.getChild(0));\n };\n\n visitNumLit: (ctx: NumLitContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.getChild(0));\n };\n\n private failNode(ctx: ParserRuleContext) {\n throw new Error(`Cannot parse (sub)expression ${ctx.getText()}`);\n }\n}\n"]}
|
|
@@ -0,0 +1,48 @@
|
|
|
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, };
|
|
22
|
+
export class IfcExpression {
|
|
23
|
+
static parse(input, errorListener) {
|
|
24
|
+
const chars = new CharStream(input); // replace this with a FileStream as required
|
|
25
|
+
const lexer = new IfcExpressionLexer(chars);
|
|
26
|
+
const tokens = new CommonTokenStream(lexer);
|
|
27
|
+
const parser = new IfcExpressionParser(tokens);
|
|
28
|
+
if (notNullish(errorListener)) {
|
|
29
|
+
parser.removeErrorListeners();
|
|
30
|
+
parser.addErrorListener(errorListener);
|
|
31
|
+
}
|
|
32
|
+
return parser.expr();
|
|
33
|
+
}
|
|
34
|
+
static evaluate(expression, context) {
|
|
35
|
+
const errorListener = new IfcExpressionErrorListener();
|
|
36
|
+
const tree = IfcExpression.parse(expression, errorListener);
|
|
37
|
+
if (errorListener.isErrorOccurred()) {
|
|
38
|
+
throw errorListener.getException();
|
|
39
|
+
}
|
|
40
|
+
const parsedExpression = this.extractExprTree(tree);
|
|
41
|
+
return parsedExpression.evaluate(context);
|
|
42
|
+
}
|
|
43
|
+
static extractExprTree(tree) {
|
|
44
|
+
const visitor = new ExprVisitor();
|
|
45
|
+
return visitor.visit(tree);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=IfcExpression.js.map
|
|
@@ -0,0 +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"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ErrorListener } from "antlr4";
|
|
2
|
+
import { notNullish } from "./utils";
|
|
3
|
+
import { SyntaxErrorException } from "./SyntaxErrorException";
|
|
4
|
+
export class IfcExpressionErrorListener extends ErrorListener {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
this.exception = null;
|
|
8
|
+
}
|
|
9
|
+
syntaxError(recognizer, offendingSymbol, line, column, msg, e) {
|
|
10
|
+
this.exception = new SyntaxErrorException(offendingSymbol, line, column, msg);
|
|
11
|
+
}
|
|
12
|
+
isErrorOccurred() {
|
|
13
|
+
return notNullish(this.exception);
|
|
14
|
+
}
|
|
15
|
+
getException() {
|
|
16
|
+
return this.exception;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=IfcExpressionErrorListener.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["IfcExpressionErrorListener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA2C,MAAM,QAAQ,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,OAAO,0BAA2B,SAAQ,aAAoB;IAApE;;QACU,cAAS,GAAyB,IAAI,CAAC;IAyBjD,CAAC;IAvBC,WAAW,CACT,UAA6B,EAC7B,eAAsB,EACtB,IAAY,EACZ,MAAc,EACd,GAAW,EACX,CAAmC;QAEnC,IAAI,CAAC,SAAS,GAAG,IAAI,oBAAoB,CACvC,eAAe,EACf,IAAI,EACJ,MAAM,EACN,GAAG,CACJ,CAAC;IACJ,CAAC;IAEM,eAAe;QACpB,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF","file":"IfcExpressionErrorListener.js","sourcesContent":["import { ErrorListener, RecognitionException, Recognizer, Token } from \"antlr4\";\nimport { notNullish } from \"./utils\";\nimport { SyntaxErrorException } from \"./SyntaxErrorException\";\n\nexport class IfcExpressionErrorListener extends ErrorListener<Token> {\n private exception: SyntaxErrorException = null;\n\n syntaxError(\n recognizer: Recognizer<Token>,\n offendingSymbol: Token,\n line: number,\n column: number,\n msg: string,\n e: RecognitionException | undefined\n ) {\n this.exception = new SyntaxErrorException(\n offendingSymbol,\n line,\n column,\n msg\n );\n }\n\n public isErrorOccurred(): boolean {\n return notNullish(this.exception);\n }\n\n public getException(): SyntaxErrorException {\n return this.exception;\n }\n}\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { notNullish } from "./utils";
|
|
2
|
+
export class SyntaxErrorException extends Error {
|
|
3
|
+
constructor(offendingSymbol, line, column, msg) {
|
|
4
|
+
super(`Syntax Error in line ${line}, column ${column}` +
|
|
5
|
+
(notNullish(msg) ? `: ${msg}` : ""));
|
|
6
|
+
this._offendingSymbol = offendingSymbol;
|
|
7
|
+
this._line = line;
|
|
8
|
+
this._column = column;
|
|
9
|
+
}
|
|
10
|
+
get offendingSymbol() {
|
|
11
|
+
return this._offendingSymbol;
|
|
12
|
+
}
|
|
13
|
+
get line() {
|
|
14
|
+
return this._line;
|
|
15
|
+
}
|
|
16
|
+
get column() {
|
|
17
|
+
return this._column;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=SyntaxErrorException.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["SyntaxErrorException.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAK7C,YACE,eAAsB,EACtB,IAAY,EACZ,MAAc,EACd,GAAW;QAEX,KAAK,CACH,wBAAwB,IAAI,YAAY,MAAM,EAAE;YAC9C,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACtC,CAAC;QACF,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF","file":"SyntaxErrorException.js","sourcesContent":["import { Token } from \"antlr4\";\nimport { notNullish } from \"./utils\";\n\nexport class SyntaxErrorException extends Error {\n private readonly _offendingSymbol: Token;\n private readonly _line: number;\n private readonly _column: number;\n\n constructor(\n offendingSymbol: Token,\n line: number,\n column: number,\n msg: string\n ) {\n super(\n `Syntax Error in line ${line}, column ${column}` +\n (notNullish(msg) ? `: ${msg}` : \"\")\n );\n this._offendingSymbol = offendingSymbol;\n this._line = line;\n this._column = column;\n }\n\n get offendingSymbol(): Token {\n return this._offendingSymbol;\n }\n\n get line(): number {\n return this._line;\n }\n\n get column(): number {\n return this._column;\n }\n}\n"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { IfcRootObjectAccessor } from "./IfcRootObjectAccessor";
|
|
2
|
+
import { StringValue } from "../value/StringValue";
|
|
3
|
+
import { notNullish } from "../utils";
|
|
4
|
+
export class IfcElementAccessor extends IfcRootObjectAccessor {
|
|
5
|
+
getNestedObjectAccessor(name) {
|
|
6
|
+
if (name === "type") {
|
|
7
|
+
return this.getTypeObjectAccessor();
|
|
8
|
+
}
|
|
9
|
+
let val = this.getIfcPropertyAccessor(name);
|
|
10
|
+
if (notNullish(val)) {
|
|
11
|
+
return val;
|
|
12
|
+
}
|
|
13
|
+
return this.getIfcPropertySetAccessor(name);
|
|
14
|
+
}
|
|
15
|
+
getAttribute(name) {
|
|
16
|
+
switch (name) {
|
|
17
|
+
case "ifcClass":
|
|
18
|
+
return new StringValue(this.getIfcClass());
|
|
19
|
+
default:
|
|
20
|
+
return super.getAttribute(name);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
listNestedObjects() {
|
|
24
|
+
return ["type", ...this.listIfcProperties(), ...this.listIfcPropertySets()];
|
|
25
|
+
}
|
|
26
|
+
listAttributes() {
|
|
27
|
+
return ["ifcClass", ...super.listAttributes()];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=IfcElementAccessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["context/IfcElementAccessor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAIhE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,MAAM,OAAgB,kBAAmB,SAAQ,qBAAqB;IACpE,uBAAuB,CAAC,IAAY;QAClC,IAAI,IAAI,KAAK,MAAM,EAAE;YACnB,OAAO,IAAI,CAAC,qBAAqB,EAAE,CAAC;SACrC;QACD,IAAI,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE;YACnB,OAAO,GAAG,CAAC;SACZ;QACD,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,YAAY,CAAC,IAAY;QACvB,QAAQ,IAAI,EAAE;YACZ,KAAK,UAAU;gBACb,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAC7C;gBACE,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;SACnC;IACH,CAAC;IAID,iBAAiB;QACf,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,cAAc;QACZ,OAAO,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;IACjD,CAAC;CAcF","file":"context/IfcElementAccessor.js","sourcesContent":["import { ObjectAccessor } from \"./ObjectAccessor\";\nimport { IfcRootObjectAccessor } from \"./IfcRootObjectAccessor\";\nimport { IfcTypeObjectAccessor } from \"./IfcTypeObjectAccessor\";\nimport { IfcPropertyAccessor } from \"./IfcPropertyAccessor\";\nimport { LiteralValueAnyArity } from \"../value/LiteralValueAnyArity\";\nimport { StringValue } from \"../value/StringValue\";\nimport { notNullish } from \"../utils\";\nimport { IfcPropertySetAccessor } from \"./IfcPropertySetAccessor\";\n\nexport abstract class IfcElementAccessor extends IfcRootObjectAccessor {\n getNestedObjectAccessor(name: string): ObjectAccessor | undefined {\n if (name === \"type\") {\n return this.getTypeObjectAccessor();\n }\n let val = this.getIfcPropertyAccessor(name);\n if (notNullish(val)) {\n return val;\n }\n return this.getIfcPropertySetAccessor(name);\n }\n\n getAttribute(name: string): LiteralValueAnyArity | undefined {\n switch (name) {\n case \"ifcClass\":\n return new StringValue(this.getIfcClass());\n default:\n return super.getAttribute(name);\n }\n }\n\n abstract getIfcClass(): string;\n\n listNestedObjects(): Array<string> {\n return [\"type\", ...this.listIfcProperties(), ...this.listIfcPropertySets()];\n }\n\n listAttributes(): Array<string> {\n return [\"ifcClass\", ...super.listAttributes()];\n }\n\n abstract listIfcProperties(): Array<string>;\n\n abstract listIfcPropertySets(): Array<string>;\n\n abstract getTypeObjectAccessor(): IfcTypeObjectAccessor | undefined;\n abstract getIfcPropertyAccessor(\n propertyName: string\n ): IfcPropertyAccessor | undefined;\n\n abstract getIfcPropertySetAccessor(\n name: string\n ): IfcPropertySetAccessor | undefined;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["context/IfcExpressionContext.ts"],"names":[],"mappings":"","file":"context/IfcExpressionContext.js","sourcesContent":["import { IfcPropertyAccessor } from \"./IfcPropertyAccessor\";\nimport { IfcElementAccessor } from \"./IfcElementAccessor\";\n\nexport interface IfcExpressionContext {\n resolvePropRef(): IfcPropertyAccessor;\n\n resolveElemRef(): IfcElementAccessor;\n}\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { NamedObjectAccessor } from "./NamedObjectAccessor";
|
|
2
|
+
export class IfcPropertyAccessor extends NamedObjectAccessor {
|
|
3
|
+
getNestedObjectAccessor(name) {
|
|
4
|
+
switch (name) {
|
|
5
|
+
case "pset":
|
|
6
|
+
return this.getPropertySetAccessor();
|
|
7
|
+
}
|
|
8
|
+
return undefined;
|
|
9
|
+
}
|
|
10
|
+
listNestedObjects() {
|
|
11
|
+
return ["pset"];
|
|
12
|
+
}
|
|
13
|
+
listAttributes() {
|
|
14
|
+
return ["value", ...super.listAttributes()];
|
|
15
|
+
}
|
|
16
|
+
getAttribute(name) {
|
|
17
|
+
switch (name) {
|
|
18
|
+
case "value":
|
|
19
|
+
return this.getValue();
|
|
20
|
+
}
|
|
21
|
+
return super.getAttribute(name);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=IfcPropertyAccessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["context/IfcPropertyAccessor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAI5D,MAAM,OAAgB,mBAAoB,SAAQ,mBAAmB;IACnE,uBAAuB,CAAC,IAAY;QAClC,QAAQ,IAAI,EAAE;YACZ,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;SACxC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,iBAAiB;QACf,OAAO,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAED,cAAc;QACZ,OAAO,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,YAAY,CAAC,IAAY;QACvB,QAAQ,IAAI,EAAE;YACZ,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;SAC1B;QACD,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;CAIF","file":"context/IfcPropertyAccessor.js","sourcesContent":["import { ObjectAccessor } from \"./ObjectAccessor\";\nimport { NamedObjectAccessor } from \"./NamedObjectAccessor\";\nimport { IfcPropertySetAccessor } from \"./IfcPropertySetAccessor\";\nimport { LiteralValueAnyArity } from \"../value/LiteralValueAnyArity\";\n\nexport abstract class IfcPropertyAccessor extends NamedObjectAccessor {\n getNestedObjectAccessor(name: string): ObjectAccessor | undefined {\n switch (name) {\n case \"pset\":\n return this.getPropertySetAccessor();\n }\n return undefined;\n }\n\n listNestedObjects(): Array<string> {\n return [\"pset\"];\n }\n\n listAttributes(): Array<string> {\n return [\"value\", ...super.listAttributes()];\n }\n\n getAttribute(name: string): LiteralValueAnyArity | undefined {\n switch (name) {\n case \"value\":\n return this.getValue();\n }\n return super.getAttribute(name);\n }\n\n protected abstract getValue(): LiteralValueAnyArity;\n protected abstract getPropertySetAccessor(): IfcPropertySetAccessor;\n}\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { IfcRootObjectAccessor } from "./IfcRootObjectAccessor";
|
|
2
|
+
export class IfcPropertySetAccessor extends IfcRootObjectAccessor {
|
|
3
|
+
listAttributes() {
|
|
4
|
+
return [...super.listAttributes(), ...this.listIfcProperties()];
|
|
5
|
+
}
|
|
6
|
+
getAttribute(name) {
|
|
7
|
+
return super.getAttribute(name);
|
|
8
|
+
}
|
|
9
|
+
getNestedObjectAccessor(name) {
|
|
10
|
+
return this.getIfcPropertyAccessor(name);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=IfcPropertySetAccessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["context/IfcPropertySetAccessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAKhE,MAAM,OAAgB,sBAAuB,SAAQ,qBAAqB;IACxE,cAAc;QACZ,OAAO,CAAC,GAAG,KAAK,CAAC,cAAc,EAAE,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,YAAY,CAAC,IAAY;QACvB,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,uBAAuB,CAAC,IAAY;QAClC,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;CAMF","file":"context/IfcPropertySetAccessor.js","sourcesContent":["import { IfcRootObjectAccessor } from \"./IfcRootObjectAccessor\";\nimport { LiteralValueAnyArity } from \"../value/LiteralValueAnyArity\";\nimport { IfcPropertyAccessor } from \"./IfcPropertyAccessor\";\nimport { ObjectAccessor } from \"./ObjectAccessor\";\n\nexport abstract class IfcPropertySetAccessor extends IfcRootObjectAccessor {\n listAttributes(): Array<string> {\n return [...super.listAttributes(), ...this.listIfcProperties()];\n }\n\n getAttribute(name: string): LiteralValueAnyArity | undefined {\n return super.getAttribute(name);\n }\n\n getNestedObjectAccessor(name: string): ObjectAccessor | undefined {\n return this.getIfcPropertyAccessor(name);\n }\n\n protected abstract listIfcProperties(): Array<string>;\n protected abstract getIfcPropertyAccessor(\n name: string\n ): IfcPropertyAccessor | undefined;\n}\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { NamedObjectAccessor } from "./NamedObjectAccessor";
|
|
2
|
+
import { StringValue } from "../value/StringValue";
|
|
3
|
+
export class IfcRootObjectAccessor extends NamedObjectAccessor {
|
|
4
|
+
getAttribute(name) {
|
|
5
|
+
switch (name) {
|
|
6
|
+
case "guid":
|
|
7
|
+
return new StringValue(this.getGuid());
|
|
8
|
+
}
|
|
9
|
+
return super.getAttribute(name);
|
|
10
|
+
}
|
|
11
|
+
listAttributes() {
|
|
12
|
+
return ["guid", ...super.listAttributes()];
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=IfcRootObjectAccessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["context/IfcRootObjectAccessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,OAAgB,qBAAsB,SAAQ,mBAAmB;IACrE,YAAY,CAAC,IAAY;QACvB,QAAQ,IAAI,EAAE;YACZ,KAAK,MAAM;gBACT,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;SAC1C;QACD,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAID,cAAc;QACZ,OAAO,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;IAC7C,CAAC;CACF","file":"context/IfcRootObjectAccessor.js","sourcesContent":["import { NamedObjectAccessor } from \"./NamedObjectAccessor\";\nimport { LiteralValueAnyArity } from \"../value/LiteralValueAnyArity\";\nimport { StringValue } from \"../value/StringValue\";\n\nexport abstract class IfcRootObjectAccessor extends NamedObjectAccessor {\n getAttribute(name: string): LiteralValueAnyArity | undefined {\n switch (name) {\n case \"guid\":\n return new StringValue(this.getGuid());\n }\n return super.getAttribute(name);\n }\n\n abstract getGuid(): string;\n\n listAttributes(): Array<string> {\n return [\"guid\", ...super.listAttributes()];\n }\n}\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { IfcRootObjectAccessor } from "./IfcRootObjectAccessor";
|
|
2
|
+
import { notNullish } from "../utils";
|
|
3
|
+
export class IfcTypeObjectAccessor extends IfcRootObjectAccessor {
|
|
4
|
+
getNestedObjectAccessor(name) {
|
|
5
|
+
let val = this.getIfcPropertyAccessor(name);
|
|
6
|
+
if (notNullish(val)) {
|
|
7
|
+
return val;
|
|
8
|
+
}
|
|
9
|
+
return this.getIfcPropertySetAccessor(name);
|
|
10
|
+
}
|
|
11
|
+
listNestedObjects() {
|
|
12
|
+
return [...this.listIfcPropertyNames(), ...this.listIfcPropertySetNames()];
|
|
13
|
+
}
|
|
14
|
+
listAttributes() {
|
|
15
|
+
return [...super.listAttributes()];
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=IfcTypeObjectAccessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["context/IfcTypeObjectAccessor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,MAAM,OAAgB,qBAAsB,SAAQ,qBAAqB;IACvE,uBAAuB,CAAC,IAAY;QAClC,IAAI,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE;YACnB,OAAO,GAAG,CAAC;SACZ;QACD,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,iBAAiB;QACf,OAAO,CAAC,GAAG,IAAI,CAAC,oBAAoB,EAAE,EAAE,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,cAAc;QACZ,OAAO,CAAC,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;IACrC,CAAC;CAYF","file":"context/IfcTypeObjectAccessor.js","sourcesContent":["import { ObjectAccessor } from \"./ObjectAccessor\";\nimport { IfcRootObjectAccessor } from \"./IfcRootObjectAccessor\";\nimport { IfcPropertySetAccessor } from \"./IfcPropertySetAccessor\";\nimport { notNullish } from \"../utils\";\nimport { IfcPropertyAccessor } from \"./IfcPropertyAccessor\";\n\nexport abstract class IfcTypeObjectAccessor extends IfcRootObjectAccessor {\n getNestedObjectAccessor(name: string): ObjectAccessor | undefined {\n let val = this.getIfcPropertyAccessor(name);\n if (notNullish(val)) {\n return val;\n }\n return this.getIfcPropertySetAccessor(name);\n }\n\n listNestedObjects(): Array<string> {\n return [...this.listIfcPropertyNames(), ...this.listIfcPropertySetNames()];\n }\n\n listAttributes(): Array<string> {\n return [...super.listAttributes()];\n }\n\n protected abstract getIfcPropertySetAccessor(\n name: string\n ): IfcPropertySetAccessor | undefined;\n\n protected abstract getIfcPropertyAccessor(\n name: string\n ): IfcPropertyAccessor | undefined;\n\n abstract listIfcPropertySetNames(): Array<string>;\n abstract listIfcPropertyNames(): Array<string>;\n}\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { StringValue } from "../value/StringValue";
|
|
2
|
+
export class NamedObjectAccessor {
|
|
3
|
+
getAttribute(name) {
|
|
4
|
+
switch (name) {
|
|
5
|
+
case "name":
|
|
6
|
+
return new StringValue(this.getName());
|
|
7
|
+
case "description":
|
|
8
|
+
return new StringValue(this.getDescription());
|
|
9
|
+
}
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
listAttributes() {
|
|
13
|
+
return ["name", "description"];
|
|
14
|
+
}
|
|
15
|
+
getNestedObjectAccessor(name) {
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
listNestedObjects() {
|
|
19
|
+
return [];
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=NamedObjectAccessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["context/NamedObjectAccessor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,OAAgB,mBAAmB;IAKvC,YAAY,CAAC,IAAY;QACvB,QAAQ,IAAI,EAAE;YACZ,KAAK,MAAM;gBACT,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YACzC,KAAK,aAAa;gBAChB,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;SACjD;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,cAAc;QACZ,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACjC,CAAC;IAED,uBAAuB,CAAC,IAAY;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,iBAAiB;QACf,OAAO,EAAE,CAAC;IACZ,CAAC;CACF","file":"context/NamedObjectAccessor.js","sourcesContent":["import { ObjectAccessor } from \"./ObjectAccessor\";\nimport { LiteralValueAnyArity } from \"../value/LiteralValueAnyArity\";\nimport { StringValue } from \"../value/StringValue\";\n\nexport abstract class NamedObjectAccessor implements ObjectAccessor {\n abstract getName(): string;\n\n abstract getDescription(): string;\n\n getAttribute(name: string): LiteralValueAnyArity | undefined {\n switch (name) {\n case \"name\":\n return new StringValue(this.getName());\n case \"description\":\n return new StringValue(this.getDescription());\n }\n return undefined;\n }\n\n listAttributes(): Array<string> {\n return [\"name\", \"description\"];\n }\n\n getNestedObjectAccessor(name: string): ObjectAccessor | undefined {\n return undefined;\n }\n\n listNestedObjects(): Array<string> {\n return [];\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["context/ObjectAccessor.ts"],"names":[],"mappings":"","file":"context/ObjectAccessor.js","sourcesContent":["import { LiteralValueAnyArity } from \"../value/LiteralValueAnyArity\";\n\nexport interface ObjectAccessor {\n /**\n * If there is a nested object with the specified name (.e.g the 'pset' in $prop.pset),\n * return an ObjectAccessor for it.\n * @param name\n */\n getNestedObjectAccessor(name: string): ObjectAccessor | undefined;\n\n /**\n * If the object has the attribute of the specified name, return it as (an array of (array of)) LiteralValue.\n * @param name\n */\n getAttribute(name: string): LiteralValueAnyArity | undefined;\n\n listNestedObjects(): Array<string>;\n\n listAttributes(): Array<string>;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["expression/ArrayExpr.ts"],"names":[],"mappings":"","file":"expression/ArrayExpr.js","sourcesContent":["export interface ArrayExpr<T> {\n evaluate(): Array<T>;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["expression/Expr.ts"],"names":[],"mappings":"","file":"expression/Expr.js","sourcesContent":["import { IfcExpressionContext } from \"../context/IfcExpressionContext\";\n\nexport interface Expr<T> {\n evaluate(ctx: IfcExpressionContext): T;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["expression/Expr0.ts"],"names":[],"mappings":"AAGA,MAAM,OAAgB,KAAK;IACzB,gBAAyB,CAAC;CAG3B","file":"expression/Expr0.js","sourcesContent":["import { Expr } from \"./Expr\";\nimport { IfcExpressionContext } from \"../context/IfcExpressionContext\";\n\nexport abstract class Expr0<E> implements Expr<E> {\n protected constructor() {}\n\n abstract evaluate(ctx: IfcExpressionContext): E;\n}\n"]}
|