Либо пишите свой интерпретатор JS, который работает так, как вам надо либо берете любой существующий интерпретатор JS и в него добавляете требуемый вам функционал. Если совсем просто - то можно обычной регуляркой пройтись по файлам и заменить def f(x): на function f (x) { }. Если хочется синтаксического сахара, то вот вам целая бочка: https://coffeescript.org/ - ложку дёгтя сами добавите или найдёте для разбавления.
Точно так же как и любое другое: делаете декомпозицию задачи на боле простые и так повторяете несколько раз, пока не дойдете в самый низ до самых простых, понятных и примитивных элементов. Реализация интерпретатора JS начинается с его стандарта: ecma-262 и далее стандарт реализуется по шагам.
Алексей Уколов, скобочки, да? Ну, если функцию действительно объявлять в стиле питона, то по идее можно регуляркой выбрать все строки, выровненные по этому определению до первой строки, которая не выровнена. Ну, или тогда просто пройтись скриптом, который будет искать определение, считать скобочки и менять на правильное определение.
Без учета вот таких вот сложностей и именно последним вариантом. А правильный вариант - именно писать свой интерпретатор.
dima89e, если хочется поиграть с интерпретаторами и компиляторами при отсутствии большого опыта в разработке, то рекомендую попробовать начать с более простых вещей и обратить внимание на Forth: это очень простой язык программирования, интерпретатор пишется вечером за чашкой чая, а компилятор - немногим дольше, но тоже достаточно просто.