[Moscow.pm] Про подсветку синтаксиса

Иван Бессарабов ivan на bessarabov.ru
Пн Дек 16 11:04:44 PST 2013


Тут в соседнем треде ("вопрос юзерам Sublime Text") подняли очень интересную
тему подсветки синтаксиса перла.

Покажите, пожалуйста, скриншоты, как в вашем редакторе выглядит подсведка
синтаксиса вот в таком скрипте: https://gist.github.com/bessarabov/7991901

У меня в vim это выглядит вот так:
http://upload.bessarabov.ru/bessarabov/A57U8eZRPI7Cc9FQeWI58RBwavo.png

Vim ошибается с подсведкой во второй строчке этого кода:

    say with_prototype    / 10 ; # /  ; die "this dies!";
    say without_prototype / 10 ; # /  ; die "this dies!";

Этот код идентичен вот такому, но vim это не понимает:

    say with_prototype()   / 10 ; # /  ; die "this dies!";
    say without_prototype( / 10 ; # / ); die "this dies!";

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

Этот пример я увидел вот в этом посте на stackoverflow:
http://stackoverflow.com/questions/4625408/where-can-i-find-a-formal-grammar-for-the-perl-programming-language

Мне очень жаль что для языка Perl5 невозможно написать граматику. Была бы
грамматика перла и с его кодом было бы сильно удобнее работать. Можно было бы
и правильную подсведку сделать, и код приводить к стандартному виду (более
гибким и правильным инструментом чем ненавистный мне perltidy), и
автоматический рефакторинг делать.

И я чуть-чуть завидую языкам для которых есть грамматики:

 * Go: http://golang.org/ref/spec
 * Python: http://inst.eecs.berkeley.edu/~cs164/fa11/python-grammar.html
 * Java: http://cs.au.dk/~amoeller/dRegAut/JavaBNF.html
 * C: http://www.cs.man.ac.uk/~pjj/bnf/c_syntax.bnf
 * Perl6: https://github.com/jwodder/jbobaf/blob/master/perl6/Gerna.bnf.pm6


Подробная информация о списке рассылки Moscow-pm