CompiledExpression CompileExpression(string expression_string) { CompiledExpression compiled = new CompiledExpression(); try { Parser expression_parser = new Parser(expression_string, m_ExecFuncEvaluator, m_CompileTimeConstants); compiled.expression = expression_parser.Parse(); compiled.contains_exec = expression_parser.ContainsExec; } catch (Exception ex) { compiled.compile_error = ex; } return compiled; }
Expression Parse(string s) { try { VariableValueResolver compile_time_constants = new VariableValueResolver(); compile_time_constants.SetVariable("true", true); compile_time_constants.SetVariable("false", false); Parser parser = new Parser(s, compile_time_constants); return parser.Parse(); } catch (ParserException ex) { Console.WriteLine("Parser Exception:"); Console.WriteLine(ex.InputText); string indent = new string(' ', ex.ErrorPos); Console.WriteLine("{0}^", indent); Console.WriteLine("{0}{1}", indent, ex.ErrorMessage); throw ex; } }
private void UpdateWindowTitle() { m_VSMainWindow.Update(); PackageGlobals globals = PackageGlobals.Instance(); EvalContext eval_ctx = globals.CreateFreshEvalContext(); bool variables_changed = !CompareVariables(eval_ctx.VariableValues, m_PrevVariableValues); if (variables_changed) { m_PrevVariableValues = eval_ctx.VariableValues; globals.TitleSetupEditor.Variables = eval_ctx.VariableValues; } ToolOptions options = (ToolOptions)GetDialogPage(typeof(ToolOptions)); #if VS2010_AND_LATER if (m_DebugPrintTitleControlHierarchyCount < 5 && options.Debug) { ++m_DebugPrintTitleControlHierarchyCount; m_VSMainWindow.DebugPrintTitleControlHierarchy(); } #endif PackageGlobals.VSMultiInstanceInfo multi_instance_info; globals.GetVSMultiInstanceInfo(out multi_instance_info); bool extension_active; switch (options.ExtensionActivationRule) { case EExtensionActivationRule.ActiveWithMultipleVSInstances: extension_active = multi_instance_info.multiple_instances; break; case EExtensionActivationRule.ActiveWithMultipleVSInstancesOfTheSameVersion: extension_active = multi_instance_info.multiple_instances_same_version; break; case EExtensionActivationRule.AlwaysInactive: extension_active = false; break; default: extension_active = true; break; } if (extension_active) { TitleSetup title_setup = globals.TitleSetup; if (m_ExpressionContainsExec || variables_changed || m_PrevExtensionActivationRule != options.ExtensionActivationRule || title_setup.TitleExpression != m_PrevTitleExpressionStr) { Parser parser = new Parser(title_setup.TitleExpression, globals.ExecFuncEvaluator, globals.CompileTimeConstants); ; ExpressionCompilerJob job = new ExpressionCompilerJob(parser, globals.CreateFreshEvalContext(), false, m_CompiledExpressionCache); job.OnCompileFinished += OnCompileFinished; m_ExpressionCompilerThread.RemoveAllJobs(); m_ExpressionCompilerThread.AddJob(job); } m_PrevTitleExpressionStr = title_setup.TitleExpression; } else { m_VSMainWindow.SetTitle(m_VSMainWindow.OriginalTitle); } m_PrevExtensionActivationRule = options.ExtensionActivationRule; }