[tex-k] bug in METAFONT syntax
胡亚捷 (Hu Yajie)
2500418497 at qq.com
Tue Jun 30 17:51:25 CEST 2020
The METAFONTbook gives the syntax for charlist and extensible commands as:
<charlist command> ::= charlist <labeled code>
<labeled code> ::= <code>
| <label> <labeled code>
<extensible command> ::= extensible <label> <four codes>
<four codes> ::= <code> , <code> , <code> , <code>
And labels are defined as:
<label> ::= <code> : | <code> :: | ||:
But mf.web only implements the first alternative of <label>:
char_list_code: begin c:=get_code;
{we will store a list of character successors}
while cur_cmd=colon do
begin cc:=get_code; set_tag(c,list_tag,cc); c:=cc;
end;
end;
@<Define an extensible recipe@>=
begin if ne=256 then overflow("extensible",256);
@:METAFONT capacity exceeded extensible}{\quad extensible@>
c:=get_code; set_tag(c,ext_tag,ne);
if cur_cmd<>colon then missing_extensible_punctuation(":");
ext_top(ne):=qi(get_code);
if cur_cmd<>comma then missing_extensible_punctuation(",");
ext_mid(ne):=qi(get_code);
if cur_cmd<>comma then missing_extensible_punctuation(",");
ext_bot(ne):=qi(get_code);
if cur_cmd<>comma then missing_extensible_punctuation(",");
ext_rep(ne):=qi(get_code);
incr(ne);
end
And the other two alternatives don't seem to make any sense...
----
Previous reports:
https://github.com/dine2014/texbook-mfbook-bugs/blob/master/bugs.md
More information about the tex-k
mailing list.