Fix lexing tokens starting with '<' and '>'
This commit is contained in:
parent
e7e2f355b0
commit
7a31c754ee
@ -153,20 +153,51 @@ Token Lexer::next_token() {
|
||||
result.m_type = resolve_similar(ch, TokenType::TOKEN_BITWISE_XOR, TokenType::TOKEN_XOR);
|
||||
break;
|
||||
case '<':
|
||||
result.m_type = resolve_similar(ch, TokenType::TOKEN_LESS, TokenType::TOKEN_BITWISE_LEFT_SHIFT);
|
||||
break;
|
||||
case '>':
|
||||
if(m_input.peek()=='>') {
|
||||
switch(m_input.peek()) {
|
||||
case '<':
|
||||
m_input.ignore();
|
||||
if(m_input.peek()=='>') {
|
||||
if(m_input.peek()=='=') {
|
||||
m_input.ignore();
|
||||
result.m_type = TokenType::TOKEN_ARITHMETIC_RIGHT_SHIFT;
|
||||
result.m_type = TokenType::TOKEN_EQUALS_BITWISE_LEFT_SHIFT;
|
||||
}
|
||||
else
|
||||
result.m_type = TokenType::TOKEN_BITWISE_RIGHT_SHIFT;
|
||||
result.m_type = TokenType::TOKEN_BITWISE_LEFT_SHIFT;
|
||||
break;
|
||||
case '=':
|
||||
m_input.ignore();
|
||||
result.m_type = TokenType::TOKEN_LESS_OR_EQUAL;
|
||||
break;
|
||||
default:
|
||||
result.m_type = TokenType::TOKEN_LESS;
|
||||
break;
|
||||
}
|
||||
else
|
||||
break;
|
||||
case '>':
|
||||
switch(m_input.peek()) {
|
||||
case '>':
|
||||
m_input.ignore();
|
||||
switch(m_input.peek()) {
|
||||
case '>':
|
||||
m_input.ignore();
|
||||
result.m_type = TokenType::TOKEN_ARITHMETIC_RIGHT_SHIFT;
|
||||
break;
|
||||
case '=':
|
||||
m_input.ignore();
|
||||
result.m_type = TokenType::TOKEN_EQUALS_BITWISE_RIGHT_SHIFT;
|
||||
break;
|
||||
default:
|
||||
result.m_type = TokenType::TOKEN_BITWISE_RIGHT_SHIFT;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case '=':
|
||||
m_input.ignore();
|
||||
result.m_type = TokenType::TOKEN_GREATER_OR_EQUAL;
|
||||
break;
|
||||
default:
|
||||
result.m_type = TokenType::TOKEN_GREATER;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
result.m_line = m_line;
|
||||
|
Loading…
Reference in New Issue
Block a user