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;
 }
Esempio n. 2
0
 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;
		}