Нет, ну все зависит от степени. Простейший набросок (не тестировалось):
1. Пробелы
s/([\w\d]) +([\w\d])/\1\x01\2/g
s/ *//g
s/\x01/ /g
2. Комментарии
s!//.*!!
Ну и дальше - читаем весь файл целиком, убираем многострочные комментарии, перевод строки, составляем список алфавитно-цифровых идентификаторов минус ключевые слова, вручную добавляем замены, пропускаем опять через условный sed (лучше perl).
Ну не десять минут, ну час максимум. И зачем парсить и дерево лепить?
Впрочем понятно, что все это только для учебных целей, а для Javascript конечно лучше готовым решением воспользоваться.
Это я так, поболтать.
Пользователь решил продолжить мысль 16 Февраля 2012, 18:05:11:
И да я в курсе, что переводы строки надо будет менять на точку с запятой, но только если ее нет, и что начало многострочного комментария может вызвать проблемы. Еще что-нибудь может вызвать проблемы.
Ну то есть да, для надежной компрессии надо парсить. Ну то есть опять - надо воспользоваться готовым решением.