From 1c12ef55b22a2ee41cdfd4d94e0caccc47aaf76d Mon Sep 17 00:00:00 2001 From: Andreas Scherer Date: Thu, 26 May 2022 22:39:42 +0000 Subject: [CWEB] Unambiguous production rules 83 and 121. Rule 121 is a trivial concretization. Rule 83 is changed to correctly format 'trivial' CWEB code like @c #include @# main() {} that got clobbered as in 'queen.w' from The Stanford GraphBase. As always, thanks to Github contributor @texdraft! git-svn-id: svn://tug.org/texlive/trunk@63408 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/texk/web2c/cwebdir/ChangeLog | 10 ++++++++++ Build/source/texk/web2c/cwebdir/ctwill-mini.ch | 4 ++-- Build/source/texk/web2c/cwebdir/ctwill-w2c.ch | 2 +- Build/source/texk/web2c/cwebdir/cweav-w2c.ch | 2 +- Build/source/texk/web2c/cwebdir/cweave.w | 8 ++++---- Build/source/texk/web2c/cwebdir/prod-cweave.w | 4 ++-- Build/source/texk/web2c/cwebdir/prod-twill.w | 4 ++-- Build/source/texk/web2c/cwebdir/prod.w | 4 ++-- 8 files changed, 24 insertions(+), 14 deletions(-) (limited to 'Build') diff --git a/Build/source/texk/web2c/cwebdir/ChangeLog b/Build/source/texk/web2c/cwebdir/ChangeLog index d54b5361dc4..5031c82f375 100644 --- a/Build/source/texk/web2c/cwebdir/ChangeLog +++ b/Build/source/texk/web2c/cwebdir/ChangeLog @@ -1,3 +1,13 @@ +2022-05-26 Andreas Scherer + + * ctwill-mini.ch, + * ctwill-w2c.ch, + * cweav-w2c.ch, + * cweave.w, + * prod-cweave.w, + * prod-twill.w, + * prod.w: Unambiguous prductions 83 and 121. + 2022-05-23 Andreas Scherer * Makefile, diff --git a/Build/source/texk/web2c/cwebdir/ctwill-mini.ch b/Build/source/texk/web2c/cwebdir/ctwill-mini.ch index d9efec059fd..4eb62d9cc64 100644 --- a/Build/source/texk/web2c/cwebdir/ctwill-mini.ch +++ b/Build/source/texk/web2c/cwebdir/ctwill-mini.ch @@ -1566,9 +1566,9 @@ Section 233--234. if ((abig_force && a!=dindent)) break; switch (a) { + case dindent: c++; @=/* fall through */@>@; case indent: c++; break; case outdent: c--; break; - case dindent: c+=2; break; case opt: a=get_output(); } } @@ -1608,9 +1608,9 @@ Section 233--234. if ((abig_force && a!=dindent)) break; switch (a) { + case dindent: c++; @=/* fall through */@>@; case indent: c++; break; case outdent: c--; break; - case dindent: c+=2; break; case opt: a=get_output(); } } diff --git a/Build/source/texk/web2c/cwebdir/ctwill-w2c.ch b/Build/source/texk/web2c/cwebdir/ctwill-w2c.ch index 7532d541100..79a7c326077 100644 --- a/Build/source/texk/web2c/cwebdir/ctwill-w2c.ch +++ b/Build/source/texk/web2c/cwebdir/ctwill-w2c.ch @@ -618,7 +618,7 @@ static void print_text(text_pointer p); @ @c #if 0 -@t\4\4@>static void +static void print_text( /* prints a token list for debugging; not used in |main| */ @z diff --git a/Build/source/texk/web2c/cwebdir/cweav-w2c.ch b/Build/source/texk/web2c/cwebdir/cweav-w2c.ch index 9a3b4b885f7..8da07cb330a 100644 --- a/Build/source/texk/web2c/cwebdir/cweav-w2c.ch +++ b/Build/source/texk/web2c/cwebdir/cweav-w2c.ch @@ -290,7 +290,7 @@ static void print_text(text_pointer p); @ @c #if 0 -@t\4\4@>static void +static void print_text( /* prints a token list for debugging; not used in |main| */ @z diff --git a/Build/source/texk/web2c/cwebdir/cweave.w b/Build/source/texk/web2c/cwebdir/cweave.w index 5a8e0eaca65..4fb3ca68e9f 100644 --- a/Build/source/texk/web2c/cwebdir/cweave.w +++ b/Build/source/texk/web2c/cwebdir/cweave.w @@ -2979,8 +2979,8 @@ if (cat1==semi) { else reduce(pp,0,exp,-2,82); @ @= -if (cat1) - squash(pp,2,cat1,0,83); +if (cat1==function) + squash(pp,2,function,0,83); @ @= init_mathness=cur_mathness=yes_math; @@ -3106,7 +3106,7 @@ else if (cat1==ubinop && (cat2==ubinop || cat2==cast)) { } @ @= -if (cat1==lpar && cat2==rpar) { +if (cat1==lbrack && cat2==rbrack) { big_app2(pp); app_str("\\,"); big_app1(pp+2); @.\\,@> reduce(pp,3,delete_like,0,121); @@ -3931,9 +3931,9 @@ make_output(void) /* outputs the equivalents of tokens */ if ((abig_force && a!=dindent)) break; switch (a) { + case dindent: c++; @=/* fall through */@>@; case indent: c++; break; case outdent: c--; break; - case dindent: c+=2; break; case opt: a=get_output(); } } diff --git a/Build/source/texk/web2c/cwebdir/prod-cweave.w b/Build/source/texk/web2c/cwebdir/prod-cweave.w index 972e686a668..6b104d5ae0e 100644 --- a/Build/source/texk/web2c/cwebdir/prod-cweave.w +++ b/Build/source/texk/web2c/cwebdir/prod-cweave.w @@ -212,7 +212,7 @@ We use \\{in}, \\{out}, \\{back}, \\{bsp}, and \\{din} as shorthands for \+& |section_scrap| |semi| & |stmt|\hfill $MS$ |force| &$\langle\,$section name$\,\rangle$;\cr \+& |section_scrap| & |exp| &$\langle\,$section name$\,\rangle$\cr -\+& |insert| \\{any} & \\{any} & \.{\v\#include\v}\cr +\+& |insert| |function| & |function| & \#\&{include} before \\{main}\cr \+& |prelangle| & |binop| \hfill \.< & $<$ not in template\cr \+& |prerangle| & |binop| \hfill \.> & $>$ not in template\cr \+& |langle| |prerangle| & |cast| \hfill $L\.{\\,}P$ & $\langle\,\rangle$\cr @@ -269,7 +269,7 @@ We use \\{in}, \\{out}, \\{back}, \\{bsp}, and \\{din} as shorthands for |typedef_like| \alt |cast| |ubinop| \hfill \alt $C=\.\{U\.\}C$ $U_2=\.\{U_1\.\}U_2$ \unskip & \&{typedef} |*|{}|*|(\&{CPtr})\cr -\+& |delete_like| |lpar| |rpar| & |delete_like|\hfill $DL\.{\\,}R$ +\+& |delete_like| |lbrack| |rbrack| & |delete_like|\hfill $DL\.{\\,}R$ & \&{delete}[\,] \cr \+& |delete_like| |exp| & |exp| \hfill $D\.\ E$ & \&{delete} $p$ \cr \+\dagit& |question| |exp| \alt |colon| |base| & |binop| diff --git a/Build/source/texk/web2c/cwebdir/prod-twill.w b/Build/source/texk/web2c/cwebdir/prod-twill.w index 72f1f50dc9f..f43dfec6406 100644 --- a/Build/source/texk/web2c/cwebdir/prod-twill.w +++ b/Build/source/texk/web2c/cwebdir/prod-twill.w @@ -212,7 +212,7 @@ We use \\{in}, \\{out}, \\{back}, \\{bsp}, and \\{din} as shorthands for \+& |section_scrap| |semi| & |stmt|\hfill $MS$ |force| &$\langle\,$section name$\,\rangle$;\cr \+& |section_scrap| & |exp| &$\langle\,$section name$\,\rangle$\cr -\+& |insert| \\{any} & \\{any} & \.{\v\#include\v}\cr +\+& |insert| |function| & |function| & \#\&{include} before \\{main}\cr \+& |prelangle| & |binop| \hfill \.< & $<$ not in template\cr \+& |prerangle| & |binop| \hfill \.> & $>$ not in template\cr \+& |langle| |prerangle| & |cast| \hfill $L\.{\\,}P$ & $\langle\,\rangle$\cr @@ -264,7 +264,7 @@ We use \\{in}, \\{out}, \\{back}, \\{bsp}, and \\{din} as shorthands for \+\dag202\enspace& |typedef_like| |int_like| |raw_int| & |typedef_like| |int_like| |exp| & \&{typedef} \&{int} \&{foo}\cr \global\prodno=121 -\+& |delete_like| |lpar| |rpar| & |delete_like|\hfill $DL\.{\\,}R$ +\+& |delete_like| |lbrack| |rbrack| & |delete_like|\hfill $DL\.{\\,}R$ & \&{delete}[\,] \cr \+& |delete_like| |exp| & |exp| \hfill $D\.\ E$ & \&{delete} $p$ \cr \+\dagit& |question| |exp| \alt |colon| |base| & |binop| diff --git a/Build/source/texk/web2c/cwebdir/prod.w b/Build/source/texk/web2c/cwebdir/prod.w index 73365e01c0a..243aa6f7255 100644 --- a/Build/source/texk/web2c/cwebdir/prod.w +++ b/Build/source/texk/web2c/cwebdir/prod.w @@ -212,7 +212,7 @@ We use \\{in}, \\{out}, \\{back}, \\{bsp}, and \\{din} as shorthands for \+& |section_scrap| |semi| & |stmt|\hfill $MS$ |force| &$\langle\,$section name$\,\rangle$;\cr \+& |section_scrap| & |exp| &$\langle\,$section name$\,\rangle$\cr -\+& |insert| \\{any} & \\{any} & \.{\v\#include\v}\cr +\+& |insert| |function| & |function| & \#\&{include} before \\{main}\cr \+& |prelangle| & |binop| \hfill \.< & $<$ not in template\cr \+& |prerangle| & |binop| \hfill \.> & $>$ not in template\cr \+& |langle| |prerangle| & |cast| \hfill $L\.{\\,}P$ & $\langle\,\rangle$\cr @@ -269,7 +269,7 @@ We use \\{in}, \\{out}, \\{back}, \\{bsp}, and \\{din} as shorthands for |typedef_like| \alt |cast| |ubinop| \hfill \alt $C=\.\{U\.\}C$ $U_2=\.\{U_1\.\}U_2$ \unskip & \&{typedef} |*|{}|*|(\&{CPtr})\cr -\+& |delete_like| |lpar| |rpar| & |delete_like|\hfill $DL\.{\\,}R$ +\+& |delete_like| |lbrack| |rbrack| & |delete_like|\hfill $DL\.{\\,}R$ & \&{delete}[\,] \cr \+& |delete_like| |exp| & |exp| \hfill $D\.\ E$ & \&{delete} $p$ \cr \+\dagit& |question| |exp| \alt |colon| |base| & |binop| -- cgit v1.2.3