Руководство по Google Code Prettify

Я надеюсь поднять проблему 295 из проекта Google Code-Prettify; т.е. добавить поддержку для lang-powershell,

Хотя я нашел несколько примеров кода, я не могу найти какую-либо документацию о том, как этот код должен быть написан, или какие-либо руководящие принципы представления (например, должна ли подсветка синтаксиса работать для недействительного кода или она должна пытаться выделить такие ошибки)?

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

Вопрос

Кто-нибудь может указать мне документацию для отправки нового сценария поддержки языков в Google Code Prettify?

1 ответ

Решение

Должна ли подсветка синтаксиса работать для некорректного кода или попытаться выделить такие ошибки

Prettify часто применяется к фрагментам кода, поэтому вы можете предположить, что фрагмент начинается на границе токена, но не следует предполагать, что он начинается с производства верхнего уровня.

На таких сайтах, как SO, prettify применяется к входным данным, написанным новичками и сопровождающими, которые немного знакомы с другими языками и пытаются внести точечные изменения в существующий фрагмент кода.

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

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

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


То, как я думаю об этом, заключается в том, что приукрашивание устраняет разрыв между двумя понятиями языка:

  1. В теории парсеров "язык" - это набор строк. Язык PowerShell - это набор строк, определенных грамматикой в ​​документе спецификации.
  2. В обычном дескриптивистском использовании "язык" связывает то, что создается говорящим или автором в связанном лингвистическом сообществе, с тем, что у них на уме, когда они производят строку. Когда программист садится за сценарий PowerShell, он создает строку в языке, даже если он плохо выполняет свою работу или его интеллектуальная модель PowerShell значительно отличается от спецификации.

В первом смысле, нет такой вещи, как неправильно сформированная программа PowerShell, просто строка, которая отсутствует в языке и, следовательно, не имеет семантики согласно спецификации. Во втором случае искаженная программа PowerShell - это программа PowerShell.

Пожалуйста, помните второе определение и помните, что prettify не должен работать на выходе генераторов кода.

Другие вопросы по тегам