stringtranslate.com

Prettyprint

Pretty-printing (или prettyprinting ) — это применение различных стилистических соглашений о форматировании к текстовым файлам , таким как исходный код , разметка и подобные виды контента. Эти соглашения о форматировании могут включать соблюдение стиля отступов , использование разных цветов и шрифтов для выделения синтаксических элементов исходного кода или изменение размера, чтобы сделать контент более удобным для чтения и понимания. Pretty-printers для исходного кода иногда называют форматировщиками кода или украшателями .

Красиво-печатная математика

Набранное математическое выражение

Pretty-printing обычно относится к отображению математических выражений, подобно тому, как они были бы набраны профессионально. Например, в системах компьютерной алгебры, таких как Maxima или Mathematica, система может записывать вывод как "х ^ 2 + 3 * х" как " ". Некоторые графические калькуляторы , такие как Casio 9860 series , HP-49/50 series и HP Prime , TI-84 Plus , TI-89 и TI-Nspire , TI-83 Plus с надстройкой PrettyPt [1] или TI-84 Plus с той же надстройкой или ОС с поддержкой "MathPrint", могут выполнять красивую печать. Кроме того, ряд новых научных калькуляторов оснащены матричными экранами, способными выполнять красивую печать, такие как Casio FX-ES series (Natural Display), Sharp EL-W series (WriteView), HP SmartCalc 300s, TI-30XB и Numworks .

Многие программы форматирования текста также могут набирать математические тексты: TeX был разработан специально для высококачественного математического набора .

Красиво оформленная разметка и код на основе тегов

Исходный код HTML, наглядно представленный для лучшего отображения иерархических отношений его элементов (называемых тегами)

Pretty-printing в примерах языка разметки обычно ассоциируется с отступами тегов и содержимого строк для визуального определения иерархии и вложенности. Хотя синтаксические структуры языков на основе тегов существенно не различаются, отступы могут существенно различаться из-за того, как интерпретируется язык разметки, или из-за данных, которые он описывает.

В MathML пробельные символы не отражают данные, значение или синтаксис выше того, что требуется синтаксисом XML . В HTML пробельные символы между тегами считаются текстом и анализируются как текстовые узлы в проанализированном результате. [2] Хотя отступы могут быть щедро применены к документу MathML , необходимо принять достаточные дополнительные меры предосторожности при красивой печати документа HTML, чтобы гарантировать, что дополнительные текстовые узлы не будут созданы или уничтожены в общей близости к содержимому или отражающим содержимое элементам тега. Эта разница в сложности нетривиальна с точки зрения автоматизированной операции красивой печати, где не требуются специальные правила или пограничные случаи, как в более простом примере MathML. Пример HTML может потребовать ряда прогрессивных взаимосвязанных алгоритмов для учета различных шаблонов элементов тега и содержимого, которые соответствуют единому стилю и являются единообразными в применении в различных случаях, о чем свидетельствует компонент приложения markup.ts [3], используемый для украшения HTML, XML и связанных технологий для инструмента Pretty Diff .

Форматирование программного кода

Программисты часто используют инструменты для форматирования исходного кода языка программирования определенным образом. Правильное форматирование кода облегчает его чтение и понимание. Разные программисты часто предпочитают разные стили форматирования, такие как использование отступов кода и пробелов или позиционирование фигурных скобок . Форматировщик кода или индентор кода преобразует исходный код из одного стиля форматирования в другой. Это относительно просто из-за однозначного синтаксиса языков программирования. Украшение кода включает в себя разбор исходного кода на составные структуры, такие как операторы присваивания, блоки if , циклы и т. д. (см. также поток управления ), и форматирование их способом, указанным пользователем в файле конфигурации.

Code beautifiers существуют как отдельные приложения и встроены в текстовые редакторы и интегрированные среды разработки . Например, различные языковые режимы Emacs могут правильно и привлекательно оформлять отступы блоков кода. [4]

HTML

Lisp-красивый-принтер

Ранним примером красивой печати была программа Билла Госпера "GRINDEF" ( то есть "grind function") ( около 1967 г.), которая использовала комбинаторный поиск с обрезкой для форматирования программ LISP . Ранние версии работали с исполняемой формой (структура списка) программы Lisp и не обращали внимания на специальные значения различных функций. Более поздние версии имели специальные соглашения о чтении для включения неисполняемых комментариев, а также для сохранения макросов чтения в неразвернутой форме. Они также допускали специальные соглашения о отступах для специальных функций, таких как if. [5] [6] Термин "grind" использовался в некоторых кругах Lisp как синоним красивой печати. ​​[7]

Правила стиля проекта

Во многих проектах с открытым исходным кодом установлены правила для размещения кода. Наиболее типичными являются форматирование GNU [8] и стиль BSD. [9] Наибольшее различие между ними заключается в расположении фигурных скобок: в стиле GNU открывающие и закрывающие фигурные скобки находятся на отдельных строках с одинаковым отступом. Стиль BSD помещает открывающую фигурную скобку в конец предыдущей строки, а за закрывающими фигурными скобками может следовать else . Размер отступа и расположение пробелов также различаются.

Пример форматирования и украшения кода

Следующий пример показывает некоторые типичные структуры C и то, как различные правила стилей отступов форматируют их. Без какого-либо форматирования это выглядит так:

int foo ( int k ) { if ( k < 1 || k > 2 ) { printf ( "вне диапазона \n " ); printf ( "эта функция требует значение 1 или 2 \n " );} else { printf ( "Переключение \n " ); switch ( k ) { case 1 : printf ( "1 \n " ); break ; case 2 : printf ( "2 \n " ); break ;}}}   

Программа отступа GNU выдает следующий вывод при запросе отступа в соответствии с правилами GNU :

int foo ( int k ) { if ( k < 1 || k > 2 ) { printf ( "вне диапазона \n " ); printf ( "эта функция требует значение 1 или 2 \n " ); } else { printf ( "Переключение \n " ); switch ( k ) { case 1 : printf ( "1 \n " ); break ; case 2 : printf ( "2 \n " ); break ; } } }                                   

При форматировании в соответствии с правилами BSD выводится следующий вывод:

int foo ( int k ) { if ( k < 1 || k > 2 ) { printf ( "вне диапазона \n " ); printf ( "эта функция требует значение 1 или 2 \n " ); } else { printf ( "Переключение \n " ); switch ( k ) { case 1 : printf ( "1 \n " ); break ; case 2 : printf ( "2 \n " ); break ; } } }                

Смотрите также

Связанные концепции

Коммунальные услуги

Ссылки

  1. ^ "PrettyPrint - ticalc.org". www.ticalc.org . Получено 2022-04-13 .
  2. ^ Барон, Л. Дэвид. «Пробелы в DOM». Mozilla Developer Network . Получено 27.08.2012 .
  3. ^ разметка.ts
  4. ^ Столлман, Ричард М. "Отступы для программ". Руководство по GNU Emacs . Free Software Foundation . Получено 20.10.2011 .
  5. Айра Голдштейн, «Красивая печать: преобразование списка в линейную структуру», Artificial Intelligence Memo 279, Массачусетский технологический институт, февраль 1973 г. полный текст
  6. Ричард К. Уотерс, «Использование нового общего принтера Lisp Pretty», ACM SIGPLAN Lisp Pointers 5 :2:27-34, апрель–июнь 1992 г. полный текст
  7. ^ Файл жаргона , sv grind
  8. ^ Стиль GNU
  9. ^ Стиль BSD

Внешние ссылки