Я делаю программу, которая компилирует код с одного языка на другой. например codefile.lang1 => codefile.lang2Компиляция кода только тогда, когда это необходимо
Я хочу, чтобы компиляция выполнялась каждый раз, когда запускается программа, но только если это необходимо, другими словами, только если изменения были сделаны после последнего компиляции.
Я предполагаю, что мне нужно включить в скомпилированный код (codefile.lang2) какие-то метаданные, в которых содержится «сводка» содержимого предварительно скомпилированного кода (codefile.lang1). Допустим, что функция, которая выполняет «обобщение» предварительно скомпилированного кода, равна F. Моя идея заключается в том, что каждый раз, когда программа запускается, она будет оценивать F (предварительно скомпилированный код) и сравнивать ее с метаданными в скомпилированный код,
if F == метаданные: нет необходимости компилировать, иначе компилировать.
Из этого следует, что для очевидных причин F должна быть инъективной (одна к одной функции). Кроме того, я пытаюсь избежать тривиальной реализации, то есть F (некоторый код) = некоторый код
Это хороший подход? Если да, то что я должен использовать для F? Я думал о хэшировании, но хеширование не является полностью инъективным, особенно для больших текстов.
Каковы ваши предложения? Спасибо :)
это зависит от языка, скорее всего, хэш исходного кода будет способом начать, хотя – OMGtechy
Что вы имеете в виду, зависит от языка? Это зависит от синтаксиса? или длину? Кроме того, возможно, хеширование - хороший способ начать, но это не то, что я хотел бы реализовать в конечном продукте, учитывая, что он не идеален. Я хочу полностью избежать столкновений. – areller
Если я добавлю комментарий. вам не нужно перекомпилировать. Символ комментария изменяется между языками – OMGtechy