Pegjs: Поддельная поддержка машинописного текста

Созданный на 31 янв. 2018  ·  8Комментарии  ·  Источник: pegjs/pegjs

Тип проблемы

  • [x] Запрос функции

Вут

Итак, мне очень нравится плагин машинописного текста @pjmolina из # 514. Однако в конце он возвращает all .

Я надеялся, что ты поможешь мне обмануть. На самом деле я просто хочу написать подпись к parse/1 немного по-другому, добавив что-то в синтаксис peg , который говорит: «Сделайте это возвращаемым типом parse/1 ,» а также пометив входной аргумент :string , если есть выходной тип. Затем вам просто нужно будет слепо привести последнее возвращаемое значение, и вуаля.

Для пользователя typescript (или flowtype) это сильно повлияет на возможность проверки, даже если это подделка .

Сколько капучино мне нужно отправить вам по почте, чтобы это произошло, и на какой адрес я должен их отправить

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

Привет! В связи с этим в плагине ts-pegjs мы реализовали необязательную типизацию вывода для производственных правил. Выпуск 11 , ПР 16

Мы сделали это с помощью таблицы пар "rule-name": "return-type" через опцию returnTypes .

Я свяжусь с вами на тот случай, если вы решите добавить информацию о типах pegjs на уровне DSL напрямую в анонимные продукты.
Это может быть весьма полезно для вывода TypeScript, а также для Flow или любого другого типизированного варианта JS.

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

Все, что мне действительно нужно, это чтобы сигнатура функции была написана как

function parse(input: string): MyType { ... }

(или что-то еще)

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

@Mingun - это интересно, но очень сложно понять

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

(Странный момент, когда я понял, что @Mingun тоже русский.)

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

Я бы рекомендовал обратить внимание на поддержку Infernu .

@polkovnikov-ph - да, этот выбор не в моих руках, и, кроме того, меня, как разработчика шаблонов C++ 1990-х годов, сообщения об ошибках машинописного текста не пугают

в любом случае, что мне нужно, так это иметь возможность добавлять синтаксические анализаторы в систему машинописного текста, поэтому для меня важно получать аннотации машинописного текста из parse/1

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

image

Привет! В связи с этим в плагине ts-pegjs мы реализовали необязательную типизацию вывода для производственных правил. Выпуск 11 , ПР 16

Мы сделали это с помощью таблицы пар "rule-name": "return-type" через опцию returnTypes .

Я свяжусь с вами на тот случай, если вы решите добавить информацию о типах pegjs на уровне DSL напрямую в анонимные продукты.
Это может быть весьма полезно для вывода TypeScript, а также для Flow или любого другого типизированного варианта JS.

Люди все еще просят об этом в # 597

Новый сопровождающий создал и разместил .d.ts , поэтому он, очевидно, открыт для машинописи.

Это тот же день «у нас есть машинописный текст» без серьезных изменений, который можно сделать в пяти строках кода плюс замена нижнего колонтитула модуля es6. Я не понимаю, почему это не делается

У меня есть готовый патч для 0.11 , но 0.11 не объединяется, а 0.12 недоступен для работы

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

Смежные вопросы

futagoza picture futagoza  ·  13Комментарии

StoneCypher picture StoneCypher  ·  6Комментарии

richb-hanover picture richb-hanover  ·  7Комментарии

audinue picture audinue  ·  13Комментарии

marek-baranowski picture marek-baranowski  ·  6Комментарии