NextToken() 공개 메소드

public NextToken ( ) : Token
리턴 Token
예제 #1
0
파일: LexerTests.cs 프로젝트: ajlopez/AjErl
        public void GetArithmeticOperators()
        {
            Lexer lexer = new Lexer("+-*/");

            Token token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Operator, token.Type);
            Assert.AreEqual("+", token.Value);

            token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Operator, token.Type);
            Assert.AreEqual("-", token.Value);

            token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Operator, token.Type);
            Assert.AreEqual("*", token.Value);

            token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Operator, token.Type);
            Assert.AreEqual("/", token.Value);

            Assert.IsNull(lexer.NextToken());
        }
예제 #2
0
파일: LexerTests.cs 프로젝트: ajlopez/AjErl
        public void GetAtomAndSkipComment()
        {
            Lexer lexer = new Lexer("ok % this is a comment");

            Token token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Atom, token.Type);
            Assert.AreEqual("ok", token.Value);

            Assert.IsNull(lexer.NextToken());
        }
예제 #3
0
파일: LexerTests.cs 프로젝트: ajlopez/AjErl
        public void GetAtom()
        {
            Lexer lexer = new Lexer("ok");

            Token token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Atom, token.Type);
            Assert.AreEqual("ok", token.Value);

            Assert.IsNull(lexer.NextToken());
        }
예제 #4
0
파일: LexerTests.cs 프로젝트: ajlopez/AjErl
        public void GetAtomWithAt()
        {
            Lexer lexer = new Lexer("joe@somehost");

            Token token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Atom, token.Type);
            Assert.AreEqual("joe@somehost", token.Value);

            Assert.IsNull(lexer.NextToken());
        }
예제 #5
0
파일: LexerTests.cs 프로젝트: ajlopez/AjErl
        public void UnclosedString()
        {
            Lexer lexer = new Lexer("\"foo");

            try
            {
                lexer.NextToken();
                Assert.Fail();
            }
            catch (Exception ex)
            {
                Assert.IsInstanceOfType(ex, typeof(ParserException));
                Assert.AreEqual("unclosed string", ex.Message);
            }
        }
예제 #6
0
파일: LexerTests.cs 프로젝트: ajlopez/AjErl
        public void GetVerticalBarAsSeparator()
        {
            Lexer lexer = new Lexer("|");

            Token token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Separator, token.Type);
            Assert.AreEqual("|", token.Value);

            Assert.IsNull(lexer.NextToken());
        }
예제 #7
0
파일: LexerTests.cs 프로젝트: ajlopez/AjErl
        public void GetVariable()
        {
            Lexer lexer = new Lexer("X");

            Token token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Variable, token.Type);
            Assert.AreEqual("X", token.Value);

            Assert.IsNull(lexer.NextToken());
        }
예제 #8
0
파일: LexerTests.cs 프로젝트: ajlopez/AjErl
        public void GetUnderscoreNameAsVariable()
        {
            Lexer lexer = new Lexer("_ok");

            Token token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Variable, token.Type);
            Assert.AreEqual("_ok", token.Value);

            Assert.IsNull(lexer.NextToken());
        }
예제 #9
0
파일: LexerTests.cs 프로젝트: ajlopez/AjErl
        public void GetString()
        {
            Lexer lexer = new Lexer("\"foo\"");

            Token token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.String, token.Type);
            Assert.AreEqual("foo", token.Value);

            Assert.IsNull(lexer.NextToken());
        }
예제 #10
0
파일: LexerTests.cs 프로젝트: ajlopez/AjErl
        public void GetSemiColonAsSeparator()
        {
            Lexer lexer = new Lexer(";");

            Token token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Separator, token.Type);
            Assert.AreEqual(";", token.Value);

            Assert.IsNull(lexer.NextToken());
        }
예제 #11
0
파일: LexerTests.cs 프로젝트: ajlopez/AjErl
        public void GetRightArrowAsOperator()
        {
            Lexer lexer = new Lexer("->");

            Token token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Operator, token.Type);
            Assert.AreEqual("->", token.Value);

            Assert.IsNull(lexer.NextToken());
        }
예제 #12
0
파일: LexerTests.cs 프로젝트: ajlopez/AjErl
        public void GetReal()
        {
            Lexer lexer = new Lexer("123.45");

            Token token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Real, token.Type);
            Assert.AreEqual("123.45", token.Value);

            Assert.IsNull(lexer.NextToken());
        }
예제 #13
0
파일: LexerTests.cs 프로젝트: ajlopez/AjErl
        public void GetPointAsOperator()
        {
            Lexer lexer = new Lexer(".");

            Token token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Separator, token.Type);
            Assert.AreEqual(".", token.Value);

            Assert.IsNull(lexer.NextToken());
        }
예제 #14
0
파일: LexerTests.cs 프로젝트: ajlopez/AjErl
        public void GetParenthesisAsSeparators()
        {
            Lexer lexer = new Lexer("()");

            Token token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Separator, token.Type);
            Assert.AreEqual("(", token.Value);

            token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Separator, token.Type);
            Assert.AreEqual(")", token.Value);

            Assert.IsNull(lexer.NextToken());
        }
예제 #15
0
파일: LexerTests.cs 프로젝트: ajlopez/AjErl
        public void GetNumeralBracketAsSeparator()
        {
            Lexer lexer = new Lexer("#{");

            Token token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Separator, token.Type);
            Assert.AreEqual("#{", token.Value);

            Assert.IsNull(lexer.NextToken());
        }
예제 #16
0
파일: LexerTests.cs 프로젝트: ajlopez/AjErl
        public void GetIntegerWithSpaces()
        {
            Lexer lexer = new Lexer("  123   ");

            Token token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Integer, token.Type);
            Assert.AreEqual("123", token.Value);

            Assert.IsNull(lexer.NextToken());
        }
예제 #17
0
파일: LexerTests.cs 프로젝트: ajlopez/AjErl
        public void UnexpectedSign()
        {
            Lexer lexer = new Lexer("?");

            try
            {
                lexer.NextToken();
                Assert.Fail();
            }
            catch (Exception ex)
            {
                Assert.IsInstanceOfType(ex, typeof(ParserException));
                Assert.AreEqual("Unexpected '?'", ex.Message);
            }
        }
예제 #18
0
파일: LexerTests.cs 프로젝트: ajlopez/AjErl
        public void GetSimpleMatch()
        {
            Lexer lexer = new Lexer("X=ok.");

            Token token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Variable, token.Type);
            Assert.AreEqual("X", token.Value);

            token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Operator, token.Type);
            Assert.AreEqual("=", token.Value);

            token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Atom, token.Type);
            Assert.AreEqual("ok", token.Value);

            token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Separator, token.Type);
            Assert.AreEqual(".", token.Value);

            Assert.IsNull(lexer.NextToken());
        }
예제 #19
0
파일: LexerTests.cs 프로젝트: ajlopez/AjErl
        public void GetStrictEqualAsOperator()
        {
            Lexer lexer = new Lexer("=:=");

            Token token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Operator, token.Type);
            Assert.AreEqual("=:=", token.Value);

            Assert.IsNull(lexer.NextToken());
        }
예제 #20
0
파일: LexerTests.cs 프로젝트: ajlopez/AjErl
        public void GetBracketsAsSeparators()
        {
            Lexer lexer = new Lexer("[]");

            Token token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Separator, token.Type);
            Assert.AreEqual("[", token.Value);

            token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.Separator, token.Type);
            Assert.AreEqual("]", token.Value);

            Assert.IsNull(lexer.NextToken());
        }