Pegjs: Suporte de texto datilografado falso

Criado em 31 jan. 2018  ·  8Comentários  ·  Fonte: pegjs/pegjs

Tipo de problema

  • [x] Solicitação de recurso

que

Então, eu gosto muito do plugin typescript de @pjmolina do #514. No entanto, no final, ele retorna all .

Eu esperava que você me ajudasse a trapacear. Na verdade, eu só quero escrever a assinatura para parse/1 maneira um pouco diferente, adicionando algum tipo de coisa à sintaxe peg que diz "tornar este o tipo de retorno de parse/1 " e também marcando o argumento de entrada :string se houver um tipo de saída. Então, você só teria que digitar cegamente o último valor de retorno, et voila.

Para um usuário de typescript (ou flowtype), isso teria um impacto profundo na capacidade de verificação, mesmo que seja falso .

Quantos cappuccinos preciso enviar para você para que isso aconteça e para qual endereço devo enviá-los

Comentários muito úteis

Oi! Relacionado a isso, no plugin ts-pegjs implementamos a tipagem de saída opcional para regras de produção. Edição 11 , PR 16

Fizemos isso usando uma tabela de pares "rule-name": "return-type" através da opção returnTypes .

Estou cc você, apenas no caso de você decidir adicionar opcionalmente informações de tipo em pegjs no nível DSL para anonnate productions diretamente.
Pode ser bastante útil para saída TypeScript, também para Flow ou qualquer outra variante JS tipada.

Todos 8 comentários

Tudo que eu realmente preciso é que a assinatura da função seja escrita como

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

(como queiras)

Você pode se inspirar com isso . Antes é necessário rotular os tipos de todos os blocos de código, isso pode ser feito com anotações . Após este trabalho preparatório é possível inserir informações sobre os tipos no gerador.

@Mingun - isso é interessante, mas também muito difícil de entender

Sua coisa de anotação parece ser um caso quase ideal aqui - isso permitiria a anotação de regras de análise individual com tipos, permitindo o retorno de mais de um tipo real

(O momento estranho em que entendi @Mingun também é russo.)

Na verdade, o TypeScript não facilitará o desenvolvimento de gramáticas, porque você precisa anotar tipos em todos os lugares e porque seu sistema de tipos está meio quebrado. Recentemente eu fiz um pequeno experimento em fazer um PEG.ts, e o verificador de tipos do TypeScript vomitou mensagens de erro tão horríveis quando eu o alimentei com tipos recursivos, que eu não consegui nem terminar.

Eu recomendo olhar para o suporte do Infernu .

@polkovnikov-ph - sim, essa escolha não está em minhas mãos e, além disso, como um desenvolvedor de modelos c++ dos anos 90, as mensagens de erro do typescript não me assustam

de qualquer forma, o que eu preciso é ser capaz de adicionar analisadores a um sistema typescript, então, é importante para mim obter anotações typescript de parse/1

agora estou fazendo isso com tipos mestre bruto e elenco. eu gostaria de poder fazer melhor

image

Oi! Relacionado a isso, no plugin ts-pegjs implementamos a tipagem de saída opcional para regras de produção. Edição 11 , PR 16

Fizemos isso usando uma tabela de pares "rule-name": "return-type" através da opção returnTypes .

Estou cc você, apenas no caso de você decidir adicionar opcionalmente informações de tipo em pegjs no nível DSL para anonnate productions diretamente.
Pode ser bastante útil para saída TypeScript, também para Flow ou qualquer outra variante JS tipada.

As pessoas ainda estão pedindo isso em #597

O novo mantenedor criou e hospedou um .d.ts , então ele obviamente está aberto ao texto datilografado

Este é um "temos texto datilografado" do mesmo dia sem grandes alterações, que pode ser feito em cinco linhas de código mais o rodapé do módulo es6 de substituição. Eu não entendo porque não está sendo feito

Eu tenho um patch pronto para 0.11 mas 0.11 não está sendo mesclado e 0.12 não está disponível para trabalhar

Esta página foi útil?
0 / 5 - 0 avaliações