func (l *Lexer) GetNextsTokensIf(expectedType1, expectedType2 string) (*Token, *Token) {
	backTracking := l.currentPos
	token1 := l.NextToken()
	if token1.Type != expectedType1 {
		l.currentPos = backTracking
		return nil, nil
	}
	token2 := l.NextToken()
	if token2.Type != expectedType2 {
		l.currentPos = backTracking
		return nil, nil
	}
	return token1, token2
}
GetNextsTokensIf get the nexts tokens if both match a specifics tokens types.
package lexer
import (
	"strings"
	"unicode"
	"unicode/utf8"
)
type Lexer struct {
	input        string
	currentPos   int
	backTracking int
}
func New(input string) *Lexer {
	return &Lexer{
		input:      input,
		currentPos: 0,
	}
}
func (l *Lexer) NextToken() *Token {
	var ch rune
	for {
		ch, _ = l.nextChar()
		if ch == 0 {
			return &Token{EOF, EOF}
		}
		if isDelimiterChar(ch) {
			token := string(ch)
			if ch == ':' {
				nextCh, _ := l.nextChar()
				if nextCh == '=' {
					token = ":="
				} else {
					l.currentPos--
				}
			}
			return defineToken(token)
		}
		if !isUselessChar(ch) {
			break
		}
	}
	if token := l.tryIDOrKeyword(ch); token != nil {
		return token
	}
	if token := l.tryString(ch); token != nil {
		return token
	}
	if token := l.tryInt(ch); token != nil {
		return token
	}
	return &Token{INVALID, ""}
}
func (l *Lexer) GetNextTokenIf(expectedType string) *Token {
	backTracking := l.currentPos
	token := l.NextToken()
	if token.Type == expectedType {
		return token
	}
	l.currentPos = backTracking
	return nil
}