Implements inequality token
This commit is contained in:
@@ -7,6 +7,7 @@ enum class BinaryOperatorKind{
|
||||
Multiplication,
|
||||
Division,
|
||||
Equality,
|
||||
Inequality,
|
||||
LogicalAnd,
|
||||
LogicalOr,
|
||||
};
|
||||
|
||||
@@ -62,6 +62,13 @@ IToken* Lexer::LexNext(char c){
|
||||
return new SimpleToken(TokenKind::EqualityToken, this -> Position - 2, 2);
|
||||
}
|
||||
return new SimpleToken(TokenKind::AssignmentToken, this -> Position - 1, 1);
|
||||
case '~':
|
||||
if (Lexer::Peek() == '='){
|
||||
Lexer::Next();
|
||||
return new SimpleToken(TokenKind::InequalityToken, this -> Position - 2, 2);
|
||||
}
|
||||
this -> ScriptData -> Diagnostics -> LogError(DiagnosticCode::UnexpectedCharacter, this -> Position - 1, 1);
|
||||
return new SimpleToken(TokenKind::BadToken, this -> Position - 1, 1);
|
||||
case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':
|
||||
return LexNumber(c);
|
||||
case '"':
|
||||
|
||||
@@ -56,6 +56,7 @@ BinaryOperatorKind GetBinaryOperatorKind(TokenKind kind){
|
||||
case TokenKind::StarToken: return BinaryOperatorKind ::Multiplication;
|
||||
case TokenKind::SlashToken: return BinaryOperatorKind ::Division;
|
||||
case TokenKind::EqualityToken: return BinaryOperatorKind ::Equality;
|
||||
case TokenKind::InequalityToken: return BinaryOperatorKind ::Inequality;
|
||||
case TokenKind::AndKeyword: return BinaryOperatorKind ::LogicalAnd;
|
||||
case TokenKind::OrKeyword: return BinaryOperatorKind ::LogicalOr;
|
||||
default: // This should never trigger, so throw.
|
||||
@@ -70,6 +71,7 @@ OperatorPrecedence GetBinaryPrecedence(TokenKind kind){
|
||||
case TokenKind::StarToken: return OperatorPrecedence ::Multiplication;
|
||||
case TokenKind::SlashToken: return OperatorPrecedence ::Multiplication;
|
||||
case TokenKind::EqualityToken: return OperatorPrecedence ::Equality;
|
||||
case TokenKind::InequalityToken: return OperatorPrecedence ::Equality;
|
||||
case TokenKind::AndKeyword: return OperatorPrecedence ::LogicalAnd;
|
||||
case TokenKind::OrKeyword: return OperatorPrecedence ::LogicalOr;
|
||||
default:
|
||||
|
||||
@@ -12,6 +12,7 @@ enum class TokenKind{
|
||||
StarToken,
|
||||
AssignmentToken,
|
||||
EqualityToken,
|
||||
InequalityToken,
|
||||
OpenParenthesis,
|
||||
CloseParenthesis,
|
||||
|
||||
|
||||
Reference in New Issue
Block a user