コード例 #1
0
ファイル: LexerTests.cs プロジェクト: ajlopez/AjRools
        public void GetCarriageReturnNewLineAsEndOfLine()
        {
            Lexer lexer = new Lexer("\r\n");
            Token token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.EndOfLine, token.Type);

            Assert.IsNull(lexer.NextToken());
        }
コード例 #2
0
ファイル: LexerTests.cs プロジェクト: ajlopez/AjRools
        public void GetNameAndSkipComment()
        {
            Lexer lexer = new Lexer("foo # this is a name");
            Token token = lexer.NextToken();

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

            Assert.IsNull(lexer.NextToken());
        }
コード例 #3
0
ファイル: LexerTests.cs プロジェクト: ajlopez/AjRools
        public void GetName()
        {
            Lexer lexer = new Lexer("foo");
            Token token = lexer.NextToken();

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

            Assert.IsNull(lexer.NextToken());
        }
コード例 #4
0
ファイル: LexerTests.cs プロジェクト: ajlopez/AjRools
        public void GetLessOrEqualAsOperator()
        {
            Lexer lexer = new Lexer("<=");
            Token token = lexer.NextToken();

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

            Assert.IsNull(lexer.NextToken());
        }
コード例 #5
0
ファイル: LexerTests.cs プロジェクト: ajlopez/AjRools
        public void GetInteger()
        {
            Lexer lexer = new Lexer("123");
            Token token = lexer.NextToken();

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

            Assert.IsNull(lexer.NextToken());
        }
コード例 #6
0
ファイル: LexerTests.cs プロジェクト: ajlopez/AjRools
        public void GetGreaterOperator()
        {
            Lexer lexer = new Lexer(">");
            Token token = lexer.NextToken();

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

            Assert.IsNull(lexer.NextToken());
        }
コード例 #7
0
ファイル: LexerTests.cs プロジェクト: ajlopez/AjRools
        public void GetNameSkipCommentAndGetEndOfLineName()
        {
            Lexer lexer = new Lexer("foo# this is a name\r\nbar");

            Token token = lexer.NextToken();

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

            token = lexer.NextToken();

            Assert.IsNotNull(token);
            Assert.AreEqual(TokenType.EndOfLine, token.Type);

            token = lexer.NextToken();

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

            Assert.IsNull(lexer.NextToken());
        }
コード例 #8
0
ファイル: LexerTests.cs プロジェクト: ajlopez/AjRools
 public void RaiseWhenUnclosedString()
 {
     Lexer lexer = new Lexer("\"foo");
     MyAssert.Throws<LexerException>(() => lexer.NextToken(),
         "Unclosed String");
 }
コード例 #9
0
ファイル: LexerTests.cs プロジェクト: ajlopez/AjRools
 public void RaiseWhenInvalidCharacter()
 {
     Lexer lexer = new Lexer("[");
     MyAssert.Throws<LexerException>(() => lexer.NextToken(),
         "Unexpected '['");
 }
コード例 #10
0
ファイル: LexerTests.cs プロジェクト: ajlopez/AjRools
        public void ParseSimpleConditionWithNumbers()
        {
            Lexer lexer = new Lexer("30 < 36");

            Assert.IsTrue(IsInteger("30", lexer.NextToken()));
            Assert.IsTrue(IsOperator("<", lexer.NextToken()));
            Assert.IsTrue(IsInteger("36", lexer.NextToken()));

            Assert.IsNull(lexer.NextToken());
        }
コード例 #11
0
ファイル: LexerTests.cs プロジェクト: ajlopez/AjRools
        public void ParseSimpleCondition()
        {
            Lexer lexer = new Lexer("Temperature > 36");

            Assert.IsTrue(IsName("Temperature", lexer.NextToken()));
            Assert.IsTrue(IsOperator(">", lexer.NextToken()));
            Assert.IsTrue(IsInteger("36", lexer.NextToken()));

            Assert.IsNull(lexer.NextToken());
        }
コード例 #12
0
ファイル: LexerTests.cs プロジェクト: ajlopez/AjRools
        public void ParseBooleans()
        {
            Lexer lexer = new Lexer("true false");

            Assert.IsTrue(IsBoolean("true", lexer.NextToken()));
            Assert.IsTrue(IsBoolean("false", lexer.NextToken()));

            Assert.IsNull(lexer.NextToken());
        }
コード例 #13
0
ファイル: LexerTests.cs プロジェクト: ajlopez/AjRools
        public void GetSimpleString()
        {
            Lexer lexer = new Lexer("\"foo\"");
            Token token = lexer.NextToken();

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

            Assert.IsNull(lexer.NextToken());
        }
コード例 #14
0
ファイル: LexerTests.cs プロジェクト: ajlopez/AjRools
        public void GetPeriodAsSeparator()
        {
            Lexer lexer = new Lexer(".");
            Token token = lexer.NextToken();

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

            Assert.IsNull(lexer.NextToken());
        }
コード例 #15
0
ファイル: LexerTests.cs プロジェクト: ajlopez/AjRools
        public void GetNameWithUnderscore()
        {
            Lexer lexer = new Lexer("is_not");
            Token token = lexer.NextToken();

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

            Assert.IsNull(lexer.NextToken());
        }
コード例 #16
0
ファイル: Parser.cs プロジェクト: ajlopez/AjRools
 public Parser(Lexer lexer)
 {
     this.lexer = lexer;
 }