Я продолжал работать (почти законченный) проект JavaScript немногим больше 14 месяцев теперь. Проект начался как взлом, который я ожидал заканчивать в течение ночи, но со временем часть JavaScript выросла 68 отдельными файлами и 10 314 непустыми строками, печально в настоящее время зависящими от препроцессора C для создания.
Трудно объяснить, как я закончил тем, что использовал cpp для JavaScript: это было только взломом, и мне было нужно что-то, что дало мне, макрорасширение, ifdef, определяет, и включает без слишком большого усилия. Приблизительно после 3 секундных соображений я понял, что cpp "идеально подходил" для задачи:
Как все истинные взломы, этот взлом теперь так трудно кодируется в проект, что я действительно очень не хочу даже думать о работе, которая потребуется, чтобы заменять его. Мой проект достигает стадии, где я хочу переместить кодовую базу в ее собственный выделенный тестовый сервер (а не мой ноутбук), однако на установке экземпляра Linux, я обнаружил, что GNU cpp версии после 4.1 больше не предварительно обрабатывает JavaScript с катастрофическим отказом с ошибкой.
Вместо того, чтобы добавлять определенную версию GCC к списку требований сборки, я фигурировал, теперь будет хорошее время, чтобы действительно зафиксировать эту путаницу. Моя проблема состоит, тем не менее, в том, что я не могу найти заменяющий препроцессор с тем же питанием и функциями как cpp! Я рассмотрел m4, но m4 является миром боли к себе. Другие определенные для JavaScript препроцессоры я нашел отсутствие всеми функциями, которые я в настоящее время в зависимости от, например:
__FILE__
& __LINE__
Я серьезно рассматриваю реализацию совершенно нового препроцессора только для JavaScript, который полностью одалживает синтаксис препроцессора C, так как это работало так хорошо. Я просто задаюсь вопросом, существуют ли более оптимальные варианты прежде, чем сделать так.:) Возможно, уже существует подобный cpp универсальный препроцессор, который я мог загрузить? Работа, требуемая заменять весь синтаксис препроцессора в тех 68 файлах, приближается к объему работы, требуемому просто повторно реализовать препроцессор.
Я вполне удивлен, что когда-либо делал его до сих пор при доверии препроцессору C; более эффективно в этой задаче, чем здоровый для ума постигать. Другая опция, открытая для меня, статически создает версии cpp-4.1 для Linux, Darwin-i386, Win32, и хранит те двоичные файлы в репозитории проекта.
На помощь!
Вы уже пробовали MCPP ? Это «портативный препроцессор C Preprocessor»
должен, что вы можете попробовать использовать универсальный макро-процессор (например, GEMA ) и построить достаточно CPP сверху.