More tokens

This commit is contained in:
2019-12-01 01:17:30 +01:00
parent 2bd7e89cb3
commit dc18d28b54
2 changed files with 72 additions and 0 deletions

View File

@@ -174,5 +174,43 @@ namespace VAR.ExpressionEvaluator.Tests
Assert.AreEqual(t.Token, Token.EOF); Assert.AreEqual(t.Token, Token.EOF);
} }
[TestMethod()]
public void Tokenizer__MoreTokens()
{
var testString = "= < > <= >= == === ";
var t = new Tokenizer(new StringReader(testString));
// "="
Assert.AreEqual(t.Token, Token.Equals);
t.NextToken();
// "<"
Assert.AreEqual(t.Token, Token.LessThan);
t.NextToken();
// ">"
Assert.AreEqual(t.Token, Token.GreaterThan);
t.NextToken();
// "<="
Assert.AreEqual(t.Token, Token.LessOrEqualThan);
t.NextToken();
// ">="
Assert.AreEqual(t.Token, Token.GreaterOrEqualThan);
t.NextToken();
// "=="
Assert.AreEqual(t.Token, Token.Equals);
t.NextToken();
// "==="
Assert.AreEqual(t.Token, Token.ExclusiveEquals);
t.NextToken();
Assert.AreEqual(t.Token, Token.EOF);
}
} }
} }

View File

@@ -12,6 +12,11 @@ namespace VAR.ExpressionEvaluator
Division, Division,
Multiply, Multiply,
Equals, Equals,
ExclusiveEquals,
GreaterThan,
GreaterOrEqualThan,
LessThan,
LessOrEqualThan,
ParentesisStart, ParentesisStart,
ParentesisEnd, ParentesisEnd,
Keyword, Keyword,
@@ -119,6 +124,35 @@ namespace VAR.ExpressionEvaluator
case '=': case '=':
NextChar(); NextChar();
_currentToken = Token.Equals; _currentToken = Token.Equals;
if (_currentChar == '=')
{
NextChar();
if (_currentChar == '=')
{
NextChar();
_currentToken = Token.ExclusiveEquals;
}
}
return;
case '>':
NextChar();
_currentToken = Token.GreaterThan;
if (_currentChar == '=')
{
NextChar();
_currentToken = Token.GreaterOrEqualThan;
}
return;
case '<':
NextChar();
_currentToken = Token.LessThan;
if (_currentChar == '=')
{
NextChar();
_currentToken = Token.LessOrEqualThan;
}
return; return;
} }