public static void AnalizeVariablesInExpression(string expression, VariableStacks variables, ExpressionAnalizationMode mode) { expressionForAnalization = expression; avaliableVariables = variables; curMode = mode; ProcessVariables(); }
private static void ProcessVariableAccordingMode(Variable curVariable, ExpressionAnalizationMode mode) { if (mode.HasFlag(ExpressionAnalizationMode.IsUsedForComputingMode)) curVariable.SetUsedForComputing(); if (mode.HasFlag(ExpressionAnalizationMode.IsContolMode)) curVariable.SetUsedAsControl(); }
private static void ProcessVariablesInExpressionAccordingMode(string expression, ExpressionAnalizationMode mode) { foreach (string variableName in avaliableVariables.VariableNames) { ProcessVariableInExpression(expression, mode, variableName); } }
private static void ProcessVariableInExpression(string expression, ExpressionAnalizationMode mode, string variableName) { string variableInExpressionPattern = GetVariablePattern(variableName); Regex variableInExpressionRegex = new Regex(variableInExpressionPattern); if (variableInExpressionRegex.IsMatch(expression)) { Variable curVariable = avaliableVariables.GetTopVariable(variableName); ProcessVariableAccordingMode(curVariable, mode); } }
private static ExpressionAnalizationMode GetModeAccordingVariable(Variable variable) { ExpressionAnalizationMode mode = new ExpressionAnalizationMode(); if (variable.IsCurrentlyUsedAsControl) mode |= ExpressionAnalizationMode.IsContolMode; if (variable.IsUsedForComputing) mode |= ExpressionAnalizationMode.IsUsedForComputingMode; return mode; }