perl

Perl TeX::Processor

В ин­тер­не­те опять кто-то не­прав. На CPAN ку­ча мо­ду­лей для пар­си­нга LaTeX-до­ку­мен­тов, и аб­со­лют­но все кри­вые. Авто­ры яв­но не в кур­се о лек­си­чес­ком ана­ли­зе, о том что без то­ке­ни­за­ции ис­клю­чи­тель­но на ре­гэкс­пах да­же ба­зо­вую грам­ма­ти­ку вы­де­лить не по­лу­чит­ся. В ре­зуль­та­те, де­сят­ки ки­ло­ба­йт ко­да, не про­хо­дя­ще­го да­же про­стей­шие тес­ты ви­да: \command[opts]{arg} Пос­мот­рел на это, вспла­кнул, за па­ру ча­сов ре­али­зо­вал пар­сер и принтер грам­ма­ти­ки перво­го уро­вня. Может при­го­дит­ся ко­му-ни­будь: https://github.com/johnlepikhin/p5-TeX-Process. В README ку­ча при­ме­ров, не ви­жу смыс­ла как-то от­дель­но ком­мен­ти­ро­вать.

Perl Syntax::NamedArgs

Решил вы­ло­жить в ви­де мо­ду­ля па­ру функ­ций в 20 строк, ко­то­рые дав­ным-дав­но тас­каю по всем сво­им про­ек­там и ко­то­рые силь­но упро­ща­ют на­пи­са­ние боль­ших про­ек­тов на Perl. Вот он: https://github.com/johnlepikhin/p5-Syntax-NamedArgs Функ­ции де­ла­ют про­стые ве­щи: Гаран­ти­ру­ют, что функ­цию по­зва­ли с хэш-ар­гу­мен­та­ми; Про­ве­ря­ют, что та­кие-то ар­гу­мен­ты пе­ре­да­ны; Позво­ля­ют за­дать зна­че­ние по умо­лча­нию; Валят чи­та­емую ошиб­ку, ес­ли где-то вглу­би сте­ка ока­за­лось, что ар­гу­мен­та не­хва­та­ет. В со­вокуп­нос­ти это по­зво­ля­ет пи­сать до­воль­но за­мыс­ло­ва­тые кон­ст­рук­ции с лег­кой ор­га­ни­за­ци­ей глу­бо­кой пе­ре­да­чи зна­че­ний.

Perl-библиотека расстановки переносов

Почти слу­чай­но на­пи­сал Perl-мо­дуль для рас­ста­нов­ки пе­ре­но­сов на ос­но­ве прос­той не­йро­се­ти с об­рат­ным рас­прост­ра­не­ни­ем. Обу­чить мож­но рас­став­лять пе­ре­но­сы в лю­бом язы­ке. При до­ста­точ­но боль­шом кор­пу­се вход­ных текс­тов на­вер­ня­ка мож­но на­учить ле­чить про­бле­мы ти­па е/ё, -ться/-тся1 и т.д. Взять мож­но на GitHub. В ком­пле­кте ми­ни­маль­ная POD-до­ку­мен­та­ция и при­мер для рус­ско­го язы­ка с уже обу­чен­ной сетью. Точ­ность с те­ку­щей сетью оце­ни­вать не бе­русь, но на глаз 90% — слиш­ком ма­ло вход­ных дан­ных. Обу­чал на кор­пу­се, по­лу­чен­ном с по­мощью алго­ри­тма Ляна-Кну­та2.