В качестве только комментариев, где они были опубликованы, я обобщу все ответы, которые я получил из комментариев здесь, моего дальнейшего исследования и чата # perl6 IRC.
Относительно поддержки связывания для библиотеки X (в тестовом случае это был GDAL), стратегия в сообществе perl6 заключается в том, чтобы либо использовать:
- Использовать модули Inline :: Foo, направленные на запуск и доступ к экосистеме языка Foo (путемпример: Inline :: Perl5, Inline :: Python и т. д.) Список модулей Inline :: X из каталога модулей Perl6 ;
- Используйте или напишите привязку, используя NativeCall для привязки к динамическим библиотекам, которые следуют C Calling Covention;
- Используйте или напишите собственный модуль perl6.
Что касается анализа двоичных данных, я разделю тему на две части:
- Вообще говоря;
- Использование грамматик;
1.Вообще говоря,
Использование модуля P5pack или использование Inline :: Perl5 для использования unpack / pack на самом деле(с perl6.c) лучше всего разбирать структуру двоичных данных (первый кажется предпочтительным, так как это собственный модуль).Перейдите к первому комментарию от @raiph к SO anwser, в котором показан базовый вариант использования.
2.Использование грамматик
С perl6.c грамматики могут только анализировать текст.Тем не менее, вопрос о разборе двоичных данных кажется умеренно горячим (основываясь на отзывах, замеченных по каналу # perl6 irc), и некоторые из них, которые можно документировать, но не реализуют, похоже, прокладывают путь с надеждой увидеть, что это произойдет в будущем.(ближний или дальний?).
В последней части the @ raiph's anwser перечислено множество ресурсов, направленных на это направление.Более того, в Synopses 05 - Regexes and Rules: строка 432 a: вызывается модификатор байтов.Нам нужно будет увидеть, в какой момент эти модификаторы будут реализованы и чего не хватает, чтобы привести их к языку.На канале # perl6 irc MasterDuke сказал: «Кроме того, я думаю, что двоичные операции чтения / записи nqp, которые недавно провела jnthn и девять реализовали, были предварительным условием для чего-либо дальнейшего» * 1048 *.Я все еще должен исследовать, о чем именно он говорит, но, похоже, он идет в правильном направлении.
Один из главных моментов, IMO, связан с определением графемы, основанным на UTF-8.Если мы сможем переписать определение графемы на пользовательское определение для специализированной грамматики, как мы можем сейчас перезаписать модификатор: sigspace, чтобы повлиять на разделители для rules
и tokens
, мы получим новый способ работы сструктура данных и грамматика.На данный момент графема определяется на уровне строки, а не на уровне грамматики или мета.См. Комментарии @timotimo, ссылающиеся на документ UTF-8, описывающий правила границ кластера графем.
Способ изменения правил был связан с помощью @jjmererlo: Синтаксический анализ формата GFX3 с грамматиками perl6 .