private void Expacc() { _currentNode.AddChild(new ParseNode(ParseEnum.ExpressionAccent)); _currentNode = _currentNode.GetChildren()[_currentNode.GetChildren().Count - 1]; if (_current is AddSub) { _currentNode.AddChild(new ParseNode(ParseEnum.Operator, _current.GetValue())); if (!_lex.EndOfInput) { _current = _lex.GetNextToken(); } Term(); Expacc(); } else if (_current is Equals) { _currentNode.AddChild(new ParseNode(ParseEnum.Equals)); if (!_lex.EndOfInput) { _current = _lex.GetNextToken(); } Expressie(); } else { _currentNode.AddChild(new ParseNode(ParseEnum.Empty)); } _currentNode = _currentNode.GetParent(); }
public void TestSimpleParenthesisExpression() { LexicalScanner scanner = new LexicalScanner("(1*2)"); AbstractToken token = scanner.GetNextToken(); Assert.IsInstanceOf(typeof(OpenParenthesis), token); Assert.IsTrue(token.GetValue().Equals("(")); token = scanner.GetNextToken(); Assert.IsInstanceOf(typeof(Integer), token); Assert.IsTrue(token.GetValue().Equals("1")); token = scanner.GetNextToken(); Assert.IsInstanceOf(typeof(Operator), token); Assert.IsTrue(token.GetValue().Equals("*")); token = scanner.GetNextToken(); Assert.IsInstanceOf(typeof(Integer), token); Assert.IsTrue(token.GetValue().Equals("2")); token = scanner.GetNextToken(); Assert.IsInstanceOf(typeof(CloseParenthesis), token); Assert.IsTrue(token.GetValue().Equals(")")); }
public void TestFloat() { LexicalScanner scanner = new LexicalScanner("1.0"); AbstractToken token = scanner.GetNextToken(); Assert.IsInstanceOf(typeof(Float), token); Assert.IsTrue(token.GetValue().Equals("1.0")); }
public void TestSimpleAddSubExpression() { LexicalScanner scanner = new LexicalScanner("1+2"); AbstractToken token = scanner.GetNextToken(); Assert.IsInstanceOf(typeof(Integer), token); Assert.IsTrue(token.GetValue().Equals("1")); token = scanner.GetNextToken(); Assert.IsInstanceOf(typeof(AddSub), token); Assert.IsTrue(token.GetValue().Equals("+")); token = scanner.GetNextToken(); Assert.IsInstanceOf(typeof(Integer), token); Assert.IsTrue(token.GetValue().Equals("2")); }
private String Text(Tokenizer.Tokenizer tokenizer) { AbstractToken token = tokenizer.NextToken(); if (token.GetType() == typeof(Comma) || token.GetType() == typeof(Text)) { return(token.GetValue()); } throw new ParseException("Expected type Text but found: " + token.GetType() + " after " + tokenizer.GetPreviousCharacters(25)); }