private void BeginExpression(Precedence innerPrecedence, CheckingMode innerMode) { Precedence outerPrecedence = modeStack.Peek().First; CheckingMode outerMode = modeStack.Peek().Second; if (innerMode == CheckingMode.Inherit) { innerMode = outerMode; } bool?modeSwitch = DetermineCheckingModeSwitch(outerMode, innerMode); if (modeSwitch == true) { result.Append("checked("); } else if (modeSwitch == false) { result.Append("unchecked("); } else if (AreParenthesesNeeded(outerPrecedence, innerPrecedence)) { result.Append('('); } modeStack.Push(new Pair <Precedence, CheckingMode>(innerPrecedence, innerMode)); }
public CodeScopeNode(IdContainer Parent, CodeString Code) : base(Parent, Code) { var CodeScopeParent = GetParent <CodeScopeNode>(FunctionScope); if (CodeScopeParent != null) { CheckingMode = CodeScopeParent.CheckingMode; } }
private static bool?DetermineCheckingModeSwitch(CheckingMode outerMode, CheckingMode innerMode) { if (innerMode == CheckingMode.Checked && (outerMode == CheckingMode.Unchecked || outerMode == CheckingMode.Reset)) { return(true); } if (innerMode == CheckingMode.Unchecked && outerMode == CheckingMode.Checked) { return(false); } return(null); }
public override void SetBaseMChessOptionsForTestExecution(AppTasks.RunMChessBasedTestTask runTestTask, MChessOptions opts) { base.SetBaseMChessOptionsForTestExecution(runTestTask, opts); opts.CheckObservations = true; opts.ObservationMode = CheckingMode.ToChessObservationMode(); string fileIdentity = ResolveFileIdentity(); string contextName = runTestTask.TestContext.Name; string obsFileName = ObservationGeneratorEntity.ComposeObservationFilename(OwningTestMethod, fileIdentity, contextName, runTestTask.TestArgs); opts.ObservationFile = obsFileName; }
private void EndExpression() { Precedence innerPrecedence = modeStack.Peek().First; CheckingMode innerMode = modeStack.Pop().Second; Precedence outerPrecedence = modeStack.Peek().First; CheckingMode outerMode = modeStack.Peek().Second; bool?modeSwitch = DetermineCheckingModeSwitch(outerMode, innerMode); if (modeSwitch.HasValue || AreParenthesesNeeded(outerPrecedence, innerPrecedence)) { result.Append(')'); } }
private Unit VisitPrefixOperator(UnaryExpression expr, string token, Precedence precedence, CheckingMode checkingMode) { BeginExpression(precedence, checkingMode); result.Append(token).Append(' '); Visit(expr.Operand); EndExpression(); return(Unit.Value); }