public Match GetMatch(string s, int pos, Token prevToken) { if (s[pos] == '(') return new Match(1, new Token(Bracket.Opening)); if (s[pos] == ')') return new Match(1, new Token(Bracket.Closing)); return null; }
public void TestGetValue() { var token = new Token(1); var tree = new ExpressionTree(token, null); var result = tree.GetResult(); Assert.AreEqual(1, result); }
public Match GetMatch(string s, int pos, Token prevToken) { if (prevToken == null || prevToken.Type != TokenType.Number && prevToken.Type != TokenType.ClosingBracket) { return null; } if (s.Substring(pos).StartsWith(binaryOperator.Sign)) { return new Match(binaryOperator.Sign.Length, new Token(binaryOperator)); } return null; }
public Match GetMatch(string s, int pos, Token prevToken) { if (prevToken != null && prevToken.Type != TokenType.OpeningBracket) { return null; } if (s.Substring(pos).StartsWith(unaryOperator.Sign)) { return new Match(unaryOperator.Sign.Length, new Token(unaryOperator)); } return null; }
public void TestGetUnaryOperationResult() { var child = MockRepository.GenerateMock<IExpressionTree>(); child.Expect(t => t.GetResult()) .Return(1); var op = MockRepository.GenerateMock<IUnaryOperator>(); op.Expect(o => o.Apply(Arg<double>.Is.Equal(1))) .Return(-1); var token = new Token(op); var tree = new ExpressionTree(token, new List<IExpressionTree> { child }); var result = tree.GetResult(); Assert.AreEqual(-1, result); }
public Match GetMatch(string s, int pos, Token prevToken) { var numberLength = 0; double? number = null; while (pos + numberLength < s.Length) { var ss = s.Substring(pos, numberLength+1); double parsedNumber; if (!Double.TryParse(ss, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out parsedNumber)) { break; } number = parsedNumber; numberLength++; } if (!number.HasValue) return null; return new Match(numberLength, new Token(number.Value)); }
public ExpressionTree(Token token, IList<IExpressionTree> children) { this.Token = token; this.children = children; }
public Match(int length, Token token) { Length = length; Token = token; }