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
package/dist/ExprVisitor.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import IfcExpressionVisitor from "
|
|
2
|
-
import { AttributeRefContext, ExprContext, NestedObjectChainEndContext, NestedObjectChainInnerContext, NumAddSubContext, NumAttributeRefContext, NumLitContext, NumLiteralContext, NumMulDivContext, NumParensContext, ObjectRefContext, StringAttributeRefContext, StringConcatContext, StringLiteralContext } from "
|
|
3
|
-
import { Expr } from "./expression/Expr";
|
|
1
|
+
import IfcExpressionVisitor from "./gen/parser/IfcExpressionVisitor.js";
|
|
2
|
+
import { ArrayContext, ArrayElementListContext, AttributeRefContext, ExprContext, ExprListContext, FunctionCallContext, NestedObjectChainEndContext, NestedObjectChainInnerContext, NumAddSubContext, NumAttributeRefContext, NumLitContext, NumLiteralContext, NumMulDivContext, NumParensContext, ObjectRefContext, StringAttributeRefContext, StringConcatContext, StringLiteralContext } from "./gen/parser/IfcExpressionParser.js";
|
|
3
|
+
import { Expr } from "./expression/Expr.js";
|
|
4
4
|
export declare class ExprVisitor extends IfcExpressionVisitor<Expr<any>> {
|
|
5
5
|
constructor();
|
|
6
6
|
visitAttributeRef: (ctx: AttributeRefContext) => Expr<any>;
|
|
@@ -18,5 +18,9 @@ export declare class ExprVisitor extends IfcExpressionVisitor<Expr<any>> {
|
|
|
18
18
|
visitNumParens: (ctx: NumParensContext) => Expr<any>;
|
|
19
19
|
visitExpr: (ctx: ExprContext) => Expr<any>;
|
|
20
20
|
visitNumLit: (ctx: NumLitContext) => Expr<any>;
|
|
21
|
+
visitArray: (ctx: ArrayContext) => Expr<any>;
|
|
22
|
+
collectArrayElements: (ctx: ArrayElementListContext) => Array<Expr<any>>;
|
|
23
|
+
visitFunctionCall: (ctx: FunctionCallContext) => Expr<any>;
|
|
24
|
+
collectFunctionArguments: (ctx: ExprListContext) => Array<Expr<any>>;
|
|
21
25
|
private failNode;
|
|
22
26
|
}
|
package/dist/IfcExpression.d.ts
CHANGED
|
@@ -1,30 +1,33 @@
|
|
|
1
1
|
import { ErrorListener, Token } from "antlr4";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import IfcExpressionVisitor from "
|
|
22
|
-
import
|
|
23
|
-
import
|
|
24
|
-
|
|
2
|
+
import { ExprVisitor } from "./ExprVisitor.js";
|
|
3
|
+
import { IfcExpressionErrorListener } from "./IfcExpressionErrorListener.js";
|
|
4
|
+
import { isNullish, isPresent } from "./IfcExpressionUtils.js";
|
|
5
|
+
import { IfcExpressionContext } from "./context/IfcExpressionContext.js";
|
|
6
|
+
import { Expr } from "./expression/Expr.js";
|
|
7
|
+
import { IfcElementAccessor } from "./context/IfcElementAccessor.js";
|
|
8
|
+
import { Value } from "./value/Value.js";
|
|
9
|
+
import { StringValue } from "./value/StringValue.js";
|
|
10
|
+
import { NumericValue } from "./value/NumericValue.js";
|
|
11
|
+
import { BooleanValue } from "./value/BooleanValue.js";
|
|
12
|
+
import { LogicalValue } from "./value/LogicalValue.js";
|
|
13
|
+
import { LiteralValue } from "./value/LiteralValue.js";
|
|
14
|
+
import { ReferenceValue } from "./value/ReferenceValue.js";
|
|
15
|
+
import { IfcPropertySetAccessor } from "./context/IfcPropertySetAccessor.js";
|
|
16
|
+
import { IfcPropertyAccessor } from "./context/IfcPropertyAccessor.js";
|
|
17
|
+
import { IfcRootObjectAccessor } from "./context/IfcRootObjectAccessor.js";
|
|
18
|
+
import { IfcTypeObjectAccessor } from "./context/IfcTypeObjectAccessor.js";
|
|
19
|
+
import { NamedObjectAccessor } from "./context/NamedObjectAccessor.js";
|
|
20
|
+
import { ExprContext } from "./gen/parser/IfcExpressionParser.js";
|
|
21
|
+
import IfcExpressionVisitor from "./gen/parser/IfcExpressionVisitor.js";
|
|
22
|
+
import { ObjectAccessor } from "./context/ObjectAccessor.js";
|
|
23
|
+
import { IfcExpressionEvaluationException } from "./expression/IfcExpressionEvaluationException.js";
|
|
24
|
+
import type { LiteralValueAnyArity } from "./value/LiteralValueAnyArity.js";
|
|
25
|
+
import type { PrimitiveValueType } from "./value/PrimitiveValueType.js";
|
|
26
|
+
import { ExprEvalResult } from "./expression/ExprEvalResult";
|
|
27
|
+
export { IfcElementAccessor, IfcExpressionContext, Value, StringValue, BooleanValue, LogicalValue, NumericValue, LiteralValue, ReferenceValue, IfcPropertySetAccessor, IfcPropertyAccessor, IfcRootObjectAccessor, IfcTypeObjectAccessor, NamedObjectAccessor, ObjectAccessor, Expr, ExprVisitor, IfcExpressionEvaluationException, IfcExpressionErrorListener, IfcExpressionVisitor, isPresent, isNullish, };
|
|
25
28
|
export type { PrimitiveValueType, LiteralValueAnyArity };
|
|
26
29
|
export declare class IfcExpression {
|
|
27
30
|
static parse(input: string, errorListener?: ErrorListener<Token>): ExprContext;
|
|
28
|
-
static evaluate(expression: string, context: IfcExpressionContext):
|
|
31
|
+
static evaluate(expression: string, context: IfcExpressionContext): ExprEvalResult<any>;
|
|
29
32
|
private static extractExprTree;
|
|
30
33
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ErrorListener, RecognitionException, Recognizer, Token } from "antlr4";
|
|
2
|
-
import { SyntaxErrorException } from "./SyntaxErrorException";
|
|
2
|
+
import { SyntaxErrorException } from "./SyntaxErrorException.js";
|
|
3
3
|
export declare class IfcExpressionErrorListener extends ErrorListener<Token> {
|
|
4
4
|
private exception;
|
|
5
5
|
syntaxError(recognizer: Recognizer<Token>, offendingSymbol: Token, line: number, column: number, msg: string, e: RecognitionException | undefined): void;
|
package/dist/cjs/ExprVisitor.js
CHANGED
|
@@ -4,25 +4,27 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.ExprVisitor = void 0;
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
7
|
+
const IfcExpressionVisitor_js_1 = __importDefault(require("./gen/parser/IfcExpressionVisitor.js"));
|
|
8
|
+
const NumericLiteralExpr_js_1 = require("./expression/numeric/NumericLiteralExpr.js");
|
|
9
|
+
const IfcExpressionUtils_js_1 = require("./IfcExpressionUtils.js");
|
|
10
10
|
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
|
|
11
|
+
const PlusExpr_js_1 = require("./expression/numeric/PlusExpr.js");
|
|
12
|
+
const MinusExpr_js_1 = require("./expression/numeric/MinusExpr.js");
|
|
13
|
+
const MultiplyExpr_js_1 = require("./expression/numeric/MultiplyExpr.js");
|
|
14
|
+
const DivideExpr_js_1 = require("./expression/numeric/DivideExpr.js");
|
|
15
|
+
const NumParenthesisExpr_js_1 = require("./expression/numeric/NumParenthesisExpr.js");
|
|
16
|
+
const AttributeReferenceExpr_js_1 = require("./expression/reference/AttributeReferenceExpr.js");
|
|
17
|
+
const PropObjectReferenceExpr_js_1 = require("./expression/reference/PropObjectReferenceExpr.js");
|
|
18
|
+
const ElemObjectReferenceExpr_js_1 = require("./expression/reference/ElemObjectReferenceExpr.js");
|
|
19
|
+
const NestedObjectChainExpr_js_1 = require("./expression/reference/NestedObjectChainExpr.js");
|
|
20
|
+
const NestedObjectChainEndExpr_js_1 = require("./expression/reference/NestedObjectChainEndExpr.js");
|
|
21
|
+
const NumericValue_js_1 = require("./value/NumericValue.js");
|
|
22
|
+
const StringValue_js_1 = require("./value/StringValue.js");
|
|
23
|
+
const StringLiteralExpr_js_1 = require("./expression/string/StringLiteralExpr.js");
|
|
24
|
+
const StringConcatExpr_js_1 = require("./expression/string/StringConcatExpr.js");
|
|
25
|
+
const ArrayExpr_1 = require("./expression/structure/ArrayExpr");
|
|
26
|
+
const FunctionExpr_1 = require("./expression/function/FunctionExpr");
|
|
27
|
+
class ExprVisitor extends IfcExpressionVisitor_js_1.default {
|
|
26
28
|
constructor() {
|
|
27
29
|
super();
|
|
28
30
|
/*================================================
|
|
@@ -31,25 +33,25 @@ class ExprVisitor extends IfcExpressionVisitor_1.default {
|
|
|
31
33
|
this.visitAttributeRef = (ctx) => {
|
|
32
34
|
const objectRefExpr = this.visit(ctx.objectRef());
|
|
33
35
|
const nestedObjectChainExpr = this.visit(ctx.nestedObjectChain());
|
|
34
|
-
return new
|
|
36
|
+
return new AttributeReferenceExpr_js_1.AttributeReferenceExpr(objectRefExpr, nestedObjectChainExpr);
|
|
35
37
|
};
|
|
36
38
|
this.visitObjectRef = (ctx) => {
|
|
37
|
-
if ((0,
|
|
38
|
-
return new
|
|
39
|
+
if ((0, IfcExpressionUtils_js_1.isPresent)(ctx.PROP())) {
|
|
40
|
+
return new PropObjectReferenceExpr_js_1.PropObjectReferenceExpr();
|
|
39
41
|
}
|
|
40
|
-
else if ((0,
|
|
41
|
-
return new
|
|
42
|
+
else if ((0, IfcExpressionUtils_js_1.isPresent)(ctx.ELEM())) {
|
|
43
|
+
return new ElemObjectReferenceExpr_js_1.ElemObjectReferenceExpr();
|
|
42
44
|
}
|
|
43
45
|
this.failNode(ctx);
|
|
44
46
|
};
|
|
45
47
|
this.visitNestedObjectChainInner = (ctx) => {
|
|
46
48
|
let name = ctx.namedRef().getChild(0).getText();
|
|
47
49
|
name = this.stripBrackets(name);
|
|
48
|
-
return new
|
|
50
|
+
return new NestedObjectChainExpr_js_1.NestedObjectChainExpr(name, this.visit(ctx.nestedObjectChain()));
|
|
49
51
|
};
|
|
50
52
|
this.visitNestedObjectChainEnd = (ctx) => {
|
|
51
53
|
let name = ctx.RESERVED_ATTRIBUTE_NAME().getText();
|
|
52
|
-
return new
|
|
54
|
+
return new NestedObjectChainEndExpr_js_1.NestedObjectChainEndExpr(name);
|
|
53
55
|
};
|
|
54
56
|
/*================================================
|
|
55
57
|
* StringExpr
|
|
@@ -57,13 +59,13 @@ class ExprVisitor extends IfcExpressionVisitor_1.default {
|
|
|
57
59
|
this.visitStringLiteral = (ctx) => {
|
|
58
60
|
const quotedString = ctx.QUOTED_STRING().getText();
|
|
59
61
|
const text = quotedString.substring(1, quotedString.length - 1);
|
|
60
|
-
return new
|
|
62
|
+
return new StringLiteralExpr_js_1.StringLiteralExpr(new StringValue_js_1.StringValue(text));
|
|
61
63
|
};
|
|
62
64
|
this.visitStringAttributeRef = (ctx) => {
|
|
63
65
|
return this.visit(ctx.getChild(0));
|
|
64
66
|
};
|
|
65
67
|
this.visitStringConcat = (ctx) => {
|
|
66
|
-
return new
|
|
68
|
+
return new StringConcatExpr_js_1.StringConcatExpr(this.visit(ctx._left), this.visit(ctx._right));
|
|
67
69
|
};
|
|
68
70
|
/*================================================
|
|
69
71
|
* NumExpr
|
|
@@ -73,21 +75,21 @@ class ExprVisitor extends IfcExpressionVisitor_1.default {
|
|
|
73
75
|
};
|
|
74
76
|
this.visitNumLiteral = (ctx) => {
|
|
75
77
|
let val = ctx.INT();
|
|
76
|
-
if ((0,
|
|
77
|
-
return new
|
|
78
|
+
if ((0, IfcExpressionUtils_js_1.isPresent)(val)) {
|
|
79
|
+
return new NumericLiteralExpr_js_1.NumericLiteralExpr(new NumericValue_js_1.NumericValue(new decimal_js_1.default(ctx.getText())));
|
|
78
80
|
}
|
|
79
81
|
val = ctx.FLOAT();
|
|
80
|
-
if ((0,
|
|
81
|
-
return new
|
|
82
|
+
if ((0, IfcExpressionUtils_js_1.isPresent)(val)) {
|
|
83
|
+
return new NumericLiteralExpr_js_1.NumericLiteralExpr(new NumericValue_js_1.NumericValue(new decimal_js_1.default(ctx.getText())));
|
|
82
84
|
}
|
|
83
85
|
this.failNode(ctx);
|
|
84
86
|
};
|
|
85
87
|
this.visitNumAddSub = (ctx) => {
|
|
86
88
|
switch (ctx._op.text) {
|
|
87
89
|
case "+":
|
|
88
|
-
return new
|
|
90
|
+
return new PlusExpr_js_1.PlusExpr(this.visit(ctx.getChild(0)), this.visit(ctx.getChild(2)));
|
|
89
91
|
case "-":
|
|
90
|
-
return new
|
|
92
|
+
return new MinusExpr_js_1.MinusExpr(this.visit(ctx.getChild(0)), this.visit(ctx.getChild(2)));
|
|
91
93
|
default:
|
|
92
94
|
this.failNode(ctx);
|
|
93
95
|
}
|
|
@@ -95,15 +97,15 @@ class ExprVisitor extends IfcExpressionVisitor_1.default {
|
|
|
95
97
|
this.visitNumMulDiv = (ctx) => {
|
|
96
98
|
switch (ctx._op.text) {
|
|
97
99
|
case "*":
|
|
98
|
-
return new
|
|
100
|
+
return new MultiplyExpr_js_1.MultiplyExpr(this.visit(ctx.getChild(0)), this.visit(ctx.getChild(2)));
|
|
99
101
|
case "/":
|
|
100
|
-
return new
|
|
102
|
+
return new DivideExpr_js_1.DivideExpr(this.visit(ctx.getChild(0)), this.visit(ctx.getChild(2)));
|
|
101
103
|
default:
|
|
102
104
|
this.failNode(ctx);
|
|
103
105
|
}
|
|
104
106
|
};
|
|
105
107
|
this.visitNumParens = (ctx) => {
|
|
106
|
-
return new
|
|
108
|
+
return new NumParenthesisExpr_js_1.NumParenthesisExpr(this.visit(ctx.getChild(1)));
|
|
107
109
|
};
|
|
108
110
|
this.visitExpr = (ctx) => {
|
|
109
111
|
return this.visit(ctx.getChild(0));
|
|
@@ -111,6 +113,38 @@ class ExprVisitor extends IfcExpressionVisitor_1.default {
|
|
|
111
113
|
this.visitNumLit = (ctx) => {
|
|
112
114
|
return this.visit(ctx.getChild(0));
|
|
113
115
|
};
|
|
116
|
+
/*================================================
|
|
117
|
+
* ArrayExpr
|
|
118
|
+
*===============================================*/
|
|
119
|
+
this.visitArray = (ctx) => {
|
|
120
|
+
return new ArrayExpr_1.ArrayExpr(this.collectArrayElements(ctx.arrayElementList()));
|
|
121
|
+
};
|
|
122
|
+
this.collectArrayElements = (ctx) => {
|
|
123
|
+
const first = this.visit(ctx.expr());
|
|
124
|
+
const rest = ctx.arrayElementList();
|
|
125
|
+
if (!(0, IfcExpressionUtils_js_1.isNullish)(rest)) {
|
|
126
|
+
const arr = this.collectArrayElements(rest);
|
|
127
|
+
arr.unshift(first);
|
|
128
|
+
return arr;
|
|
129
|
+
}
|
|
130
|
+
return [first];
|
|
131
|
+
};
|
|
132
|
+
/*================================================
|
|
133
|
+
* FuncExpr
|
|
134
|
+
*===============================================*/
|
|
135
|
+
this.visitFunctionCall = (ctx) => {
|
|
136
|
+
return new FunctionExpr_1.FunctionExpr(ctx._name.text, this.collectFunctionArguments(ctx.exprList()));
|
|
137
|
+
};
|
|
138
|
+
this.collectFunctionArguments = (ctx) => {
|
|
139
|
+
const first = this.visit(ctx.expr());
|
|
140
|
+
const rest = ctx.exprList();
|
|
141
|
+
if (!(0, IfcExpressionUtils_js_1.isNullish)(rest)) {
|
|
142
|
+
const arr = this.collectFunctionArguments(rest);
|
|
143
|
+
arr.unshift(first);
|
|
144
|
+
return arr;
|
|
145
|
+
}
|
|
146
|
+
return [first];
|
|
147
|
+
};
|
|
114
148
|
}
|
|
115
149
|
stripBrackets(name) {
|
|
116
150
|
if (name.startsWith("{")) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/ExprVisitor.ts"],"names":[],"mappings":"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","file":"ExprVisitor.js","sourcesContent":["import IfcExpressionVisitor from \"../generated/parser/IfcExpressionVisitor\";\nimport { NumericLiteralExpr } from \"./expression/numeric/NumericLiteralExpr\";\nimport {\n AttributeRefContext,\n ExprContext,\n NestedObjectChainEndContext,\n NestedObjectChainInnerContext,\n NumAddSubContext,\n NumAttributeRefContext,\n NumLitContext,\n NumLiteralContext,\n NumMulDivContext,\n NumParensContext,\n ObjectRefContext,\n StringAttributeRefContext,\n StringConcatContext,\n StringLiteralContext,\n} from \"../generated/parser/IfcExpressionParser\";\nimport { Expr } from \"./expression/Expr\";\nimport { notNullish } from \"./utils\";\nimport Decimal from \"decimal.js\";\nimport { PlusExpr } from \"./expression/numeric/PlusExpr\";\nimport { MinusExpr } from \"./expression/numeric/MinusExpr\";\nimport { ParserRuleContext } from \"antlr4\";\nimport { MultiplyExpr } from \"./expression/numeric/MultiplyExpr\";\nimport { DivideExpr } from \"./expression/numeric/DivideExpr\";\nimport { NumParenthesisExpr } from \"./expression/numeric/NumParenthesisExpr\";\nimport { AttributeReferenceExpr } from \"./expression/reference/AttributeReferenceExpr\";\nimport { PropObjectReferenceExpr } from \"./expression/reference/PropObjectReferenceExpr\";\nimport { ElemObjectReferenceExpr } from \"./expression/reference/ElemObjectReferenceExpr\";\nimport { NestedObjectChainExpr } from \"./expression/reference/NestedObjectChainExpr\";\nimport { NestedObjectChainEndExpr } from \"./expression/reference/NestedObjectChainEndExpr\";\nimport { NumericValue } from \"./value/NumericValue\";\nimport { StringValue } from \"./value/StringValue\";\nimport { StringLiteralExpr } from \"./expression/string/StringLiteralExpr\";\nimport { StringConcatExpr } from \"./expression/string/StringConcatExpr\";\n\nexport class ExprVisitor extends IfcExpressionVisitor<Expr<any>> {\n constructor() {\n super();\n }\n\n /*================================================\n * AttributeRef\n *==============================================*/\n\n visitAttributeRef: (ctx: AttributeRefContext) => Expr<any> = (ctx) => {\n const objectRefExpr = this.visit(ctx.objectRef());\n const nestedObjectChainExpr = this.visit(ctx.nestedObjectChain());\n return new AttributeReferenceExpr(\n objectRefExpr,\n nestedObjectChainExpr as NestedObjectChainExpr\n );\n };\n\n visitObjectRef: (ctx: ObjectRefContext) => Expr<any> = (ctx) => {\n if (notNullish(ctx.PROP())) {\n return new PropObjectReferenceExpr();\n } else if (notNullish(ctx.ELEM())) {\n return new ElemObjectReferenceExpr();\n }\n this.failNode(ctx);\n };\n\n visitNestedObjectChainInner: (\n ctx: NestedObjectChainInnerContext\n ) => Expr<any> = (ctx) => {\n let name = ctx.namedRef().getChild(0).getText();\n name = this.stripBrackets(name);\n return new NestedObjectChainExpr(\n name,\n this.visit(ctx.nestedObjectChain()) as NestedObjectChainExpr\n );\n };\n\n visitNestedObjectChainEnd: (ctx: NestedObjectChainEndContext) => Expr<any> = (\n ctx\n ) => {\n let name = ctx.RESERVED_ATTRIBUTE_NAME().getText();\n return new NestedObjectChainEndExpr(name);\n };\n\n private stripBrackets(name: string) {\n if (name.startsWith(\"{\")) {\n return name.substring(1, name.length - 1);\n }\n return name;\n }\n\n /*================================================\n * StringExpr\n *===============================================*/\n\n visitStringLiteral: (ctx: StringLiteralContext) => Expr<any> = (ctx) => {\n const quotedString = ctx.QUOTED_STRING().getText();\n const text = quotedString.substring(1, quotedString.length - 1);\n return new StringLiteralExpr(new StringValue(text));\n };\n\n visitStringAttributeRef: (ctx: StringAttributeRefContext) => Expr<any> = (\n ctx\n ) => {\n return this.visit(ctx.getChild(0));\n };\n\n visitStringConcat: (ctx: StringConcatContext) => Expr<any> = (ctx) => {\n return new StringConcatExpr(this.visit(ctx._left), this.visit(ctx._right));\n };\n\n /*================================================\n * NumExpr\n *===============================================*/\n\n visitNumAttributeRef: (ctx: NumAttributeRefContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.getChild(0));\n };\n\n visitNumLiteral: (ctx: NumLiteralContext) => Expr<any> = (ctx) => {\n let val = ctx.INT();\n if (notNullish(val)) {\n return new NumericLiteralExpr(\n new NumericValue(new Decimal(val.symbol.text))\n );\n }\n val = ctx.FLOAT();\n if (notNullish(val)) {\n return new NumericLiteralExpr(\n new NumericValue(new Decimal(val.symbol.text))\n );\n }\n this.failNode(ctx);\n };\n\n visitNumAddSub: (ctx: NumAddSubContext) => Expr<any> = (ctx) => {\n switch (ctx._op.text) {\n case \"+\":\n return new PlusExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n case \"-\":\n return new MinusExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n default:\n this.failNode(ctx);\n }\n };\n\n visitNumMulDiv: (ctx: NumMulDivContext) => Expr<any> = (ctx) => {\n switch (ctx._op.text) {\n case \"*\":\n return new MultiplyExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n case \"/\":\n return new DivideExpr(\n this.visit(ctx.getChild(0)),\n this.visit(ctx.getChild(2))\n );\n default:\n this.failNode(ctx);\n }\n };\n\n visitNumParens: (ctx: NumParensContext) => Expr<any> = (ctx) => {\n return new NumParenthesisExpr(this.visit(ctx.getChild(1)));\n };\n\n visitExpr: (ctx: ExprContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.getChild(0));\n };\n\n visitNumLit: (ctx: NumLitContext) => Expr<any> = (ctx) => {\n return this.visit(ctx.getChild(0));\n };\n\n private failNode(ctx: ParserRuleContext) {\n throw new Error(`Cannot parse (sub)expression ${ctx.getText()}`);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/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"]}
|
|
@@ -3,65 +3,66 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.IfcExpression = exports.IfcExpressionVisitor = exports.IfcExpressionErrorListener = exports.IfcExpressionEvaluationException = exports.NamedObjectAccessor = exports.IfcTypeObjectAccessor = exports.IfcRootObjectAccessor = exports.IfcPropertyAccessor = exports.IfcPropertySetAccessor = exports.ReferenceValue = exports.NumericValue = exports.LogicalValue = exports.BooleanValue = exports.StringValue = exports.
|
|
6
|
+
exports.IfcExpression = exports.isNullish = exports.isPresent = exports.IfcExpressionVisitor = exports.IfcExpressionErrorListener = exports.IfcExpressionEvaluationException = exports.ExprVisitor = exports.NamedObjectAccessor = exports.IfcTypeObjectAccessor = exports.IfcRootObjectAccessor = exports.IfcPropertyAccessor = exports.IfcPropertySetAccessor = exports.ReferenceValue = exports.NumericValue = exports.LogicalValue = exports.BooleanValue = exports.StringValue = exports.IfcElementAccessor = void 0;
|
|
7
7
|
const antlr4_1 = require("antlr4");
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
const
|
|
41
|
-
|
|
8
|
+
const ExprVisitor_js_1 = require("./ExprVisitor.js");
|
|
9
|
+
Object.defineProperty(exports, "ExprVisitor", { enumerable: true, get: function () { return ExprVisitor_js_1.ExprVisitor; } });
|
|
10
|
+
const IfcExpressionErrorListener_js_1 = require("./IfcExpressionErrorListener.js");
|
|
11
|
+
Object.defineProperty(exports, "IfcExpressionErrorListener", { enumerable: true, get: function () { return IfcExpressionErrorListener_js_1.IfcExpressionErrorListener; } });
|
|
12
|
+
const IfcExpressionUtils_js_1 = require("./IfcExpressionUtils.js");
|
|
13
|
+
Object.defineProperty(exports, "isNullish", { enumerable: true, get: function () { return IfcExpressionUtils_js_1.isNullish; } });
|
|
14
|
+
Object.defineProperty(exports, "isPresent", { enumerable: true, get: function () { return IfcExpressionUtils_js_1.isPresent; } });
|
|
15
|
+
const IfcElementAccessor_js_1 = require("./context/IfcElementAccessor.js");
|
|
16
|
+
Object.defineProperty(exports, "IfcElementAccessor", { enumerable: true, get: function () { return IfcElementAccessor_js_1.IfcElementAccessor; } });
|
|
17
|
+
const StringValue_js_1 = require("./value/StringValue.js");
|
|
18
|
+
Object.defineProperty(exports, "StringValue", { enumerable: true, get: function () { return StringValue_js_1.StringValue; } });
|
|
19
|
+
const NumericValue_js_1 = require("./value/NumericValue.js");
|
|
20
|
+
Object.defineProperty(exports, "NumericValue", { enumerable: true, get: function () { return NumericValue_js_1.NumericValue; } });
|
|
21
|
+
const BooleanValue_js_1 = require("./value/BooleanValue.js");
|
|
22
|
+
Object.defineProperty(exports, "BooleanValue", { enumerable: true, get: function () { return BooleanValue_js_1.BooleanValue; } });
|
|
23
|
+
const LogicalValue_js_1 = require("./value/LogicalValue.js");
|
|
24
|
+
Object.defineProperty(exports, "LogicalValue", { enumerable: true, get: function () { return LogicalValue_js_1.LogicalValue; } });
|
|
25
|
+
const ReferenceValue_js_1 = require("./value/ReferenceValue.js");
|
|
26
|
+
Object.defineProperty(exports, "ReferenceValue", { enumerable: true, get: function () { return ReferenceValue_js_1.ReferenceValue; } });
|
|
27
|
+
const IfcPropertySetAccessor_js_1 = require("./context/IfcPropertySetAccessor.js");
|
|
28
|
+
Object.defineProperty(exports, "IfcPropertySetAccessor", { enumerable: true, get: function () { return IfcPropertySetAccessor_js_1.IfcPropertySetAccessor; } });
|
|
29
|
+
const IfcPropertyAccessor_js_1 = require("./context/IfcPropertyAccessor.js");
|
|
30
|
+
Object.defineProperty(exports, "IfcPropertyAccessor", { enumerable: true, get: function () { return IfcPropertyAccessor_js_1.IfcPropertyAccessor; } });
|
|
31
|
+
const IfcRootObjectAccessor_js_1 = require("./context/IfcRootObjectAccessor.js");
|
|
32
|
+
Object.defineProperty(exports, "IfcRootObjectAccessor", { enumerable: true, get: function () { return IfcRootObjectAccessor_js_1.IfcRootObjectAccessor; } });
|
|
33
|
+
const IfcTypeObjectAccessor_js_1 = require("./context/IfcTypeObjectAccessor.js");
|
|
34
|
+
Object.defineProperty(exports, "IfcTypeObjectAccessor", { enumerable: true, get: function () { return IfcTypeObjectAccessor_js_1.IfcTypeObjectAccessor; } });
|
|
35
|
+
const NamedObjectAccessor_js_1 = require("./context/NamedObjectAccessor.js");
|
|
36
|
+
Object.defineProperty(exports, "NamedObjectAccessor", { enumerable: true, get: function () { return NamedObjectAccessor_js_1.NamedObjectAccessor; } });
|
|
37
|
+
const IfcExpressionParser_js_1 = __importDefault(require("./gen/parser/IfcExpressionParser.js"));
|
|
38
|
+
const IfcExpressionVisitor_js_1 = __importDefault(require("./gen/parser/IfcExpressionVisitor.js"));
|
|
39
|
+
exports.IfcExpressionVisitor = IfcExpressionVisitor_js_1.default;
|
|
40
|
+
const IfcExpressionLexer_js_1 = __importDefault(require("./gen/parser/IfcExpressionLexer.js"));
|
|
41
|
+
const IfcExpressionEvaluationException_js_1 = require("./expression/IfcExpressionEvaluationException.js");
|
|
42
|
+
Object.defineProperty(exports, "IfcExpressionEvaluationException", { enumerable: true, get: function () { return IfcExpressionEvaluationException_js_1.IfcExpressionEvaluationException; } });
|
|
42
43
|
class IfcExpression {
|
|
43
44
|
static parse(input, errorListener) {
|
|
44
45
|
const chars = new antlr4_1.CharStream(input); // replace this with a FileStream as required
|
|
45
|
-
const lexer = new
|
|
46
|
+
const lexer = new IfcExpressionLexer_js_1.default(chars);
|
|
46
47
|
const tokens = new antlr4_1.CommonTokenStream(lexer);
|
|
47
|
-
const parser = new
|
|
48
|
-
if ((0,
|
|
48
|
+
const parser = new IfcExpressionParser_js_1.default(tokens);
|
|
49
|
+
if ((0, IfcExpressionUtils_js_1.isPresent)(errorListener)) {
|
|
49
50
|
parser.removeErrorListeners();
|
|
50
51
|
parser.addErrorListener(errorListener);
|
|
51
52
|
}
|
|
52
53
|
return parser.expr();
|
|
53
54
|
}
|
|
54
55
|
static evaluate(expression, context) {
|
|
55
|
-
const errorListener = new
|
|
56
|
+
const errorListener = new IfcExpressionErrorListener_js_1.IfcExpressionErrorListener();
|
|
56
57
|
const tree = IfcExpression.parse(expression, errorListener);
|
|
57
58
|
if (errorListener.isErrorOccurred()) {
|
|
58
59
|
throw errorListener.getException();
|
|
59
60
|
}
|
|
60
61
|
const parsedExpression = this.extractExprTree(tree);
|
|
61
|
-
return parsedExpression.evaluate(context);
|
|
62
|
+
return parsedExpression.evaluate(context, new Map());
|
|
62
63
|
}
|
|
63
64
|
static extractExprTree(tree) {
|
|
64
|
-
const visitor = new
|
|
65
|
+
const visitor = new ExprVisitor_js_1.ExprVisitor();
|
|
65
66
|
return visitor.visit(tree);
|
|
66
67
|
}
|
|
67
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../src/IfcExpression.ts"],"names":[],"mappings":";;;;;;AAAA,mCAA6E;AAC7E,qDAA+C;AA+C7C,4FA/CO,4BAAW,OA+CP;AA9Cb,mFAA6E;AAgD3E,2GAhDO,0DAA0B,OAgDP;AA/C5B,mEAA+D;AAkD7D,0FAlDO,iCAAS,OAkDP;AADT,0FAjDkB,iCAAS,OAiDlB;AA7CX,2EAAqE;AAyBnE,mGAzBO,0CAAkB,OAyBP;AAvBpB,2DAAqD;AA0BnD,4FA1BO,4BAAW,OA0BP;AAzBb,6DAAuD;AA4BrD,6FA5BO,8BAAY,OA4BP;AA3Bd,6DAAuD;AAyBrD,6FAzBO,8BAAY,OAyBP;AAxBd,6DAAuD;AAyBrD,6FAzBO,8BAAY,OAyBP;AAvBd,iEAA2D;AA0BzD,+FA1BO,kCAAc,OA0BP;AAzBhB,mFAA6E;AA0B3E,uGA1BO,kDAAsB,OA0BP;AAzBxB,6EAAuE;AA0BrE,oGA1BO,4CAAmB,OA0BP;AAzBrB,iFAA2E;AA0BzE,sGA1BO,gDAAqB,OA0BP;AAzBvB,iFAA2E;AA0BzE,sGA1BO,gDAAqB,OA0BP;AAzBvB,6EAAuE;AA0BrE,oGA1BO,4CAAmB,OA0BP;AAzBrB,iGAE6C;AAC7C,mGAAwE;AA4BtE,+BA5BK,iCAAoB,CA4BL;AA3BtB,+FAAoE;AAEpE,0GAAoG;AAuBlG,iHAvBO,sEAAgC,OAuBP;AASlC,MAAa,aAAa;IACjB,MAAM,CAAC,KAAK,CACjB,KAAa,EACb,aAAoC;QAEpC,MAAM,KAAK,GAAG,IAAI,mBAAU,CAAC,KAAK,CAAC,CAAC,CAAC,6CAA6C;QAClF,MAAM,KAAK,GAAG,IAAI,+BAAkB,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,0BAAiB,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,gCAAmB,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,IAAA,iCAAS,EAAC,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,0DAA0B,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,4BAAW,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF;AAnCD,sCAmCC","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"]}
|
|
@@ -2,18 +2,18 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.IfcExpressionErrorListener = void 0;
|
|
4
4
|
const antlr4_1 = require("antlr4");
|
|
5
|
-
const
|
|
6
|
-
const
|
|
5
|
+
const IfcExpressionUtils_js_1 = require("./IfcExpressionUtils.js");
|
|
6
|
+
const SyntaxErrorException_js_1 = require("./SyntaxErrorException.js");
|
|
7
7
|
class IfcExpressionErrorListener extends antlr4_1.ErrorListener {
|
|
8
8
|
constructor() {
|
|
9
9
|
super(...arguments);
|
|
10
10
|
this.exception = null;
|
|
11
11
|
}
|
|
12
12
|
syntaxError(recognizer, offendingSymbol, line, column, msg, e) {
|
|
13
|
-
this.exception = new
|
|
13
|
+
this.exception = new SyntaxErrorException_js_1.SyntaxErrorException(offendingSymbol, line, column, msg);
|
|
14
14
|
}
|
|
15
15
|
isErrorOccurred() {
|
|
16
|
-
return (0,
|
|
16
|
+
return (0, IfcExpressionUtils_js_1.isPresent)(this.exception);
|
|
17
17
|
}
|
|
18
18
|
getException() {
|
|
19
19
|
return this.exception;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../src/IfcExpressionErrorListener.ts"],"names":[],"mappings":";;;AAAA,mCAAgF;AAChF,mEAAoD;AACpD,uEAAiE;AAEjE,MAAa,0BAA2B,SAAQ,sBAAoB;IAApE;;QACU,cAAS,GAAyB,IAAI,CAAC;IAyBjD,CAAC;IAvBC,WAAW,CACT,UAA6B,EAC7B,eAAsB,EACtB,IAAY,EACZ,MAAc,EACd,GAAW,EACX,CAAmC;QAEnC,IAAI,CAAC,SAAS,GAAG,IAAI,8CAAoB,CACvC,eAAe,EACf,IAAI,EACJ,MAAM,EACN,GAAG,CACJ,CAAC;IACJ,CAAC;IAEM,eAAe;QACpB,OAAO,IAAA,iCAAS,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF;AA1BD,gEA0BC","file":"IfcExpressionErrorListener.js","sourcesContent":["import { ErrorListener, RecognitionException, Recognizer, Token } from \"antlr4\";\nimport { 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,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isPresent = exports.isNullish = void 0;
|
|
4
|
+
function isNullish(val) {
|
|
5
|
+
return typeof val === "undefined" || val === null;
|
|
6
|
+
}
|
|
7
|
+
exports.isNullish = isNullish;
|
|
8
|
+
function isPresent(val) {
|
|
9
|
+
return !isNullish(val);
|
|
10
|
+
}
|
|
11
|
+
exports.isPresent = isPresent;
|
|
12
|
+
//# sourceMappingURL=IfcExpressionUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/IfcExpressionUtils.ts"],"names":[],"mappings":";;;AAAA,SAAgB,SAAS,CAAC,GAAQ;IAChC,OAAO,OAAO,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI,CAAC;AACpD,CAAC;AAFD,8BAEC;AAED,SAAgB,SAAS,CAAC,GAAQ;IAChC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAFD,8BAEC","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,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SyntaxErrorException = void 0;
|
|
4
|
-
const
|
|
4
|
+
const IfcExpressionUtils_js_1 = require("./IfcExpressionUtils.js");
|
|
5
5
|
class SyntaxErrorException extends Error {
|
|
6
6
|
constructor(offendingSymbol, line, column, msg) {
|
|
7
7
|
super(`Syntax Error in line ${line}, column ${column}` +
|
|
8
|
-
((0,
|
|
8
|
+
((0, IfcExpressionUtils_js_1.isPresent)(msg) ? `: ${msg}` : ""));
|
|
9
9
|
this._offendingSymbol = offendingSymbol;
|
|
10
10
|
this._line = line;
|
|
11
11
|
this._column = column;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../src/SyntaxErrorException.ts"],"names":[],"mappings":";;;AACA,mEAAoD;AAEpD,MAAa,oBAAqB,SAAQ,KAAK;IAK7C,YACE,eAAsB,EACtB,IAAY,EACZ,MAAc,EACd,GAAW;QAEX,KAAK,CACH,wBAAwB,IAAI,YAAY,MAAM,EAAE;YAC9C,CAAC,IAAA,iCAAS,EAAC,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;AA/BD,oDA+BC","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"]}
|