diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c
index ccc6d6d..009c193 100644
--- a/Parser/tokenizer.c
+++ b/Parser/tokenizer.c
@@ -85,6 +85,10 @@
 	"NOTEQUAL",
 	"LESSEQUAL",
 	"GREATEREQUAL",
+	"TILDE",
+	"CIRCUMFLEX",
+	"LEFTSHIFT",
+	"RIGHTSHIFT",
 	/* This table must match the #defines in token.h! */
 	"OP",
 	"<ERRORTOKEN>",
@@ -301,6 +305,8 @@
 	case '`':	return BACKQUOTE;
 	case '{':	return LBRACE;
 	case '}':	return RBRACE;
+	case '^':	return CIRCUMFLEX;
+	case '~':	return TILDE;
 	default:	return OP;
 	}
 }
@@ -325,11 +331,13 @@
 		switch (c2) {
 		case '>':	return NOTEQUAL;
 		case '=':	return LESSEQUAL;
+		case '<':	return LEFTSHIFT;
 		}
 		break;
 	case '>':
 		switch (c2) {
 		case '=':	return GREATEREQUAL;
+		case '>':	return RIGHTSHIFT;
 		}
 		break;
 	}
@@ -438,7 +446,7 @@
 		   beginning or end of the file.  (Will vi never die...?)
 		   For Python it must be at the beginning of the file! */
 		int x;
-		/* XXX The case to (unsigned char *) is needed by THINK C 3.0 */
+		/* XXX The cast to (unsigned char *) is needed by THINK C 3.0 */
 		if (sscanf(/*(unsigned char *)*/tok->cur,
 				" vi:set tabsize=%d:", &x) == 1 &&
 						x >= 1 && x <= 40) {
@@ -451,8 +459,10 @@
 	}
 	
 	/* Check for EOF and errors now */
-	if (c == EOF)
+	if (c == EOF) {
+		*p_start = *p_end = tok->cur;
 		return tok->done == E_EOF ? ENDMARKER : ERRORTOKEN;
+	}
 	
 	/* Identifier (most frequent token!) */
 	if (isalpha(c) || c == '_') {
@@ -473,6 +483,19 @@
 		return NEWLINE;
 	}
 	
+	/* Period or number starting with period? */
+	if (c == '.') {
+		c = tok_nextc(tok);
+		if (isdigit(c)) {
+			goto fraction;
+		}
+		else {
+			tok_backup(tok, c);
+			*p_end = tok->cur;
+			return DOT;
+		}
+	}
+	
 	/* Number */
 	if (isdigit(c)) {
 		if (c == '0') {
