Tengo la última impresión deMetafuenteLibro(Octava edición, Volumen C). Desde esa impresión (y por tanto desde todas las demás impresiones), aparecieron dos correcciones muy curiosas enerratas:
1)
Pregunta sobre esta corrección:
Asufijoes un conjunto vacío o cualquier número de <tag>
s o <subscript>
s en cualquier combinación (consulte las reglas de sintaxis en la página 54). Entonces, a <subscript>
es un subconjunto desufijo. Por lo tanto no está claro por qué se dice
con sufijo o subíndice
como si fueran propiedades separadas.
2)
Vale la pena poner aquí la definición de <suffix list>
:
<suffix list> -> <suffix> | <suffix list>,<suffix>
Pregunta sobre esta corrección:
¿Cuál es algún ejemplo específico concreto para este caso?
Respuesta1
¿Qué significa "sufijo"? Normalmente dirías algo como "una variable con un sufijo". Pero a suffix
también puede ser empty
según las reglas de sintaxis, por lo que esto significaría quecadaLa variable tiene el sufijo. Por lo tanto, la suffix
regla no es la mejor referencia para "sufijo". Entonces tenemos que usar un significado intuitivo de "sufijo". Ahora las variables como x.a
y x[2]
aparecen y a veces se comportan de manera diferente, por ejemplo x.a
y x.b
son completamente diferentes, pero x[1]
y x[2]
están mucho más conectadas. Especialmente después del comentario.
Pero 'x.k' no es lo mismo; es la etiqueta 'x' con el sufijo 'k', no la etiqueta 'x' con el valor de la variable k.
un lector podría suponer que x[k]
no tiene "sufijo". Entonces, aunque "con sufijo" por sí solo debería ser suficiente, eso podría dar lugar a malentendidos en algunos casos, por lo que es más fácil simplemente agregar "o subíndice".
Un ejemplo del problema de la lista de sufijos es
newinternal x;
forsuffixes s = x1: show s; endfor
end;
Esto falla porque x
no puede llevar el sufijo, por lo que x1
no es válido. Por lo tanto x
, lo que es an internal quantity
y por tanto a variable
, no es a suffix
porque de lo contrario x1
también sería un sufijo y estaría permitido en a suffix list
.
En mi opinión, el problema aquí es que esto parece ser un problema suffix list
más que con la suffix
definición: suponiendo que las variables internas no son sufijos, entonces
newinternal x;
y.x1 = 1;
end;
Tampoco debería funcionar, pero Metafont lo acepta.
Entonces la regla más precisa podría ser: una cantidad internaesun sufijo y el ejercicio 7.4 es verdadero, pero a suffix list
es
<external suffix> -> <empty> | <subscript><suffix> | <external tag><suffix>
<suffix list> -> <external suffix> | <suffix list>,<external suffix>
Respuesta2
Esta es una pequeña adición a la respuesta aceptada: el resumen de mi entendimiento.
Corrección 1):
la frase "o subíndice" está ahí para agregar variables subíndices al significado "intuitivo" de "sufijo".
La cuestión es que en MetaFontBook hay dos significados de la palabra "sufijo": "general" (regla de sintaxis en la página 54) e "intuitivo" (algo no vacío que no sea el subíndice).
Corrección 2):
los siguientes ejemplos con x<tag>
y x<subscript>
no funcionan:
newinternal x;
forsuffixes s = x.k: show s; endfor
end
newinternal x;
forsuffixes s = x[1]: show s; endfor
end
los siguientes ejemplos con x<tag>
y x<subscript>
funcionan:
newinternal x;
y.x.k = 1;
end
newinternal x;
y.x[1] = 1;
end
Por lo tanto, la segunda corrección debe corregirse no solo como se dice en la respuesta aceptada, sino también para agregar " x<subscript>
" a " x<tag>
".