ifc-expressions 0.2.3 → 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.
Files changed (249) hide show
  1. package/dist/ExprVisitor.d.ts +5 -1
  2. package/dist/IfcExpression.d.ts +3 -2
  3. package/dist/cjs/ExprVisitor.js +36 -2
  4. package/dist/cjs/ExprVisitor.js.map +1 -1
  5. package/dist/cjs/IfcExpression.js +3 -5
  6. package/dist/cjs/IfcExpression.js.map +1 -1
  7. package/dist/cjs/context/IfcElementAccessor.js +2 -2
  8. package/dist/cjs/context/IfcElementAccessor.js.map +1 -1
  9. package/dist/cjs/context/ObjectAccessor.js +9 -0
  10. package/dist/cjs/context/ObjectAccessor.js.map +1 -1
  11. package/dist/cjs/expression/Expr.js.map +1 -1
  12. package/dist/cjs/expression/Expr0.js +18 -2
  13. package/dist/cjs/expression/Expr0.js.map +1 -1
  14. package/dist/cjs/expression/Expr1.js +46 -2
  15. package/dist/cjs/expression/Expr1.js.map +1 -1
  16. package/dist/cjs/expression/Expr2.js +48 -2
  17. package/dist/cjs/expression/Expr2.js.map +1 -1
  18. package/dist/cjs/expression/Expr2LeftBeforeRight.js +45 -0
  19. package/dist/cjs/expression/Expr2LeftBeforeRight.js.map +1 -0
  20. package/dist/cjs/expression/ExprBase.js +20 -0
  21. package/dist/cjs/expression/ExprBase.js.map +1 -0
  22. package/dist/cjs/expression/ExprEvalResult.js +165 -0
  23. package/dist/cjs/expression/ExprEvalResult.js.map +1 -0
  24. package/dist/cjs/expression/ExprKind.js +24 -0
  25. package/dist/cjs/expression/ExprKind.js.map +1 -0
  26. package/dist/cjs/expression/LiteralExpr.js +25 -0
  27. package/dist/cjs/expression/LiteralExpr.js.map +1 -0
  28. package/dist/cjs/expression/LocalContextKeys.js +7 -0
  29. package/dist/cjs/expression/LocalContextKeys.js.map +1 -0
  30. package/dist/cjs/expression/function/Func.js +93 -0
  31. package/dist/cjs/expression/function/Func.js.map +1 -0
  32. package/dist/cjs/expression/function/FuncArg.js +33 -0
  33. package/dist/cjs/expression/function/FuncArg.js.map +1 -0
  34. package/dist/cjs/expression/function/FunctionExpr.js +33 -0
  35. package/dist/cjs/expression/function/FunctionExpr.js.map +1 -0
  36. package/dist/cjs/expression/function/IfcExpressionFunctionConfigException.js +10 -0
  37. package/dist/cjs/expression/function/IfcExpressionFunctionConfigException.js.map +1 -0
  38. package/dist/cjs/expression/function/IfcExpressionFunctions.js +26 -0
  39. package/dist/cjs/expression/function/IfcExpressionFunctions.js.map +1 -0
  40. package/dist/cjs/expression/function/arg/FuncArgBase.js +34 -0
  41. package/dist/cjs/expression/function/arg/FuncArgBase.js.map +1 -0
  42. package/dist/cjs/expression/function/arg/FuncArgInt.js +25 -0
  43. package/dist/cjs/expression/function/arg/FuncArgInt.js.map +1 -0
  44. package/dist/cjs/expression/function/arg/FuncArgNumeric.js +22 -0
  45. package/dist/cjs/expression/function/arg/FuncArgNumeric.js.map +1 -0
  46. package/dist/cjs/expression/function/impl/MAP.js +77 -0
  47. package/dist/cjs/expression/function/impl/MAP.js.map +1 -0
  48. package/dist/cjs/expression/function/impl/ROUND.js +29 -0
  49. package/dist/cjs/expression/function/impl/ROUND.js.map +1 -0
  50. package/dist/cjs/expression/numeric/DivideExpr.js +8 -6
  51. package/dist/cjs/expression/numeric/DivideExpr.js.map +1 -1
  52. package/dist/cjs/expression/numeric/MinusExpr.js +4 -6
  53. package/dist/cjs/expression/numeric/MinusExpr.js.map +1 -1
  54. package/dist/cjs/expression/numeric/MultiplyExpr.js +4 -6
  55. package/dist/cjs/expression/numeric/MultiplyExpr.js.map +1 -1
  56. package/dist/cjs/expression/numeric/NumParenthesisExpr.js +4 -3
  57. package/dist/cjs/expression/numeric/NumParenthesisExpr.js.map +1 -1
  58. package/dist/cjs/expression/numeric/NumericLiteralExpr.js +5 -4
  59. package/dist/cjs/expression/numeric/NumericLiteralExpr.js.map +1 -1
  60. package/dist/cjs/expression/numeric/PlusExpr.js +4 -6
  61. package/dist/cjs/expression/numeric/PlusExpr.js.map +1 -1
  62. package/dist/cjs/expression/reference/AttributeReferenceExpr.js +19 -5
  63. package/dist/cjs/expression/reference/AttributeReferenceExpr.js.map +1 -1
  64. package/dist/cjs/expression/reference/ElemObjectReferenceExpr.js +3 -2
  65. package/dist/cjs/expression/reference/ElemObjectReferenceExpr.js.map +1 -1
  66. package/dist/cjs/expression/reference/NestedObjectChainEndExpr.js +19 -5
  67. package/dist/cjs/expression/reference/NestedObjectChainEndExpr.js.map +1 -1
  68. package/dist/cjs/expression/reference/NestedObjectChainExpr.js +33 -8
  69. package/dist/cjs/expression/reference/NestedObjectChainExpr.js.map +1 -1
  70. package/dist/cjs/expression/reference/PropObjectReferenceExpr.js +3 -2
  71. package/dist/cjs/expression/reference/PropObjectReferenceExpr.js.map +1 -1
  72. package/dist/cjs/expression/string/StringConcatExpr.js +4 -3
  73. package/dist/cjs/expression/string/StringConcatExpr.js.map +1 -1
  74. package/dist/cjs/expression/string/StringLiteralExpr.js +5 -4
  75. package/dist/cjs/expression/string/StringLiteralExpr.js.map +1 -1
  76. package/dist/cjs/expression/structure/ArrayExpr.js +26 -0
  77. package/dist/cjs/expression/structure/ArrayExpr.js.map +1 -0
  78. package/dist/cjs/gen/parser/IfcExpressionLexer.js +74 -72
  79. package/dist/cjs/gen/parser/IfcExpressionLexer.js.map +1 -1
  80. package/dist/cjs/gen/parser/IfcExpressionParser.js +148 -104
  81. package/dist/cjs/gen/parser/IfcExpressionParser.js.map +1 -1
  82. package/dist/cjs/value/ArrayValue.js +23 -0
  83. package/dist/cjs/value/ArrayValue.js.map +1 -0
  84. package/dist/cjs/value/BooleanValue.js +12 -3
  85. package/dist/cjs/value/BooleanValue.js.map +1 -1
  86. package/dist/cjs/value/LiteralValue.js.map +1 -1
  87. package/dist/cjs/value/LiteralValueAnyArity.js.map +1 -1
  88. package/dist/cjs/value/LogicalValue.js +14 -3
  89. package/dist/cjs/value/LogicalValue.js.map +1 -1
  90. package/dist/cjs/value/NumericValue.js +16 -7
  91. package/dist/cjs/value/NumericValue.js.map +1 -1
  92. package/dist/cjs/value/ReferenceValue.js +12 -3
  93. package/dist/cjs/value/ReferenceValue.js.map +1 -1
  94. package/dist/cjs/value/StringValue.js +12 -3
  95. package/dist/cjs/value/StringValue.js.map +1 -1
  96. package/dist/cjs/value/Value.js +0 -10
  97. package/dist/cjs/value/Value.js.map +1 -1
  98. package/dist/context/ObjectAccessor.d.ts +1 -0
  99. package/dist/expression/Expr.d.ts +4 -1
  100. package/dist/expression/Expr0.d.ts +8 -4
  101. package/dist/expression/Expr1.d.ts +20 -5
  102. package/dist/expression/Expr2.d.ts +15 -6
  103. package/dist/expression/Expr2LeftBeforeRight.d.ts +14 -0
  104. package/dist/expression/ExprBase.d.ts +11 -0
  105. package/dist/expression/ExprEvalResult.d.ts +125 -0
  106. package/dist/expression/ExprKind.d.ts +19 -0
  107. package/dist/expression/LiteralExpr.d.ts +11 -0
  108. package/dist/expression/LocalContextKeys.d.ts +3 -0
  109. package/dist/expression/function/Func.d.ts +30 -0
  110. package/dist/expression/function/FuncArg.d.ts +18 -0
  111. package/dist/expression/function/FunctionExpr.d.ts +13 -0
  112. package/dist/expression/function/IfcExpressionFunctionConfigException.d.ts +3 -0
  113. package/dist/expression/function/IfcExpressionFunctions.d.ts +7 -0
  114. package/dist/expression/function/arg/FuncArgBase.d.ts +19 -0
  115. package/dist/expression/function/arg/FuncArgInt.d.ts +8 -0
  116. package/dist/expression/function/arg/FuncArgNumeric.d.ts +8 -0
  117. package/dist/expression/function/impl/MAP.d.ts +10 -0
  118. package/dist/expression/function/impl/ROUND.d.ts +9 -0
  119. package/dist/expression/numeric/DivideExpr.d.ts +4 -2
  120. package/dist/expression/numeric/MinusExpr.d.ts +3 -2
  121. package/dist/expression/numeric/MultiplyExpr.d.ts +3 -2
  122. package/dist/expression/numeric/NumParenthesisExpr.d.ts +2 -2
  123. package/dist/expression/numeric/NumericLiteralExpr.d.ts +4 -3
  124. package/dist/expression/numeric/PlusExpr.d.ts +2 -2
  125. package/dist/expression/reference/AttributeReferenceExpr.d.ts +9 -5
  126. package/dist/expression/reference/ElemObjectReferenceExpr.d.ts +1 -1
  127. package/dist/expression/reference/NestedObjectChainEndExpr.d.ts +5 -4
  128. package/dist/expression/reference/NestedObjectChainExpr.d.ts +9 -6
  129. package/dist/expression/reference/PropObjectReferenceExpr.d.ts +1 -1
  130. package/dist/expression/string/StringConcatExpr.d.ts +2 -2
  131. package/dist/expression/string/StringLiteralExpr.d.ts +3 -3
  132. package/dist/expression/structure/ArrayExpr.d.ts +11 -0
  133. package/dist/gen/parser/IfcExpressionLexer.d.ts +10 -9
  134. package/dist/gen/parser/IfcExpressionParser.d.ts +10 -9
  135. package/dist/mjs/ExprVisitor.js +37 -3
  136. package/dist/mjs/ExprVisitor.js.map +1 -1
  137. package/dist/mjs/IfcExpression.js +3 -4
  138. package/dist/mjs/IfcExpression.js.map +1 -1
  139. package/dist/mjs/context/IfcElementAccessor.js +2 -2
  140. package/dist/mjs/context/IfcElementAccessor.js.map +1 -1
  141. package/dist/mjs/context/ObjectAccessor.js +7 -1
  142. package/dist/mjs/context/ObjectAccessor.js.map +1 -1
  143. package/dist/mjs/expression/Expr.js.map +1 -1
  144. package/dist/mjs/expression/Expr0.js +18 -2
  145. package/dist/mjs/expression/Expr0.js.map +1 -1
  146. package/dist/mjs/expression/Expr1.js +46 -2
  147. package/dist/mjs/expression/Expr1.js.map +1 -1
  148. package/dist/mjs/expression/Expr2.js +48 -2
  149. package/dist/mjs/expression/Expr2.js.map +1 -1
  150. package/dist/mjs/expression/Expr2LeftBeforeRight.js +41 -0
  151. package/dist/mjs/expression/Expr2LeftBeforeRight.js.map +1 -0
  152. package/dist/mjs/expression/ExprBase.js +16 -0
  153. package/dist/mjs/expression/ExprBase.js.map +1 -0
  154. package/dist/mjs/expression/ExprEvalResult.js +144 -0
  155. package/dist/mjs/expression/ExprEvalResult.js.map +1 -0
  156. package/dist/mjs/expression/ExprKind.js +21 -0
  157. package/dist/mjs/expression/ExprKind.js.map +1 -0
  158. package/dist/mjs/expression/LiteralExpr.js +21 -0
  159. package/dist/mjs/expression/LiteralExpr.js.map +1 -0
  160. package/dist/mjs/expression/LocalContextKeys.js +4 -0
  161. package/dist/mjs/expression/LocalContextKeys.js.map +1 -0
  162. package/dist/mjs/expression/function/Func.js +89 -0
  163. package/dist/mjs/expression/function/Func.js.map +1 -0
  164. package/dist/mjs/expression/function/FuncArg.js +29 -0
  165. package/dist/mjs/expression/function/FuncArg.js.map +1 -0
  166. package/dist/mjs/expression/function/FunctionExpr.js +29 -0
  167. package/dist/mjs/expression/function/FunctionExpr.js.map +1 -0
  168. package/dist/mjs/expression/function/IfcExpressionFunctionConfigException.js +6 -0
  169. package/dist/mjs/expression/function/IfcExpressionFunctionConfigException.js.map +1 -0
  170. package/dist/mjs/expression/function/IfcExpressionFunctions.js +22 -0
  171. package/dist/mjs/expression/function/IfcExpressionFunctions.js.map +1 -0
  172. package/dist/mjs/expression/function/arg/FuncArgBase.js +30 -0
  173. package/dist/mjs/expression/function/arg/FuncArgBase.js.map +1 -0
  174. package/dist/mjs/expression/function/arg/FuncArgInt.js +21 -0
  175. package/dist/mjs/expression/function/arg/FuncArgInt.js.map +1 -0
  176. package/dist/mjs/expression/function/arg/FuncArgNumeric.js +18 -0
  177. package/dist/mjs/expression/function/arg/FuncArgNumeric.js.map +1 -0
  178. package/dist/mjs/expression/function/impl/MAP.js +73 -0
  179. package/dist/mjs/expression/function/impl/MAP.js.map +1 -0
  180. package/dist/mjs/expression/function/impl/ROUND.js +25 -0
  181. package/dist/mjs/expression/function/impl/ROUND.js.map +1 -0
  182. package/dist/mjs/expression/numeric/DivideExpr.js +8 -6
  183. package/dist/mjs/expression/numeric/DivideExpr.js.map +1 -1
  184. package/dist/mjs/expression/numeric/MinusExpr.js +4 -6
  185. package/dist/mjs/expression/numeric/MinusExpr.js.map +1 -1
  186. package/dist/mjs/expression/numeric/MultiplyExpr.js +4 -6
  187. package/dist/mjs/expression/numeric/MultiplyExpr.js.map +1 -1
  188. package/dist/mjs/expression/numeric/NumParenthesisExpr.js +4 -3
  189. package/dist/mjs/expression/numeric/NumParenthesisExpr.js.map +1 -1
  190. package/dist/mjs/expression/numeric/NumericLiteralExpr.js +5 -4
  191. package/dist/mjs/expression/numeric/NumericLiteralExpr.js.map +1 -1
  192. package/dist/mjs/expression/numeric/PlusExpr.js +4 -6
  193. package/dist/mjs/expression/numeric/PlusExpr.js.map +1 -1
  194. package/dist/mjs/expression/reference/AttributeReferenceExpr.js +19 -5
  195. package/dist/mjs/expression/reference/AttributeReferenceExpr.js.map +1 -1
  196. package/dist/mjs/expression/reference/ElemObjectReferenceExpr.js +3 -2
  197. package/dist/mjs/expression/reference/ElemObjectReferenceExpr.js.map +1 -1
  198. package/dist/mjs/expression/reference/NestedObjectChainEndExpr.js +19 -5
  199. package/dist/mjs/expression/reference/NestedObjectChainEndExpr.js.map +1 -1
  200. package/dist/mjs/expression/reference/NestedObjectChainExpr.js +33 -8
  201. package/dist/mjs/expression/reference/NestedObjectChainExpr.js.map +1 -1
  202. package/dist/mjs/expression/reference/PropObjectReferenceExpr.js +3 -2
  203. package/dist/mjs/expression/reference/PropObjectReferenceExpr.js.map +1 -1
  204. package/dist/mjs/expression/string/StringConcatExpr.js +4 -3
  205. package/dist/mjs/expression/string/StringConcatExpr.js.map +1 -1
  206. package/dist/mjs/expression/string/StringLiteralExpr.js +5 -4
  207. package/dist/mjs/expression/string/StringLiteralExpr.js.map +1 -1
  208. package/dist/mjs/expression/structure/ArrayExpr.js +22 -0
  209. package/dist/mjs/expression/structure/ArrayExpr.js.map +1 -0
  210. package/dist/mjs/gen/parser/IfcExpressionLexer.js +74 -72
  211. package/dist/mjs/gen/parser/IfcExpressionLexer.js.map +1 -1
  212. package/dist/mjs/gen/parser/IfcExpressionParser.js +148 -104
  213. package/dist/mjs/gen/parser/IfcExpressionParser.js.map +1 -1
  214. package/dist/mjs/value/ArrayValue.js +19 -0
  215. package/dist/mjs/value/ArrayValue.js.map +1 -0
  216. package/dist/mjs/value/BooleanValue.js +12 -3
  217. package/dist/mjs/value/BooleanValue.js.map +1 -1
  218. package/dist/mjs/value/LiteralValue.js.map +1 -1
  219. package/dist/mjs/value/LiteralValueAnyArity.js.map +1 -1
  220. package/dist/mjs/value/LogicalValue.js +14 -3
  221. package/dist/mjs/value/LogicalValue.js.map +1 -1
  222. package/dist/mjs/value/NumericValue.js +16 -4
  223. package/dist/mjs/value/NumericValue.js.map +1 -1
  224. package/dist/mjs/value/ReferenceValue.js +12 -3
  225. package/dist/mjs/value/ReferenceValue.js.map +1 -1
  226. package/dist/mjs/value/StringValue.js +12 -3
  227. package/dist/mjs/value/StringValue.js.map +1 -1
  228. package/dist/mjs/value/Value.js +1 -8
  229. package/dist/mjs/value/Value.js.map +1 -1
  230. package/dist/value/ArrayValue.d.ts +12 -0
  231. package/dist/value/BooleanValue.d.ts +8 -1
  232. package/dist/value/LiteralValue.d.ts +2 -1
  233. package/dist/value/LiteralValueAnyArity.d.ts +1 -1
  234. package/dist/value/LogicalValue.d.ts +8 -1
  235. package/dist/value/NumericValue.d.ts +11 -4
  236. package/dist/value/ReferenceValue.d.ts +8 -1
  237. package/dist/value/StringValue.d.ts +8 -1
  238. package/dist/value/Value.d.ts +2 -3
  239. package/package.json +1 -1
  240. package/dist/cjs/expression/ArrayExpr.js +0 -3
  241. package/dist/cjs/expression/ArrayExpr.js.map +0 -1
  242. package/dist/cjs/expression/numeric/MultiplyByExpr.js +0 -18
  243. package/dist/cjs/expression/numeric/MultiplyByExpr.js.map +0 -1
  244. package/dist/expression/ArrayExpr.d.ts +0 -3
  245. package/dist/expression/numeric/MultiplyByExpr.d.ts +0 -8
  246. package/dist/mjs/expression/ArrayExpr.js +0 -2
  247. package/dist/mjs/expression/ArrayExpr.js.map +0 -1
  248. package/dist/mjs/expression/numeric/MultiplyByExpr.js +0 -14
  249. package/dist/mjs/expression/numeric/MultiplyByExpr.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["gen/parser/IfcExpressionParser.ts"],"names":[],"mappings":"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AAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IACtE,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC;IACtE,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE;IACxE,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IACtE,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE;IACvE,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IACtE,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC;IACtE,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC;IACtE,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC;IACvE,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC;IACtE,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC;IACvE,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC;IACvE,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE;IACvE,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IACvE,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IACvE,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IACvE,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE;IACtE,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IACtE,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IACtE,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE;IACxE,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE;IACtE,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE;IACxE,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE;IACtE,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE;IACxE,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE;IACtE,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE;IACtE,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE;IACtE,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE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","file":"gen/parser/IfcExpressionParser.js","sourcesContent":["// Generated from IfcExpression.g4 by ANTLR 4.13.0\n// noinspection ES6UnusedImports,JSUnusedGlobalSymbols,JSUnusedLocalSymbols\n\nimport {\n\tATN,\n\tATNDeserializer, DecisionState, DFA, FailedPredicateException,\n\tRecognitionException, NoViableAltException, BailErrorStrategy,\n\tParser, ParserATNSimulator,\n\tRuleContext, ParserRuleContext, PredictionMode, PredictionContextCache,\n\tTerminalNode, RuleNode,\n\tToken, TokenStream,\n\tInterval, IntervalSet\n} from 'antlr4';\nimport IfcExpressionListener from \"./IfcExpressionListener.js\";\nimport IfcExpressionVisitor from \"./IfcExpressionVisitor.js\";\n\n// for running tests with parameters, TODO: discuss strategy for typed parameters in CI\n// eslint-disable-next-line no-unused-vars\ntype int = number;\n\nexport default class IfcExpressionParser extends Parser {\n\tpublic static readonly T__0 = 1;\n\tpublic static readonly T__1 = 2;\n\tpublic static readonly T__2 = 3;\n\tpublic static readonly T__3 = 4;\n\tpublic static readonly T__4 = 5;\n\tpublic static readonly T__5 = 6;\n\tpublic static readonly T__6 = 7;\n\tpublic static readonly T__7 = 8;\n\tpublic static readonly T__8 = 9;\n\tpublic static readonly T__9 = 10;\n\tpublic static readonly T__10 = 11;\n\tpublic static readonly INT = 12;\n\tpublic static readonly FLOAT = 13;\n\tpublic static readonly PROP = 14;\n\tpublic static readonly ELEM = 15;\n\tpublic static readonly RESERVED_ATTRIBUTE_NAME = 16;\n\tpublic static readonly RESERVED_RELATION_NAME = 17;\n\tpublic static readonly QUOTED_STRING = 18;\n\tpublic static readonly BRACKETED_STRING = 19;\n\tpublic static readonly IDENTIFIER = 20;\n\tpublic static readonly WS = 21;\n\tpublic static readonly NEWLINE = 22;\n\tpublic static readonly EOF = Token.EOF;\n\tpublic static readonly RULE_expr = 0;\n\tpublic static readonly RULE_numExpr = 1;\n\tpublic static readonly RULE_numLiteral = 2;\n\tpublic static readonly RULE_stringExpr = 3;\n\tpublic static readonly RULE_objectRef = 4;\n\tpublic static readonly RULE_attributeRef = 5;\n\tpublic static readonly RULE_nestedObjectChain = 6;\n\tpublic static readonly RULE_namedRef = 7;\n\tpublic static readonly RULE_functionCall = 8;\n\tpublic static readonly RULE_exprList = 9;\n\tpublic static readonly RULE_array = 10;\n\tpublic static readonly RULE_arrayElementList = 11;\n\tpublic static readonly literalNames: (string | null)[] = [ null, \"'*'\", \n \"'/'\", \"'+'\", \n \"'-'\", \"'('\", \n \"')'\", \"'.'\", \n \"'@'\", \"','\", \n \"'['\", \"']'\" ];\n\tpublic static readonly symbolicNames: (string | null)[] = [ null, null, \n null, null, \n null, null, \n null, null, \n null, null, \n null, null, \n \"INT\", \"FLOAT\", \n \"PROP\", \"ELEM\", \n \"RESERVED_ATTRIBUTE_NAME\", \n \"RESERVED_RELATION_NAME\", \n \"QUOTED_STRING\", \n \"BRACKETED_STRING\", \n \"IDENTIFIER\", \n \"WS\", \"NEWLINE\" ];\n\t// tslint:disable:no-trailing-whitespace\n\tpublic static readonly ruleNames: string[] = [\n\t\t\"expr\", \"numExpr\", \"numLiteral\", \"stringExpr\", \"objectRef\", \"attributeRef\", \n\t\t\"nestedObjectChain\", \"namedRef\", \"functionCall\", \"exprList\", \"array\", \n\t\t\"arrayElementList\",\n\t];\n\tpublic get grammarFileName(): string { return \"IfcExpression.g4\"; }\n\tpublic get literalNames(): (string | null)[] { return IfcExpressionParser.literalNames; }\n\tpublic get symbolicNames(): (string | null)[] { return IfcExpressionParser.symbolicNames; }\n\tpublic get ruleNames(): string[] { return IfcExpressionParser.ruleNames; }\n\tpublic get serializedATN(): number[] { return IfcExpressionParser._serializedATN; }\n\n\tprotected createFailedPredicateException(predicate?: string, message?: string): FailedPredicateException {\n\t\treturn new FailedPredicateException(this, predicate, message);\n\t}\n\n\tconstructor(input: TokenStream) {\n\t\tsuper(input);\n\t\tthis._interp = new ParserATNSimulator(this, IfcExpressionParser._ATN, IfcExpressionParser.DecisionsToDFA, new PredictionContextCache());\n\t}\n\t// @RuleVersion(0)\n\tpublic expr(): ExprContext {\n\t\tlet localctx: ExprContext = new ExprContext(this, this._ctx, this.state);\n\t\tthis.enterRule(localctx, 0, IfcExpressionParser.RULE_expr);\n\t\ttry {\n\t\t\tthis.state = 29;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this._interp.adaptivePredict(this._input, 0, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\tthis.enterOuterAlt(localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 24;\n\t\t\t\tthis.attributeRef();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tthis.enterOuterAlt(localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 25;\n\t\t\t\tthis.functionCall();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tthis.enterOuterAlt(localctx, 3);\n\t\t\t\t{\n\t\t\t\tthis.state = 26;\n\t\t\t\tthis.numExpr(0);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t\tthis.enterOuterAlt(localctx, 4);\n\t\t\t\t{\n\t\t\t\tthis.state = 27;\n\t\t\t\tthis.array();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 5:\n\t\t\t\tthis.enterOuterAlt(localctx, 5);\n\t\t\t\t{\n\t\t\t\tthis.state = 28;\n\t\t\t\tthis.stringExpr(0);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\tlocalctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn localctx;\n\t}\n\n\tpublic numExpr(): NumExprContext;\n\tpublic numExpr(_p: number): NumExprContext;\n\t// @RuleVersion(0)\n\tpublic numExpr(_p?: number): NumExprContext {\n\t\tif (_p === undefined) {\n\t\t\t_p = 0;\n\t\t}\n\n\t\tlet _parentctx: ParserRuleContext = this._ctx;\n\t\tlet _parentState: number = this.state;\n\t\tlet localctx: NumExprContext = new NumExprContext(this, this._ctx, _parentState);\n\t\tlet _prevctx: NumExprContext = localctx;\n\t\tlet _startState: number = 2;\n\t\tthis.enterRecursionRule(localctx, 2, IfcExpressionParser.RULE_numExpr, _p);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tlet _alt: number;\n\t\t\tthis.enterOuterAlt(localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 39;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase 12:\n\t\t\tcase 13:\n\t\t\t\t{\n\t\t\t\tlocalctx = new NumLitContext(this, localctx);\n\t\t\t\tthis._ctx = localctx;\n\t\t\t\t_prevctx = localctx;\n\n\t\t\t\tthis.state = 32;\n\t\t\t\tthis.numLiteral();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 5:\n\t\t\t\t{\n\t\t\t\tlocalctx = new NumParensContext(this, localctx);\n\t\t\t\tthis._ctx = localctx;\n\t\t\t\t_prevctx = localctx;\n\t\t\t\tthis.state = 33;\n\t\t\t\tthis.match(IfcExpressionParser.T__4);\n\t\t\t\tthis.state = 34;\n\t\t\t\tthis.numExpr(0);\n\t\t\t\tthis.state = 35;\n\t\t\t\tthis.match(IfcExpressionParser.T__5);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 20:\n\t\t\t\t{\n\t\t\t\tlocalctx = new NumFunCallContext(this, localctx);\n\t\t\t\tthis._ctx = localctx;\n\t\t\t\t_prevctx = localctx;\n\t\t\t\tthis.state = 37;\n\t\t\t\tthis.functionCall();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 14:\n\t\t\tcase 15:\n\t\t\t\t{\n\t\t\t\tlocalctx = new NumAttributeRefContext(this, localctx);\n\t\t\t\tthis._ctx = localctx;\n\t\t\t\t_prevctx = localctx;\n\t\t\t\tthis.state = 38;\n\t\t\t\tthis.attributeRef();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t\tthis._ctx.stop = this._input.LT(-1);\n\t\t\tthis.state = 49;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_alt = this._interp.adaptivePredict(this._input, 3, this._ctx);\n\t\t\twhile (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {\n\t\t\t\tif (_alt === 1) {\n\t\t\t\t\tif (this._parseListeners != null) {\n\t\t\t\t\t\tthis.triggerExitRuleEvent();\n\t\t\t\t\t}\n\t\t\t\t\t_prevctx = localctx;\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 47;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\tswitch ( this._interp.adaptivePredict(this._input, 2, this._ctx) ) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\t{\n\t\t\t\t\t\tlocalctx = new NumMulDivContext(this, new NumExprContext(this, _parentctx, _parentState));\n\t\t\t\t\t\tthis.pushNewRecursionContext(localctx, _startState, IfcExpressionParser.RULE_numExpr);\n\t\t\t\t\t\tthis.state = 41;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 6))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 6)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 42;\n\t\t\t\t\t\t(localctx as NumMulDivContext)._op = this._input.LT(1);\n\t\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\t\tif(!(_la===1 || _la===2)) {\n\t\t\t\t\t\t (localctx as NumMulDivContext)._op = this._errHandler.recoverInline(this);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\t\t\t this.consume();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 43;\n\t\t\t\t\t\tthis.numExpr(7);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\t{\n\t\t\t\t\t\tlocalctx = new NumAddSubContext(this, new NumExprContext(this, _parentctx, _parentState));\n\t\t\t\t\t\tthis.pushNewRecursionContext(localctx, _startState, IfcExpressionParser.RULE_numExpr);\n\t\t\t\t\t\tthis.state = 44;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 5))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 5)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 45;\n\t\t\t\t\t\t(localctx as NumAddSubContext)._op = this._input.LT(1);\n\t\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\t\tif(!(_la===3 || _la===4)) {\n\t\t\t\t\t\t (localctx as NumAddSubContext)._op = this._errHandler.recoverInline(this);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\t\t\t this.consume();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 46;\n\t\t\t\t\t\tthis.numExpr(6);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 51;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_alt = this._interp.adaptivePredict(this._input, 3, this._ctx);\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\tlocalctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.unrollRecursionContexts(_parentctx);\n\t\t}\n\t\treturn localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic numLiteral(): NumLiteralContext {\n\t\tlet localctx: NumLiteralContext = new NumLiteralContext(this, this._ctx, this.state);\n\t\tthis.enterRule(localctx, 4, IfcExpressionParser.RULE_numLiteral);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 52;\n\t\t\t_la = this._input.LA(1);\n\t\t\tif(!(_la===12 || _la===13)) {\n\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t this.consume();\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\tlocalctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn localctx;\n\t}\n\n\tpublic stringExpr(): StringExprContext;\n\tpublic stringExpr(_p: number): StringExprContext;\n\t// @RuleVersion(0)\n\tpublic stringExpr(_p?: number): StringExprContext {\n\t\tif (_p === undefined) {\n\t\t\t_p = 0;\n\t\t}\n\n\t\tlet _parentctx: ParserRuleContext = this._ctx;\n\t\tlet _parentState: number = this.state;\n\t\tlet localctx: StringExprContext = new StringExprContext(this, this._ctx, _parentState);\n\t\tlet _prevctx: StringExprContext = localctx;\n\t\tlet _startState: number = 6;\n\t\tthis.enterRecursionRule(localctx, 6, IfcExpressionParser.RULE_stringExpr, _p);\n\t\ttry {\n\t\t\tlet _alt: number;\n\t\t\tthis.enterOuterAlt(localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 58;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase 18:\n\t\t\t\t{\n\t\t\t\tlocalctx = new StringLiteralContext(this, localctx);\n\t\t\t\tthis._ctx = localctx;\n\t\t\t\t_prevctx = localctx;\n\n\t\t\t\tthis.state = 55;\n\t\t\t\tthis.match(IfcExpressionParser.QUOTED_STRING);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 20:\n\t\t\t\t{\n\t\t\t\tlocalctx = new StringFunCallContext(this, localctx);\n\t\t\t\tthis._ctx = localctx;\n\t\t\t\t_prevctx = localctx;\n\t\t\t\tthis.state = 56;\n\t\t\t\tthis.functionCall();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 14:\n\t\t\tcase 15:\n\t\t\t\t{\n\t\t\t\tlocalctx = new StringAttributeRefContext(this, localctx);\n\t\t\t\tthis._ctx = localctx;\n\t\t\t\t_prevctx = localctx;\n\t\t\t\tthis.state = 57;\n\t\t\t\tthis.attributeRef();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t\tthis._ctx.stop = this._input.LT(-1);\n\t\t\tthis.state = 65;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_alt = this._interp.adaptivePredict(this._input, 5, this._ctx);\n\t\t\twhile (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {\n\t\t\t\tif (_alt === 1) {\n\t\t\t\t\tif (this._parseListeners != null) {\n\t\t\t\t\t\tthis.triggerExitRuleEvent();\n\t\t\t\t\t}\n\t\t\t\t\t_prevctx = localctx;\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tlocalctx = new StringConcatContext(this, new StringExprContext(this, _parentctx, _parentState));\n\t\t\t\t\t(localctx as StringConcatContext)._left = _prevctx;\n\t\t\t\t\tthis.pushNewRecursionContext(localctx, _startState, IfcExpressionParser.RULE_stringExpr);\n\t\t\t\t\tthis.state = 60;\n\t\t\t\t\tif (!(this.precpred(this._ctx, 3))) {\n\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 3)\");\n\t\t\t\t\t}\n\t\t\t\t\tthis.state = 61;\n\t\t\t\t\tthis.match(IfcExpressionParser.T__2);\n\t\t\t\t\tthis.state = 62;\n\t\t\t\t\t(localctx as StringConcatContext)._right = this.stringExpr(4);\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 67;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_alt = this._interp.adaptivePredict(this._input, 5, this._ctx);\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\tlocalctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.unrollRecursionContexts(_parentctx);\n\t\t}\n\t\treturn localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic objectRef(): ObjectRefContext {\n\t\tlet localctx: ObjectRefContext = new ObjectRefContext(this, this._ctx, this.state);\n\t\tthis.enterRule(localctx, 8, IfcExpressionParser.RULE_objectRef);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 68;\n\t\t\t_la = this._input.LA(1);\n\t\t\tif(!(_la===14 || _la===15)) {\n\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t this.consume();\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\tlocalctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic attributeRef(): AttributeRefContext {\n\t\tlet localctx: AttributeRefContext = new AttributeRefContext(this, this._ctx, this.state);\n\t\tthis.enterRule(localctx, 10, IfcExpressionParser.RULE_attributeRef);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 70;\n\t\t\tthis.objectRef();\n\t\t\tthis.state = 71;\n\t\t\tthis.nestedObjectChain();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\tlocalctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic nestedObjectChain(): NestedObjectChainContext {\n\t\tlet localctx: NestedObjectChainContext = new NestedObjectChainContext(this, this._ctx, this.state);\n\t\tthis.enterRule(localctx, 12, IfcExpressionParser.RULE_nestedObjectChain);\n\t\ttry {\n\t\t\tthis.state = 79;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase 7:\n\t\t\t\tlocalctx = new NestedObjectChainInnerContext(this, localctx);\n\t\t\t\tthis.enterOuterAlt(localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 73;\n\t\t\t\tthis.match(IfcExpressionParser.T__6);\n\t\t\t\tthis.state = 74;\n\t\t\t\tthis.namedRef();\n\t\t\t\tthis.state = 75;\n\t\t\t\tthis.nestedObjectChain();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 8:\n\t\t\t\tlocalctx = new NestedObjectChainEndContext(this, localctx);\n\t\t\t\tthis.enterOuterAlt(localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 77;\n\t\t\t\tthis.match(IfcExpressionParser.T__7);\n\t\t\t\tthis.state = 78;\n\t\t\t\t(localctx as NestedObjectChainEndContext)._name = this.match(IfcExpressionParser.RESERVED_ATTRIBUTE_NAME);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\tlocalctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic namedRef(): NamedRefContext {\n\t\tlet localctx: NamedRefContext = new NamedRefContext(this, this._ctx, this.state);\n\t\tthis.enterRule(localctx, 14, IfcExpressionParser.RULE_namedRef);\n\t\ttry {\n\t\t\tthis.state = 84;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase 17:\n\t\t\t\tthis.enterOuterAlt(localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 81;\n\t\t\t\tlocalctx._name = this.match(IfcExpressionParser.RESERVED_RELATION_NAME);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 19:\n\t\t\t\tthis.enterOuterAlt(localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 82;\n\t\t\t\tlocalctx._name = this.match(IfcExpressionParser.BRACKETED_STRING);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 20:\n\t\t\t\tthis.enterOuterAlt(localctx, 3);\n\t\t\t\t{\n\t\t\t\tthis.state = 83;\n\t\t\t\tlocalctx._name = this.match(IfcExpressionParser.IDENTIFIER);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\tlocalctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic functionCall(): FunctionCallContext {\n\t\tlet localctx: FunctionCallContext = new FunctionCallContext(this, this._ctx, this.state);\n\t\tthis.enterRule(localctx, 16, IfcExpressionParser.RULE_functionCall);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 86;\n\t\t\tlocalctx._name = this.match(IfcExpressionParser.IDENTIFIER);\n\t\t\tthis.state = 87;\n\t\t\tthis.match(IfcExpressionParser.T__4);\n\t\t\tthis.state = 88;\n\t\t\tthis.exprList();\n\t\t\tthis.state = 89;\n\t\t\tthis.match(IfcExpressionParser.T__5);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\tlocalctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic exprList(): ExprListContext {\n\t\tlet localctx: ExprListContext = new ExprListContext(this, this._ctx, this.state);\n\t\tthis.enterRule(localctx, 18, IfcExpressionParser.RULE_exprList);\n\t\ttry {\n\t\t\tthis.state = 96;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this._interp.adaptivePredict(this._input, 8, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\tthis.enterOuterAlt(localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 91;\n\t\t\t\tthis.expr();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tthis.enterOuterAlt(localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 92;\n\t\t\t\tthis.expr();\n\t\t\t\tthis.state = 93;\n\t\t\t\tthis.match(IfcExpressionParser.T__8);\n\t\t\t\tthis.state = 94;\n\t\t\t\tthis.exprList();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\tlocalctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic array(): ArrayContext {\n\t\tlet localctx: ArrayContext = new ArrayContext(this, this._ctx, this.state);\n\t\tthis.enterRule(localctx, 20, IfcExpressionParser.RULE_array);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 98;\n\t\t\tthis.match(IfcExpressionParser.T__9);\n\t\t\tthis.state = 99;\n\t\t\tthis.arrayElementList();\n\t\t\tthis.state = 100;\n\t\t\tthis.match(IfcExpressionParser.T__10);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\tlocalctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic arrayElementList(): ArrayElementListContext {\n\t\tlet localctx: ArrayElementListContext = new ArrayElementListContext(this, this._ctx, this.state);\n\t\tthis.enterRule(localctx, 22, IfcExpressionParser.RULE_arrayElementList);\n\t\ttry {\n\t\t\tthis.state = 107;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this._interp.adaptivePredict(this._input, 9, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\tthis.enterOuterAlt(localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 102;\n\t\t\t\tthis.expr();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tthis.enterOuterAlt(localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 103;\n\t\t\t\tthis.expr();\n\t\t\t\tthis.state = 104;\n\t\t\t\tthis.match(IfcExpressionParser.T__8);\n\t\t\t\tthis.state = 105;\n\t\t\t\tthis.arrayElementList();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\tlocalctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn localctx;\n\t}\n\n\tpublic sempred(localctx: RuleContext, ruleIndex: number, predIndex: number): boolean {\n\t\tswitch (ruleIndex) {\n\t\tcase 1:\n\t\t\treturn this.numExpr_sempred(localctx as NumExprContext, predIndex);\n\t\tcase 3:\n\t\t\treturn this.stringExpr_sempred(localctx as StringExprContext, predIndex);\n\t\t}\n\t\treturn true;\n\t}\n\tprivate numExpr_sempred(localctx: NumExprContext, predIndex: number): boolean {\n\t\tswitch (predIndex) {\n\t\tcase 0:\n\t\t\treturn this.precpred(this._ctx, 6);\n\t\tcase 1:\n\t\t\treturn this.precpred(this._ctx, 5);\n\t\t}\n\t\treturn true;\n\t}\n\tprivate stringExpr_sempred(localctx: StringExprContext, predIndex: number): boolean {\n\t\tswitch (predIndex) {\n\t\tcase 2:\n\t\t\treturn this.precpred(this._ctx, 3);\n\t\t}\n\t\treturn true;\n\t}\n\n\tpublic static readonly _serializedATN: number[] = [4,1,22,110,2,0,7,0,2,\n\t1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,\n\t10,7,10,2,11,7,11,1,0,1,0,1,0,1,0,1,0,3,0,30,8,0,1,1,1,1,1,1,1,1,1,1,1,\n\t1,1,1,1,1,3,1,40,8,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,48,8,1,10,1,12,1,51,9,\n\t1,1,2,1,2,1,3,1,3,1,3,1,3,3,3,59,8,3,1,3,1,3,1,3,5,3,64,8,3,10,3,12,3,67,\n\t9,3,1,4,1,4,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,6,3,6,80,8,6,1,7,1,7,1,7,\n\t3,7,85,8,7,1,8,1,8,1,8,1,8,1,8,1,9,1,9,1,9,1,9,1,9,3,9,97,8,9,1,10,1,10,\n\t1,10,1,10,1,11,1,11,1,11,1,11,1,11,3,11,108,8,11,1,11,0,2,2,6,12,0,2,4,\n\t6,8,10,12,14,16,18,20,22,0,4,1,0,1,2,1,0,3,4,1,0,12,13,1,0,14,15,114,0,\n\t29,1,0,0,0,2,39,1,0,0,0,4,52,1,0,0,0,6,58,1,0,0,0,8,68,1,0,0,0,10,70,1,\n\t0,0,0,12,79,1,0,0,0,14,84,1,0,0,0,16,86,1,0,0,0,18,96,1,0,0,0,20,98,1,0,\n\t0,0,22,107,1,0,0,0,24,30,3,10,5,0,25,30,3,16,8,0,26,30,3,2,1,0,27,30,3,\n\t20,10,0,28,30,3,6,3,0,29,24,1,0,0,0,29,25,1,0,0,0,29,26,1,0,0,0,29,27,1,\n\t0,0,0,29,28,1,0,0,0,30,1,1,0,0,0,31,32,6,1,-1,0,32,40,3,4,2,0,33,34,5,5,\n\t0,0,34,35,3,2,1,0,35,36,5,6,0,0,36,40,1,0,0,0,37,40,3,16,8,0,38,40,3,10,\n\t5,0,39,31,1,0,0,0,39,33,1,0,0,0,39,37,1,0,0,0,39,38,1,0,0,0,40,49,1,0,0,\n\t0,41,42,10,6,0,0,42,43,7,0,0,0,43,48,3,2,1,7,44,45,10,5,0,0,45,46,7,1,0,\n\t0,46,48,3,2,1,6,47,41,1,0,0,0,47,44,1,0,0,0,48,51,1,0,0,0,49,47,1,0,0,0,\n\t49,50,1,0,0,0,50,3,1,0,0,0,51,49,1,0,0,0,52,53,7,2,0,0,53,5,1,0,0,0,54,\n\t55,6,3,-1,0,55,59,5,18,0,0,56,59,3,16,8,0,57,59,3,10,5,0,58,54,1,0,0,0,\n\t58,56,1,0,0,0,58,57,1,0,0,0,59,65,1,0,0,0,60,61,10,3,0,0,61,62,5,3,0,0,\n\t62,64,3,6,3,4,63,60,1,0,0,0,64,67,1,0,0,0,65,63,1,0,0,0,65,66,1,0,0,0,66,\n\t7,1,0,0,0,67,65,1,0,0,0,68,69,7,3,0,0,69,9,1,0,0,0,70,71,3,8,4,0,71,72,\n\t3,12,6,0,72,11,1,0,0,0,73,74,5,7,0,0,74,75,3,14,7,0,75,76,3,12,6,0,76,80,\n\t1,0,0,0,77,78,5,8,0,0,78,80,5,16,0,0,79,73,1,0,0,0,79,77,1,0,0,0,80,13,\n\t1,0,0,0,81,85,5,17,0,0,82,85,5,19,0,0,83,85,5,20,0,0,84,81,1,0,0,0,84,82,\n\t1,0,0,0,84,83,1,0,0,0,85,15,1,0,0,0,86,87,5,20,0,0,87,88,5,5,0,0,88,89,\n\t3,18,9,0,89,90,5,6,0,0,90,17,1,0,0,0,91,97,3,0,0,0,92,93,3,0,0,0,93,94,\n\t5,9,0,0,94,95,3,18,9,0,95,97,1,0,0,0,96,91,1,0,0,0,96,92,1,0,0,0,97,19,\n\t1,0,0,0,98,99,5,10,0,0,99,100,3,22,11,0,100,101,5,11,0,0,101,21,1,0,0,0,\n\t102,108,3,0,0,0,103,104,3,0,0,0,104,105,5,9,0,0,105,106,3,22,11,0,106,108,\n\t1,0,0,0,107,102,1,0,0,0,107,103,1,0,0,0,108,23,1,0,0,0,10,29,39,47,49,58,\n\t65,79,84,96,107];\n\n\tprivate static __ATN: ATN;\n\tpublic static get _ATN(): ATN {\n\t\tif (!IfcExpressionParser.__ATN) {\n\t\t\tIfcExpressionParser.__ATN = new ATNDeserializer().deserialize(IfcExpressionParser._serializedATN);\n\t\t}\n\n\t\treturn IfcExpressionParser.__ATN;\n\t}\n\n\n\tstatic DecisionsToDFA = IfcExpressionParser._ATN.decisionToState.map( (ds: DecisionState, index: number) => new DFA(ds, index) );\n\n}\n\nexport class ExprContext extends ParserRuleContext {\n\tconstructor(parser?: IfcExpressionParser, parent?: ParserRuleContext, invokingState?: number) {\n\t\tsuper(parent, invokingState);\n \tthis.parser = parser;\n\t}\n\tpublic attributeRef(): AttributeRefContext {\n\t\treturn this.getTypedRuleContext(AttributeRefContext, 0) as AttributeRefContext;\n\t}\n\tpublic functionCall(): FunctionCallContext {\n\t\treturn this.getTypedRuleContext(FunctionCallContext, 0) as FunctionCallContext;\n\t}\n\tpublic numExpr(): NumExprContext {\n\t\treturn this.getTypedRuleContext(NumExprContext, 0) as NumExprContext;\n\t}\n\tpublic array(): ArrayContext {\n\t\treturn this.getTypedRuleContext(ArrayContext, 0) as ArrayContext;\n\t}\n\tpublic stringExpr(): StringExprContext {\n\t\treturn this.getTypedRuleContext(StringExprContext, 0) as StringExprContext;\n\t}\n public get ruleIndex(): number {\n \treturn IfcExpressionParser.RULE_expr;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterExpr) {\n\t \t\tlistener.enterExpr(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitExpr) {\n\t \t\tlistener.exitExpr(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitExpr) {\n\t\t\treturn visitor.visitExpr(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class NumExprContext extends ParserRuleContext {\n\tconstructor(parser?: IfcExpressionParser, parent?: ParserRuleContext, invokingState?: number) {\n\t\tsuper(parent, invokingState);\n \tthis.parser = parser;\n\t}\n public get ruleIndex(): number {\n \treturn IfcExpressionParser.RULE_numExpr;\n\t}\n\tpublic copyFrom(ctx: NumExprContext): void {\n\t\tsuper.copyFrom(ctx);\n\t}\n}\nexport class NumMulDivContext extends NumExprContext {\n\tpublic _op!: Token;\n\tconstructor(parser: IfcExpressionParser, ctx: NumExprContext) {\n\t\tsuper(parser, ctx.parentCtx, ctx.invokingState);\n\t\tsuper.copyFrom(ctx);\n\t}\n\tpublic numExpr_list(): NumExprContext[] {\n\t\treturn this.getTypedRuleContexts(NumExprContext) as NumExprContext[];\n\t}\n\tpublic numExpr(i: number): NumExprContext {\n\t\treturn this.getTypedRuleContext(NumExprContext, i) as NumExprContext;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterNumMulDiv) {\n\t \t\tlistener.enterNumMulDiv(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitNumMulDiv) {\n\t \t\tlistener.exitNumMulDiv(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitNumMulDiv) {\n\t\t\treturn visitor.visitNumMulDiv(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\nexport class NumAddSubContext extends NumExprContext {\n\tpublic _op!: Token;\n\tconstructor(parser: IfcExpressionParser, ctx: NumExprContext) {\n\t\tsuper(parser, ctx.parentCtx, ctx.invokingState);\n\t\tsuper.copyFrom(ctx);\n\t}\n\tpublic numExpr_list(): NumExprContext[] {\n\t\treturn this.getTypedRuleContexts(NumExprContext) as NumExprContext[];\n\t}\n\tpublic numExpr(i: number): NumExprContext {\n\t\treturn this.getTypedRuleContext(NumExprContext, i) as NumExprContext;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterNumAddSub) {\n\t \t\tlistener.enterNumAddSub(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitNumAddSub) {\n\t \t\tlistener.exitNumAddSub(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitNumAddSub) {\n\t\t\treturn visitor.visitNumAddSub(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\nexport class NumParensContext extends NumExprContext {\n\tconstructor(parser: IfcExpressionParser, ctx: NumExprContext) {\n\t\tsuper(parser, ctx.parentCtx, ctx.invokingState);\n\t\tsuper.copyFrom(ctx);\n\t}\n\tpublic numExpr(): NumExprContext {\n\t\treturn this.getTypedRuleContext(NumExprContext, 0) as NumExprContext;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterNumParens) {\n\t \t\tlistener.enterNumParens(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitNumParens) {\n\t \t\tlistener.exitNumParens(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitNumParens) {\n\t\t\treturn visitor.visitNumParens(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\nexport class NumLitContext extends NumExprContext {\n\tconstructor(parser: IfcExpressionParser, ctx: NumExprContext) {\n\t\tsuper(parser, ctx.parentCtx, ctx.invokingState);\n\t\tsuper.copyFrom(ctx);\n\t}\n\tpublic numLiteral(): NumLiteralContext {\n\t\treturn this.getTypedRuleContext(NumLiteralContext, 0) as NumLiteralContext;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterNumLit) {\n\t \t\tlistener.enterNumLit(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitNumLit) {\n\t \t\tlistener.exitNumLit(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitNumLit) {\n\t\t\treturn visitor.visitNumLit(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\nexport class NumFunCallContext extends NumExprContext {\n\tconstructor(parser: IfcExpressionParser, ctx: NumExprContext) {\n\t\tsuper(parser, ctx.parentCtx, ctx.invokingState);\n\t\tsuper.copyFrom(ctx);\n\t}\n\tpublic functionCall(): FunctionCallContext {\n\t\treturn this.getTypedRuleContext(FunctionCallContext, 0) as FunctionCallContext;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterNumFunCall) {\n\t \t\tlistener.enterNumFunCall(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitNumFunCall) {\n\t \t\tlistener.exitNumFunCall(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitNumFunCall) {\n\t\t\treturn visitor.visitNumFunCall(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\nexport class NumAttributeRefContext extends NumExprContext {\n\tconstructor(parser: IfcExpressionParser, ctx: NumExprContext) {\n\t\tsuper(parser, ctx.parentCtx, ctx.invokingState);\n\t\tsuper.copyFrom(ctx);\n\t}\n\tpublic attributeRef(): AttributeRefContext {\n\t\treturn this.getTypedRuleContext(AttributeRefContext, 0) as AttributeRefContext;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterNumAttributeRef) {\n\t \t\tlistener.enterNumAttributeRef(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitNumAttributeRef) {\n\t \t\tlistener.exitNumAttributeRef(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitNumAttributeRef) {\n\t\t\treturn visitor.visitNumAttributeRef(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class NumLiteralContext extends ParserRuleContext {\n\tconstructor(parser?: IfcExpressionParser, parent?: ParserRuleContext, invokingState?: number) {\n\t\tsuper(parent, invokingState);\n \tthis.parser = parser;\n\t}\n\tpublic INT(): TerminalNode {\n\t\treturn this.getToken(IfcExpressionParser.INT, 0);\n\t}\n\tpublic FLOAT(): TerminalNode {\n\t\treturn this.getToken(IfcExpressionParser.FLOAT, 0);\n\t}\n public get ruleIndex(): number {\n \treturn IfcExpressionParser.RULE_numLiteral;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterNumLiteral) {\n\t \t\tlistener.enterNumLiteral(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitNumLiteral) {\n\t \t\tlistener.exitNumLiteral(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitNumLiteral) {\n\t\t\treturn visitor.visitNumLiteral(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class StringExprContext extends ParserRuleContext {\n\tconstructor(parser?: IfcExpressionParser, parent?: ParserRuleContext, invokingState?: number) {\n\t\tsuper(parent, invokingState);\n \tthis.parser = parser;\n\t}\n public get ruleIndex(): number {\n \treturn IfcExpressionParser.RULE_stringExpr;\n\t}\n\tpublic copyFrom(ctx: StringExprContext): void {\n\t\tsuper.copyFrom(ctx);\n\t}\n}\nexport class StringAttributeRefContext extends StringExprContext {\n\tconstructor(parser: IfcExpressionParser, ctx: StringExprContext) {\n\t\tsuper(parser, ctx.parentCtx, ctx.invokingState);\n\t\tsuper.copyFrom(ctx);\n\t}\n\tpublic attributeRef(): AttributeRefContext {\n\t\treturn this.getTypedRuleContext(AttributeRefContext, 0) as AttributeRefContext;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterStringAttributeRef) {\n\t \t\tlistener.enterStringAttributeRef(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitStringAttributeRef) {\n\t \t\tlistener.exitStringAttributeRef(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitStringAttributeRef) {\n\t\t\treturn visitor.visitStringAttributeRef(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\nexport class StringLiteralContext extends StringExprContext {\n\tconstructor(parser: IfcExpressionParser, ctx: StringExprContext) {\n\t\tsuper(parser, ctx.parentCtx, ctx.invokingState);\n\t\tsuper.copyFrom(ctx);\n\t}\n\tpublic QUOTED_STRING(): TerminalNode {\n\t\treturn this.getToken(IfcExpressionParser.QUOTED_STRING, 0);\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterStringLiteral) {\n\t \t\tlistener.enterStringLiteral(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitStringLiteral) {\n\t \t\tlistener.exitStringLiteral(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitStringLiteral) {\n\t\t\treturn visitor.visitStringLiteral(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\nexport class StringFunCallContext extends StringExprContext {\n\tconstructor(parser: IfcExpressionParser, ctx: StringExprContext) {\n\t\tsuper(parser, ctx.parentCtx, ctx.invokingState);\n\t\tsuper.copyFrom(ctx);\n\t}\n\tpublic functionCall(): FunctionCallContext {\n\t\treturn this.getTypedRuleContext(FunctionCallContext, 0) as FunctionCallContext;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterStringFunCall) {\n\t \t\tlistener.enterStringFunCall(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitStringFunCall) {\n\t \t\tlistener.exitStringFunCall(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitStringFunCall) {\n\t\t\treturn visitor.visitStringFunCall(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\nexport class StringConcatContext extends StringExprContext {\n\tpublic _left!: StringExprContext;\n\tpublic _right!: StringExprContext;\n\tconstructor(parser: IfcExpressionParser, ctx: StringExprContext) {\n\t\tsuper(parser, ctx.parentCtx, ctx.invokingState);\n\t\tsuper.copyFrom(ctx);\n\t}\n\tpublic stringExpr_list(): StringExprContext[] {\n\t\treturn this.getTypedRuleContexts(StringExprContext) as StringExprContext[];\n\t}\n\tpublic stringExpr(i: number): StringExprContext {\n\t\treturn this.getTypedRuleContext(StringExprContext, i) as StringExprContext;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterStringConcat) {\n\t \t\tlistener.enterStringConcat(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitStringConcat) {\n\t \t\tlistener.exitStringConcat(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitStringConcat) {\n\t\t\treturn visitor.visitStringConcat(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ObjectRefContext extends ParserRuleContext {\n\tconstructor(parser?: IfcExpressionParser, parent?: ParserRuleContext, invokingState?: number) {\n\t\tsuper(parent, invokingState);\n \tthis.parser = parser;\n\t}\n\tpublic PROP(): TerminalNode {\n\t\treturn this.getToken(IfcExpressionParser.PROP, 0);\n\t}\n\tpublic ELEM(): TerminalNode {\n\t\treturn this.getToken(IfcExpressionParser.ELEM, 0);\n\t}\n public get ruleIndex(): number {\n \treturn IfcExpressionParser.RULE_objectRef;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterObjectRef) {\n\t \t\tlistener.enterObjectRef(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitObjectRef) {\n\t \t\tlistener.exitObjectRef(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitObjectRef) {\n\t\t\treturn visitor.visitObjectRef(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AttributeRefContext extends ParserRuleContext {\n\tconstructor(parser?: IfcExpressionParser, parent?: ParserRuleContext, invokingState?: number) {\n\t\tsuper(parent, invokingState);\n \tthis.parser = parser;\n\t}\n\tpublic objectRef(): ObjectRefContext {\n\t\treturn this.getTypedRuleContext(ObjectRefContext, 0) as ObjectRefContext;\n\t}\n\tpublic nestedObjectChain(): NestedObjectChainContext {\n\t\treturn this.getTypedRuleContext(NestedObjectChainContext, 0) as NestedObjectChainContext;\n\t}\n public get ruleIndex(): number {\n \treturn IfcExpressionParser.RULE_attributeRef;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterAttributeRef) {\n\t \t\tlistener.enterAttributeRef(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitAttributeRef) {\n\t \t\tlistener.exitAttributeRef(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitAttributeRef) {\n\t\t\treturn visitor.visitAttributeRef(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class NestedObjectChainContext extends ParserRuleContext {\n\tconstructor(parser?: IfcExpressionParser, parent?: ParserRuleContext, invokingState?: number) {\n\t\tsuper(parent, invokingState);\n \tthis.parser = parser;\n\t}\n public get ruleIndex(): number {\n \treturn IfcExpressionParser.RULE_nestedObjectChain;\n\t}\n\tpublic copyFrom(ctx: NestedObjectChainContext): void {\n\t\tsuper.copyFrom(ctx);\n\t}\n}\nexport class NestedObjectChainEndContext extends NestedObjectChainContext {\n\tpublic _name!: Token;\n\tconstructor(parser: IfcExpressionParser, ctx: NestedObjectChainContext) {\n\t\tsuper(parser, ctx.parentCtx, ctx.invokingState);\n\t\tsuper.copyFrom(ctx);\n\t}\n\tpublic RESERVED_ATTRIBUTE_NAME(): TerminalNode {\n\t\treturn this.getToken(IfcExpressionParser.RESERVED_ATTRIBUTE_NAME, 0);\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterNestedObjectChainEnd) {\n\t \t\tlistener.enterNestedObjectChainEnd(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitNestedObjectChainEnd) {\n\t \t\tlistener.exitNestedObjectChainEnd(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitNestedObjectChainEnd) {\n\t\t\treturn visitor.visitNestedObjectChainEnd(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\nexport class NestedObjectChainInnerContext extends NestedObjectChainContext {\n\tconstructor(parser: IfcExpressionParser, ctx: NestedObjectChainContext) {\n\t\tsuper(parser, ctx.parentCtx, ctx.invokingState);\n\t\tsuper.copyFrom(ctx);\n\t}\n\tpublic namedRef(): NamedRefContext {\n\t\treturn this.getTypedRuleContext(NamedRefContext, 0) as NamedRefContext;\n\t}\n\tpublic nestedObjectChain(): NestedObjectChainContext {\n\t\treturn this.getTypedRuleContext(NestedObjectChainContext, 0) as NestedObjectChainContext;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterNestedObjectChainInner) {\n\t \t\tlistener.enterNestedObjectChainInner(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitNestedObjectChainInner) {\n\t \t\tlistener.exitNestedObjectChainInner(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitNestedObjectChainInner) {\n\t\t\treturn visitor.visitNestedObjectChainInner(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class NamedRefContext extends ParserRuleContext {\n\tpublic _name!: Token;\n\tconstructor(parser?: IfcExpressionParser, parent?: ParserRuleContext, invokingState?: number) {\n\t\tsuper(parent, invokingState);\n \tthis.parser = parser;\n\t}\n\tpublic RESERVED_RELATION_NAME(): TerminalNode {\n\t\treturn this.getToken(IfcExpressionParser.RESERVED_RELATION_NAME, 0);\n\t}\n\tpublic BRACKETED_STRING(): TerminalNode {\n\t\treturn this.getToken(IfcExpressionParser.BRACKETED_STRING, 0);\n\t}\n\tpublic IDENTIFIER(): TerminalNode {\n\t\treturn this.getToken(IfcExpressionParser.IDENTIFIER, 0);\n\t}\n public get ruleIndex(): number {\n \treturn IfcExpressionParser.RULE_namedRef;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterNamedRef) {\n\t \t\tlistener.enterNamedRef(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitNamedRef) {\n\t \t\tlistener.exitNamedRef(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitNamedRef) {\n\t\t\treturn visitor.visitNamedRef(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class FunctionCallContext extends ParserRuleContext {\n\tpublic _name!: Token;\n\tconstructor(parser?: IfcExpressionParser, parent?: ParserRuleContext, invokingState?: number) {\n\t\tsuper(parent, invokingState);\n \tthis.parser = parser;\n\t}\n\tpublic exprList(): ExprListContext {\n\t\treturn this.getTypedRuleContext(ExprListContext, 0) as ExprListContext;\n\t}\n\tpublic IDENTIFIER(): TerminalNode {\n\t\treturn this.getToken(IfcExpressionParser.IDENTIFIER, 0);\n\t}\n public get ruleIndex(): number {\n \treturn IfcExpressionParser.RULE_functionCall;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterFunctionCall) {\n\t \t\tlistener.enterFunctionCall(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitFunctionCall) {\n\t \t\tlistener.exitFunctionCall(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitFunctionCall) {\n\t\t\treturn visitor.visitFunctionCall(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ExprListContext extends ParserRuleContext {\n\tconstructor(parser?: IfcExpressionParser, parent?: ParserRuleContext, invokingState?: number) {\n\t\tsuper(parent, invokingState);\n \tthis.parser = parser;\n\t}\n\tpublic expr(): ExprContext {\n\t\treturn this.getTypedRuleContext(ExprContext, 0) as ExprContext;\n\t}\n\tpublic exprList(): ExprListContext {\n\t\treturn this.getTypedRuleContext(ExprListContext, 0) as ExprListContext;\n\t}\n public get ruleIndex(): number {\n \treturn IfcExpressionParser.RULE_exprList;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterExprList) {\n\t \t\tlistener.enterExprList(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitExprList) {\n\t \t\tlistener.exitExprList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitExprList) {\n\t\t\treturn visitor.visitExprList(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ArrayContext extends ParserRuleContext {\n\tconstructor(parser?: IfcExpressionParser, parent?: ParserRuleContext, invokingState?: number) {\n\t\tsuper(parent, invokingState);\n \tthis.parser = parser;\n\t}\n\tpublic arrayElementList(): ArrayElementListContext {\n\t\treturn this.getTypedRuleContext(ArrayElementListContext, 0) as ArrayElementListContext;\n\t}\n public get ruleIndex(): number {\n \treturn IfcExpressionParser.RULE_array;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterArray) {\n\t \t\tlistener.enterArray(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitArray) {\n\t \t\tlistener.exitArray(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitArray) {\n\t\t\treturn visitor.visitArray(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ArrayElementListContext extends ParserRuleContext {\n\tconstructor(parser?: IfcExpressionParser, parent?: ParserRuleContext, invokingState?: number) {\n\t\tsuper(parent, invokingState);\n \tthis.parser = parser;\n\t}\n\tpublic expr(): ExprContext {\n\t\treturn this.getTypedRuleContext(ExprContext, 0) as ExprContext;\n\t}\n\tpublic arrayElementList(): ArrayElementListContext {\n\t\treturn this.getTypedRuleContext(ArrayElementListContext, 0) as ArrayElementListContext;\n\t}\n public get ruleIndex(): number {\n \treturn IfcExpressionParser.RULE_arrayElementList;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterArrayElementList) {\n\t \t\tlistener.enterArrayElementList(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitArrayElementList) {\n\t \t\tlistener.exitArrayElementList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitArrayElementList) {\n\t\t\treturn visitor.visitArrayElementList(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"sources":["gen/parser/IfcExpressionParser.ts"],"names":[],"mappings":"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AAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IACvE,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IACtE,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC;IACtE,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IACtE,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IACtE,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IACvE,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC;IACtE,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC;IACtE,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IACtE,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE;IACtE,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC;IACtE,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IACtE,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IACtE,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IACtE,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IACvE,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IACtE,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IACtE,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE;IACvE,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE;IACxE,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE;IACtE,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE;IACtE,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE;IACxE,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE;IACtE,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC;IACtE,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC;IACvE,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC;IACvE,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE;IACvE,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC;IACvE,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC;IACvE,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,GAAG;IACxE,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;IACtE,GAAG,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG;IACtE,GAAG,EAAC,CAAC,EAAC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","file":"gen/parser/IfcExpressionParser.js","sourcesContent":["// Generated from IfcExpression.g4 by ANTLR 4.13.0\n// noinspection ES6UnusedImports,JSUnusedGlobalSymbols,JSUnusedLocalSymbols\n\nimport {\n\tATN,\n\tATNDeserializer, DecisionState, DFA, FailedPredicateException,\n\tRecognitionException, NoViableAltException, BailErrorStrategy,\n\tParser, ParserATNSimulator,\n\tRuleContext, ParserRuleContext, PredictionMode, PredictionContextCache,\n\tTerminalNode, RuleNode,\n\tToken, TokenStream,\n\tInterval, IntervalSet\n} from 'antlr4';\nimport IfcExpressionListener from \"./IfcExpressionListener.js\";\nimport IfcExpressionVisitor from \"./IfcExpressionVisitor.js\";\n\n// for running tests with parameters, TODO: discuss strategy for typed parameters in CI\n// eslint-disable-next-line no-unused-vars\ntype int = number;\n\nexport default class IfcExpressionParser extends Parser {\n\tpublic static readonly T__0 = 1;\n\tpublic static readonly T__1 = 2;\n\tpublic static readonly T__2 = 3;\n\tpublic static readonly T__3 = 4;\n\tpublic static readonly T__4 = 5;\n\tpublic static readonly T__5 = 6;\n\tpublic static readonly T__6 = 7;\n\tpublic static readonly T__7 = 8;\n\tpublic static readonly T__8 = 9;\n\tpublic static readonly T__9 = 10;\n\tpublic static readonly T__10 = 11;\n\tpublic static readonly INT = 12;\n\tpublic static readonly FLOAT = 13;\n\tpublic static readonly SIGN = 14;\n\tpublic static readonly PROP = 15;\n\tpublic static readonly ELEM = 16;\n\tpublic static readonly RESERVED_ATTRIBUTE_NAME = 17;\n\tpublic static readonly RESERVED_RELATION_NAME = 18;\n\tpublic static readonly QUOTED_STRING = 19;\n\tpublic static readonly BRACKETED_STRING = 20;\n\tpublic static readonly IDENTIFIER = 21;\n\tpublic static readonly WS = 22;\n\tpublic static readonly NEWLINE = 23;\n\tpublic static readonly EOF = Token.EOF;\n\tpublic static readonly RULE_expr = 0;\n\tpublic static readonly RULE_numExpr = 1;\n\tpublic static readonly RULE_numLiteral = 2;\n\tpublic static readonly RULE_stringExpr = 3;\n\tpublic static readonly RULE_objectRef = 4;\n\tpublic static readonly RULE_attributeRef = 5;\n\tpublic static readonly RULE_nestedObjectChain = 6;\n\tpublic static readonly RULE_namedRef = 7;\n\tpublic static readonly RULE_functionCall = 8;\n\tpublic static readonly RULE_exprList = 9;\n\tpublic static readonly RULE_array = 10;\n\tpublic static readonly RULE_arrayElementList = 11;\n\tpublic static readonly literalNames: (string | null)[] = [ null, \"'*'\", \n \"'/'\", \"'+'\", \n \"'-'\", \"'('\", \n \"')'\", \"'.'\", \n \"'@'\", \"','\", \n \"'['\", \"']'\" ];\n\tpublic static readonly symbolicNames: (string | null)[] = [ null, null, \n null, null, \n null, null, \n null, null, \n null, null, \n null, null, \n \"INT\", \"FLOAT\", \n \"SIGN\", \"PROP\", \n \"ELEM\", \"RESERVED_ATTRIBUTE_NAME\", \n \"RESERVED_RELATION_NAME\", \n \"QUOTED_STRING\", \n \"BRACKETED_STRING\", \n \"IDENTIFIER\", \n \"WS\", \"NEWLINE\" ];\n\t// tslint:disable:no-trailing-whitespace\n\tpublic static readonly ruleNames: string[] = [\n\t\t\"expr\", \"numExpr\", \"numLiteral\", \"stringExpr\", \"objectRef\", \"attributeRef\", \n\t\t\"nestedObjectChain\", \"namedRef\", \"functionCall\", \"exprList\", \"array\", \n\t\t\"arrayElementList\",\n\t];\n\tpublic get grammarFileName(): string { return \"IfcExpression.g4\"; }\n\tpublic get literalNames(): (string | null)[] { return IfcExpressionParser.literalNames; }\n\tpublic get symbolicNames(): (string | null)[] { return IfcExpressionParser.symbolicNames; }\n\tpublic get ruleNames(): string[] { return IfcExpressionParser.ruleNames; }\n\tpublic get serializedATN(): number[] { return IfcExpressionParser._serializedATN; }\n\n\tprotected createFailedPredicateException(predicate?: string, message?: string): FailedPredicateException {\n\t\treturn new FailedPredicateException(this, predicate, message);\n\t}\n\n\tconstructor(input: TokenStream) {\n\t\tsuper(input);\n\t\tthis._interp = new ParserATNSimulator(this, IfcExpressionParser._ATN, IfcExpressionParser.DecisionsToDFA, new PredictionContextCache());\n\t}\n\t// @RuleVersion(0)\n\tpublic expr(): ExprContext {\n\t\tlet localctx: ExprContext = new ExprContext(this, this._ctx, this.state);\n\t\tthis.enterRule(localctx, 0, IfcExpressionParser.RULE_expr);\n\t\ttry {\n\t\t\tthis.state = 29;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this._interp.adaptivePredict(this._input, 0, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\tthis.enterOuterAlt(localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 24;\n\t\t\t\tthis.attributeRef();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tthis.enterOuterAlt(localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 25;\n\t\t\t\tthis.functionCall();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tthis.enterOuterAlt(localctx, 3);\n\t\t\t\t{\n\t\t\t\tthis.state = 26;\n\t\t\t\tthis.numExpr(0);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t\tthis.enterOuterAlt(localctx, 4);\n\t\t\t\t{\n\t\t\t\tthis.state = 27;\n\t\t\t\tthis.array();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 5:\n\t\t\t\tthis.enterOuterAlt(localctx, 5);\n\t\t\t\t{\n\t\t\t\tthis.state = 28;\n\t\t\t\tthis.stringExpr(0);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\tlocalctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn localctx;\n\t}\n\n\tpublic numExpr(): NumExprContext;\n\tpublic numExpr(_p: number): NumExprContext;\n\t// @RuleVersion(0)\n\tpublic numExpr(_p?: number): NumExprContext {\n\t\tif (_p === undefined) {\n\t\t\t_p = 0;\n\t\t}\n\n\t\tlet _parentctx: ParserRuleContext = this._ctx;\n\t\tlet _parentState: number = this.state;\n\t\tlet localctx: NumExprContext = new NumExprContext(this, this._ctx, _parentState);\n\t\tlet _prevctx: NumExprContext = localctx;\n\t\tlet _startState: number = 2;\n\t\tthis.enterRecursionRule(localctx, 2, IfcExpressionParser.RULE_numExpr, _p);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tlet _alt: number;\n\t\t\tthis.enterOuterAlt(localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 39;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase 3:\n\t\t\tcase 4:\n\t\t\tcase 12:\n\t\t\tcase 13:\n\t\t\t\t{\n\t\t\t\tlocalctx = new NumLitContext(this, localctx);\n\t\t\t\tthis._ctx = localctx;\n\t\t\t\t_prevctx = localctx;\n\n\t\t\t\tthis.state = 32;\n\t\t\t\tthis.numLiteral();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 5:\n\t\t\t\t{\n\t\t\t\tlocalctx = new NumParensContext(this, localctx);\n\t\t\t\tthis._ctx = localctx;\n\t\t\t\t_prevctx = localctx;\n\t\t\t\tthis.state = 33;\n\t\t\t\tthis.match(IfcExpressionParser.T__4);\n\t\t\t\tthis.state = 34;\n\t\t\t\tthis.numExpr(0);\n\t\t\t\tthis.state = 35;\n\t\t\t\tthis.match(IfcExpressionParser.T__5);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 21:\n\t\t\t\t{\n\t\t\t\tlocalctx = new NumFunCallContext(this, localctx);\n\t\t\t\tthis._ctx = localctx;\n\t\t\t\t_prevctx = localctx;\n\t\t\t\tthis.state = 37;\n\t\t\t\tthis.functionCall();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 15:\n\t\t\tcase 16:\n\t\t\t\t{\n\t\t\t\tlocalctx = new NumAttributeRefContext(this, localctx);\n\t\t\t\tthis._ctx = localctx;\n\t\t\t\t_prevctx = localctx;\n\t\t\t\tthis.state = 38;\n\t\t\t\tthis.attributeRef();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t\tthis._ctx.stop = this._input.LT(-1);\n\t\t\tthis.state = 49;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_alt = this._interp.adaptivePredict(this._input, 3, this._ctx);\n\t\t\twhile (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {\n\t\t\t\tif (_alt === 1) {\n\t\t\t\t\tif (this._parseListeners != null) {\n\t\t\t\t\t\tthis.triggerExitRuleEvent();\n\t\t\t\t\t}\n\t\t\t\t\t_prevctx = localctx;\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 47;\n\t\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t\tswitch ( this._interp.adaptivePredict(this._input, 2, this._ctx) ) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\t{\n\t\t\t\t\t\tlocalctx = new NumMulDivContext(this, new NumExprContext(this, _parentctx, _parentState));\n\t\t\t\t\t\tthis.pushNewRecursionContext(localctx, _startState, IfcExpressionParser.RULE_numExpr);\n\t\t\t\t\t\tthis.state = 41;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 6))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 6)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 42;\n\t\t\t\t\t\t(localctx as NumMulDivContext)._op = this._input.LT(1);\n\t\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\t\tif(!(_la===1 || _la===2)) {\n\t\t\t\t\t\t (localctx as NumMulDivContext)._op = this._errHandler.recoverInline(this);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\t\t\t this.consume();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 43;\n\t\t\t\t\t\tthis.numExpr(7);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\t{\n\t\t\t\t\t\tlocalctx = new NumAddSubContext(this, new NumExprContext(this, _parentctx, _parentState));\n\t\t\t\t\t\tthis.pushNewRecursionContext(localctx, _startState, IfcExpressionParser.RULE_numExpr);\n\t\t\t\t\t\tthis.state = 44;\n\t\t\t\t\t\tif (!(this.precpred(this._ctx, 5))) {\n\t\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 5)\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 45;\n\t\t\t\t\t\t(localctx as NumAddSubContext)._op = this._input.LT(1);\n\t\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\t\tif(!(_la===3 || _la===4)) {\n\t\t\t\t\t\t (localctx as NumAddSubContext)._op = this._errHandler.recoverInline(this);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\t\t\t this.consume();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.state = 46;\n\t\t\t\t\t\tthis.numExpr(6);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 51;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_alt = this._interp.adaptivePredict(this._input, 3, this._ctx);\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\tlocalctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.unrollRecursionContexts(_parentctx);\n\t\t}\n\t\treturn localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic numLiteral(): NumLiteralContext {\n\t\tlet localctx: NumLiteralContext = new NumLiteralContext(this, this._ctx, this.state);\n\t\tthis.enterRule(localctx, 4, IfcExpressionParser.RULE_numLiteral);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.state = 60;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this._interp.adaptivePredict(this._input, 6, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\tthis.enterOuterAlt(localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 53;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (_la===3 || _la===4) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 52;\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\tif(!(_la===3 || _la===4)) {\n\t\t\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\t\t this.consume();\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.state = 55;\n\t\t\t\tthis.match(IfcExpressionParser.INT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tthis.enterOuterAlt(localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 57;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_la = this._input.LA(1);\n\t\t\t\tif (_la===3 || _la===4) {\n\t\t\t\t\t{\n\t\t\t\t\tthis.state = 56;\n\t\t\t\t\t_la = this._input.LA(1);\n\t\t\t\t\tif(!(_la===3 || _la===4)) {\n\t\t\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t\t\t this.consume();\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.state = 59;\n\t\t\t\tthis.match(IfcExpressionParser.FLOAT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\tlocalctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn localctx;\n\t}\n\n\tpublic stringExpr(): StringExprContext;\n\tpublic stringExpr(_p: number): StringExprContext;\n\t// @RuleVersion(0)\n\tpublic stringExpr(_p?: number): StringExprContext {\n\t\tif (_p === undefined) {\n\t\t\t_p = 0;\n\t\t}\n\n\t\tlet _parentctx: ParserRuleContext = this._ctx;\n\t\tlet _parentState: number = this.state;\n\t\tlet localctx: StringExprContext = new StringExprContext(this, this._ctx, _parentState);\n\t\tlet _prevctx: StringExprContext = localctx;\n\t\tlet _startState: number = 6;\n\t\tthis.enterRecursionRule(localctx, 6, IfcExpressionParser.RULE_stringExpr, _p);\n\t\ttry {\n\t\t\tlet _alt: number;\n\t\t\tthis.enterOuterAlt(localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 66;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase 19:\n\t\t\t\t{\n\t\t\t\tlocalctx = new StringLiteralContext(this, localctx);\n\t\t\t\tthis._ctx = localctx;\n\t\t\t\t_prevctx = localctx;\n\n\t\t\t\tthis.state = 63;\n\t\t\t\tthis.match(IfcExpressionParser.QUOTED_STRING);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 21:\n\t\t\t\t{\n\t\t\t\tlocalctx = new StringFunCallContext(this, localctx);\n\t\t\t\tthis._ctx = localctx;\n\t\t\t\t_prevctx = localctx;\n\t\t\t\tthis.state = 64;\n\t\t\t\tthis.functionCall();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 15:\n\t\t\tcase 16:\n\t\t\t\t{\n\t\t\t\tlocalctx = new StringAttributeRefContext(this, localctx);\n\t\t\t\tthis._ctx = localctx;\n\t\t\t\t_prevctx = localctx;\n\t\t\t\tthis.state = 65;\n\t\t\t\tthis.attributeRef();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t\tthis._ctx.stop = this._input.LT(-1);\n\t\t\tthis.state = 73;\n\t\t\tthis._errHandler.sync(this);\n\t\t\t_alt = this._interp.adaptivePredict(this._input, 8, this._ctx);\n\t\t\twhile (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {\n\t\t\t\tif (_alt === 1) {\n\t\t\t\t\tif (this._parseListeners != null) {\n\t\t\t\t\t\tthis.triggerExitRuleEvent();\n\t\t\t\t\t}\n\t\t\t\t\t_prevctx = localctx;\n\t\t\t\t\t{\n\t\t\t\t\t{\n\t\t\t\t\tlocalctx = new StringConcatContext(this, new StringExprContext(this, _parentctx, _parentState));\n\t\t\t\t\t(localctx as StringConcatContext)._left = _prevctx;\n\t\t\t\t\tthis.pushNewRecursionContext(localctx, _startState, IfcExpressionParser.RULE_stringExpr);\n\t\t\t\t\tthis.state = 68;\n\t\t\t\t\tif (!(this.precpred(this._ctx, 3))) {\n\t\t\t\t\t\tthrow this.createFailedPredicateException(\"this.precpred(this._ctx, 3)\");\n\t\t\t\t\t}\n\t\t\t\t\tthis.state = 69;\n\t\t\t\t\tthis.match(IfcExpressionParser.T__2);\n\t\t\t\t\tthis.state = 70;\n\t\t\t\t\t(localctx as StringConcatContext)._right = this.stringExpr(4);\n\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.state = 75;\n\t\t\t\tthis._errHandler.sync(this);\n\t\t\t\t_alt = this._interp.adaptivePredict(this._input, 8, this._ctx);\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\tlocalctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.unrollRecursionContexts(_parentctx);\n\t\t}\n\t\treturn localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic objectRef(): ObjectRefContext {\n\t\tlet localctx: ObjectRefContext = new ObjectRefContext(this, this._ctx, this.state);\n\t\tthis.enterRule(localctx, 8, IfcExpressionParser.RULE_objectRef);\n\t\tlet _la: number;\n\t\ttry {\n\t\t\tthis.enterOuterAlt(localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 76;\n\t\t\t_la = this._input.LA(1);\n\t\t\tif(!(_la===15 || _la===16)) {\n\t\t\tthis._errHandler.recoverInline(this);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._errHandler.reportMatch(this);\n\t\t\t this.consume();\n\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\tlocalctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic attributeRef(): AttributeRefContext {\n\t\tlet localctx: AttributeRefContext = new AttributeRefContext(this, this._ctx, this.state);\n\t\tthis.enterRule(localctx, 10, IfcExpressionParser.RULE_attributeRef);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 78;\n\t\t\tthis.objectRef();\n\t\t\tthis.state = 79;\n\t\t\tthis.nestedObjectChain();\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\tlocalctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic nestedObjectChain(): NestedObjectChainContext {\n\t\tlet localctx: NestedObjectChainContext = new NestedObjectChainContext(this, this._ctx, this.state);\n\t\tthis.enterRule(localctx, 12, IfcExpressionParser.RULE_nestedObjectChain);\n\t\ttry {\n\t\t\tthis.state = 87;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase 7:\n\t\t\t\tlocalctx = new NestedObjectChainInnerContext(this, localctx);\n\t\t\t\tthis.enterOuterAlt(localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 81;\n\t\t\t\tthis.match(IfcExpressionParser.T__6);\n\t\t\t\tthis.state = 82;\n\t\t\t\tthis.namedRef();\n\t\t\t\tthis.state = 83;\n\t\t\t\tthis.nestedObjectChain();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 8:\n\t\t\t\tlocalctx = new NestedObjectChainEndContext(this, localctx);\n\t\t\t\tthis.enterOuterAlt(localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 85;\n\t\t\t\tthis.match(IfcExpressionParser.T__7);\n\t\t\t\tthis.state = 86;\n\t\t\t\t(localctx as NestedObjectChainEndContext)._name = this.match(IfcExpressionParser.RESERVED_ATTRIBUTE_NAME);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\tlocalctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic namedRef(): NamedRefContext {\n\t\tlet localctx: NamedRefContext = new NamedRefContext(this, this._ctx, this.state);\n\t\tthis.enterRule(localctx, 14, IfcExpressionParser.RULE_namedRef);\n\t\ttry {\n\t\t\tthis.state = 92;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch (this._input.LA(1)) {\n\t\t\tcase 18:\n\t\t\t\tthis.enterOuterAlt(localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 89;\n\t\t\t\tlocalctx._name = this.match(IfcExpressionParser.RESERVED_RELATION_NAME);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 20:\n\t\t\t\tthis.enterOuterAlt(localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 90;\n\t\t\t\tlocalctx._name = this.match(IfcExpressionParser.BRACKETED_STRING);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 21:\n\t\t\t\tthis.enterOuterAlt(localctx, 3);\n\t\t\t\t{\n\t\t\t\tthis.state = 91;\n\t\t\t\tlocalctx._name = this.match(IfcExpressionParser.IDENTIFIER);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new NoViableAltException(this);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\tlocalctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic functionCall(): FunctionCallContext {\n\t\tlet localctx: FunctionCallContext = new FunctionCallContext(this, this._ctx, this.state);\n\t\tthis.enterRule(localctx, 16, IfcExpressionParser.RULE_functionCall);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 94;\n\t\t\tlocalctx._name = this.match(IfcExpressionParser.IDENTIFIER);\n\t\t\tthis.state = 95;\n\t\t\tthis.match(IfcExpressionParser.T__4);\n\t\t\tthis.state = 96;\n\t\t\tthis.exprList();\n\t\t\tthis.state = 97;\n\t\t\tthis.match(IfcExpressionParser.T__5);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\tlocalctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic exprList(): ExprListContext {\n\t\tlet localctx: ExprListContext = new ExprListContext(this, this._ctx, this.state);\n\t\tthis.enterRule(localctx, 18, IfcExpressionParser.RULE_exprList);\n\t\ttry {\n\t\t\tthis.state = 104;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this._interp.adaptivePredict(this._input, 11, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\tthis.enterOuterAlt(localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 99;\n\t\t\t\tthis.expr();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tthis.enterOuterAlt(localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 100;\n\t\t\t\tthis.expr();\n\t\t\t\tthis.state = 101;\n\t\t\t\tthis.match(IfcExpressionParser.T__8);\n\t\t\t\tthis.state = 102;\n\t\t\t\tthis.exprList();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\tlocalctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic array(): ArrayContext {\n\t\tlet localctx: ArrayContext = new ArrayContext(this, this._ctx, this.state);\n\t\tthis.enterRule(localctx, 20, IfcExpressionParser.RULE_array);\n\t\ttry {\n\t\t\tthis.enterOuterAlt(localctx, 1);\n\t\t\t{\n\t\t\tthis.state = 106;\n\t\t\tthis.match(IfcExpressionParser.T__9);\n\t\t\tthis.state = 107;\n\t\t\tthis.arrayElementList();\n\t\t\tthis.state = 108;\n\t\t\tthis.match(IfcExpressionParser.T__10);\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\tlocalctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn localctx;\n\t}\n\t// @RuleVersion(0)\n\tpublic arrayElementList(): ArrayElementListContext {\n\t\tlet localctx: ArrayElementListContext = new ArrayElementListContext(this, this._ctx, this.state);\n\t\tthis.enterRule(localctx, 22, IfcExpressionParser.RULE_arrayElementList);\n\t\ttry {\n\t\t\tthis.state = 115;\n\t\t\tthis._errHandler.sync(this);\n\t\t\tswitch ( this._interp.adaptivePredict(this._input, 12, this._ctx) ) {\n\t\t\tcase 1:\n\t\t\t\tthis.enterOuterAlt(localctx, 1);\n\t\t\t\t{\n\t\t\t\tthis.state = 110;\n\t\t\t\tthis.expr();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tthis.enterOuterAlt(localctx, 2);\n\t\t\t\t{\n\t\t\t\tthis.state = 111;\n\t\t\t\tthis.expr();\n\t\t\t\tthis.state = 112;\n\t\t\t\tthis.match(IfcExpressionParser.T__8);\n\t\t\t\tthis.state = 113;\n\t\t\t\tthis.arrayElementList();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tcatch (re) {\n\t\t\tif (re instanceof RecognitionException) {\n\t\t\t\tlocalctx.exception = re;\n\t\t\t\tthis._errHandler.reportError(this, re);\n\t\t\t\tthis._errHandler.recover(this, re);\n\t\t\t} else {\n\t\t\t\tthrow re;\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis.exitRule();\n\t\t}\n\t\treturn localctx;\n\t}\n\n\tpublic sempred(localctx: RuleContext, ruleIndex: number, predIndex: number): boolean {\n\t\tswitch (ruleIndex) {\n\t\tcase 1:\n\t\t\treturn this.numExpr_sempred(localctx as NumExprContext, predIndex);\n\t\tcase 3:\n\t\t\treturn this.stringExpr_sempred(localctx as StringExprContext, predIndex);\n\t\t}\n\t\treturn true;\n\t}\n\tprivate numExpr_sempred(localctx: NumExprContext, predIndex: number): boolean {\n\t\tswitch (predIndex) {\n\t\tcase 0:\n\t\t\treturn this.precpred(this._ctx, 6);\n\t\tcase 1:\n\t\t\treturn this.precpred(this._ctx, 5);\n\t\t}\n\t\treturn true;\n\t}\n\tprivate stringExpr_sempred(localctx: StringExprContext, predIndex: number): boolean {\n\t\tswitch (predIndex) {\n\t\tcase 2:\n\t\t\treturn this.precpred(this._ctx, 3);\n\t\t}\n\t\treturn true;\n\t}\n\n\tpublic static readonly _serializedATN: number[] = [4,1,23,118,2,0,7,0,2,\n\t1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,\n\t10,7,10,2,11,7,11,1,0,1,0,1,0,1,0,1,0,3,0,30,8,0,1,1,1,1,1,1,1,1,1,1,1,\n\t1,1,1,1,1,3,1,40,8,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,48,8,1,10,1,12,1,51,9,\n\t1,1,2,3,2,54,8,2,1,2,1,2,3,2,58,8,2,1,2,3,2,61,8,2,1,3,1,3,1,3,1,3,3,3,\n\t67,8,3,1,3,1,3,1,3,5,3,72,8,3,10,3,12,3,75,9,3,1,4,1,4,1,5,1,5,1,5,1,6,\n\t1,6,1,6,1,6,1,6,1,6,3,6,88,8,6,1,7,1,7,1,7,3,7,93,8,7,1,8,1,8,1,8,1,8,1,\n\t8,1,9,1,9,1,9,1,9,1,9,3,9,105,8,9,1,10,1,10,1,10,1,10,1,11,1,11,1,11,1,\n\t11,1,11,3,11,116,8,11,1,11,0,2,2,6,12,0,2,4,6,8,10,12,14,16,18,20,22,0,\n\t3,1,0,1,2,1,0,3,4,1,0,15,16,125,0,29,1,0,0,0,2,39,1,0,0,0,4,60,1,0,0,0,\n\t6,66,1,0,0,0,8,76,1,0,0,0,10,78,1,0,0,0,12,87,1,0,0,0,14,92,1,0,0,0,16,\n\t94,1,0,0,0,18,104,1,0,0,0,20,106,1,0,0,0,22,115,1,0,0,0,24,30,3,10,5,0,\n\t25,30,3,16,8,0,26,30,3,2,1,0,27,30,3,20,10,0,28,30,3,6,3,0,29,24,1,0,0,\n\t0,29,25,1,0,0,0,29,26,1,0,0,0,29,27,1,0,0,0,29,28,1,0,0,0,30,1,1,0,0,0,\n\t31,32,6,1,-1,0,32,40,3,4,2,0,33,34,5,5,0,0,34,35,3,2,1,0,35,36,5,6,0,0,\n\t36,40,1,0,0,0,37,40,3,16,8,0,38,40,3,10,5,0,39,31,1,0,0,0,39,33,1,0,0,0,\n\t39,37,1,0,0,0,39,38,1,0,0,0,40,49,1,0,0,0,41,42,10,6,0,0,42,43,7,0,0,0,\n\t43,48,3,2,1,7,44,45,10,5,0,0,45,46,7,1,0,0,46,48,3,2,1,6,47,41,1,0,0,0,\n\t47,44,1,0,0,0,48,51,1,0,0,0,49,47,1,0,0,0,49,50,1,0,0,0,50,3,1,0,0,0,51,\n\t49,1,0,0,0,52,54,7,1,0,0,53,52,1,0,0,0,53,54,1,0,0,0,54,55,1,0,0,0,55,61,\n\t5,12,0,0,56,58,7,1,0,0,57,56,1,0,0,0,57,58,1,0,0,0,58,59,1,0,0,0,59,61,\n\t5,13,0,0,60,53,1,0,0,0,60,57,1,0,0,0,61,5,1,0,0,0,62,63,6,3,-1,0,63,67,\n\t5,19,0,0,64,67,3,16,8,0,65,67,3,10,5,0,66,62,1,0,0,0,66,64,1,0,0,0,66,65,\n\t1,0,0,0,67,73,1,0,0,0,68,69,10,3,0,0,69,70,5,3,0,0,70,72,3,6,3,4,71,68,\n\t1,0,0,0,72,75,1,0,0,0,73,71,1,0,0,0,73,74,1,0,0,0,74,7,1,0,0,0,75,73,1,\n\t0,0,0,76,77,7,2,0,0,77,9,1,0,0,0,78,79,3,8,4,0,79,80,3,12,6,0,80,11,1,0,\n\t0,0,81,82,5,7,0,0,82,83,3,14,7,0,83,84,3,12,6,0,84,88,1,0,0,0,85,86,5,8,\n\t0,0,86,88,5,17,0,0,87,81,1,0,0,0,87,85,1,0,0,0,88,13,1,0,0,0,89,93,5,18,\n\t0,0,90,93,5,20,0,0,91,93,5,21,0,0,92,89,1,0,0,0,92,90,1,0,0,0,92,91,1,0,\n\t0,0,93,15,1,0,0,0,94,95,5,21,0,0,95,96,5,5,0,0,96,97,3,18,9,0,97,98,5,6,\n\t0,0,98,17,1,0,0,0,99,105,3,0,0,0,100,101,3,0,0,0,101,102,5,9,0,0,102,103,\n\t3,18,9,0,103,105,1,0,0,0,104,99,1,0,0,0,104,100,1,0,0,0,105,19,1,0,0,0,\n\t106,107,5,10,0,0,107,108,3,22,11,0,108,109,5,11,0,0,109,21,1,0,0,0,110,\n\t116,3,0,0,0,111,112,3,0,0,0,112,113,5,9,0,0,113,114,3,22,11,0,114,116,1,\n\t0,0,0,115,110,1,0,0,0,115,111,1,0,0,0,116,23,1,0,0,0,13,29,39,47,49,53,\n\t57,60,66,73,87,92,104,115];\n\n\tprivate static __ATN: ATN;\n\tpublic static get _ATN(): ATN {\n\t\tif (!IfcExpressionParser.__ATN) {\n\t\t\tIfcExpressionParser.__ATN = new ATNDeserializer().deserialize(IfcExpressionParser._serializedATN);\n\t\t}\n\n\t\treturn IfcExpressionParser.__ATN;\n\t}\n\n\n\tstatic DecisionsToDFA = IfcExpressionParser._ATN.decisionToState.map( (ds: DecisionState, index: number) => new DFA(ds, index) );\n\n}\n\nexport class ExprContext extends ParserRuleContext {\n\tconstructor(parser?: IfcExpressionParser, parent?: ParserRuleContext, invokingState?: number) {\n\t\tsuper(parent, invokingState);\n \tthis.parser = parser;\n\t}\n\tpublic attributeRef(): AttributeRefContext {\n\t\treturn this.getTypedRuleContext(AttributeRefContext, 0) as AttributeRefContext;\n\t}\n\tpublic functionCall(): FunctionCallContext {\n\t\treturn this.getTypedRuleContext(FunctionCallContext, 0) as FunctionCallContext;\n\t}\n\tpublic numExpr(): NumExprContext {\n\t\treturn this.getTypedRuleContext(NumExprContext, 0) as NumExprContext;\n\t}\n\tpublic array(): ArrayContext {\n\t\treturn this.getTypedRuleContext(ArrayContext, 0) as ArrayContext;\n\t}\n\tpublic stringExpr(): StringExprContext {\n\t\treturn this.getTypedRuleContext(StringExprContext, 0) as StringExprContext;\n\t}\n public get ruleIndex(): number {\n \treturn IfcExpressionParser.RULE_expr;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterExpr) {\n\t \t\tlistener.enterExpr(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitExpr) {\n\t \t\tlistener.exitExpr(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitExpr) {\n\t\t\treturn visitor.visitExpr(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class NumExprContext extends ParserRuleContext {\n\tconstructor(parser?: IfcExpressionParser, parent?: ParserRuleContext, invokingState?: number) {\n\t\tsuper(parent, invokingState);\n \tthis.parser = parser;\n\t}\n public get ruleIndex(): number {\n \treturn IfcExpressionParser.RULE_numExpr;\n\t}\n\tpublic copyFrom(ctx: NumExprContext): void {\n\t\tsuper.copyFrom(ctx);\n\t}\n}\nexport class NumMulDivContext extends NumExprContext {\n\tpublic _op!: Token;\n\tconstructor(parser: IfcExpressionParser, ctx: NumExprContext) {\n\t\tsuper(parser, ctx.parentCtx, ctx.invokingState);\n\t\tsuper.copyFrom(ctx);\n\t}\n\tpublic numExpr_list(): NumExprContext[] {\n\t\treturn this.getTypedRuleContexts(NumExprContext) as NumExprContext[];\n\t}\n\tpublic numExpr(i: number): NumExprContext {\n\t\treturn this.getTypedRuleContext(NumExprContext, i) as NumExprContext;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterNumMulDiv) {\n\t \t\tlistener.enterNumMulDiv(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitNumMulDiv) {\n\t \t\tlistener.exitNumMulDiv(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitNumMulDiv) {\n\t\t\treturn visitor.visitNumMulDiv(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\nexport class NumAddSubContext extends NumExprContext {\n\tpublic _op!: Token;\n\tconstructor(parser: IfcExpressionParser, ctx: NumExprContext) {\n\t\tsuper(parser, ctx.parentCtx, ctx.invokingState);\n\t\tsuper.copyFrom(ctx);\n\t}\n\tpublic numExpr_list(): NumExprContext[] {\n\t\treturn this.getTypedRuleContexts(NumExprContext) as NumExprContext[];\n\t}\n\tpublic numExpr(i: number): NumExprContext {\n\t\treturn this.getTypedRuleContext(NumExprContext, i) as NumExprContext;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterNumAddSub) {\n\t \t\tlistener.enterNumAddSub(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitNumAddSub) {\n\t \t\tlistener.exitNumAddSub(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitNumAddSub) {\n\t\t\treturn visitor.visitNumAddSub(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\nexport class NumParensContext extends NumExprContext {\n\tconstructor(parser: IfcExpressionParser, ctx: NumExprContext) {\n\t\tsuper(parser, ctx.parentCtx, ctx.invokingState);\n\t\tsuper.copyFrom(ctx);\n\t}\n\tpublic numExpr(): NumExprContext {\n\t\treturn this.getTypedRuleContext(NumExprContext, 0) as NumExprContext;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterNumParens) {\n\t \t\tlistener.enterNumParens(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitNumParens) {\n\t \t\tlistener.exitNumParens(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitNumParens) {\n\t\t\treturn visitor.visitNumParens(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\nexport class NumLitContext extends NumExprContext {\n\tconstructor(parser: IfcExpressionParser, ctx: NumExprContext) {\n\t\tsuper(parser, ctx.parentCtx, ctx.invokingState);\n\t\tsuper.copyFrom(ctx);\n\t}\n\tpublic numLiteral(): NumLiteralContext {\n\t\treturn this.getTypedRuleContext(NumLiteralContext, 0) as NumLiteralContext;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterNumLit) {\n\t \t\tlistener.enterNumLit(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitNumLit) {\n\t \t\tlistener.exitNumLit(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitNumLit) {\n\t\t\treturn visitor.visitNumLit(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\nexport class NumFunCallContext extends NumExprContext {\n\tconstructor(parser: IfcExpressionParser, ctx: NumExprContext) {\n\t\tsuper(parser, ctx.parentCtx, ctx.invokingState);\n\t\tsuper.copyFrom(ctx);\n\t}\n\tpublic functionCall(): FunctionCallContext {\n\t\treturn this.getTypedRuleContext(FunctionCallContext, 0) as FunctionCallContext;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterNumFunCall) {\n\t \t\tlistener.enterNumFunCall(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitNumFunCall) {\n\t \t\tlistener.exitNumFunCall(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitNumFunCall) {\n\t\t\treturn visitor.visitNumFunCall(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\nexport class NumAttributeRefContext extends NumExprContext {\n\tconstructor(parser: IfcExpressionParser, ctx: NumExprContext) {\n\t\tsuper(parser, ctx.parentCtx, ctx.invokingState);\n\t\tsuper.copyFrom(ctx);\n\t}\n\tpublic attributeRef(): AttributeRefContext {\n\t\treturn this.getTypedRuleContext(AttributeRefContext, 0) as AttributeRefContext;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterNumAttributeRef) {\n\t \t\tlistener.enterNumAttributeRef(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitNumAttributeRef) {\n\t \t\tlistener.exitNumAttributeRef(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitNumAttributeRef) {\n\t\t\treturn visitor.visitNumAttributeRef(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class NumLiteralContext extends ParserRuleContext {\n\tconstructor(parser?: IfcExpressionParser, parent?: ParserRuleContext, invokingState?: number) {\n\t\tsuper(parent, invokingState);\n \tthis.parser = parser;\n\t}\n\tpublic INT(): TerminalNode {\n\t\treturn this.getToken(IfcExpressionParser.INT, 0);\n\t}\n\tpublic FLOAT(): TerminalNode {\n\t\treturn this.getToken(IfcExpressionParser.FLOAT, 0);\n\t}\n public get ruleIndex(): number {\n \treturn IfcExpressionParser.RULE_numLiteral;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterNumLiteral) {\n\t \t\tlistener.enterNumLiteral(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitNumLiteral) {\n\t \t\tlistener.exitNumLiteral(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitNumLiteral) {\n\t\t\treturn visitor.visitNumLiteral(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class StringExprContext extends ParserRuleContext {\n\tconstructor(parser?: IfcExpressionParser, parent?: ParserRuleContext, invokingState?: number) {\n\t\tsuper(parent, invokingState);\n \tthis.parser = parser;\n\t}\n public get ruleIndex(): number {\n \treturn IfcExpressionParser.RULE_stringExpr;\n\t}\n\tpublic copyFrom(ctx: StringExprContext): void {\n\t\tsuper.copyFrom(ctx);\n\t}\n}\nexport class StringAttributeRefContext extends StringExprContext {\n\tconstructor(parser: IfcExpressionParser, ctx: StringExprContext) {\n\t\tsuper(parser, ctx.parentCtx, ctx.invokingState);\n\t\tsuper.copyFrom(ctx);\n\t}\n\tpublic attributeRef(): AttributeRefContext {\n\t\treturn this.getTypedRuleContext(AttributeRefContext, 0) as AttributeRefContext;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterStringAttributeRef) {\n\t \t\tlistener.enterStringAttributeRef(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitStringAttributeRef) {\n\t \t\tlistener.exitStringAttributeRef(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitStringAttributeRef) {\n\t\t\treturn visitor.visitStringAttributeRef(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\nexport class StringLiteralContext extends StringExprContext {\n\tconstructor(parser: IfcExpressionParser, ctx: StringExprContext) {\n\t\tsuper(parser, ctx.parentCtx, ctx.invokingState);\n\t\tsuper.copyFrom(ctx);\n\t}\n\tpublic QUOTED_STRING(): TerminalNode {\n\t\treturn this.getToken(IfcExpressionParser.QUOTED_STRING, 0);\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterStringLiteral) {\n\t \t\tlistener.enterStringLiteral(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitStringLiteral) {\n\t \t\tlistener.exitStringLiteral(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitStringLiteral) {\n\t\t\treturn visitor.visitStringLiteral(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\nexport class StringFunCallContext extends StringExprContext {\n\tconstructor(parser: IfcExpressionParser, ctx: StringExprContext) {\n\t\tsuper(parser, ctx.parentCtx, ctx.invokingState);\n\t\tsuper.copyFrom(ctx);\n\t}\n\tpublic functionCall(): FunctionCallContext {\n\t\treturn this.getTypedRuleContext(FunctionCallContext, 0) as FunctionCallContext;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterStringFunCall) {\n\t \t\tlistener.enterStringFunCall(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitStringFunCall) {\n\t \t\tlistener.exitStringFunCall(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitStringFunCall) {\n\t\t\treturn visitor.visitStringFunCall(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\nexport class StringConcatContext extends StringExprContext {\n\tpublic _left!: StringExprContext;\n\tpublic _right!: StringExprContext;\n\tconstructor(parser: IfcExpressionParser, ctx: StringExprContext) {\n\t\tsuper(parser, ctx.parentCtx, ctx.invokingState);\n\t\tsuper.copyFrom(ctx);\n\t}\n\tpublic stringExpr_list(): StringExprContext[] {\n\t\treturn this.getTypedRuleContexts(StringExprContext) as StringExprContext[];\n\t}\n\tpublic stringExpr(i: number): StringExprContext {\n\t\treturn this.getTypedRuleContext(StringExprContext, i) as StringExprContext;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterStringConcat) {\n\t \t\tlistener.enterStringConcat(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitStringConcat) {\n\t \t\tlistener.exitStringConcat(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitStringConcat) {\n\t\t\treturn visitor.visitStringConcat(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ObjectRefContext extends ParserRuleContext {\n\tconstructor(parser?: IfcExpressionParser, parent?: ParserRuleContext, invokingState?: number) {\n\t\tsuper(parent, invokingState);\n \tthis.parser = parser;\n\t}\n\tpublic PROP(): TerminalNode {\n\t\treturn this.getToken(IfcExpressionParser.PROP, 0);\n\t}\n\tpublic ELEM(): TerminalNode {\n\t\treturn this.getToken(IfcExpressionParser.ELEM, 0);\n\t}\n public get ruleIndex(): number {\n \treturn IfcExpressionParser.RULE_objectRef;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterObjectRef) {\n\t \t\tlistener.enterObjectRef(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitObjectRef) {\n\t \t\tlistener.exitObjectRef(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitObjectRef) {\n\t\t\treturn visitor.visitObjectRef(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class AttributeRefContext extends ParserRuleContext {\n\tconstructor(parser?: IfcExpressionParser, parent?: ParserRuleContext, invokingState?: number) {\n\t\tsuper(parent, invokingState);\n \tthis.parser = parser;\n\t}\n\tpublic objectRef(): ObjectRefContext {\n\t\treturn this.getTypedRuleContext(ObjectRefContext, 0) as ObjectRefContext;\n\t}\n\tpublic nestedObjectChain(): NestedObjectChainContext {\n\t\treturn this.getTypedRuleContext(NestedObjectChainContext, 0) as NestedObjectChainContext;\n\t}\n public get ruleIndex(): number {\n \treturn IfcExpressionParser.RULE_attributeRef;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterAttributeRef) {\n\t \t\tlistener.enterAttributeRef(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitAttributeRef) {\n\t \t\tlistener.exitAttributeRef(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitAttributeRef) {\n\t\t\treturn visitor.visitAttributeRef(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class NestedObjectChainContext extends ParserRuleContext {\n\tconstructor(parser?: IfcExpressionParser, parent?: ParserRuleContext, invokingState?: number) {\n\t\tsuper(parent, invokingState);\n \tthis.parser = parser;\n\t}\n public get ruleIndex(): number {\n \treturn IfcExpressionParser.RULE_nestedObjectChain;\n\t}\n\tpublic copyFrom(ctx: NestedObjectChainContext): void {\n\t\tsuper.copyFrom(ctx);\n\t}\n}\nexport class NestedObjectChainEndContext extends NestedObjectChainContext {\n\tpublic _name!: Token;\n\tconstructor(parser: IfcExpressionParser, ctx: NestedObjectChainContext) {\n\t\tsuper(parser, ctx.parentCtx, ctx.invokingState);\n\t\tsuper.copyFrom(ctx);\n\t}\n\tpublic RESERVED_ATTRIBUTE_NAME(): TerminalNode {\n\t\treturn this.getToken(IfcExpressionParser.RESERVED_ATTRIBUTE_NAME, 0);\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterNestedObjectChainEnd) {\n\t \t\tlistener.enterNestedObjectChainEnd(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitNestedObjectChainEnd) {\n\t \t\tlistener.exitNestedObjectChainEnd(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitNestedObjectChainEnd) {\n\t\t\treturn visitor.visitNestedObjectChainEnd(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\nexport class NestedObjectChainInnerContext extends NestedObjectChainContext {\n\tconstructor(parser: IfcExpressionParser, ctx: NestedObjectChainContext) {\n\t\tsuper(parser, ctx.parentCtx, ctx.invokingState);\n\t\tsuper.copyFrom(ctx);\n\t}\n\tpublic namedRef(): NamedRefContext {\n\t\treturn this.getTypedRuleContext(NamedRefContext, 0) as NamedRefContext;\n\t}\n\tpublic nestedObjectChain(): NestedObjectChainContext {\n\t\treturn this.getTypedRuleContext(NestedObjectChainContext, 0) as NestedObjectChainContext;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterNestedObjectChainInner) {\n\t \t\tlistener.enterNestedObjectChainInner(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitNestedObjectChainInner) {\n\t \t\tlistener.exitNestedObjectChainInner(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitNestedObjectChainInner) {\n\t\t\treturn visitor.visitNestedObjectChainInner(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class NamedRefContext extends ParserRuleContext {\n\tpublic _name!: Token;\n\tconstructor(parser?: IfcExpressionParser, parent?: ParserRuleContext, invokingState?: number) {\n\t\tsuper(parent, invokingState);\n \tthis.parser = parser;\n\t}\n\tpublic RESERVED_RELATION_NAME(): TerminalNode {\n\t\treturn this.getToken(IfcExpressionParser.RESERVED_RELATION_NAME, 0);\n\t}\n\tpublic BRACKETED_STRING(): TerminalNode {\n\t\treturn this.getToken(IfcExpressionParser.BRACKETED_STRING, 0);\n\t}\n\tpublic IDENTIFIER(): TerminalNode {\n\t\treturn this.getToken(IfcExpressionParser.IDENTIFIER, 0);\n\t}\n public get ruleIndex(): number {\n \treturn IfcExpressionParser.RULE_namedRef;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterNamedRef) {\n\t \t\tlistener.enterNamedRef(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitNamedRef) {\n\t \t\tlistener.exitNamedRef(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitNamedRef) {\n\t\t\treturn visitor.visitNamedRef(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class FunctionCallContext extends ParserRuleContext {\n\tpublic _name!: Token;\n\tconstructor(parser?: IfcExpressionParser, parent?: ParserRuleContext, invokingState?: number) {\n\t\tsuper(parent, invokingState);\n \tthis.parser = parser;\n\t}\n\tpublic exprList(): ExprListContext {\n\t\treturn this.getTypedRuleContext(ExprListContext, 0) as ExprListContext;\n\t}\n\tpublic IDENTIFIER(): TerminalNode {\n\t\treturn this.getToken(IfcExpressionParser.IDENTIFIER, 0);\n\t}\n public get ruleIndex(): number {\n \treturn IfcExpressionParser.RULE_functionCall;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterFunctionCall) {\n\t \t\tlistener.enterFunctionCall(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitFunctionCall) {\n\t \t\tlistener.exitFunctionCall(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitFunctionCall) {\n\t\t\treturn visitor.visitFunctionCall(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ExprListContext extends ParserRuleContext {\n\tconstructor(parser?: IfcExpressionParser, parent?: ParserRuleContext, invokingState?: number) {\n\t\tsuper(parent, invokingState);\n \tthis.parser = parser;\n\t}\n\tpublic expr(): ExprContext {\n\t\treturn this.getTypedRuleContext(ExprContext, 0) as ExprContext;\n\t}\n\tpublic exprList(): ExprListContext {\n\t\treturn this.getTypedRuleContext(ExprListContext, 0) as ExprListContext;\n\t}\n public get ruleIndex(): number {\n \treturn IfcExpressionParser.RULE_exprList;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterExprList) {\n\t \t\tlistener.enterExprList(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitExprList) {\n\t \t\tlistener.exitExprList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitExprList) {\n\t\t\treturn visitor.visitExprList(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ArrayContext extends ParserRuleContext {\n\tconstructor(parser?: IfcExpressionParser, parent?: ParserRuleContext, invokingState?: number) {\n\t\tsuper(parent, invokingState);\n \tthis.parser = parser;\n\t}\n\tpublic arrayElementList(): ArrayElementListContext {\n\t\treturn this.getTypedRuleContext(ArrayElementListContext, 0) as ArrayElementListContext;\n\t}\n public get ruleIndex(): number {\n \treturn IfcExpressionParser.RULE_array;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterArray) {\n\t \t\tlistener.enterArray(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitArray) {\n\t \t\tlistener.exitArray(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitArray) {\n\t\t\treturn visitor.visitArray(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n\n\nexport class ArrayElementListContext extends ParserRuleContext {\n\tconstructor(parser?: IfcExpressionParser, parent?: ParserRuleContext, invokingState?: number) {\n\t\tsuper(parent, invokingState);\n \tthis.parser = parser;\n\t}\n\tpublic expr(): ExprContext {\n\t\treturn this.getTypedRuleContext(ExprContext, 0) as ExprContext;\n\t}\n\tpublic arrayElementList(): ArrayElementListContext {\n\t\treturn this.getTypedRuleContext(ArrayElementListContext, 0) as ArrayElementListContext;\n\t}\n public get ruleIndex(): number {\n \treturn IfcExpressionParser.RULE_arrayElementList;\n\t}\n\tpublic enterRule(listener: IfcExpressionListener): void {\n\t if(listener.enterArrayElementList) {\n\t \t\tlistener.enterArrayElementList(this);\n\t\t}\n\t}\n\tpublic exitRule(listener: IfcExpressionListener): void {\n\t if(listener.exitArrayElementList) {\n\t \t\tlistener.exitArrayElementList(this);\n\t\t}\n\t}\n\t// @Override\n\tpublic accept<Result>(visitor: IfcExpressionVisitor<Result>): Result {\n\t\tif (visitor.visitArrayElementList) {\n\t\t\treturn visitor.visitArrayElementList(this);\n\t\t} else {\n\t\t\treturn visitor.visitChildren(this);\n\t\t}\n\t}\n}\n"]}
@@ -0,0 +1,19 @@
1
+ export class ArrayValue {
2
+ constructor(value) {
3
+ this.arrayValue = value;
4
+ }
5
+ static of(value) {
6
+ return new ArrayValue(value);
7
+ }
8
+ getValue() {
9
+ return this.arrayValue;
10
+ }
11
+ equals(other) {
12
+ return (ArrayValue.isArrayValueType(other) &&
13
+ other.arrayValue.every((val, ind) => val.equals(this.arrayValue[ind])));
14
+ }
15
+ static isArrayValueType(arg) {
16
+ return Array.isArray(arg.arrayValue);
17
+ }
18
+ }
19
+ //# sourceMappingURL=ArrayValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["value/ArrayValue.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,UAAU;IAGrB,YAAY,KAAwB;QAClC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAC,EAAE,CAAC,KAAwB;QACvC,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,KAAiB;QACtB,OAAO,CACL,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAClC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CACvE,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,GAAQ;QACrC,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;CACF","file":"value/ArrayValue.js","sourcesContent":["import { Value } from \"./Value\";\n\nexport class ArrayValue implements Value<Array<Value<any>>> {\n private readonly arrayValue: Array<Value<any>>;\n\n constructor(value: Array<Value<any>>) {\n this.arrayValue = value;\n }\n\n public static of(value: Array<Value<any>>): ArrayValue {\n return new ArrayValue(value);\n }\n\n getValue(): Array<Value<any>> {\n return this.arrayValue;\n }\n\n equals(other: Value<any>): boolean {\n return (\n ArrayValue.isArrayValueType(other) &&\n other.arrayValue.every((val, ind) => val.equals(this.arrayValue[ind]))\n );\n }\n\n public static isArrayValueType(arg: any): arg is ArrayValueType {\n return Array.isArray(arg.arrayValue);\n }\n}\n\nexport type ArrayValueType = {\n arrayValue: Array<Value<any>>;\n};\n"]}
@@ -1,10 +1,19 @@
1
- import { Value } from "./Value.js";
2
- export class BooleanValue extends Value {
1
+ export class BooleanValue {
3
2
  constructor(value) {
4
- super(value);
3
+ this.booleanValue = value;
5
4
  }
6
5
  static of(value) {
7
6
  return new BooleanValue(value);
8
7
  }
8
+ getValue() {
9
+ return this.booleanValue;
10
+ }
11
+ equals(other) {
12
+ return (BooleanValue.isBooleanValueType(other) &&
13
+ other.booleanValue === this.booleanValue);
14
+ }
15
+ static isBooleanValueType(arg) {
16
+ return typeof arg.booleanValue === "boolean";
17
+ }
9
18
  }
10
19
  //# sourceMappingURL=BooleanValue.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["value/BooleanValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,OAAO,YAAa,SAAQ,KAAc;IAC9C,YAAY,KAAc;QACxB,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEM,MAAM,CAAC,EAAE,CAAC,KAAc;QAC7B,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;CACF","file":"value/BooleanValue.js","sourcesContent":["import { Value } from \"./Value.js\";\n\nexport class BooleanValue extends Value<boolean> {\n constructor(value: boolean) {\n super(value);\n }\n\n public static of(value: boolean): BooleanValue {\n return new BooleanValue(value);\n }\n}\n"]}
1
+ {"version":3,"sources":["value/BooleanValue.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,YAAY;IAGvB,YAAY,KAAc;QACxB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAEM,MAAM,CAAC,EAAE,CAAC,KAAc;QAC7B,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,KAAiB;QACtB,OAAO,CACL,YAAY,CAAC,kBAAkB,CAAC,KAAK,CAAC;YACtC,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY,CACzC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,GAAQ;QAChC,OAAO,OAAO,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC;IAC/C,CAAC;CACF","file":"value/BooleanValue.js","sourcesContent":["import { Value } from \"./Value.js\";\n\nexport class BooleanValue implements Value<boolean> {\n private readonly booleanValue: boolean;\n\n constructor(value: boolean) {\n this.booleanValue = value;\n }\n\n public static of(value: boolean): BooleanValue {\n return new BooleanValue(value);\n }\n\n getValue(): boolean {\n return this.booleanValue;\n }\n\n equals(other: Value<any>): boolean {\n return (\n BooleanValue.isBooleanValueType(other) &&\n other.booleanValue === this.booleanValue\n );\n }\n\n static isBooleanValueType(arg: any): arg is BooleanValueType {\n return typeof arg.booleanValue === \"boolean\";\n }\n}\n\nexport type BooleanValueType = {\n booleanValue: boolean;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["value/LiteralValue.ts"],"names":[],"mappings":"","file":"value/LiteralValue.js","sourcesContent":["import { NumericValue } from \"./NumericValue.js\";\nimport { StringValue } from \"./StringValue.js\";\nimport { BooleanValue } from \"./BooleanValue.js\";\nimport { LogicalValue } from \"./LogicalValue.js\";\nimport { ReferenceValue } from \"./ReferenceValue.js\";\n\nexport type LiteralValue =\n | NumericValue\n | StringValue\n | BooleanValue\n | LogicalValue\n | ReferenceValue;\n"]}
1
+ {"version":3,"sources":["value/LiteralValue.ts"],"names":[],"mappings":"","file":"value/LiteralValue.js","sourcesContent":["import { NumericValue } from \"./NumericValue.js\";\nimport { StringValue } from \"./StringValue.js\";\nimport { BooleanValue } from \"./BooleanValue.js\";\nimport { LogicalValue } from \"./LogicalValue.js\";\nimport { ReferenceValue } from \"./ReferenceValue.js\";\nimport { ArrayValue } from \"./ArrayValue\";\n\nexport type LiteralValue =\n | NumericValue\n | StringValue\n | BooleanValue\n | LogicalValue\n | ReferenceValue\n | ArrayValue;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["value/LiteralValueAnyArity.ts"],"names":[],"mappings":"","file":"value/LiteralValueAnyArity.js","sourcesContent":["import { LiteralValue } from \"./LiteralValue.js\";\n\nexport type LiteralValueAnyArity =\n | LiteralValue\n | Array<LiteralValue>\n | Array<Array<LiteralValue>>;\n"]}
1
+ {"version":3,"sources":["value/LiteralValueAnyArity.ts"],"names":[],"mappings":"","file":"value/LiteralValueAnyArity.js","sourcesContent":["import { LiteralValue } from \"./LiteralValue.js\";\n\nexport type LiteralValueAnyArity = LiteralValue;\n"]}
@@ -1,10 +1,21 @@
1
- import { Value } from "./Value.js";
2
- export class LogicalValue extends Value {
1
+ export class LogicalValue {
3
2
  constructor(value) {
4
- super(value);
3
+ this.logicalValue = value;
5
4
  }
6
5
  static of(value) {
7
6
  return new LogicalValue(value);
8
7
  }
8
+ getValue() {
9
+ return this.logicalValue;
10
+ }
11
+ equals(other) {
12
+ return (LogicalValue.isLogicalValueType(other) &&
13
+ other.logicalValue === this.logicalValue);
14
+ }
15
+ static isLogicalValueType(arg) {
16
+ return ((typeof arg.logicalValue !== "undefined" &&
17
+ typeof arg.logicalValue === "boolean") ||
18
+ arg.logicalValue === "UNKNOWN");
19
+ }
9
20
  }
10
21
  //# sourceMappingURL=LogicalValue.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["value/LogicalValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,OAAO,YAAa,SAAQ,KAA0B;IAC1D,YAAY,KAA0B;QACpC,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEM,MAAM,CAAC,EAAE,CAAC,KAA0B;QACzC,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;CACF","file":"value/LogicalValue.js","sourcesContent":["import { Value } from \"./Value.js\";\n\nexport class LogicalValue extends Value<boolean | \"UNKNOWN\"> {\n constructor(value: boolean | \"UNKNOWN\") {\n super(value);\n }\n\n public static of(value: boolean | \"UNKNOWN\"): LogicalValue {\n return new LogicalValue(value);\n }\n}\n"]}
1
+ {"version":3,"sources":["value/LogicalValue.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,YAAY;IAGvB,YAAY,KAA0B;QACpC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAEM,MAAM,CAAC,EAAE,CAAC,KAA0B;QACzC,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,KAAiB;QACtB,OAAO,CACL,YAAY,CAAC,kBAAkB,CAAC,KAAK,CAAC;YACtC,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY,CACzC,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,kBAAkB,CAAC,GAAQ;QACvC,OAAO,CACL,CAAC,OAAO,GAAG,CAAC,YAAY,KAAK,WAAW;YACtC,OAAO,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC;YACxC,GAAG,CAAC,YAAY,KAAK,SAAS,CAC/B,CAAC;IACJ,CAAC;CACF","file":"value/LogicalValue.js","sourcesContent":["import { Value } from \"./Value.js\";\n\nexport class LogicalValue implements Value<boolean | \"UNKNOWN\"> {\n private readonly logicalValue: boolean | \"UNKNOWN\";\n\n constructor(value: boolean | \"UNKNOWN\") {\n this.logicalValue = value;\n }\n\n public static of(value: boolean | \"UNKNOWN\"): LogicalValue {\n return new LogicalValue(value);\n }\n\n getValue(): boolean | \"UNKNOWN\" {\n return this.logicalValue;\n }\n\n equals(other: Value<any>): boolean {\n return (\n LogicalValue.isLogicalValueType(other) &&\n other.logicalValue === this.logicalValue\n );\n }\n\n public static isLogicalValueType(arg: any): arg is LogicalValueType {\n return (\n (typeof arg.logicalValue !== \"undefined\" &&\n typeof arg.logicalValue === \"boolean\") ||\n arg.logicalValue === \"UNKNOWN\"\n );\n }\n}\n\nexport type LogicalValueType = {\n logicalValue: boolean | \"UNKNOWN\";\n};\n"]}