Итак, мне очень нравится плагин машинописного текста @pjmolina из # 514. Однако в конце он возвращает all
.
Я надеялся, что ты поможешь мне обмануть. На самом деле я просто хочу написать подпись к parse/1
немного по-другому, добавив что-то в синтаксис peg
, который говорит: «Сделайте это возвращаемым типом parse/1
,» а также пометив входной аргумент :string
, если есть выходной тип. Затем вам просто нужно будет слепо привести последнее возвращаемое значение, и вуаля.
Для пользователя typescript (или flowtype) это сильно повлияет на возможность проверки, даже если это подделка .
Сколько капучино мне нужно отправить вам по почте, чтобы это произошло, и на какой адрес я должен их отправить
Все, что мне действительно нужно, это чтобы сигнатура функции была написана как
function parse(input: string): MyType { ... }
(или что-то еще)
@Mingun - это интересно, но очень сложно понять
Ваша аннотация кажется здесь почти идеальным случаем - это позволило бы аннотировать отдельные правила синтаксического анализа с типами, позволяя возвращать более одного реального типа
(Странный момент, когда я понял, что @Mingun тоже русский.)
На самом деле TypeScript не упростит разработку грамматик, потому что вам нужно везде аннотировать типы, и потому что его система типов немного нарушена. Недавно я провел небольшой эксперимент по созданию файла PEG.ts, и средство проверки типов TypeScript изрыгало такие ужасные сообщения об ошибках, когда я загружал его рекурсивными типами, что я даже не смог его закончить.
Я бы рекомендовал обратить внимание на поддержку Infernu .
@polkovnikov-ph - да, этот выбор не в моих руках, и, кроме того, меня, как разработчика шаблонов C++ 1990-х годов, сообщения об ошибках машинописного текста не пугают
в любом случае, что мне нужно, так это иметь возможность добавлять синтаксические анализаторы в систему машинописного текста, поэтому для меня важно получать аннотации машинописного текста из parse/1
прямо сейчас я делаю это с грубыми мастер-типами и кастингом. я хотел бы сделать лучше
Привет! В связи с этим в плагине ts-pegjs
мы реализовали необязательную типизацию вывода для производственных правил. Выпуск 11 , ПР 16
Мы сделали это с помощью таблицы пар "rule-name": "return-type"
через опцию returnTypes
.
Я свяжусь с вами на тот случай, если вы решите добавить информацию о типах pegjs на уровне DSL напрямую в анонимные продукты.
Это может быть весьма полезно для вывода TypeScript, а также для Flow или любого другого типизированного варианта JS.
Люди все еще просят об этом в # 597
Новый сопровождающий создал и разместил .d.ts
, поэтому он, очевидно, открыт для машинописи.
Это тот же день «у нас есть машинописный текст» без серьезных изменений, который можно сделать в пяти строках кода плюс замена нижнего колонтитула модуля es6. Я не понимаю, почему это не делается
У меня есть готовый патч для 0.11
, но 0.11
не объединяется, а 0.12
недоступен для работы
Самый полезный комментарий
Привет! В связи с этим в плагине
ts-pegjs
мы реализовали необязательную типизацию вывода для производственных правил. Выпуск 11 , ПР 16Мы сделали это с помощью таблицы пар
"rule-name": "return-type"
через опциюreturnTypes
.Я свяжусь с вами на тот случай, если вы решите добавить информацию о типах pegjs на уровне DSL напрямую в анонимные продукты.
Это может быть весьма полезно для вывода TypeScript, а также для Flow или любого другого типизированного варианта JS.