私は最後の印刷物を持っていますメタフォントブック(第8刷、C巻)。この印刷以来(そして他のすべての印刷以来)、2つの非常に奇妙な訂正が行われた。訂正:
1)
この修正に関する質問:
あサフィックスは空集合、または<tag>
任意の数の または<subscript>
の任意の組み合わせです(p.54の構文規則を参照)。したがって、a<subscript>
はサフィックス。したがって、なぜそう言われているのかは明らかではない。
接尾辞または下付き文字
まるで別々の財産であるかのように。
2)
ここでの定義を記載しておきます<suffix list>
:
<suffix list> -> <suffix> | <suffix list>,<suffix>
この修正に関する質問:
この場合の具体的な例は何ですか?
答え1
「接尾辞付き」とはどういう意味ですか? 通常は「接尾辞付きの変数」のように言います。しかし、構文規則に従ってa にsuffix
なることもあるので、これは次のことを意味します。empty
毎変数には接尾辞が付きます。したがって、このsuffix
ルールは「接尾辞付き」の最適な参照ではありません。したがって、「接尾辞付き」の直感的な意味を使用する必要があります。現在、 や などの変数は、x.a
表示x[2]
が異なり、動作も異なる場合があります。たとえばx.a
、 と はx.b
まったく異なりますが、x[1]
と はx[2]
はるかに関連しています。したがって、特にコメントの後では、
しかし、「x.k」は同じではありません。これは、タグ「x」にタグ「k」が末尾に付けられたものであり、変数 k の値が添え字として付けられたタグ「x」ではありません。
読者はそれがx[k]
「接尾辞付き」ではないと推測する可能性があります。したがって、「接尾辞付き」だけで十分なはずですが、場合によっては誤解を招く可能性があるため、「または下付き」を追加する方が簡単です。
接尾辞リスト問題の例は次の通りである。
newinternal x;
forsuffixes s = x1: show s; endfor
end;
x
これは、 を接尾辞として付けることができないため、x1
無効であり、失敗します。したがってx
、 は であり、internal quantity
したがって はではvariable
ありません。suffix
そうでなければx1
も接尾辞となり、 で許可されるためですsuffix list
。
私の意見では、ここでの問題は定義の問題ではsuffix list
なくsuffix
、内部変数が接尾辞ではないと仮定すると、
newinternal x;
y.x1 = 1;
end;
これも動作しないはずですが、Metafont では受け入れられます。
より正確なルールは次のようになるだろう: 内部量は接尾辞はaであり、演習7.4は正しいが、asuffix list
は
<external suffix> -> <empty> | <subscript><suffix> | <external tag><suffix>
<suffix list> -> <external suffix> | <suffix list>,<external suffix>
答え2
これは、受け入れられた回答への小さな追加であり、私の理解の要約です。
訂正1):
「または下付き」という語句は、「接尾辞」の「直感的な」意味に下付き変数を追加するために存在します。
問題は、MetaFontBook では「接尾辞」という単語に「一般的な」(p.54 の構文規則)と「直感的な」(下付き文字以外の空でない何か)という 2 つの意味があることです。
訂正2):
x<tag>
およびを含む次の例はx<subscript>
機能しません。
newinternal x;
forsuffixes s = x.k: show s; endfor
end
newinternal x;
forsuffixes s = x[1]: show s; endfor
end
x<tag>
とを使用した次の例はx<subscript>
機能します。
newinternal x;
y.x.k = 1;
end
newinternal x;
y.x[1] = 1;
end
したがって、2 番目の訂正は、承認された回答で述べられているとおりに訂正するだけでなく、「x<subscript>
」に「」を追加して訂正する必要がありますx<tag>
。