Pegjs: Ищу нового сопровождающего

Созданный на 7 мая 2017  ·  20Комментарии  ·  Источник: pegjs/pegjs

Когда я начал PEG.js около 7 лет назад, я никогда не думал, что это будет настолько успешный проект и что мое участие в нем продлится так долго. Большую часть времени я был счастлив работать над этим, но в последний год или около того моя мотивация начала угасать. Я обнаружил, что мне нужно убедить себя сесть и поработать над проблемами или написать код. Постепенно я понял, что PEG.js больше не то, на чем я хочу тратить свое время. В результате я ищу нового сопровождающего PEG.js.

Кого я ищу?

Я ищу кого-то, кто имеет глубокое понимание того, как работают парсеры и генераторы парсеров, сильная мотивация, опыт разработки с открытым исходным кодом и четкое представление о том, куда вести разработку PEG.js (которая может соответствовать текущей дорожной карте, а может и не соответствовать). Ни одно из этих требований не является строгим, но маловероятно, что я передам PEG.js кому-то, кому в этих областях значительно не хватает.

Заинтересованы?

Если вы заинтересованы в приобретении PEG.js, добавьте комментарий к этой проблеме и включите все, что, по вашему мнению, убедит меня в том, что вы подходящий человек :-) Я просмотрю комментарии и объявлю нового сопровождающего в выходные дни мая. 13–14. Если к тому времени не появится подходящего сопровождающего, PEG.js перестанет обслуживаться.

Переданные активы

Передача права обслуживания включает передачу следующих активов:

Новому сопровождающему нужно будет позаботиться об хостинге и запуске веб-сайта PEG.js , который в настоящее время работает на моем личном VPS. Я ожидаю, что новый сопровождающий настроит хостинг под своим контролем и перенастроит записи DNS для домена pegjs.org, чтобы они указывали на него вскоре после передачи обслуживания. Новому сопровождающему не будет предоставлен доступ к моему личному VPS, и я не буду продолжать размещать там веб-сайт PEG.js на неопределенный срок.


Если у вас есть какие-либо вопросы или примечания к чему-либо, что я написал выше, не стесняйтесь добавлять комментарии к этой проблеме.

Самый полезный комментарий

@dmajda большое спасибо за PEG.js. Это очень полезно. Надеюсь, этот проект будет жить дальше.

Все 20 Комментарий

Я просто хочу сказать, что начал использовать PEG.js только в последние несколько месяцев, и мне это нравится. Грамматика легко усваивается, а количество понятий довольно невелико. Документация маловата, но все необходимое я нашел. Кроме того, я бы не начал работать со своим диалектом JavaScript без примера javascript.pegjs. Это значительно снизило рабочую нагрузку.

Каковы его преимущества в текущем состоянии? Для меня это очень легко прототипировать. Недостатки в том, что это может быть медленным для больших объемов данных, но сейчас меня это не волнует. Какие у него конкуренты? Вы хотите, чтобы он продолжал расти, или вы хотите, чтобы кто-то создал версию 2.0? Если он в настоящее время стабилен, почему бы просто не оставить его как есть, возможно, с немного дополнительной документацией.

Что касается дорожной карты, что дает вам модернизация кода? Быстрее? легче поддерживать? Или просто «в актуальном состоянии»? Я могу понять, как использовать Gulp вместо Make, чтобы упростить обслуживание. Очистка звучит дорого, почти 1,5, называя текущую версию 1.0. Я считаю, что «значительное улучшение производительности» - это слишком большая цель для 1.0. Я чувствую, что ток 1.0. Он очень стабилен, хорошие сообщения об ошибках, все функции работают и т. Д. 1.0 программного обеспечения не обязательно должно быть «единственным». Это больше 2.0, 3.0 и т. Д.

Я не знаю, могу ли я помочь с обслуживанием, но я бы хотел, чтобы сайт, группа Google и т. Д. Работали.

@mikeaustin Спасибо за ваш комментарий. Позвольте мне быстро ответить на ваши вопросы (которые, вероятно, будут полезны и тем, кто занимается этим вопросом).

Каковы его преимущества в текущем состоянии? Для меня это очень легко прототипировать.

Основным вариантом использования было прототипирование, наряду с анализом небольших языков / DSL, которые слишком сложны для регулярных выражений и различных интерактивных инструментов. Первоначально я создал PEG.js, потому что PEG предлагал хороший синтаксис грамматики, и не было генератора синтаксического анализатора JavaScript, который использовал бы его, а также мог бы создавать хорошие сообщения об ошибках.

Недостатки в том, что это может быть медленным для больших объемов данных, но сейчас меня это не волнует.

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

