Pegjs: Gefälschte Typescript-Unterstützung

Erstellt am 31. Jan. 2018  ·  8Kommentare  ·  Quelle: pegjs/pegjs

Problemtyp

  • [x] Funktionsanfrage

Wut

Also, ich stehe eigentlich ziemlich auf das Typoskript-Plugin von @pjmolina aus #514. Am Ende gibt es jedoch all zurück.

Ich hatte gehofft, dass du mir beim Betrügen helfen würdest. Ich möchte eigentlich nur die Signatur von parse/1 etwas anders schreiben, indem ich der Syntax von peg #$ etwas hinzufüge, das besagt: "Macht dies zum Rückgabetyp von parse/1 ," und auch durch Markieren des In-Arguments :string , wenn es einen Out-Typ gibt. Dann müssten Sie einfach den letzten Rückgabewert blind typisieren, et voila.

Für einen Typoskript- (oder Flowtype-)Benutzer hätte dies einen tiefgreifenden Einfluss auf die Prüfbarkeit, obwohl es sich um eine Fälschung handelt .

Wie viele Cappuccinos muss ich Ihnen schicken, um dies zu ermöglichen, und an welche Adresse würde ich sie schicken?

Hilfreichster Kommentar

Hallo! In diesem Zusammenhang haben wir im Plugin ts-pegjs eine optionale Ausgabetypisierung für Produktionsregeln implementiert. Ausgabe 11 , PR 16

Wir haben es mit einer Tabelle von Paaren "rule-name": "return-type" über die Option returnTypes gemacht.

Ich rufe Sie auf CC, nur für den Fall, dass Sie sich entschieden haben, optional Typinformationen zu Pegjs auf DSL-Ebene hinzuzufügen, um Produktionen direkt zu annoncieren.
Es könnte für die TypeScript-Ausgabe sehr nützlich sein, auch für Flow oder jede andere typisierte JS-Variante.

Alle 8 Kommentare

Alles, was ich eigentlich brauche, ist, dass die Signatur der Funktion wie geschrieben wird

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

(oder Wasauchimmer)

Davon können Sie sich inspirieren lassen. Zuvor ist es notwendig, Typen aller Codeblöcke zu kennzeichnen, dies kann mit Annotationen erfolgen. Nach diesen Vorarbeiten ist es möglich, Informationen zu Typen in den Generator einzugeben.

@Mingun - das ist interessant, aber auch sehr schwer zu verstehen

Ihre Anmerkungssache scheint hier ein nahezu idealer Fall zu sein - das würde die Anmerkung einzelner Parsing-Regeln mit Typen ermöglichen, was die Rückgabe von mehr als einem echten Typ ermöglicht

(Der seltsame Moment, als ich @Mingun verstanden habe, ist auch russisch.)

Tatsächlich wird TypeScript die Entwicklung von Grammatiken nicht einfacher machen, weil Sie Typen überall annotieren müssen und weil sein Typsystem irgendwie kaputt ist. Kürzlich habe ich ein kleines Experiment zum Erstellen eines PEG.ts durchgeführt, und der Typprüfer von TypeScript spuckte so schreckliche Fehlermeldungen aus, als ich ihn mit rekursiven Typen fütterte, dass ich ihn nicht einmal beenden konnte.

Ich würde empfehlen, eher in den Infernu- Support zu schauen.

@polkovnikov-ph - ja, diese Wahl liegt nicht in meinen Händen, und außerdem erschrecken mich Typoskript-Fehlermeldungen als Entwickler von C++-Vorlagen aus den 1990er Jahren nicht

Wie auch immer, was ich brauche, ist in der Lage zu sein, Parser zu einem Typoskript-System hinzuzufügen, also ist es für mich von Wert, Typoskript-Anmerkungen aus parse/1 herauszuholen

Im Moment mache ich es mit groben Meistertypen und Casting. Ich wünschte, ich könnte es besser machen

image

Hallo! In diesem Zusammenhang haben wir im Plugin ts-pegjs eine optionale Ausgabetypisierung für Produktionsregeln implementiert. Ausgabe 11 , PR 16

Wir haben es mit einer Tabelle von Paaren "rule-name": "return-type" über die Option returnTypes gemacht.

Ich rufe Sie auf CC, nur für den Fall, dass Sie sich entschieden haben, optional Typinformationen zu Pegjs auf DSL-Ebene hinzuzufügen, um Produktionen direkt zu annoncieren.
Es könnte für die TypeScript-Ausgabe sehr nützlich sein, auch für Flow oder jede andere typisierte JS-Variante.

Die Leute fragen immer noch danach in #597

Der neue Betreuer hat ein .d.ts erstellt und beherbergt, also ist er offensichtlich offen für Typoskript

Dies ist ein "wir haben Typoskript" am selben Tag ohne größere Änderungen, was in fünf Codezeilen plus der Ersatz-Fußzeile des es6-Moduls erledigt werden kann. Ich verstehe nicht, warum das nicht gemacht wird

Ich habe einen Patch für 0.11 bereit, aber 0.11 wird nicht zusammengeführt und 0.12 ist nicht verfügbar, um dagegen zu arbeiten

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen