まぁ、その関数が、せいぜい200行程度だと我慢できるが。
switch文にしろif文にしろそうだけど。

数千行にも及ぶのはカンベンして欲しい。
tokenの種類に応じた、分割統治とかそういうコーディングを
おぼえて欲しい。どうしても分割統治しづらいなら、
せめて処理を関数に分けて以下のようにしてくれ。
関数呼び出しのオーバヘッドが気になるなら、inlineに
でもすればい。

if ((handler = GetHandler(token)) == NULL) {
  return ERROR;
}

ret = handler(args);