Какие у него конкуренты?

Jison , Nearley

Вы хотите, чтобы он продолжал расти, или вы хотите, чтобы кто-то создал версию 2.0? Если он в настоящее время стабилен, почему бы просто не оставить его как есть, возможно, с немного дополнительной документацией.

Это дело нового сопровождающего. Но я бы не хотел, чтобы PEG.js навсегда оставался неизменным с текущим набором функций. У него больше возможностей, чем это.

Есть много полезных функций, которые можно относительно легко добавить без каких-либо изменений в ядре (# 30, # 38, # 107, # 45 и # 285). Затем есть несколько давних проблем / вариантов использования, которые потребуют переосмысления основных концепций (# 11, # 217) или изменения API (# 327, # 430). Думаю, на все это стоит посмотреть.

Что касается дорожной карты, что дает вам модернизация кода? Быстрее? легче поддерживать? Или просто «в актуальном состоянии»?

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

Я чувствую, что ток 1.0. Он очень стабилен, хорошие сообщения об ошибках, все функции работают и т. Д. 1.0 программного обеспечения не обязательно должно быть «единственным». Это больше 2.0, 3.0 и т. Д.

Может быть :-) Мое определение 1.0 всегда было «когда я доволен этим», что почему-то так и не пришло - отчасти потому, что вместо того, чтобы работать над тем, что меня больше всего беспокоит, я в конечном итоге работал над тем, что больше всего беспокоило пользователей, и над вещами, которые были необходимо для использования PEG.js в реальном мире. Моя перфекционистская натура тоже не помогала.

Новый сопровождающий должен определить 1.0.

https://github.com/futagoza/epeg.js 😊 (Следует отметить, что, хотя большинство перечисленных функций в настоящее время не реализованы, но в какой-то момент были в каком-то форке или несвязанном проекте, большая часть которые никогда не размещались на GitHub)

У меня все нормально, но единственная проблема - это ведение тестов 😞

@dmajda большое спасибо за PEG.js. Это очень полезно. Надеюсь, этот проект будет жить дальше.

@futagoza Просто чтобы уточнить, ваш комментарий означает, что вы были бы заинтересованы в поддержке PEG.js? Или вы думаете, что будущее лежит в другом месте? :-)

Меня все устраивает, но единственная проблема - это ведение тестов.

Какая именно проблема?

@dmajda Да, мне было бы интересно сохранить его 😄

Меня все устраивает, но единственная проблема - это ведение тестов.

Какая именно проблема?

Я имею в виду, что я обычно кодирую и отлаживаю по мере продвижения, но когда я пытаюсь сделать тесты, как вы здесь, у меня начинаются проблемы с их обслуживанием, поэтому обычно я либо делаю тесты, которые позволяют мне видеть конечный результат, либо просто оставляю тестирование спецификаций и тестов другим, хотя, оглядываясь назад, это увеличивает время разработки для некоторых проектов 😆

@dmajda В настоящее время я использую PEG.js как часть моего проекта MSc. Это не только полезно, но и интересно и круто работать. Я очень надеюсь, что вы сочтете кого-то достойным наследником PEG.js.

@futagoza В описании проблемы я написал:

Я ищу кого-то, кто имеет глубокое понимание того, как работают парсеры и генераторы парсеров, сильная мотивация, опыт разработки с открытым исходным кодом и четкое представление о том, куда вести разработку PEG.js (которая может соответствовать текущей дорожной карте, а может и не соответствовать).

В своем комментарии вы предоставили только ссылку на ePEG.js, чего мне недостаточно, чтобы увидеть, подходите ли вы описанию выше (за исключением того, что список TODO ePEG.js указывает на то, что вы, вероятно, знаете, где возглавить разработку PEG.js).

Я подумал, что вы, возможно, захотите, чтобы ваша работа и присутствие в Интернете говорили сами за себя, поэтому я просмотрел ваш веб-сайт и щелкнул ссылки в Twitter и LinkedIn, но они оба были мертвы - что не дает лучшего впечатления, как вы, вероятно, можете представить. После этого я сдался. Что касается ePEG.js, на данном этапе его трудно рассматривать как нечто большее, чем список желаний.

