ifc-expressions 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ExprVisitor.d.ts +7 -3
- package/dist/IfcExpression.d.ts +27 -24
- package/dist/IfcExpressionErrorListener.d.ts +1 -1
- package/dist/IfcExpressionUtils.d.ts +2 -0
- package/dist/cjs/ExprVisitor.js +70 -36
- package/dist/cjs/ExprVisitor.js.map +1 -1
- package/dist/cjs/IfcExpression.js +42 -41
- 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 +8 -8
- 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 +9 -0
- package/dist/cjs/context/ObjectAccessor.js.map +1 -1
- package/dist/cjs/expression/Expr.js.map +1 -1
- package/dist/cjs/expression/Expr0.js +18 -2
- package/dist/cjs/expression/Expr0.js.map +1 -1
- package/dist/cjs/expression/Expr1.js +46 -2
- package/dist/cjs/expression/Expr1.js.map +1 -1
- package/dist/cjs/expression/Expr2.js +48 -2
- package/dist/cjs/expression/Expr2.js.map +1 -1
- package/dist/cjs/expression/Expr2LeftBeforeRight.js +45 -0
- package/dist/cjs/expression/Expr2LeftBeforeRight.js.map +1 -0
- package/dist/cjs/expression/ExprBase.js +20 -0
- package/dist/cjs/expression/ExprBase.js.map +1 -0
- package/dist/cjs/expression/ExprEvalResult.js +165 -0
- package/dist/cjs/expression/ExprEvalResult.js.map +1 -0
- package/dist/cjs/expression/ExprKind.js +24 -0
- package/dist/cjs/expression/ExprKind.js.map +1 -0
- package/dist/cjs/expression/IfcExpressionEvaluationException.js.map +1 -1
- package/dist/cjs/expression/LiteralExpr.js +25 -0
- package/dist/cjs/expression/LiteralExpr.js.map +1 -0
- package/dist/cjs/expression/LocalContextKeys.js +7 -0
- package/dist/cjs/expression/LocalContextKeys.js.map +1 -0
- package/dist/cjs/expression/function/Func.js +93 -0
- package/dist/cjs/expression/function/Func.js.map +1 -0
- package/dist/cjs/expression/function/FuncArg.js +33 -0
- package/dist/cjs/expression/function/FuncArg.js.map +1 -0
- package/dist/cjs/expression/function/FunctionExpr.js +33 -0
- package/dist/cjs/expression/function/FunctionExpr.js.map +1 -0
- package/dist/cjs/expression/function/IfcExpressionFunctionConfigException.js +10 -0
- package/dist/cjs/expression/function/IfcExpressionFunctionConfigException.js.map +1 -0
- package/dist/cjs/expression/function/IfcExpressionFunctions.js +26 -0
- package/dist/cjs/expression/function/IfcExpressionFunctions.js.map +1 -0
- package/dist/cjs/expression/function/arg/FuncArgBase.js +34 -0
- package/dist/cjs/expression/function/arg/FuncArgBase.js.map +1 -0
- package/dist/cjs/expression/function/arg/FuncArgInt.js +25 -0
- package/dist/cjs/expression/function/arg/FuncArgInt.js.map +1 -0
- package/dist/cjs/expression/function/arg/FuncArgNumeric.js +22 -0
- package/dist/cjs/expression/function/arg/FuncArgNumeric.js.map +1 -0
- package/dist/cjs/expression/function/impl/MAP.js +77 -0
- package/dist/cjs/expression/function/impl/MAP.js.map +1 -0
- package/dist/cjs/expression/function/impl/ROUND.js +29 -0
- package/dist/cjs/expression/function/impl/ROUND.js.map +1 -0
- package/dist/cjs/expression/numeric/DivideExpr.js +11 -9
- package/dist/cjs/expression/numeric/DivideExpr.js.map +1 -1
- package/dist/cjs/expression/numeric/MinusExpr.js +7 -9
- package/dist/cjs/expression/numeric/MinusExpr.js.map +1 -1
- package/dist/cjs/expression/numeric/MultiplyExpr.js +7 -9
- package/dist/cjs/expression/numeric/MultiplyExpr.js.map +1 -1
- package/dist/cjs/expression/numeric/NumParenthesisExpr.js +6 -5
- package/dist/cjs/expression/numeric/NumParenthesisExpr.js.map +1 -1
- package/dist/cjs/expression/numeric/NumericLiteralExpr.js +5 -4
- package/dist/cjs/expression/numeric/NumericLiteralExpr.js.map +1 -1
- package/dist/cjs/expression/numeric/PlusExpr.js +7 -9
- package/dist/cjs/expression/numeric/PlusExpr.js.map +1 -1
- package/dist/cjs/expression/reference/AttributeReferenceExpr.js +21 -7
- package/dist/cjs/expression/reference/AttributeReferenceExpr.js.map +1 -1
- package/dist/cjs/expression/reference/ElemObjectReferenceExpr.js +5 -4
- package/dist/cjs/expression/reference/ElemObjectReferenceExpr.js.map +1 -1
- package/dist/cjs/expression/reference/NestedObjectChainEndExpr.js +19 -5
- package/dist/cjs/expression/reference/NestedObjectChainEndExpr.js.map +1 -1
- package/dist/cjs/expression/reference/NestedObjectChainExpr.js +33 -8
- 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 +5 -4
- package/dist/cjs/expression/reference/PropObjectReferenceExpr.js.map +1 -1
- package/dist/cjs/expression/string/StringConcatExpr.js +7 -6
- package/dist/cjs/expression/string/StringConcatExpr.js.map +1 -1
- package/dist/cjs/expression/string/StringLiteralExpr.js +5 -4
- package/dist/cjs/expression/string/StringLiteralExpr.js.map +1 -1
- package/dist/cjs/expression/structure/ArrayExpr.js +26 -0
- package/dist/cjs/expression/structure/ArrayExpr.js.map +1 -0
- package/dist/cjs/gen/parser/IfcExpressionLexer.js +142 -0
- package/dist/cjs/gen/parser/IfcExpressionLexer.js.map +1 -0
- package/dist/cjs/gen/parser/IfcExpressionListener.js.map +1 -0
- package/dist/cjs/{parser → gen/parser}/IfcExpressionParser.js +148 -104
- package/dist/cjs/gen/parser/IfcExpressionParser.js.map +1 -0
- package/dist/cjs/gen/parser/IfcExpressionVisitor.js.map +1 -0
- package/dist/cjs/value/ArrayValue.js +23 -0
- package/dist/cjs/value/ArrayValue.js.map +1 -0
- package/dist/cjs/value/BooleanValue.js +12 -3
- 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 +14 -3
- package/dist/cjs/value/LogicalValue.js.map +1 -1
- package/dist/cjs/value/NumericValue.js +16 -7
- package/dist/cjs/value/NumericValue.js.map +1 -1
- package/dist/cjs/value/PrimitiveValueType.js.map +1 -1
- package/dist/cjs/value/ReferenceValue.js +12 -3
- package/dist/cjs/value/ReferenceValue.js.map +1 -1
- package/dist/cjs/value/StringValue.js +12 -3
- package/dist/cjs/value/StringValue.js.map +1 -1
- package/dist/cjs/value/Value.js +0 -10
- 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 +2 -1
- package/dist/expression/Expr.d.ts +5 -2
- package/dist/expression/Expr0.d.ts +9 -5
- package/dist/expression/Expr1.d.ts +20 -5
- package/dist/expression/Expr2.d.ts +15 -6
- package/dist/expression/Expr2LeftBeforeRight.d.ts +14 -0
- package/dist/expression/ExprBase.d.ts +11 -0
- package/dist/expression/ExprEvalResult.d.ts +125 -0
- package/dist/expression/ExprKind.d.ts +19 -0
- package/dist/expression/LiteralExpr.d.ts +11 -0
- package/dist/expression/LocalContextKeys.d.ts +3 -0
- package/dist/expression/function/Func.d.ts +30 -0
- package/dist/expression/function/FuncArg.d.ts +18 -0
- package/dist/expression/function/FunctionExpr.d.ts +13 -0
- package/dist/expression/function/IfcExpressionFunctionConfigException.d.ts +3 -0
- package/dist/expression/function/IfcExpressionFunctions.d.ts +7 -0
- package/dist/expression/function/arg/FuncArgBase.d.ts +19 -0
- package/dist/expression/function/arg/FuncArgInt.d.ts +8 -0
- package/dist/expression/function/arg/FuncArgNumeric.d.ts +8 -0
- package/dist/expression/function/impl/MAP.d.ts +10 -0
- package/dist/expression/function/impl/ROUND.d.ts +9 -0
- package/dist/expression/numeric/DivideExpr.d.ts +8 -6
- package/dist/expression/numeric/MinusExpr.d.ts +7 -6
- package/dist/expression/numeric/MultiplyExpr.d.ts +7 -6
- package/dist/expression/numeric/NumParenthesisExpr.d.ts +6 -6
- package/dist/expression/numeric/NumericLiteralExpr.d.ts +6 -5
- package/dist/expression/numeric/PlusExpr.d.ts +6 -6
- package/dist/expression/reference/AttributeReferenceExpr.d.ts +12 -8
- package/dist/expression/reference/ElemObjectReferenceExpr.d.ts +5 -5
- package/dist/expression/reference/NestedObjectChainEndExpr.d.ts +7 -6
- package/dist/expression/reference/NestedObjectChainExpr.d.ts +11 -8
- package/dist/expression/reference/ObjectReferenceExpr.d.ts +2 -2
- package/dist/expression/reference/PropObjectReferenceExpr.d.ts +5 -5
- package/dist/expression/string/StringConcatExpr.d.ts +6 -6
- package/dist/expression/string/StringLiteralExpr.d.ts +5 -5
- package/dist/expression/structure/ArrayExpr.d.ts +11 -0
- package/dist/{parser → gen/parser}/IfcExpressionLexer.d.ts +10 -9
- package/dist/{parser → gen/parser}/IfcExpressionParser.d.ts +10 -9
- package/dist/mjs/ExprVisitor.js +57 -23
- package/dist/mjs/ExprVisitor.js.map +1 -1
- package/dist/mjs/IfcExpression.js +21 -22
- 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 +6 -6
- 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 +7 -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 +18 -2
- package/dist/mjs/expression/Expr0.js.map +1 -1
- package/dist/mjs/expression/Expr1.js +46 -2
- package/dist/mjs/expression/Expr1.js.map +1 -1
- package/dist/mjs/expression/Expr2.js +48 -2
- package/dist/mjs/expression/Expr2.js.map +1 -1
- package/dist/mjs/expression/Expr2LeftBeforeRight.js +41 -0
- package/dist/mjs/expression/Expr2LeftBeforeRight.js.map +1 -0
- package/dist/mjs/expression/ExprBase.js +16 -0
- package/dist/mjs/expression/ExprBase.js.map +1 -0
- package/dist/mjs/expression/ExprEvalResult.js +144 -0
- package/dist/mjs/expression/ExprEvalResult.js.map +1 -0
- package/dist/mjs/expression/ExprKind.js +21 -0
- package/dist/mjs/expression/ExprKind.js.map +1 -0
- package/dist/mjs/expression/LiteralExpr.js +21 -0
- package/dist/mjs/expression/LiteralExpr.js.map +1 -0
- package/dist/mjs/expression/LocalContextKeys.js +4 -0
- package/dist/mjs/expression/LocalContextKeys.js.map +1 -0
- package/dist/mjs/expression/function/Func.js +89 -0
- package/dist/mjs/expression/function/Func.js.map +1 -0
- package/dist/mjs/expression/function/FuncArg.js +29 -0
- package/dist/mjs/expression/function/FuncArg.js.map +1 -0
- package/dist/mjs/expression/function/FunctionExpr.js +29 -0
- package/dist/mjs/expression/function/FunctionExpr.js.map +1 -0
- package/dist/mjs/expression/function/IfcExpressionFunctionConfigException.js +6 -0
- package/dist/mjs/expression/function/IfcExpressionFunctionConfigException.js.map +1 -0
- package/dist/mjs/expression/function/IfcExpressionFunctions.js +22 -0
- package/dist/mjs/expression/function/IfcExpressionFunctions.js.map +1 -0
- package/dist/mjs/expression/function/arg/FuncArgBase.js +30 -0
- package/dist/mjs/expression/function/arg/FuncArgBase.js.map +1 -0
- package/dist/mjs/expression/function/arg/FuncArgInt.js +21 -0
- package/dist/mjs/expression/function/arg/FuncArgInt.js.map +1 -0
- package/dist/mjs/expression/function/arg/FuncArgNumeric.js +18 -0
- package/dist/mjs/expression/function/arg/FuncArgNumeric.js.map +1 -0
- package/dist/mjs/expression/function/impl/MAP.js +73 -0
- package/dist/mjs/expression/function/impl/MAP.js.map +1 -0
- package/dist/mjs/expression/function/impl/ROUND.js +25 -0
- package/dist/mjs/expression/function/impl/ROUND.js.map +1 -0
- package/dist/mjs/expression/numeric/DivideExpr.js +10 -8
- package/dist/mjs/expression/numeric/DivideExpr.js.map +1 -1
- package/dist/mjs/expression/numeric/MinusExpr.js +6 -8
- package/dist/mjs/expression/numeric/MinusExpr.js.map +1 -1
- package/dist/mjs/expression/numeric/MultiplyExpr.js +6 -8
- package/dist/mjs/expression/numeric/MultiplyExpr.js.map +1 -1
- package/dist/mjs/expression/numeric/NumParenthesisExpr.js +5 -4
- package/dist/mjs/expression/numeric/NumParenthesisExpr.js.map +1 -1
- package/dist/mjs/expression/numeric/NumericLiteralExpr.js +5 -4
- package/dist/mjs/expression/numeric/NumericLiteralExpr.js.map +1 -1
- package/dist/mjs/expression/numeric/PlusExpr.js +6 -8
- package/dist/mjs/expression/numeric/PlusExpr.js.map +1 -1
- package/dist/mjs/expression/reference/AttributeReferenceExpr.js +20 -6
- package/dist/mjs/expression/reference/AttributeReferenceExpr.js.map +1 -1
- package/dist/mjs/expression/reference/ElemObjectReferenceExpr.js +4 -3
- package/dist/mjs/expression/reference/ElemObjectReferenceExpr.js.map +1 -1
- package/dist/mjs/expression/reference/NestedObjectChainEndExpr.js +19 -5
- package/dist/mjs/expression/reference/NestedObjectChainEndExpr.js.map +1 -1
- package/dist/mjs/expression/reference/NestedObjectChainExpr.js +33 -8
- 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 +4 -3
- package/dist/mjs/expression/reference/PropObjectReferenceExpr.js.map +1 -1
- package/dist/mjs/expression/string/StringConcatExpr.js +6 -5
- package/dist/mjs/expression/string/StringConcatExpr.js.map +1 -1
- package/dist/mjs/expression/string/StringLiteralExpr.js +5 -4
- package/dist/mjs/expression/string/StringLiteralExpr.js.map +1 -1
- package/dist/mjs/expression/structure/ArrayExpr.js +22 -0
- package/dist/mjs/expression/structure/ArrayExpr.js.map +1 -0
- package/dist/mjs/gen/parser/IfcExpressionLexer.js +140 -0
- package/dist/mjs/gen/parser/IfcExpressionLexer.js.map +1 -0
- package/dist/mjs/gen/parser/IfcExpressionListener.js.map +1 -0
- package/dist/mjs/{parser → gen/parser}/IfcExpressionParser.js +148 -104
- package/dist/mjs/gen/parser/IfcExpressionParser.js.map +1 -0
- package/dist/mjs/gen/parser/IfcExpressionVisitor.js.map +1 -0
- package/dist/mjs/value/ArrayValue.js +19 -0
- package/dist/mjs/value/ArrayValue.js.map +1 -0
- package/dist/mjs/value/BooleanValue.js +12 -3
- 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 +14 -3
- package/dist/mjs/value/LogicalValue.js.map +1 -1
- package/dist/mjs/value/NumericValue.js +16 -4
- package/dist/mjs/value/NumericValue.js.map +1 -1
- package/dist/mjs/value/ReferenceValue.js +12 -3
- package/dist/mjs/value/ReferenceValue.js.map +1 -1
- package/dist/mjs/value/StringValue.js +12 -3
- package/dist/mjs/value/StringValue.js.map +1 -1
- package/dist/mjs/value/Value.js +1 -8
- package/dist/mjs/value/Value.js.map +1 -1
- package/dist/value/ArrayValue.d.ts +12 -0
- package/dist/value/BooleanValue.d.ts +9 -2
- package/dist/value/LiteralValue.d.ts +7 -6
- package/dist/value/LiteralValueAnyArity.d.ts +2 -2
- package/dist/value/LogicalValue.d.ts +9 -2
- package/dist/value/NumericValue.d.ts +12 -5
- package/dist/value/ReferenceValue.d.ts +9 -2
- package/dist/value/StringValue.d.ts +9 -2
- package/dist/value/Value.d.ts +3 -4
- package/package.json +4 -3
- package/dist/cjs/expression/ArrayExpr.js +0 -3
- package/dist/cjs/expression/ArrayExpr.js.map +0 -1
- package/dist/cjs/expression/numeric/MultiplyByExpr.js +0 -18
- package/dist/cjs/expression/numeric/MultiplyByExpr.js.map +0 -1
- package/dist/cjs/parser/IfcExpressionLexer.js +0 -140
- 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/expression/ArrayExpr.d.ts +0 -3
- package/dist/expression/numeric/MultiplyByExpr.d.ts +0 -8
- package/dist/mjs/expression/ArrayExpr.js +0 -2
- package/dist/mjs/expression/ArrayExpr.js.map +0 -1
- package/dist/mjs/expression/numeric/MultiplyByExpr.js +0 -14
- package/dist/mjs/expression/numeric/MultiplyByExpr.js.map +0 -1
- package/dist/mjs/parser/IfcExpressionLexer.js +0 -138
- package/dist/mjs/parser/IfcExpressionLexer.js.map +0 -1
- package/dist/mjs/parser/IfcExpressionListener.js.map +0 -1
- package/dist/mjs/parser/IfcExpressionParser.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}/IfcExpressionListener.js +0 -0
- /package/dist/cjs/{parser → gen/parser}/IfcExpressionVisitor.js +0 -0
- /package/dist/{parser → gen/parser}/IfcExpressionListener.d.ts +0 -0
- /package/dist/{parser → gen/parser}/IfcExpressionVisitor.d.ts +0 -0
- /package/dist/mjs/{parser → gen/parser}/IfcExpressionListener.js +0 -0
- /package/dist/mjs/{parser → gen/parser}/IfcExpressionVisitor.js +0 -0
|
@@ -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,8 +1,8 @@
|
|
|
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
|
+
doEvaluate(ctx: IfcExpressionContext): ObjectAccessor;
|
|
8
8
|
}
|
|
@@ -1,8 +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<
|
|
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
|
+
export declare class StringConcatExpr extends Expr2<StringValue, StringValue, StringValue> {
|
|
6
6
|
constructor(left: Expr<StringValue>, right: Expr<StringValue>);
|
|
7
|
-
|
|
7
|
+
calculateResult(ctx: IfcExpressionContext, localCtx: Map<string, any>, left: StringValue, right: StringValue): StringValue;
|
|
8
8
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
export declare class StringLiteralExpr extends
|
|
1
|
+
import { IfcExpressionContext } from "../../context/IfcExpressionContext.js";
|
|
2
|
+
import { StringValue } from "../../value/StringValue.js";
|
|
3
|
+
import { LiteralExpr } from "../LiteralExpr";
|
|
4
|
+
export declare class StringLiteralExpr extends LiteralExpr<StringValue, StringValue> {
|
|
5
5
|
constructor(value: StringValue);
|
|
6
|
-
|
|
6
|
+
calculateResult(ctx: IfcExpressionContext): StringValue;
|
|
7
7
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IfcExpressionContext } from "../../context/IfcExpressionContext";
|
|
2
|
+
import { ExprEvalError } from "../ExprEvalResult";
|
|
3
|
+
import { Expr } from "../Expr";
|
|
4
|
+
import { Expr0 } from "../Expr0";
|
|
5
|
+
import { ArrayValue } from "../../value/ArrayValue";
|
|
6
|
+
import { LiteralValue } from "../../value/LiteralValue";
|
|
7
|
+
export declare class ArrayExpr extends Expr0<ArrayValue> {
|
|
8
|
+
private elements;
|
|
9
|
+
constructor(elements: Array<Expr<LiteralValue>>);
|
|
10
|
+
protected doEvaluate(ctx: IfcExpressionContext, localCtx: Map<string, any>): ExprEvalError | ArrayValue;
|
|
11
|
+
}
|
|
@@ -13,15 +13,16 @@ export default class IfcExpressionLexer extends Lexer {
|
|
|
13
13
|
static readonly T__10 = 11;
|
|
14
14
|
static readonly INT = 12;
|
|
15
15
|
static readonly FLOAT = 13;
|
|
16
|
-
static readonly
|
|
17
|
-
static readonly
|
|
18
|
-
static readonly
|
|
19
|
-
static readonly
|
|
20
|
-
static readonly
|
|
21
|
-
static readonly
|
|
22
|
-
static readonly
|
|
23
|
-
static readonly
|
|
24
|
-
static readonly
|
|
16
|
+
static readonly SIGN = 14;
|
|
17
|
+
static readonly PROP = 15;
|
|
18
|
+
static readonly ELEM = 16;
|
|
19
|
+
static readonly RESERVED_ATTRIBUTE_NAME = 17;
|
|
20
|
+
static readonly RESERVED_RELATION_NAME = 18;
|
|
21
|
+
static readonly QUOTED_STRING = 19;
|
|
22
|
+
static readonly BRACKETED_STRING = 20;
|
|
23
|
+
static readonly IDENTIFIER = 21;
|
|
24
|
+
static readonly WS = 22;
|
|
25
|
+
static readonly NEWLINE = 23;
|
|
25
26
|
static readonly EOF: number;
|
|
26
27
|
static readonly channelNames: string[];
|
|
27
28
|
static readonly literalNames: (string | null)[];
|
|
@@ -15,15 +15,16 @@ export default class IfcExpressionParser extends Parser {
|
|
|
15
15
|
static readonly T__10 = 11;
|
|
16
16
|
static readonly INT = 12;
|
|
17
17
|
static readonly FLOAT = 13;
|
|
18
|
-
static readonly
|
|
19
|
-
static readonly
|
|
20
|
-
static readonly
|
|
21
|
-
static readonly
|
|
22
|
-
static readonly
|
|
23
|
-
static readonly
|
|
24
|
-
static readonly
|
|
25
|
-
static readonly
|
|
26
|
-
static readonly
|
|
18
|
+
static readonly SIGN = 14;
|
|
19
|
+
static readonly PROP = 15;
|
|
20
|
+
static readonly ELEM = 16;
|
|
21
|
+
static readonly RESERVED_ATTRIBUTE_NAME = 17;
|
|
22
|
+
static readonly RESERVED_RELATION_NAME = 18;
|
|
23
|
+
static readonly QUOTED_STRING = 19;
|
|
24
|
+
static readonly BRACKETED_STRING = 20;
|
|
25
|
+
static readonly IDENTIFIER = 21;
|
|
26
|
+
static readonly WS = 22;
|
|
27
|
+
static readonly NEWLINE = 23;
|
|
27
28
|
static readonly EOF: number;
|
|
28
29
|
static readonly RULE_expr = 0;
|
|
29
30
|
static readonly RULE_numExpr = 1;
|
package/dist/mjs/ExprVisitor.js
CHANGED
|
@@ -1,21 +1,23 @@
|
|
|
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 { isNullish, 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
|
+
import { ArrayExpr } from "./expression/structure/ArrayExpr";
|
|
20
|
+
import { FunctionExpr } from "./expression/function/FunctionExpr";
|
|
19
21
|
export class ExprVisitor extends IfcExpressionVisitor {
|
|
20
22
|
constructor() {
|
|
21
23
|
super();
|
|
@@ -28,10 +30,10 @@ export class ExprVisitor extends IfcExpressionVisitor {
|
|
|
28
30
|
return new AttributeReferenceExpr(objectRefExpr, nestedObjectChainExpr);
|
|
29
31
|
};
|
|
30
32
|
this.visitObjectRef = (ctx) => {
|
|
31
|
-
if (
|
|
33
|
+
if (isPresent(ctx.PROP())) {
|
|
32
34
|
return new PropObjectReferenceExpr();
|
|
33
35
|
}
|
|
34
|
-
else if (
|
|
36
|
+
else if (isPresent(ctx.ELEM())) {
|
|
35
37
|
return new ElemObjectReferenceExpr();
|
|
36
38
|
}
|
|
37
39
|
this.failNode(ctx);
|
|
@@ -67,12 +69,12 @@ export class ExprVisitor extends IfcExpressionVisitor {
|
|
|
67
69
|
};
|
|
68
70
|
this.visitNumLiteral = (ctx) => {
|
|
69
71
|
let val = ctx.INT();
|
|
70
|
-
if (
|
|
71
|
-
return new NumericLiteralExpr(new NumericValue(new Decimal(
|
|
72
|
+
if (isPresent(val)) {
|
|
73
|
+
return new NumericLiteralExpr(new NumericValue(new Decimal(ctx.getText())));
|
|
72
74
|
}
|
|
73
75
|
val = ctx.FLOAT();
|
|
74
|
-
if (
|
|
75
|
-
return new NumericLiteralExpr(new NumericValue(new Decimal(
|
|
76
|
+
if (isPresent(val)) {
|
|
77
|
+
return new NumericLiteralExpr(new NumericValue(new Decimal(ctx.getText())));
|
|
76
78
|
}
|
|
77
79
|
this.failNode(ctx);
|
|
78
80
|
};
|
|
@@ -105,6 +107,38 @@ export class ExprVisitor extends IfcExpressionVisitor {
|
|
|
105
107
|
this.visitNumLit = (ctx) => {
|
|
106
108
|
return this.visit(ctx.getChild(0));
|
|
107
109
|
};
|
|
110
|
+
/*================================================
|
|
111
|
+
* ArrayExpr
|
|
112
|
+
*===============================================*/
|
|
113
|
+
this.visitArray = (ctx) => {
|
|
114
|
+
return new ArrayExpr(this.collectArrayElements(ctx.arrayElementList()));
|
|
115
|
+
};
|
|
116
|
+
this.collectArrayElements = (ctx) => {
|
|
117
|
+
const first = this.visit(ctx.expr());
|
|
118
|
+
const rest = ctx.arrayElementList();
|
|
119
|
+
if (!isNullish(rest)) {
|
|
120
|
+
const arr = this.collectArrayElements(rest);
|
|
121
|
+
arr.unshift(first);
|
|
122
|
+
return arr;
|
|
123
|
+
}
|
|
124
|
+
return [first];
|
|
125
|
+
};
|
|
126
|
+
/*================================================
|
|
127
|
+
* FuncExpr
|
|
128
|
+
*===============================================*/
|
|
129
|
+
this.visitFunctionCall = (ctx) => {
|
|
130
|
+
return new FunctionExpr(ctx._name.text, this.collectFunctionArguments(ctx.exprList()));
|
|
131
|
+
};
|
|
132
|
+
this.collectFunctionArguments = (ctx) => {
|
|
133
|
+
const first = this.visit(ctx.expr());
|
|
134
|
+
const rest = ctx.exprList();
|
|
135
|
+
if (!isNullish(rest)) {
|
|
136
|
+
const arr = this.collectFunctionArguments(rest);
|
|
137
|
+
arr.unshift(first);
|
|
138
|
+
return arr;
|
|
139
|
+
}
|
|
140
|
+
return [first];
|
|
141
|
+
};
|
|
108
142
|
}
|
|
109
143
|
stripBrackets(name) {
|
|
110
144
|
if (name.startsWith("{")) {
|
|
@@ -1 +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"]}
|
|
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 ArrayContext,\n ArrayElementListContext,\n AttributeRefContext,\n ExprContext,\n ExprListContext,\n FunctionCallContext,\n NestedObjectChainEndContext,\n NestedObjectChainInnerContext,\n NumAddSubContext,\n NumAttributeRefContext,\n NumLitContext,\n NumLiteralContext,\n NumMulDivContext,\n NumParensContext,\n ObjectRefContext,\n StringAttributeRefContext,\n StringConcatContext,\n StringLiteralContext,\n} from \"./gen/parser/IfcExpressionParser.js\";\nimport { Expr } from \"./expression/Expr.js\";\nimport { isNullish, isPresent } from \"./IfcExpressionUtils.js\";\nimport Decimal from \"decimal.js\";\nimport { PlusExpr } from \"./expression/numeric/PlusExpr.js\";\nimport { MinusExpr } from \"./expression/numeric/MinusExpr.js\";\nimport { ParserRuleContext } from \"antlr4\";\nimport { MultiplyExpr } from \"./expression/numeric/MultiplyExpr.js\";\nimport { DivideExpr } from \"./expression/numeric/DivideExpr.js\";\nimport { NumParenthesisExpr } from \"./expression/numeric/NumParenthesisExpr.js\";\nimport { AttributeReferenceExpr } from \"./expression/reference/AttributeReferenceExpr.js\";\nimport { PropObjectReferenceExpr } from \"./expression/reference/PropObjectReferenceExpr.js\";\nimport { ElemObjectReferenceExpr } from \"./expression/reference/ElemObjectReferenceExpr.js\";\nimport { NestedObjectChainExpr } from \"./expression/reference/NestedObjectChainExpr.js\";\nimport { NestedObjectChainEndExpr } from \"./expression/reference/NestedObjectChainEndExpr.js\";\nimport { NumericValue } from \"./value/NumericValue.js\";\nimport { StringValue } from \"./value/StringValue.js\";\nimport { StringLiteralExpr } from \"./expression/string/StringLiteralExpr.js\";\nimport { StringConcatExpr } from \"./expression/string/StringConcatExpr.js\";\nimport { ArrayExpr } from \"./expression/structure/ArrayExpr\";\nimport { FunctionExpr } from \"./expression/function/FunctionExpr\";\n\nexport class ExprVisitor extends IfcExpressionVisitor<Expr<any>> {\n constructor() {\n super();\n }\n\n /*================================================\n * AttributeRef\n *==============================================*/\n\n visitAttributeRef: (ctx: AttributeRefContext) => Expr<any> = (ctx) => {\n const objectRefExpr = this.visit(ctx.objectRef());\n const nestedObjectChainExpr = this.visit(ctx.nestedObjectChain());\n return new AttributeReferenceExpr(\n objectRefExpr,\n nestedObjectChainExpr as NestedObjectChainExpr\n );\n };\n\n visitObjectRef: (ctx: ObjectRefContext) => Expr<any> = (ctx) => {\n if (isPresent(ctx.PROP())) {\n return new PropObjectReferenceExpr();\n } else if (isPresent(ctx.ELEM())) {\n return new ElemObjectReferenceExpr();\n }\n this.failNode(ctx);\n };\n\n visitNestedObjectChainInner: (\n ctx: NestedObjectChainInnerContext\n ) => Expr<any> = (ctx) => {\n let name = ctx.namedRef().getChild(0).getText();\n name = this.stripBrackets(name);\n return new NestedObjectChainExpr(\n name,\n this.visit(ctx.nestedObjectChain()) as NestedObjectChainExpr\n );\n };\n\n visitNestedObjectChainEnd: (ctx: NestedObjectChainEndContext) => Expr<any> = (\n ctx\n ) => {\n let name = ctx.RESERVED_ATTRIBUTE_NAME().getText();\n return new NestedObjectChainEndExpr(name);\n };\n\n private stripBrackets(name: string) {\n if (name.startsWith(\"{\")) {\n return name.substring(1, name.length - 1);\n }\n return name;\n }\n\n /*================================================\n * StringExpr\n *===============================================*/\n\n visitStringLiteral: (ctx: StringLiteralContext) => Expr<any> = (ctx) => {\n const quotedString = ctx.QUOTED_STRING().getText();\n const text = quotedString.substring(1, quotedString.length - 1);\n return new StringLiteralExpr(new StringValue(text));\n };\n\n visitStringAttributeRef: (ctx: StringAttributeRefContext) => Expr<any> = (\n ctx\n ) => {\n return this.visit(ctx.getChild(0));\n };\n\n visitStringConcat: (ctx: StringConcatContext) => Expr<any> = (ctx) => {\n return new StringConcatExpr(this.visit(ctx._left), this.visit(ctx._right));\n };\n\n /*================================================\n * NumExpr\n *===============================================*/\n\n visitNumAttributeRef: (ctx: NumAttributeRefContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.getChild(0));\n };\n\n visitNumLiteral: (ctx: NumLiteralContext) => Expr<any> = (ctx) => {\n let val = ctx.INT();\n if (isPresent(val)) {\n return new NumericLiteralExpr(\n new NumericValue(new Decimal(ctx.getText()))\n );\n }\n val = ctx.FLOAT();\n if (isPresent(val)) {\n return new NumericLiteralExpr(\n new NumericValue(new Decimal(ctx.getText()))\n );\n }\n this.failNode(ctx);\n };\n\n visitNumAddSub: (ctx: NumAddSubContext) => Expr<any> = (ctx) => {\n switch (ctx._op.text) {\n case \"+\":\n return new PlusExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n case \"-\":\n return new MinusExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n default:\n this.failNode(ctx);\n }\n };\n\n visitNumMulDiv: (ctx: NumMulDivContext) => Expr<any> = (ctx) => {\n switch (ctx._op.text) {\n case \"*\":\n return new MultiplyExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n case \"/\":\n return new DivideExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n default:\n this.failNode(ctx);\n }\n };\n\n visitNumParens: (ctx: NumParensContext) => Expr<any> = (ctx) => {\n return new NumParenthesisExpr(this.visit(ctx.getChild(1)));\n };\n\n visitExpr: (ctx: ExprContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.getChild(0));\n };\n\n visitNumLit: (ctx: NumLitContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.getChild(0));\n };\n\n /*================================================\n * ArrayExpr\n *===============================================*/\n\n visitArray: (ctx: ArrayContext) => Expr<any> = (ctx) => {\n return new ArrayExpr(this.collectArrayElements(ctx.arrayElementList()));\n };\n\n collectArrayElements: (ctx: ArrayElementListContext) => Array<Expr<any>> = (\n ctx\n ) => {\n const first = this.visit(ctx.expr());\n const rest = ctx.arrayElementList();\n if (!isNullish(rest)) {\n const arr = this.collectArrayElements(rest);\n arr.unshift(first);\n return arr;\n }\n return [first];\n };\n\n /*================================================\n * FuncExpr\n *===============================================*/\n\n visitFunctionCall: (ctx: FunctionCallContext) => Expr<any> = (ctx) => {\n return new FunctionExpr(\n ctx._name.text,\n this.collectFunctionArguments(ctx.exprList())\n );\n };\n\n collectFunctionArguments: (ctx: ExprListContext) => Array<Expr<any>> = (\n ctx\n ) => {\n const first = this.visit(ctx.expr());\n const rest = ctx.exprList();\n if (!isNullish(rest)) {\n const arr = this.collectFunctionArguments(rest);\n arr.unshift(first);\n return arr;\n }\n return [first];\n };\n\n private failNode(ctx: ParserRuleContext) {\n throw new Error(`Cannot parse (sub)expression ${ctx.getText()}`);\n }\n}\n"]}
|
|
@@ -1,31 +1,30 @@
|
|
|
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 { IfcExpressionEvaluationException } from "./expression/IfcExpressionEvaluationException";
|
|
20
|
-
|
|
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 { isNullish, isPresent } from "./IfcExpressionUtils.js";
|
|
5
|
+
import { IfcElementAccessor } from "./context/IfcElementAccessor.js";
|
|
6
|
+
import { StringValue } from "./value/StringValue.js";
|
|
7
|
+
import { NumericValue } from "./value/NumericValue.js";
|
|
8
|
+
import { BooleanValue } from "./value/BooleanValue.js";
|
|
9
|
+
import { LogicalValue } from "./value/LogicalValue.js";
|
|
10
|
+
import { ReferenceValue } from "./value/ReferenceValue.js";
|
|
11
|
+
import { IfcPropertySetAccessor } from "./context/IfcPropertySetAccessor.js";
|
|
12
|
+
import { IfcPropertyAccessor } from "./context/IfcPropertyAccessor.js";
|
|
13
|
+
import { IfcRootObjectAccessor } from "./context/IfcRootObjectAccessor.js";
|
|
14
|
+
import { IfcTypeObjectAccessor } from "./context/IfcTypeObjectAccessor.js";
|
|
15
|
+
import { NamedObjectAccessor } from "./context/NamedObjectAccessor.js";
|
|
16
|
+
import IfcExpressionParser from "./gen/parser/IfcExpressionParser.js";
|
|
17
|
+
import IfcExpressionVisitor from "./gen/parser/IfcExpressionVisitor.js";
|
|
18
|
+
import IfcExpressionLexer from "./gen/parser/IfcExpressionLexer.js";
|
|
19
|
+
import { IfcExpressionEvaluationException } from "./expression/IfcExpressionEvaluationException.js";
|
|
20
|
+
export { IfcElementAccessor, StringValue, BooleanValue, LogicalValue, NumericValue, ReferenceValue, IfcPropertySetAccessor, IfcPropertyAccessor, IfcRootObjectAccessor, IfcTypeObjectAccessor, NamedObjectAccessor, ExprVisitor, IfcExpressionEvaluationException, IfcExpressionErrorListener, IfcExpressionVisitor, isPresent, isNullish, };
|
|
22
21
|
export class IfcExpression {
|
|
23
22
|
static parse(input, errorListener) {
|
|
24
23
|
const chars = new CharStream(input); // replace this with a FileStream as required
|
|
25
24
|
const lexer = new IfcExpressionLexer(chars);
|
|
26
25
|
const tokens = new CommonTokenStream(lexer);
|
|
27
26
|
const parser = new IfcExpressionParser(tokens);
|
|
28
|
-
if (
|
|
27
|
+
if (isPresent(errorListener)) {
|
|
29
28
|
parser.removeErrorListeners();
|
|
30
29
|
parser.addErrorListener(errorListener);
|
|
31
30
|
}
|
|
@@ -38,7 +37,7 @@ export class IfcExpression {
|
|
|
38
37
|
throw errorListener.getException();
|
|
39
38
|
}
|
|
40
39
|
const parsedExpression = this.extractExprTree(tree);
|
|
41
|
-
return parsedExpression.evaluate(context);
|
|
40
|
+
return parsedExpression.evaluate(context, new Map());
|
|
42
41
|
}
|
|
43
42
|
static extractExprTree(tree) {
|
|
44
43
|
const visitor = new ExprVisitor();
|
|
@@ -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":"AAAA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAwB,MAAM,QAAQ,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAI/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAErE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,mBAEN,MAAM,qCAAqC,CAAC;AAC7C,OAAO,oBAAoB,MAAM,sCAAsC,CAAC;AACxE,OAAO,kBAAkB,MAAM,oCAAoC,CAAC;AAEpE,OAAO,EAAE,gCAAgC,EAAE,MAAM,kDAAkD,CAAC;AAKpG,OAAO,EACL,kBAAkB,EAGlB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,YAAY,EAEZ,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EAGnB,WAAW,EACX,gCAAgC,EAChC,0BAA0B,EAC1B,oBAAoB,EACpB,SAAS,EACT,SAAS,GACV,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,SAAS,CAAC,aAAa,CAAC,EAAE;YAC5B,MAAM,CAAC,oBAAoB,EAAE,CAAC;YAC9B,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;SACxC;QACD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAEM,MAAM,CAAC,QAAQ,CACpB,UAAkB,EAClB,OAA6B;QAE7B,MAAM,aAAa,GAAG,IAAI,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,EAAE,IAAI,GAAG,EAAe,CAAC,CAAC;IACpE,CAAC;IAEO,MAAM,CAAC,eAAe,CAC5B,IAAiB;QAEjB,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.js\";\nimport { IfcExpressionErrorListener } from \"./IfcExpressionErrorListener.js\";\nimport { isNullish, isPresent } from \"./IfcExpressionUtils.js\";\nimport { IfcExpressionContext } from \"./context/IfcExpressionContext.js\";\nimport { Expr } from \"./expression/Expr.js\";\n\nimport { IfcElementAccessor } from \"./context/IfcElementAccessor.js\";\nimport { Value } from \"./value/Value.js\";\nimport { StringValue } from \"./value/StringValue.js\";\nimport { NumericValue } from \"./value/NumericValue.js\";\nimport { BooleanValue } from \"./value/BooleanValue.js\";\nimport { LogicalValue } from \"./value/LogicalValue.js\";\nimport { LiteralValue } from \"./value/LiteralValue.js\";\nimport { ReferenceValue } from \"./value/ReferenceValue.js\";\nimport { IfcPropertySetAccessor } from \"./context/IfcPropertySetAccessor.js\";\nimport { IfcPropertyAccessor } from \"./context/IfcPropertyAccessor.js\";\nimport { IfcRootObjectAccessor } from \"./context/IfcRootObjectAccessor.js\";\nimport { IfcTypeObjectAccessor } from \"./context/IfcTypeObjectAccessor.js\";\nimport { NamedObjectAccessor } from \"./context/NamedObjectAccessor.js\";\nimport IfcExpressionParser, {\n ExprContext,\n} from \"./gen/parser/IfcExpressionParser.js\";\nimport IfcExpressionVisitor from \"./gen/parser/IfcExpressionVisitor.js\";\nimport IfcExpressionLexer from \"./gen/parser/IfcExpressionLexer.js\";\nimport { ObjectAccessor } from \"./context/ObjectAccessor.js\";\nimport { IfcExpressionEvaluationException } from \"./expression/IfcExpressionEvaluationException.js\";\nimport type { LiteralValueAnyArity } from \"./value/LiteralValueAnyArity.js\";\nimport type { PrimitiveValueType } from \"./value/PrimitiveValueType.js\";\nimport { ExprEvalResult } from \"./expression/ExprEvalResult\";\n\nexport {\n IfcElementAccessor,\n IfcExpressionContext,\n Value,\n StringValue,\n BooleanValue,\n LogicalValue,\n NumericValue,\n LiteralValue,\n ReferenceValue,\n IfcPropertySetAccessor,\n IfcPropertyAccessor,\n IfcRootObjectAccessor,\n IfcTypeObjectAccessor,\n NamedObjectAccessor,\n ObjectAccessor,\n Expr,\n ExprVisitor,\n IfcExpressionEvaluationException,\n IfcExpressionErrorListener,\n IfcExpressionVisitor,\n isPresent,\n isNullish,\n};\n\nexport type { PrimitiveValueType, LiteralValueAnyArity };\n\nexport class IfcExpression {\n public static parse(\n input: string,\n errorListener?: ErrorListener<Token>\n ): ExprContext {\n const chars = new CharStream(input); // replace this with a FileStream as required\n const lexer = new IfcExpressionLexer(chars);\n const tokens = new CommonTokenStream(lexer);\n const parser = new IfcExpressionParser(tokens);\n if (isPresent(errorListener)) {\n parser.removeErrorListeners();\n parser.addErrorListener(errorListener);\n }\n return parser.expr();\n }\n\n public static evaluate(\n expression: string,\n context: IfcExpressionContext\n ): ExprEvalResult<any> {\n const errorListener = new IfcExpressionErrorListener();\n const tree: ExprContext = IfcExpression.parse(expression, errorListener);\n if (errorListener.isErrorOccurred()) {\n throw errorListener.getException();\n }\n const parsedExpression = this.extractExprTree(tree);\n return parsedExpression.evaluate(context, new Map<string, any>());\n }\n\n private static extractExprTree(\n tree: ExprContext\n ): Expr<LiteralValueAnyArity> {\n const visitor = new ExprVisitor();\n return visitor.visit(tree);\n }\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ErrorListener } from "antlr4";
|
|
2
|
-
import {
|
|
3
|
-
import { SyntaxErrorException } from "./SyntaxErrorException";
|
|
2
|
+
import { isPresent } from "./IfcExpressionUtils.js";
|
|
3
|
+
import { SyntaxErrorException } from "./SyntaxErrorException.js";
|
|
4
4
|
export class IfcExpressionErrorListener extends ErrorListener {
|
|
5
5
|
constructor() {
|
|
6
6
|
super(...arguments);
|
|
@@ -10,7 +10,7 @@ export class IfcExpressionErrorListener extends ErrorListener {
|
|
|
10
10
|
this.exception = new SyntaxErrorException(offendingSymbol, line, column, msg);
|
|
11
11
|
}
|
|
12
12
|
isErrorOccurred() {
|
|
13
|
-
return
|
|
13
|
+
return isPresent(this.exception);
|
|
14
14
|
}
|
|
15
15
|
getException() {
|
|
16
16
|
return this.exception;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["IfcExpressionErrorListener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA2C,MAAM,QAAQ,CAAC;AAChF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"sources":["IfcExpressionErrorListener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA2C,MAAM,QAAQ,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,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,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF","file":"IfcExpressionErrorListener.js","sourcesContent":["import { ErrorListener, RecognitionException, Recognizer, Token } from \"antlr4\";\nimport { isPresent } from \"./IfcExpressionUtils.js\";\nimport { SyntaxErrorException } from \"./SyntaxErrorException.js\";\n\nexport class IfcExpressionErrorListener extends ErrorListener<Token> {\n private exception: SyntaxErrorException = null;\n\n syntaxError(\n recognizer: Recognizer<Token>,\n offendingSymbol: Token,\n line: number,\n column: number,\n msg: string,\n e: RecognitionException | undefined\n ) {\n this.exception = new SyntaxErrorException(\n offendingSymbol,\n line,\n column,\n msg\n );\n }\n\n public isErrorOccurred(): boolean {\n return isPresent(this.exception);\n }\n\n public getException(): SyntaxErrorException {\n return this.exception;\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["IfcExpressionUtils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAC,GAAQ;IAChC,OAAO,OAAO,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAQ;IAChC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC","file":"IfcExpressionUtils.js","sourcesContent":["export function isNullish(val: any) {\n return typeof val === \"undefined\" || val === null;\n}\n\nexport function isPresent(val: any): boolean {\n return !isNullish(val);\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isPresent } from "./IfcExpressionUtils.js";
|
|
2
2
|
export class SyntaxErrorException extends Error {
|
|
3
3
|
constructor(offendingSymbol, line, column, msg) {
|
|
4
4
|
super(`Syntax Error in line ${line}, column ${column}` +
|
|
5
|
-
(
|
|
5
|
+
(isPresent(msg) ? `: ${msg}` : ""));
|
|
6
6
|
this._offendingSymbol = offendingSymbol;
|
|
7
7
|
this._line = line;
|
|
8
8
|
this._column = column;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["SyntaxErrorException.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"sources":["SyntaxErrorException.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAK7C,YACE,eAAsB,EACtB,IAAY,EACZ,MAAc,EACd,GAAW;QAEX,KAAK,CACH,wBAAwB,IAAI,YAAY,MAAM,EAAE;YAC9C,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACrC,CAAC;QACF,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF","file":"SyntaxErrorException.js","sourcesContent":["import { Token } from \"antlr4\";\nimport { isPresent } from \"./IfcExpressionUtils.js\";\n\nexport class SyntaxErrorException extends Error {\n private readonly _offendingSymbol: Token;\n private readonly _line: number;\n private readonly _column: number;\n\n constructor(\n offendingSymbol: Token,\n line: number,\n column: number,\n msg: string\n ) {\n super(\n `Syntax Error in line ${line}, column ${column}` +\n (isPresent(msg) ? `: ${msg}` : \"\")\n );\n this._offendingSymbol = offendingSymbol;\n this._line = line;\n this._column = column;\n }\n\n get offendingSymbol(): Token {\n return this._offendingSymbol;\n }\n\n get line(): number {\n return this._line;\n }\n\n get column(): number {\n return this._column;\n }\n}\n"]}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { IfcRootObjectAccessor } from "./IfcRootObjectAccessor";
|
|
2
|
-
import { StringValue } from "../value/StringValue";
|
|
3
|
-
import {
|
|
1
|
+
import { IfcRootObjectAccessor } from "./IfcRootObjectAccessor.js";
|
|
2
|
+
import { StringValue } from "../value/StringValue.js";
|
|
3
|
+
import { isPresent } from "../IfcExpressionUtils.js";
|
|
4
4
|
export class IfcElementAccessor extends IfcRootObjectAccessor {
|
|
5
5
|
getNestedObjectAccessor(name) {
|
|
6
6
|
if (name === "type") {
|
|
7
7
|
return this.getTypeObjectAccessor();
|
|
8
8
|
}
|
|
9
|
-
let val = this.
|
|
10
|
-
if (
|
|
9
|
+
let val = this.getIfcPropertySetAccessor(name);
|
|
10
|
+
if (isPresent(val)) {
|
|
11
11
|
return val;
|
|
12
12
|
}
|
|
13
|
-
return this.
|
|
13
|
+
return this.getIfcPropertyAccessor(name);
|
|
14
14
|
}
|
|
15
15
|
getAttribute(name) {
|
|
16
16
|
switch (name) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["context/IfcElementAccessor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"sources":["context/IfcElementAccessor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAInE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAGrD,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,yBAAyB,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;YAClB,OAAO,GAAG,CAAC;SACZ;QACD,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC3C,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.js\";\nimport { IfcRootObjectAccessor } from \"./IfcRootObjectAccessor.js\";\nimport { IfcTypeObjectAccessor } from \"./IfcTypeObjectAccessor.js\";\nimport { IfcPropertyAccessor } from \"./IfcPropertyAccessor.js\";\nimport { LiteralValueAnyArity } from \"../value/LiteralValueAnyArity.js\";\nimport { StringValue } from \"../value/StringValue.js\";\nimport { isPresent } from \"../IfcExpressionUtils.js\";\nimport { IfcPropertySetAccessor } from \"./IfcPropertySetAccessor.js\";\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.getIfcPropertySetAccessor(name);\n if (isPresent(val)) {\n return val;\n }\n return this.getIfcPropertyAccessor(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"]}
|
|
@@ -1 +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"]}
|
|
1
|
+
{"version":3,"sources":["context/IfcExpressionContext.ts"],"names":[],"mappings":"","file":"context/IfcExpressionContext.js","sourcesContent":["import { IfcPropertyAccessor } from \"./IfcPropertyAccessor.js\";\nimport { IfcElementAccessor } from \"./IfcElementAccessor.js\";\n\nexport interface IfcExpressionContext {\n resolvePropRef(): IfcPropertyAccessor;\n\n resolveElemRef(): IfcElementAccessor;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["context/IfcPropertyAccessor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"sources":["context/IfcPropertyAccessor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAI/D,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.js\";\nimport { NamedObjectAccessor } from \"./NamedObjectAccessor.js\";\nimport { IfcPropertySetAccessor } from \"./IfcPropertySetAccessor.js\";\nimport { LiteralValueAnyArity } from \"../value/LiteralValueAnyArity.js\";\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"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IfcRootObjectAccessor } from "./IfcRootObjectAccessor";
|
|
1
|
+
import { IfcRootObjectAccessor } from "./IfcRootObjectAccessor.js";
|
|
2
2
|
export class IfcPropertySetAccessor extends IfcRootObjectAccessor {
|
|
3
3
|
listAttributes() {
|
|
4
4
|
return [...super.listAttributes(), ...this.listIfcProperties()];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["context/IfcPropertySetAccessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"sources":["context/IfcPropertySetAccessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAKnE,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.js\";\nimport { LiteralValueAnyArity } from \"../value/LiteralValueAnyArity.js\";\nimport { IfcPropertyAccessor } from \"./IfcPropertyAccessor.js\";\nimport { ObjectAccessor } from \"./ObjectAccessor.js\";\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"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { NamedObjectAccessor } from "./NamedObjectAccessor";
|
|
2
|
-
import { StringValue } from "../value/StringValue";
|
|
1
|
+
import { NamedObjectAccessor } from "./NamedObjectAccessor.js";
|
|
2
|
+
import { StringValue } from "../value/StringValue.js";
|
|
3
3
|
export class IfcRootObjectAccessor extends NamedObjectAccessor {
|
|
4
4
|
getAttribute(name) {
|
|
5
5
|
switch (name) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["context/IfcRootObjectAccessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"sources":["context/IfcRootObjectAccessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,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.js\";\nimport { LiteralValueAnyArity } from \"../value/LiteralValueAnyArity.js\";\nimport { StringValue } from \"../value/StringValue.js\";\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"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { IfcRootObjectAccessor } from "./IfcRootObjectAccessor";
|
|
2
|
-
import {
|
|
1
|
+
import { IfcRootObjectAccessor } from "./IfcRootObjectAccessor.js";
|
|
2
|
+
import { isPresent } from "../IfcExpressionUtils.js";
|
|
3
3
|
export class IfcTypeObjectAccessor extends IfcRootObjectAccessor {
|
|
4
4
|
getNestedObjectAccessor(name) {
|
|
5
5
|
let val = this.getIfcPropertyAccessor(name);
|
|
6
|
-
if (
|
|
6
|
+
if (isPresent(val)) {
|
|
7
7
|
return val;
|
|
8
8
|
}
|
|
9
9
|
return this.getIfcPropertySetAccessor(name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["context/IfcTypeObjectAccessor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"sources":["context/IfcTypeObjectAccessor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAGrD,MAAM,OAAgB,qBAAsB,SAAQ,qBAAqB;IACvE,uBAAuB,CAAC,IAAY;QAClC,IAAI,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;YAClB,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.js\";\nimport { IfcRootObjectAccessor } from \"./IfcRootObjectAccessor.js\";\nimport { IfcPropertySetAccessor } from \"./IfcPropertySetAccessor.js\";\nimport { isPresent } from \"../IfcExpressionUtils.js\";\nimport { IfcPropertyAccessor } from \"./IfcPropertyAccessor.js\";\n\nexport abstract class IfcTypeObjectAccessor extends IfcRootObjectAccessor {\n getNestedObjectAccessor(name: string): ObjectAccessor | undefined {\n let val = this.getIfcPropertyAccessor(name);\n if (isPresent(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"]}
|