/// <summary> /// 翻译公式 /// </summary> /// <param name="formula">公式</param> /// <param name="availableMethodsType">包含公式中可用静态方法的类型</param> /// <returns></returns> public string Interpret(string formula, Type availableMethodsType) { AntlrInputStream input = new AntlrInputStream(formula); FormulaLexer lexer = new FormulaLexer(input); lexer.RemoveErrorListeners(); lexer.AddErrorListener(LexerErrorListener.Instance); CommonTokenStream tokens = new CommonTokenStream(lexer); FormulaParser parser = new FormulaParser(tokens); parser.RemoveErrorListeners(); parser.AddErrorListener(ParserErrorListener.Instance); FormulaCSListener listener = new FormulaCSListener(availableMethodsType); ParseTreeWalker walker = new ParseTreeWalker(); walker.Walk(listener, parser.formula()); return(listener.Result); }