Итак, позвольте мне задать несколько конкретных вопросов:

  • Какое у тебя прошлое? В частности, каков ваш уровень знаний о парсерах и генераторах парсеров? Где ты получил эти знания?

  • Что вас мотивирует работать над PEG.js? В частности, используете ли вы PEG.js (или ePEG.js) в личных или рабочих проектах? Будет ли поддержка PEG.js частью вашей повседневной работы или вы будете заниматься этим в свободное время?

  • Каков ваш опыт работы с проектами с открытым исходным кодом? В частности, поддерживали ли вы или поддерживаете ли вы какой-либо проект с открытым исходным кодом, сопоставимый с PEG.js (в основном, по количеству пользователей)?

  • Каких, по вашему мнению, пяти основных вещей, которые PEG.js сейчас упускает или делает неправильно? Кроме того, не могли бы вы описать, где бы вы хотели реализовать проект? Где бы вы хотели его увидеть через год?

Спасибо, что ответили на эти вопросы. Они помогут мне решить, станете ли вы в будущем подходящим разработчиком PEG.js.

поэтому я просмотрел ваш сайт и щелкнул ссылки Twitter и LinkedIn, но они оба были мертвы.

Этот сайт является копией / вставкой моего старого веб-сайта, который я сделал в 2010 году, когда я использовал свой старый псевдоним Vitron Prince, поэтому ссылки в основном больше не действительны или ведут на сайты / профили, которые я больше не поддерживаю, в то время как сайт так и не был закончен должным образом. Единственное присутствие в сети, которое у меня действительно есть в настоящее время, - это GitHub и PlayStation 😆, в основном из-за того, что я работаю полный рабочий день.


Какое у тебя прошлое? В частности, каков ваш уровень знаний о парсерах и генераторах парсеров? Где ты получил эти знания?

Подводя итог, я самостоятельно изучал в течение последних 5 лет, изучая токенизацию строк и буферов, различные способы быстрой, но точной генерации AST, выполняя некоторую мемоизацию и в основном изучая различные методы для оптимальной трансляции других компьютерных языков на JavaScript и C ++, идентифицирующие проходы, которые можно объединить в один проход для ускорения компиляции при использовании разных посетителей AST для разных проходов для лучшей производительности.

Что касается генераторов синтаксического анализатора, все, что я знаю, было изучено путем изучения генератора синтаксического анализатора для PEG.js, а также со знанием того, что сравнение чисел происходит быстрее, чем сравнение строк, поэтому я предпочел String#charCodeAt String#charAt если скорость не имеет значения. У меня все еще есть проблемы с пониманием частей, связанных с генерацией парсера с использованием options.optimize = "size" , но из-за того, что я сосредоточился на speed with accuracy , я так и не получил мотивации изучать эту часть генерации парсера.

Также на заметку: хотя я довольно много узнал, мне трудно запоминать терминологию 😊


Что вас мотивирует работать над PEG.js? В частности, используете ли вы PEG.js (или ePEG.js) в личных или рабочих проектах? Будет ли поддержка PEG.js частью вашей повседневной работы или вы будете заниматься этим в свободное время?

Моей мотивацией для работы над PEG.js является разработка CXLang , а также создание пользовательского парсера для различных текстовых файлов ресурсов, которые я буду использовать в своих играх, поэтому я бы сказал, что использую его как для личных, так и для рабочих проектов, поэтому поддержание PEG.js, как и ePEG.js, в основном в мое свободное время.

Сейчас я в основном сосредоточен на разработке (в порядке того, что должно быть функциональным):

  • PEG.js или https://github.com/futagoza/epeg.js
  • https://github.com/cx-lang/cx-lang
  • Roxby, игровой движок C ++ и SDK на основе Node.js для создания бесшовных, но настраиваемых трехмерных миров.
  • Xross M, кроссплатформенная и независимая от игр система модов
  • Xross C, приложение-компаньон, не зависящее от игр
  • Клон Minecraft с упором на кроссплатформенные многопользовательские и многоплатформенные сохранения.
  • MMORPG, действие которой разворачивается в одном огромном интерактивном мире, включающем карманные миры.
  • Серия однопользовательских игр, основанных на тех же карманных мирах, что и в моей MMORPG.

Следует отметить, что я использую PEG.js в CXLang, Roxby и Xross, что в настоящее время делает PEG.js очень важной частью моей разработки игр, поскольку он позволяет мне создавать различные ресурсы в виде обычного текста, а затем использовать PEG.js и пользовательские компиляторы, преобразуйте их в собственный код, используемый любыми играми, другими программами / инструментами или кодом библиотеки.


Каков ваш опыт работы с проектами с открытым исходным кодом? В частности, поддерживали ли вы или поддерживаете ли вы какой-либо проект с открытым исходным кодом, сопоставимый с PEG.js (в основном, по количеству пользователей)?

