public void SwapTakesPositionFromOtherTokenKeeper() { //Arrange var other = new TokenKeeper(_keeper); other.Take(); //Act _keeper.Swap(other); //Assert _keeper.IsNext(TokenType.NumericLiteral).Should().BeTrue(); }
private static bool TryTakeOperatorExp(TokenKeeper pos, out ExpressionNode node) { var work = new TokenKeeper(pos); if (TryTakeTerm(work, out var left) && TryTakeOperator(work, out var op) && TryTakeSecondTerm(work, out var right)) { node = new OperatorExpNode(left, op, right); pos.Swap(work); return(true); } node = null; return(false); }
private static bool TryTakeParensExp(TokenKeeper pos, out ExpressionNode node) { var work = new TokenKeeper(pos); if (TryTakeOpenParens(work) && TryTakeCalcExp(work, out var calc) && TryTakeCloseParens(work)) { node = new ParensExpressionNode(calc); pos.Swap(work); return(true); } node = null; return(false); }