Пример #1
0
 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();
 }
Пример #2
0
        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(")"));
        }
Пример #3
0
        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"));
        }
Пример #4
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"));
        }
Пример #5
0
        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));
        }