Implement new tokens
I think this is all of them. The test will tell.
This commit is contained in:
parent
1c2194b68a
commit
06a99ce232
@ -253,14 +253,26 @@ func (lexer *LexingOperation) tokenizeSymbolBeginning () (err error) {
|
|||||||
lexer.addToken(token)
|
lexer.addToken(token)
|
||||||
case '%':
|
case '%':
|
||||||
token := lexer.newToken()
|
token := lexer.newToken()
|
||||||
token.kind = TokenKindPercent
|
|
||||||
lexer.addToken(token)
|
|
||||||
err = lexer.nextRune()
|
err = lexer.nextRune()
|
||||||
|
if err != nil { return }
|
||||||
|
token.kind = TokenKindPercent
|
||||||
|
if lexer.char == '=' {
|
||||||
|
token.kind = TokenKindPercentAssignment
|
||||||
|
err = lexer.nextRune()
|
||||||
|
token.location.SetWidth(2)
|
||||||
|
}
|
||||||
|
lexer.addToken(token)
|
||||||
case '~':
|
case '~':
|
||||||
token := lexer.newToken()
|
token := lexer.newToken()
|
||||||
token.kind = TokenKindTilde
|
|
||||||
lexer.addToken(token)
|
|
||||||
err = lexer.nextRune()
|
err = lexer.nextRune()
|
||||||
|
if err != nil { return }
|
||||||
|
token.kind = TokenKindTilde
|
||||||
|
if lexer.char == '=' {
|
||||||
|
token.kind = TokenKindTildeAssignment
|
||||||
|
err = lexer.nextRune()
|
||||||
|
token.location.SetWidth(2)
|
||||||
|
}
|
||||||
|
lexer.addToken(token)
|
||||||
case '=':
|
case '=':
|
||||||
token := lexer.newToken()
|
token := lexer.newToken()
|
||||||
token.kind = TokenKindEqualTo
|
token.kind = TokenKindEqualTo
|
||||||
@ -275,6 +287,11 @@ func (lexer *LexingOperation) tokenizeSymbolBeginning () (err error) {
|
|||||||
token.kind = TokenKindLShift
|
token.kind = TokenKindLShift
|
||||||
err = lexer.nextRune()
|
err = lexer.nextRune()
|
||||||
token.location.SetWidth(2)
|
token.location.SetWidth(2)
|
||||||
|
if lexer.char == '=' {
|
||||||
|
token.kind = TokenKindLShiftAssignment
|
||||||
|
err = lexer.nextRune()
|
||||||
|
token.location.SetWidth(2)
|
||||||
|
}
|
||||||
} else if lexer.char == '=' {
|
} else if lexer.char == '=' {
|
||||||
token.kind = TokenKindLessThanEqualTo
|
token.kind = TokenKindLessThanEqualTo
|
||||||
err = lexer.nextRune()
|
err = lexer.nextRune()
|
||||||
@ -290,6 +307,11 @@ func (lexer *LexingOperation) tokenizeSymbolBeginning () (err error) {
|
|||||||
token.kind = TokenKindRShift
|
token.kind = TokenKindRShift
|
||||||
err = lexer.nextRune()
|
err = lexer.nextRune()
|
||||||
token.location.SetWidth(2)
|
token.location.SetWidth(2)
|
||||||
|
if lexer.char == '=' {
|
||||||
|
token.kind = TokenKindRShiftAssignment
|
||||||
|
err = lexer.nextRune()
|
||||||
|
token.location.SetWidth(2)
|
||||||
|
}
|
||||||
} else if lexer.char == '=' {
|
} else if lexer.char == '=' {
|
||||||
token.kind = TokenKindGreaterThanEqualTo
|
token.kind = TokenKindGreaterThanEqualTo
|
||||||
err = lexer.nextRune()
|
err = lexer.nextRune()
|
||||||
@ -305,6 +327,10 @@ func (lexer *LexingOperation) tokenizeSymbolBeginning () (err error) {
|
|||||||
token.kind = TokenKindLogicalOr
|
token.kind = TokenKindLogicalOr
|
||||||
err = lexer.nextRune()
|
err = lexer.nextRune()
|
||||||
token.location.SetWidth(2)
|
token.location.SetWidth(2)
|
||||||
|
} else if lexer.char == '=' {
|
||||||
|
token.kind = TokenKindBinaryOrAssignment
|
||||||
|
err = lexer.nextRune()
|
||||||
|
token.location.SetWidth(2)
|
||||||
}
|
}
|
||||||
lexer.addToken(token)
|
lexer.addToken(token)
|
||||||
case '&':
|
case '&':
|
||||||
@ -316,6 +342,10 @@ func (lexer *LexingOperation) tokenizeSymbolBeginning () (err error) {
|
|||||||
token.kind = TokenKindLogicalAnd
|
token.kind = TokenKindLogicalAnd
|
||||||
err = lexer.nextRune()
|
err = lexer.nextRune()
|
||||||
token.location.SetWidth(2)
|
token.location.SetWidth(2)
|
||||||
|
} else if lexer.char == '=' {
|
||||||
|
token.kind = TokenKindBinaryAndAssignment
|
||||||
|
err = lexer.nextRune()
|
||||||
|
token.location.SetWidth(2)
|
||||||
}
|
}
|
||||||
lexer.addToken(token)
|
lexer.addToken(token)
|
||||||
default:
|
default:
|
||||||
|
Reference in New Issue
Block a user