[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