встраивание одного типа синтаксиса в другой:это клудж или умно?

StackOverflow https://stackoverflow.com/questions/509689

Вопрос

Фон: Недавно, глядя на «редактор структурированного текста», я заметил, что они использовали трюк для изменения python/perl/c++/java и др.в «структурированную» схему, вставляя XML в комментарии на соответствующих языках.

Я вспомнил, что однажды видел этот трюк в bat-файле Windows.Операторы REM bat-файла использовались, чтобы «спрятать» некоторый код Perl.

Вопрос: Вы когда-нибудь видели случай, когда кто-то использовал комментарии языка программирования или разметки для внедрения синтаксиса совершенно другого языка?Если да, можете ли вы дать ссылку на пример или объяснить, что это было?

Если у вас нет, вот пример:

Вопрос: Является ли такой «трюк» умной и полезной идеей?Если да, можете ли вы перечислить конкретный случай, когда вы использовали этот трюк?Если нет, можете ли вы объяснить, почему вы считаете это плохой идеей?

Это было полезно?

Решение

Ты говоришь о полиглоты, совершенно захватывающий аспект компьютерного программирования и прекрасное упражнение в неоднозначной природе некоторых языков сценариев и программирования.Хотя это определенно интригующая идея, их редко можно увидеть за пределами арены новизны.Однако, если говорить с точки зрения программиста, то заставить свою работу функционировать в нескольких совершенно разных средах определенно было бы подвигом;однако, поскольку полиглоты обычно полагаются на всевозможные хаки и обходные пути через комментарии, это почти всегда выходит за рамки осуществимости.Однако определенно стоит посмотреть, если вы еще не видели, на что они способны;Я порекомендую Вот этот.

Хотите верьте, хотите нет, но этот единственный файл будет правильно скомпилирован (в той или иной форме) на пятнадцати разных языках:

  1. HTML
  2. бить
  3. зш
  4. С89
  5. С99
  6. С++
  7. Makefile
  8. Рубин
  9. Ткл
  10. Перл
  11. Хаскелл
  12. Питон
  13. JavaScript
  14. Трах мозгов
  15. Пробелы

Другие советы

Я не могу дать вам полный ответ, но Netbean любит использовать этот трюк со своим кодом, сгенерированным на Java.

Проблема в том, что исходный код Java должен быть посредником между приложениями.Добавляя смысл определенным комментариям, вы вынуждены придерживаться только Netbeans.Конечно, другие программы могут просто игнорировать комментарии, но что, если эти комментарии будут перемещены или изменены?Я сделал это в Netbeans, а затем произошла какая-то странность, когда я попытался загрузить файл обратно в Netbeans.Мне пришлось потратить время на исправление синтаксиса (в комментариях!), который должен был быть для меня невидимым.

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

Этот ужас вставляет допустимую разметку тегов XHTML, HTML и pre-HTML3.2, «скрывая» CSS-комментарии:

<style type="text/css"><!--/*--><![CDATA[/*><!--*/
    ...
/*]]>*/--></style>

Я был огорчен, когда начал видеть, как его действительно используют.Это было задумано только как упражнение.Извини.

Я видел этот трюк (скрытие материалов в комментариях), используемый для свертывания в редакторах, для разметки документации в различных инструментах и ​​для оставления хлебных крошек для обратной работы в инструменте моделирования.

Другое использование, которое я видел, находится в Шестерня, генератор кода.Вы пишете Python внутри комментариев, а затем Cog запускает Python для генерации кода.Это интересно, потому что весь смысл в том, чтобы никогда не нуждаться/не хотеть изменять сгенерированный код, чтобы он не сталкивался с теми же неприятностями, которые вы получаете, например, со складным редактором, когда вы случайно испортили «свернутые» комментарии. в другом редакторе.

В Visual Studio есть такая форма, называемая T4.К сожалению, документация весьма отрывочна.

Одна из любимых разметок, используемая в документации Python: Реструктурированный текст.Это общий упрощенный язык разметки, такой как Markdown или Textile, но он обеспечивает хорошую структуру документации и может легко использоваться для создания документации в формате HTML или PDF.

WEB и CWEB Дональда Кнута встраивают Pascal (WEB) и C (CWEB) в TeX.Вот пример исходного кода METAFONT:

@ The following system-independent code makes the |xord| array contain a
suitable inverse to the information in |xchr|. Note that if |xchr[i]=xchr[j]|
where |i<j<@'177|, the value of |xord[xchr[i]]| will turn out to be
|j| or more; hence, standard ASCII code numbers will be used instead of
codes below @'40 in case there is a coincidence.

@<Set init...@>=
for i:=first_text_char to last_text_char do xord[chr(i)]:=@'177;
for i:=@'200 to @'377 do xord[xchr[i]]:=i;
for i:=0 to @'176 do xord[xchr[i]]:=i;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top