internal void RecreateParser() { lock (MySyncRoot) { FleeExpressionAnalyzer analyzer = new FleeExpressionAnalyzer(); ExpressionParser parser = new ExpressionParser(System.IO.StringReader.Null, analyzer, this); MyProperties.SetValue("ExpressionParser", parser); } }
// Does the actual parsing of an expression. Thead-safe. internal ExpressionElement Parse(string expression, IServiceProvider services) { lock (MySyncRoot) { System.IO.StringReader sr = new System.IO.StringReader(expression); ExpressionParser parser = this.Parser; parser.Reset(); parser.Tokenizer.Reset(sr); FleeExpressionAnalyzer analyzer = parser.Analyzer as FleeExpressionAnalyzer; analyzer.SetServices(services); Node rootNode = DoParse(); analyzer.Reset(); ExpressionElement topElement = rootNode.Values[0] as ExpressionElement; return(topElement); } }