Хобрук: Ваш путь к мастерству в программировании

Как писать микрограмматики на perl6?

Мне интересно писать микрограмматики. Здесь синтаксический анализатор понимает не всю грамматику языка, а только ее часть; вид "м4 на кислоте".

Идея состоит в том, что синтаксический анализатор считывает символы и записывает их для вывода до тех пор, пока он не «просыпается» при идентификации ключевых слов, выполняет некоторую обработку в соответствии с грамматикой, а затем снова засыпает.

У меня возникли проблемы с его созданием, и, похоже, там нет никаких примеров.

17.03.2017

Ответы:


1

Возможно, вам нужен метод .subparse. Он привязывается к началу данных и соответствует настолько, насколько это возможно. Вы можете использовать наречие :c, чтобы указать, с чего начать, а затем посмотреть на объект Match, чтобы увидеть, где это закончилось

 my $position = 0;

 my $match = Some::Grammar.subparse( $data, :c($position) );

 # update the position to the last thing your grammar consumed
 $position = $match.end if $match.so;

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

Кроме того, вы не представили конкретную проблему, которую пытаетесь решить.

18.03.2017
Новые материалы

Как уберечь себя от траты времени на проект по науке о данных
Использование принципа бритвы Оккама для быстрого продвижения вашего проекта В тысячах обзоров проектов, которые я сделал во время моей работы в качестве наставника по науке о данных, я..

В чем проблема с кодовыми обезьянами? :-)
В чем проблема с кодовыми обезьянами? :-)

Применение фильтров с помощью ag-grid в приложении React
Применение фильтров с помощью ag-grid в приложении React Чтобы применить фильтры в таблице ag-grid в приложении React, вы можете использовать метод setFilterModel для экземпляра сетки, чтобы..

Дорогая Анна Франк,
Освещение Я понимаю. Я понимаю, почему вы написали. Вы спрашиваете нас, Ты видишь, как я вырываю свой мир у врага? Ты видишь, как мои враги подталкивают меня ближе к любви? Вы..

Разработчики — Избегайте сложностей глупо
Сложность управляется, а не побеждается «Простота — великая добродетель, но для ее достижения требуется тяжелая работа и образование, чтобы оценить ее. И что еще хуже: сложность продается..

Как сделать HTML динамическим с помощью JavaScript
Код JavaScript выполняется внутри страниц сайта. Таким образом, страница вашего сайта содержит метки HTML, а также пояснения (скрипты), составленные с использованием диалекта сценариев, такого как..

Деревья классификации и регрессии
Это мой второй пост об алгоритмах машинного обучения. Мой первый пост посвящен искусственным нейронным сетям, вы можете найти его ниже. Нейронные сети — базовое..