Pegjs: Soporte de mecanografiado falso

Creado en 31 ene. 2018  ·  8Comentarios  ·  Fuente: pegjs/pegjs

Tipo de problema

  • [x] Solicitud de función

Vaya

Entonces, en realidad estoy bastante interesado en el complemento de mecanografiado de @pjmolina del n. ° 514. Sin embargo, al final, devuelve all .

Esperaba que me ayudaras a hacer trampa. De hecho, solo quiero escribir la firma en parse/1 forma ligeramente diferente, agregando algún tipo de cosa a la sintaxis peg que dice "hacer de este el tipo de retorno de parse/1 ", y también marcando el argumento de entrada :string si hay un tipo de salida. Entonces, solo tendría que encasillar ciegamente el último valor de retorno, et voila.

Para un usuario de mecanografiado (o tipo de flujo), esto tendría un profundo impacto en la verificación, aunque sea falso .

¿Cuántos capuchinos necesito enviarte por correo para que esto suceda y a qué dirección los enviaría?

Comentario más útil

¡Hola! En relación con esto, en el complemento ts-pegjs hemos implementado la escritura de salida opcional para las reglas de producción. Número 11 , PR 16

Lo hicimos usando una tabla de pares "rule-name": "return-type" a través de la opción returnTypes .

Soy cc usted, en caso de que haya decidido agregar opcionalmente información de tipo en pegjs en el nivel de DSL para anonar producciones directamente.
Podría ser bastante útil para la salida de TypeScript, también para Flow o cualquier otra variante de JS escrita.

Todos 8 comentarios

Todo lo que realmente necesito es que la firma de la función se escriba como

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

(o lo que sea)

Puedes inspirarte en esto . De antemano es necesario etiquetar tipos de todos los bloques de código, se puede hacer con anotaciones . Después de este trabajo preparatorio, es posible ingresar información sobre tipos en el generador.

@Mingun : esto es interesante, pero también muy difícil de entender

Su anotación parece ser un caso casi ideal aquí: permitiría la anotación de reglas de análisis individuales con tipos, lo que permitiría el retorno de más de un tipo real

(El momento extraño en el que entendí que @Mingun también es ruso).

En realidad, TypeScript no hará que el desarrollo de gramáticas sea más fácil, porque tiene que anotar tipos en todas partes y porque su sistema de tipos está un poco roto. Recientemente hice un pequeño experimento para hacer un PEG.ts, y el verificador de tipos de TypeScript arrojó mensajes de error tan horribles cuando lo alimenté con tipos recursivos, que ni siquiera pude terminarlo.

Recomiendo mirar más bien el soporte de Infernu .

@polkovnikov-ph: sí, esa elección no está en mis manos y, además, como desarrollador de plantillas C++ de la década de 1990, los mensajes de error de mecanografiado no me asustan

de todos modos, lo que necesito es poder agregar analizadores a un sistema mecanografiado, por lo tanto, es valioso para mí obtener anotaciones mecanografiadas de parse/1

ahora mismo lo estoy haciendo con tipos maestros brutos y casting. Ojalá pudiera hacerlo mejor

image

¡Hola! En relación con esto, en el complemento ts-pegjs hemos implementado la escritura de salida opcional para las reglas de producción. Número 11 , PR 16

Lo hicimos usando una tabla de pares "rule-name": "return-type" a través de la opción returnTypes .

Soy cc usted, en caso de que haya decidido agregar opcionalmente información de tipo en pegjs en el nivel de DSL para anonar producciones directamente.
Podría ser bastante útil para la salida de TypeScript, también para Flow o cualquier otra variante de JS escrita.

La gente sigue pidiendo esto en el #597

El nuevo mantenedor creó y alojó un .d.ts , por lo que obviamente está abierto a mecanografiar

Este es un "tenemos mecanografiado" del mismo día sin cambios importantes, que se puede hacer en cinco líneas de código más el pie de página del módulo es6 de reemplazo. no entiendo porque no se hace

Tengo un parche listo para 0.11 pero 0.11 no se fusiona y 0.12 no está disponible para trabajar con él

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

gatsbyz picture gatsbyz  ·  3Comentarios

futagoza picture futagoza  ·  6Comentarios

mikeaustin picture mikeaustin  ·  7Comentarios

richb-hanover picture richb-hanover  ·  7Comentarios

audinue picture audinue  ·  13Comentarios