예제 #1
0
        public void GetEndOfCommand()
        {
            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());
        }
예제 #2
0
        public void GetEqualOperator()
        {
            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());
        }
예제 #3
0
        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());
        }
예제 #4
0
        static void Main(string[] args)
        {
            System.Console.WriteLine("DartSharp 0.0.0");

            Lexer lexer = new Lexer(System.Console.In);
            Context context = new Context();
            context.SetValue("print", new Print(System.Console.Out));
            Parser parser = new Parser(lexer);

            for (ICommand cmd = parser.ParseCommand(); cmd != null; cmd = parser.ParseCommand())
            {
                cmd.Execute(context);
            }
        }
예제 #5
0
 public void RaiseForUnknownOperator()
 {
     Lexer lexer = new Lexer("^");
     lexer.NextToken();
 }
예제 #6
0
        public void GetNameWithSpaces()
        {
            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());
        }
예제 #7
0
        public void GetNameWithLineComment()
        {
            Lexer lexer = new Lexer("  foo  // Foo Variable ");
            Token token = lexer.NextToken();

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

            Assert.IsNull(lexer.NextToken());
        }
예제 #8
0
        public void SkipNewLine()
        {
            Lexer lexer = new Lexer("\n");
            Token token = lexer.NextToken();

            Assert.IsNull(token);
        }
예제 #9
0
        public void SkipNewLineCarriageReturn()
        {
            Lexer lexer = new Lexer("\n\r");
            Token token = lexer.NextToken();

            Assert.IsNull(lexer.NextToken());
        }
예제 #10
0
 public void RaiseIfCommentIsNotClosedByAMissingChar()
 {
     Lexer lexer = new Lexer("/* Comment wo/end *");
     lexer.NextToken();
 }
예제 #11
0
 public void RaiseUnclosedString()
 {
     Lexer lexer = new Lexer("'foo");
     lexer.NextToken();
 }
예제 #12
0
 public Parser(Lexer lexer)
 {
     this.lexer = lexer;
 }
예제 #13
0
        public void GetNamesWithMultiLineComment()
        {
            Lexer lexer = new Lexer("  foo  /* Foo \r\n Variable */ bar");
            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("bar", token.Value);
            Assert.AreEqual(TokenType.Name, token.Type);

            Assert.IsNull(lexer.NextToken());
        }
예제 #14
0
        public void GetSquareBrackets()
        {
            Lexer lexer = new Lexer("[]");
            Token token = lexer.NextToken();

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

            token = lexer.NextToken();

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

            Assert.IsNull(lexer.NextToken());
        }
예제 #15
0
        public void GetSimpleStringSingleQuote()
        {
            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());
        }
예제 #16
0
        public void GetSimpleAssignmentCommand()
        {
            Lexer lexer = new Lexer("a=123");
            Token token = lexer.NextToken();

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

            token = lexer.NextToken();

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

            token = lexer.NextToken();

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

            Assert.IsNull(lexer.NextToken());
        }
예제 #17
0
        public void GetPointSeparator()
        {
            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());
        }
예제 #18
0
        public void GetParenthesis()
        {
            Lexer lexer = new Lexer("()");
            Token token = lexer.NextToken();

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

            token = lexer.NextToken();

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

            Assert.IsNull(lexer.NextToken());
        }
예제 #19
0
 public void RaiseIfCommentIsNotClosed()
 {
     Lexer lexer = new Lexer("/* Comment wo/end ");
     lexer.NextToken();
 }
예제 #20
0
파일: Parser.cs 프로젝트: ajlopez/DartSharp
 public Parser(Lexer lexer)
 {
     this.lexer = lexer;
 }