Нет, поскольку я работаю опекуном с 2013 года, я проводил свободное время либо над видеоиграми, корейскими драмами, либо работая над различными проектами C ++ / Node.js (в основном упомянутыми выше), некоторые из которых я размещаю на GitHub, если я хочу поделиться кодом, другим кодом, который я храню на своем ноутбуке, поскольку они содержат код для личных проектов, которые я разрабатываю для создания коммерческих продуктов в будущем.

Хотя CXLang уже имеет открытый исходный код (отчасти, поскольку различные его части еще не попали в GitHub из-за продолжающейся разработки с небольшими тестами здесь и там), я планирую открывать исходный код Roxby и Xross только тогда, когда я разработаю рабочие прототипы для моя игра (и).


Каких, по вашему мнению, пяти основных вещей, которые PEG.js сейчас упускает или делает неправильно? Кроме того, не могли бы вы описать, где бы вы хотели реализовать проект? Где бы вы хотели его увидеть через год?

  • Причина не делать ePEG.js или альтернативы 😛
  • Текущий генератор байт-кода полезен только с текущим генератором JavaScript.

    • Он должен быть не частью передач компилятора, а дополнительным помощником для генераторов.

    • Должен создавать байт-код и AST, чтобы помочь сгенерировать парсеры на любом языке (зависит от плагина)

    • На основе опций сгенерируйте необязательный байт-код, чтобы направлять генераторы парсеров.

  • Действия и строковые литералы в синтаксисе грамматики PEG.js ограничивают генераторы парсеров и типы источников:

    • Атрибут ( <strong i="27">@returns</strong> ... или [returns = ...] ), который устанавливает тип возвращаемого значения для действий, используемых правилами.

    • Синтаксис для выбора и извлечения последовательности = меньше действий и меньше зависимости от конкретного языка

    • Поддержка буфера с помощью числовых литералов для разработки парсеров для файлов, отличных от исходного текстового кода.

  • Синтаксис, позволяющий ускорить разработку парсеров:

    • Шаблоны для написания меньше грамматики PEG.js

    • Атрибуты (предварительно определенные и настраиваемые) для простого управления выводом внутренних проходов или плагинов

    • Импорт правил из других грамматик, позволяющий разработчику легко отслеживать правила по имени файла

  • Текущая система плагинов затрудняет изменение API и оптимизацию PEG.js для использования в редакторах.
  • Генератор синтаксического анализатора слишком сложен и несовместим с плагинами. Его следует разбить на разные файлы.

В настоящее время первое, что вы читаете о PEG.js (на веб-сайте или в репозитории GitHub), это:

PEG.js - это простой генератор парсеров для JavaScript, который производит быстрые парсеры с отличным отчетом об ошибках. Вы можете использовать его для обработки сложных данных или компьютерных языков и легко создавать преобразователи, интерпретаторы, компиляторы и другие инструменты.

Я считаю, что устранение вышеуказанных причин не только поддержит то, что обещает этот параграф, но также предоставит разработчику больше свободы при разработке синтаксических анализаторов.

Честно говоря, учитывая мой текущий график, я не вижу, где он будет через год, но моя дорожная карта для PEG.js будет примерно такой:

  • __PEG.js v1__ - Содержит большую часть того, что описывает ваша веха в версии 0.11, но с поддержкой нескольких файлов
  • __PEG.js v1.x__ - Поддерживаемая версия (текущий LTS)
  • __PEG.js v2.x__ - Реализация большинства вышеперечисленных функций с базой кода, написанной на ECMAScript 2015.
  • __PEG.js v3.x__ - выпуск LTS
  • __PEG.js v4.x__ - кодовая база ECMAScript 2017, поддержка буферов, новый интерфейс плагина
  • __PEG.js v5.x__ - выпуск LTS
  • __PEG.js v6.x__ - кодовая база ECMAScript 20xx, сложные структуры данных , новый генератор парсеров JavaScript
  • __PEG.js v7.x__ - выпуск LTS
  • __PEG.js v8.x__ - кодовая база ECMAScript 20xx, дополнительные помощники и дополнительные проходы, поддержка, ориентированная на редактор
  • __PEG.js v9.x__ - Окончательный выпуск LTS, ECMAScript 20xx + кодовая база

Причина этого плана состоит в том, чтобы упростить разделение моих задач и проблем с пользователями, а также дать мне возможность узнать больше о генераторе парсеров, а также спланировать лучший интерфейс плагина, подготовив себя к __PEG.js v4.x__ и __PEG .js v6.x__

