1

Есть ли такая вещь, как препроцессор, инструкции которого после обработки полностью исчезают и заменяются синтаксисом целевого языка на постоянной основе?Терминология - директивы генерации единовременного кода

Я хочу исследовать его в Интернете, но я не знаю, какой термин искать. Если я ищу «генератор кода», «язык шаблонов», «директивы препроцессора», «mixins», «аннотации», я получаю генераторы, чей вход становится источником правды.

Ближайшая вещь, которую я могу придумать, - это macro.

То, что я пытаюсь сделать

мне часто приходится писать код, многословный и ненужный ручной труд, и я ищу более разумный способ ввести по крайней мере, большинству из него и он автоматически преобразуется и только источник контролирует вывод (и вручную редактирует, если необходимо). Например:

  • Java кода - Вместо того, чтобы писать добытчиками/сеттеры, Javadoc (возможно, трансформатор может быть Maven плагин)
  • HTML - Я просто хочу, чтобы добавить URL, и есть мой препроцессор автоматически преобразует их в ссылки, изображения, видео, аудио и т.д. в зависимости от расширения файла с некоторой регулярным выражением замены (в настоящее время я бег сценария PERL через хроны)

Я просто хочу, чтобы использовать его в качестве своей собственной стенографии и не применять его в моем проекте и сделать вывод редактируемым, чтобы другие могли изучить новую структуру или язык (например, Protobuf, Stringtemplate, GWT, C hash-defi nes, PHP, JSP и т. д.).

Не должно быть прямой подсказки, что я использовал шаблон/препроцессор для его создания.

+0

Возможно, строительные леса? –

ответ

1

Что вы хотите, это «система преобразования программ». См. https://en.wikipedia.org/wiki/Program_transformation. (Это надмножество «транспилеров» [уродливый термин]).

Хорошая система преобразования источника к источнику позволит вам применять правила перезаписи в виде:

if you see *this*, replace it by *that* if *this_condition*. 

Вы можете взять исходный код и запустить набор правил перезаписи через этот код, чтобы Измени это.

Полученный код «преобразован»; правила перезаписи не видны.

+0

Какие-нибудь примеры? Что-то, что является плагином maven, было бы идеальным. Возможно, http://www.smooks.org/? –

+1

См. Правила перезаписи http://www.semanticdesigns.com/Products/DMS/DMSRewriteRules.html для системы преобразования программ DMS моей компании. (Пример слишком длинный, чтобы вставить комментарий или ответ здесь). DMS может использоваться как действие Maven. –

0

Кажется, что Transpiler - это один из способов его описания.

+0

Спасибо за предложение. Пожалуйста, напишите как ответ, чтобы я мог дать вам кредит. –