google / google/codeworld

Auto-fit syntax to the grammar before building

Abierto
#890 0 comentarios 0 reacciones 0 asignados Ver en GitHub
discussion
Lenguaje dominante
Haskell
Estrellas
1.3k
Forks
201
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

One of the advantages of block-based languages is that there are no (or few?) syntax errors. Can we get somewhere close to this in CodeWorld?

The following clip from Desmos shows how, when parentheses are unbalanced, Desmos inserts the close-parentheses that are missing in a grayed-out font, and interprets the expression as if they were already there.

![9772171e-ff49-44db-bac7-557738d97222](https://user-images.githubusercontent.com/544744/55412831-204ca680-5536-11e9-80ae-fe6283d42e93.gif)

If you disagree with the automatic choices, then sure, you can go type the extra parentheses where they belong. But if you leave them out, it doesn't interfere with running the program.

At one point, I'd enabled CodeMirror's feature where typing the open parenthesis automatically added a close-parenthesis to the document; that did not work very well at all! So I believe it's important that these parentheses are phantoms, which don't exist in the document, but rather are only shown in gray and added at build time. They only remain so long as they are needed to make the syntax correct, and they go away on their own when an explicit close-parenthesis is typed.

Parentheses are just one kind of syntax error Taking this further, one could imagine other tweaks that could be added on this basis to programs which are otherwise syntax errors. The rules are the same: the fix is transient, not stored in the source code, but applied on the fly before building. The changes are only made if the original code is not syntactically correct. When actual code changes are made, the on-the-fly fixes are recalculated from the new code, so anything that was applied before goes away.

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

El issue no menciona archivos, pruebas ni puntos de entrada; comienza localizando la integración del editor y la ruta de build que podría transformar código fuente no válido antes de la compilación. Compara el comportamiento transitorio deseado de los paréntesis grises con el flujo existente del editor y el compilador, y después define pruebas para el renderizado, el recálculo después de las ediciones y las compilaciones exitosas.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
haskell
Área
tooling
Tipo de issue
Nueva funcionalidad
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
25/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.