Также обратите внимание на @dmajda : если я возьму на себя функции сопровождающего, я в конечном итоге также буду искать дополнительных сопровождающих, участников и модераторов, которые помогут мне управлять различными аспектами, чтобы я мог сосредоточиться на разработке проекта, поскольку это моя основная сосредоточиться, оставив модераторам такие аспекты, как учетная запись Twitter и группа Google , получить помощь от участников для организации и поддержки тестов и тестов , в то время как сопровождающие могут помочь мне управлять выпусками LTS.

Я использую привязку для написания парсера уценки, спасибо 😀

Я фронтенд-разработчик и могу улучшить веб-сайт. Можете ли вы пригласить меня присоединиться к этой организации? Спасибо!

@futagoza Во-первых, позвольте мне извиниться за мой медленный ответ - мне было трудно найти непрерывный период времени, чтобы прочитать то, что вы написали, подумать об этом и составить ответ в течение прошлой недели.

Из того, что вы написали, я вижу, что вы хорошо мотивированы и ваша квалификация высока. Ваши представления о PEG.js также хорошо согласуются с тем, что я считаю самыми большими проблемами PEG.js с точки зрения пользователей. Мне особенно нравится, что вы хотели бы привлечь больше участников - это одна из областей, где, как мне кажется, я потерпел неудачу как сопровождающий.

Одна вещь, о которой я мало беспокоюсь, - это то, что вы хотели бы, чтобы было представлено много функций, которые могут привести к потере функций. Многие пользователи PEG.js ценят его простоту.

В любом случае, учитывая все вышесказанное и учитывая, что никто другой не заинтересован в приобретении PEG.js, я не вижу причин, почему бы не передать вам обслуживание PEG.js.

Я объявляю вас новым сопровождающим PEG.js.

Поздравляю!

Я объявлю об изменении в Твиттере и в Группе Google через минуту. Затем я отправлю вам электронное письмо с подробностями о передаче активов проекта. Как только передача будет завершена, я полностью откажусь от проекта.

Я надеюсь, что вы хорошо позаботитесь о PEG.js и его будущее в ваших руках будет светлым :-)

Я фронтенд-разработчик и могу улучшить веб-сайт. Можете ли вы пригласить меня присоединиться к этой организации? Спасибо!

@ericjjj Спасибо за предложение, сейчас дело за @futagoza .

@futagoza 😂 Поздравляю, я фронтенд-разработчик и могу улучшить сайт. Можете ли вы пригласить меня присоединиться к этой организации? Спасибо!

@dmajda Спасибо 😄, и я постараюсь.

Я также беспокоился о расползании функций, поэтому я добавил график LTS в дорожную карту выше, но, как я уже упоминал выше, это еще не высечено в камне.

@ericjjj Спасибо за предложение m8 👍

Я собираюсь рассказать о том, что нужно сделать больше всего, но этот веб-сайт уже есть в моем списке вещей, которые нужно обновить.

После завершения процесса передачи и внесения небольших обновлений на веб-сайт, чтобы отразить смену сопровождающего, я планирую открыть новую проблему в репозитории веб-сайта , где я рассмотрю, что я планирую изменить, добавить или удалить.

Когда я создаю задачу, я обязательно упомяну вас, чтобы вы знали, когда нужно вмешаться, показать мне свою идею и поделиться своими мыслями. После того, как я решу, куда пойти с сайтом, я приглашаю вас, если вы все еще готовы мне помочь 😆

@futagoza, хорошо, спасибо

Я бы внес свой вклад, если бы добавил в организацию

Я мог бы собрать что-нибудь для более крупного пошагового руководства. Очень простой язык, такой как JavaScript, урезанный до ядра, помог бы мне научиться использовать PEG.js. Также я должен был найти где-нибудь еще, зная, как / лучший способ пересечь AST.

Примеры идут от крошечного калькулятора до полноценного парсера JavaScript. Я думаю, было бы неплохо иметь что-то среднее и учебное пособие по этому поводу.

Примеры написанных мной статей:
https://structura.quora.com/Extension-Methods-in-JavaScript

Итак, @futagoza - новый сопровождающий PEG.js.
Но почему тогда вопрос остается открытым?

Кстати, спасибо за такой отличный проект, ребята!
Одной из первых моих программ был синтаксический анализатор языка Pascal, написанный на C ++ - его было так сложно заставить работать: D
JavaScript + PEG.js значительно упрощает такую ​​задачу

И в настоящее время я использую этот проект для создания довольно сложного парсера для языка, подобного bash (qmake pro-file), и уже столкнулся с недостатком функциональности. Например, отсутствие возможности разбить один большой файл грамматики на несколько маленьких.
Что я могу сделать, чтобы помочь с реализацией таких вещей?

Но почему тогда вопрос остается открытым?

Просто забыл закрыть. Сделаем это сейчас.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги