BraulioVM / pl

0 stars 0 forks source link

Vector deja de ser una expresión #5

Closed BraulioVM closed 6 years ago

BraulioVM commented 6 years ago

En el commit https://github.com/BraulioVM/pl/commit/82eed87cfcefbea853cfbf85954063373f418d4f se ha hecho que {1,2,3} deje de ser una expresión para eliminar el conflicto reduce/reduce por el que VECTOR podía reducirse a la vez a una EXPR o a una LISTA_VECTORES. Probablemente podemos solucionar el conflicto de otra forma y quizá el no poder usar literales de vectores es un precio demasiado alto a pagar.

Habrá que investigar más cómo resolver estos conflictos

namasme commented 6 years ago

9f91cac arregla esto un poco ad hoc obligando a que los literales de matrices acaben siempre en coma, i.e.:

{1, 2}, {3, 4} -> VECTOR COMA VECTOR -> VECTOR COMA EXPR -> VECTOR COMA LISTA_EXPR -> EXPR COMA LISTA_EXPR -> LISTA_EXPR
{1, 2}, {3, 4}, -> VECTOR COMA VECTOR COMA -> VECTOR COMA LISTA_VECTORES -> LISTA_VECTORES

Sin embargo, teniendo en cuenta que una matriz es esencialmente un vector/array de vectores/arrays, parece difícil poder discernir a nivel sintáctico si se quiere dar a entender una u otra (porque, de hecho, deberían ser equivalentes incluso a nivel semántico).

Amén de esto, va a haber que realizar comprobaciones semánticas sea como sea pues para el producto de matrices se requiere que casen bien las dimensiones.

Por todo ello considero que deberíamos preguntarle al perla del profesor si es estrictamente necesario contemplar las matrices como elemento independiente en la gramática, en cuyo caso aplicaríamos este commit; o bien podemos deferrear la distinción hasta el nivel semántico y sólo cuando sea requerido en cuyo caso reduciríamos la gramática que siempre está c o o l.

Salu2