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> /// Checking for syntax error /// </summary> /// <param name="recognizer">recognizer</param> /// <param name="offendingSymbol">offending symbol</param> /// <param name="line">line number of the statement</param> /// <param name="charPositionInLine">position within the line</param> /// <param name="msg">message</param> /// <param name="e">recognizer exception</param> public override void SyntaxError(IRecognizer recognizer, IToken offendingSymbol, int line, int charPositionInLine, string msg, RecognitionException e) { string stackList = null; IList <string> stack = ((Parser)recognizer).GetRuleInvocationStack(); stack.Reverse(); for (int i = 0; i < stack.Count(); i++) { if (i == 0) { stackList = "["; } stackList = stackList + " " + stack[i]; } stackList = stackList + "]"; ParamExprLogger.writeLog("\t\t-> rule stack: " + stackList + "\n"); ParamExprLogger.writeLog("\t\t-> line " + line + ":" + charPositionInLine + " at " + offendingSymbol + ": " + msg + "\n"); }