//IDebugExpressionEvaluator public HRESULT Parse( [In, MarshalAs(UnmanagedType.LPWStr)] string pszExpression, PARSEFLAGS flags, uint radix, out string pbstrErrorMessages, out uint perrorCount, out IDebugParsedExpression ppparsedExpression ) { HRESULT hr = (HRESULT)HResult.S_OK; perrorCount = 0; pbstrErrorMessages = null; ppparsedExpression = null; ErrorNodeList errors = new ErrorNodeList(); Module symbolTable = new Module(); Document doc = this.cciEvaluator.ExprCompiler.CreateDocument(null, 1, pszExpression); IParser exprParser = this.cciEvaluator.ExprCompiler.CreateParser(doc.Name, doc.LineNumber, doc.Text, symbolTable, errors, null); Expression parsedExpression = exprParser.ParseExpression(); perrorCount = (uint)errors.Count; if (perrorCount > 0) { pbstrErrorMessages = errors[0].GetMessage(); } else { ppparsedExpression = new BaseParsedExpression(pszExpression, parsedExpression, this); } return(hr); }
//IDebugExpressionEvaluator public HRESULT Parse( [In,MarshalAs(UnmanagedType.LPWStr)] string pszExpression, PARSEFLAGS flags, uint radix, out string pbstrErrorMessages, out uint perrorCount, out IDebugParsedExpression ppparsedExpression ) { HRESULT hr = (HRESULT)HResult.S_OK; perrorCount = 0; pbstrErrorMessages = null; ppparsedExpression = null; ErrorNodeList errors = new ErrorNodeList(); Module symbolTable = new Module(); Document doc = this.cciEvaluator.ExprCompiler.CreateDocument(null, 1, pszExpression); IParser exprParser = this.cciEvaluator.ExprCompiler.CreateParser(doc.Name, doc.LineNumber, doc.Text, symbolTable, errors, null); Expression parsedExpression = exprParser.ParseExpression(); perrorCount = (uint)errors.Count; if (perrorCount > 0) pbstrErrorMessages = errors[0].GetMessage(); else ppparsedExpression = new BaseParsedExpression(pszExpression, parsedExpression, this); return hr; }