} else if (ch == '!') { appendCharToStr(&token.val, ch); nextCh(); if (ch == '=') { appendCharToStr(&token.val, ch); nextCh(); return token.kind = NOT_EQUAL; } return token.kind = NOT; } else if (ch == '$') { appendCharToStr(&token.val, ch); nextCh(); return token.kind = DOLLAR; } else if (ch == '%') { appendCharToStr(&token.val, ch); nextCh(); return token.kind = PERCENT; } else if (ch == '&') { appendCharToStr(&token.val, ch); nextCh(); if (ch == '&') { appendCharToStr(&token.val, ch); nextCh(); return token.kind = AMPERSAND2; } return token.kind = AMPERSAND; } else if (ch == '(') { appendCharToStr(&token.val, ch); nextCh(); return token.kind = LPAREN; } else if (ch == ')') { appendCharToStr(&token.val, ch); nextCh(); return token.kind = RPAREN; } else if (ch == '*') { appendCharToStr(&token.val, ch); nextCh(); return token.kind = ASTERISK; } else if (ch == '+') { appendCharToStr(&token.val, ch); nextCh(); return token.kind = PLUS; } else if (ch == '-') { appendCharToStr(&token.val, ch); nextCh(); return token.kind = MINUS; } else if (ch == '/') { appendCharToStr(&token.val, ch); nextCh(); return token.kind = SLASH; } else if (ch == ';') { appendCharToStr(&token.val, ch); nextCh(); return token.kind = SEMICOLON; } else if (ch == '<') { appendCharToStr(&token.val, ch); nextCh(); if (ch == '=') { appendCharToStr(&token.val, ch); nextCh(); return token.kind = LESS_EQUAL; } return token.kind = LESS; } else if (ch == '=') { appendCharToStr(&token.val, ch); nextCh(); if (ch == '=') { appendCharToStr(&token.val, ch); nextCh(); return token.kind = EQUAL2; } return token.kind = EQUAL; } else if (ch == '>') { appendCharToStr(&token.val, ch); nextCh(); if (ch == '=') { appendCharToStr(&token.val, ch); nextCh(); return token.kind = GREATER_EQUAL; } return token.kind = GREATER; } else if (ch == '^') { appendCharToStr(&token.val, ch); nextCh(); return token.kind = CARET; } else if (ch == '{') { appendCharToStr(&token.val, ch); nextCh(); return token.kind = LBRACE; } else if (ch == '|') { appendCharToStr(&token.val, ch); nextCh(); if (ch == '|') { appendCharToStr(&token.val, ch); nextCh(); return token.kind = VBAR2; } return token.kind = VBAR; } else if (ch == '}') { appendCharToStr(&token.val, ch); nextCh(); return token.kind = RBRACE; } else if (ch == '~') { appendCharToStr(&token.val, ch); nextCh(); return token.kind = TILDE;