public void ParseACharacter() { Lexer lexer = new Lexer("\\a"); Token token; token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual("a", token.Value); Assert.AreEqual(TokenType.Character, token.TokenType); Assert.IsNull(lexer.NextToken()); }
public void ParseDispatchMacros() { string macros = "#' #( #{ #^ #_ ~@"; Lexer lexer = new Lexer(macros); Token token; foreach (string macro in macros.Split(' ')) { token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.Macro, token.TokenType); Assert.AreEqual(macro, token.Value); } Assert.IsNull(lexer.NextToken()); }
public void ParseBrackets() { Lexer lexer = new Lexer("[]"); Token token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.Separator, token.TokenType); Assert.AreEqual("[", token.Value); token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.Separator, token.TokenType); Assert.AreEqual("]", token.Value); Assert.IsNull(lexer.NextToken()); }
public void RaiseIfStringIsUnclosed() { Lexer lexer = new Lexer("\"Unclosed"); lexer.NextToken(); }
public void RaiseIfInvalidCharacter() { Lexer lexer = new Lexer("\\foo"); Token token; token = lexer.NextToken(); }
public void PushToken() { Lexer lexer = new Lexer(string.Empty); Token token = new Token { Value = "foo", TokenType = TokenType.Symbol }; lexer.PushToken(token); Token retrieved = lexer.NextToken(); Assert.IsNotNull(retrieved); Assert.AreEqual("foo", retrieved.Value); Assert.AreEqual(TokenType.Symbol, retrieved.TokenType); }
public void ParseSymbolWithSurroundingSpaces() { Lexer lexer = new Lexer(" foo "); Token token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.Symbol, token.TokenType); Assert.AreEqual("foo", token.Value); Assert.IsNull(lexer.NextToken()); }
public void ParseSymbolWithQuestionMark() { Lexer lexer = new Lexer("foo?"); Token token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.Symbol, token.TokenType); Assert.AreEqual("foo?", token.Value); Assert.IsNull(lexer.NextToken()); }
public void ParseKeyword() { Lexer lexer = new Lexer(":foo"); Token token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.Keyword, token.TokenType); Assert.AreEqual("foo", token.Value); Assert.IsNull(lexer.NextToken()); }
public void ParseStringWithEmbeddedDoubleQuotes() { Lexer lexer = new Lexer("\"foo \\\"bar\\\"\""); Token token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.String, token.TokenType); Assert.AreEqual("foo \"bar\"", token.Value); Assert.IsNull(lexer.NextToken()); }
public void ParseString() { Lexer lexer = new Lexer("\"foo bar\""); Token token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.String, token.TokenType); Assert.AreEqual("foo bar", token.Value); Assert.IsNull(lexer.NextToken()); }
public void ParseSpecialNames() { string names = "+ - * / > < = == >= <="; Lexer lexer = new Lexer(names); Token token; foreach (string name in names.Split(' ')) { token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.Symbol, token.TokenType); Assert.AreEqual(name, token.Value); } Assert.IsNull(lexer.NextToken()); }
public void ParseSimbolWithHyphen() { Lexer lexer = new Lexer("foo-bar"); Token token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.Symbol, token.TokenType); Assert.AreEqual("foo-bar", token.Value); Assert.IsNull(lexer.NextToken()); }
public void ParseSeparatorCharacters() { string chars = ","; Lexer lexer = new Lexer(chars); Token token; foreach (char ch in chars) { token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.Separator, token.TokenType); Assert.AreEqual(ch.ToString(), token.Value); } Assert.IsNull(lexer.NextToken()); }
public void ParseParenthesis() { Lexer lexer = new Lexer("()"); Token token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.Separator, token.TokenType); Assert.AreEqual("(", token.Value); token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.Separator, token.TokenType); Assert.AreEqual(")", token.Value); Assert.IsNull(lexer.NextToken()); }
public void ParseSymbolWithDots() { Lexer lexer = new Lexer("System.foo.bar"); Token token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.Symbol, token.TokenType); Assert.AreEqual("System.foo.bar", token.Value); Assert.IsNull(lexer.NextToken()); }
public void ParseInteger() { Lexer lexer = new Lexer("123"); Token token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.Integer, token.TokenType); Assert.AreEqual("123", token.Value); Assert.IsNull(lexer.NextToken()); }
public Parser(Lexer lexer) { this.lexer = lexer; }