object Process(ExpectedValueEnum expectedValueType) { object val = null; AntlrInputStream input = new AntlrInputStream(paramExprContent); ParamExprGrammarLexer lexer = new ParamExprGrammarLexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); ParamExprGrammarParser parser = new ParamExprGrammarParser(tokens); parser.RemoveErrorListeners(); ParamExprLogger.resetStream(); parser.AddErrorListener(new ParamExprErrorListener()); IParseTree tree = parser.param_expr(); ParseTreeWalker walker = new ParseTreeWalker(); ParamExprListener eval = new ParamExprListener(tokens); eval.RevitElement = _element; eval.RevitParameterName = _paramName; try { walker.Walk(eval, tree); if (eval.HasValue) { val = eval.Value; UnitType = eval.UnitType; } } catch { } return(val); }
/// <summary> /// Check for a special parameter value containing the Paramater expression /// </summary> /// <param name="paramValue">the Parameter value</param> /// <param name="element">the Element</param> /// <param name="paramName">the Parameter Name</param> /// <returns>the resolved Parameter Expression value or null if not resolved</returns> public static ParamExprResolver CheckForParameterExpr(string paramValue, Element element, string paramName, ExpectedValueEnum expectedDataType, out object propertyValue) { propertyValue = null; string paramValuetrim = paramValue.Trim(); if (IsParameterExpr(paramValue)) { ParamExprResolver pResv = new ParamExprResolver(element, paramName, paramValuetrim); switch (expectedDataType) { case ExpectedValueEnum.STRINGVALUE: propertyValue = pResv.GetStringValue(); break; case ExpectedValueEnum.DOUBLEVALUE: propertyValue = pResv.GetDoubleValue(); break; case ExpectedValueEnum.INTVALUE: propertyValue = pResv.GetIntValue(); break; default: break; } return(pResv); } return(null); }