Implements inequality token

This commit is contained in:
2019-05-25 14:17:52 +02:00
parent d6a6e116fe
commit 9131fbfee7
8 changed files with 39 additions and 2 deletions

View File

@@ -7,6 +7,7 @@ enum class BinaryOperatorKind{
Multiplication,
Division,
Equality,
Inequality,
LogicalAnd,
LogicalOr,
};

View File

@@ -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 '"':

View File

@@ -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:

View File

@@ -12,6 +12,7 @@ enum class TokenKind{
StarToken,
AssignmentToken,
EqualityToken,
InequalityToken,
OpenParenthesis,
CloseParenthesis,