% Copyright 2012-2022, Alexander Shibakov % This file is part of SPLinT % % SPLinT is free software: you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by % the Free Software Foundation, either version 3 of the License, or % (at your option) any later version. % % SPLinT is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU General Public License for more details. % % You should have received a copy of the GNU General Public License % along with SPLinT. If not, see . \let\currentparsernamespace\parsernamespace \let\parsernamespace\indexpseudonamespace % use the correct namespace \input yypretty.sty % input standard prettified tokens first % so that we can change their appearance below \let\parsernamespace\cwebclinknamespace \prettywordpair{.origin&}{{$\cdot\cdot$}}% special . name in \ld\ scripts \let\parsernamespace\currentparsernamespace \prettywordpairwvis{comma}{{\tt,}}{,} \prettywordpairwvis{semicolon}{{\tt;}}{;} \prettywordpair@@{file\_NAME\_list}{{\ifinheader\itbold\else\it\fi file\_{\rm name}\_list}} \prettywordpair@@{high\_level\_library\_NAME\_list}{{\ifinheader\itbold\else\it\fi high\_level\_library\_{\rm name}\_list}} \prettywordpair@@{low\_level\_library\_NAME\_list}{{\ifinheader\itbold\else\it\fi low\_level\_library\_{\rm name}\_list}} \prettywordpair@@{NAME}{{\rm name}} \prettywordpair@@wvis{LNAME}{{\rm name$_{\rm L}$}}{name_L} \prettywordpair@@{END}{{\rm end}} \prettywordpair@@{UNARY}{{\rm unary}} \prettywordpair@@{VERSIONK}{{\tt VERSION}$_{\rm K}$} \prettytoken{ALIGN} \prettytoken{MIN} \prettytoken{MAX} \prettytoken{TARGET} \prettytoken{ASSERT} \prettytoken{INSERT} \prettywordpair@@wvis{PLUSEQ}{{}$\MRL{+{\K}}${}}{=+} \prettywordpair@@wvis{MINUSEQ}{{}$\MRL{-{\K}}${}}{=-} \prettywordpair@@wvis{MULTEQ}{{}$\MRL{\times{\K}}${}}{=*} \prettywordpair@@wvis{DIVEQ}{{}$\MRL{{\div}{\K}}${}}{=/} \prettywordpair@@wvis{ANDEQ}{{}$\Xandxeq${}}{=W} \prettywordpair@@wvis{OREQ}{{}$\Xorxeq${}}{=V} \prettywordpair@@wvis{LSHIFTEQ}{{}$\MRL{\ll{\K}}${}}{=<<} \prettywordpair@@wvis{RSHIFTEQ}{{}$\MRL{\gg{\K}}${}}{=>>} \prettywordpair@@wvis{NE}{{}$\not=${}}{= } \prettywordpair@@wvis{LE}{{}$\leq${}}{<=} \prettywordpair@@wvis{GE}{{}$\geq${}}{>=} \prettywordpair@@wvis{EQ}{{}$=${}}{=} \prettywordpair@@wvis{OROR}{{}$\V${}}{||} \prettywordpair@@wvis{ANDAND}{{}$\W${}}{&&} \prettywordpair@@wvis{LSHIFT}{{}$\ll${}}{<<} \prettywordpair@@wvis{RSHIFT}{{}$\gg${}}{>>} \prettywordpair@@wvis{=}{{}$\K${}}{=:} \prettywordpair@@{+}{{}$+${}} \prettywordpair@@{-}{{}$-${}} \prettywordpair@@{!}{{}$\CM${}} \prettywordpair@@{~}{{}$\R${}} \prettywordpair@@{^}{{}$\XOR${}} \prettywordpair@@{|}{{}$\OR${}} \prettywordpair@@{&}{{}$\AND${}} \prettywordpair@@{\{}{{\ntt@\{}}% the purpose is to adjust the indexing \prettywordpair@@{\}}{{\ntt@\}}}% the purpose is to adjust the indexing % the switches below are sloppy, since the macros in the index % read a-z as letters (category 11) whereas the parser records them as % non-letters, it would be beter to use category 12 throughout (by, % for example passing the context as a stream of character codes \def\gtsymswitch{% exp \raw exp *left *right\raw {% {}$>${}% } } \def\gtsymswitchdefault{{\tt >}} \def\ltsymswitch{% exp \raw exp *left *right\raw {% {}$<${}% } } \def\ltsymswitchdefault{{\tt <}} \setspecialcharsfrom\gtsymswitch \setspecialcharsfrom\ltsymswitch % the visual key switches below slightly abuse the properties of % \yyifsamestring, namely that it ignores the category code of the characters \prettywordpair@@wvis{>}{{% \let\default\gtsymswitchdefault \switchon{#1}\in\gtsymswitch }}{% \yyifsamestring{exp}{#1}{> exp}{% \yyifsamestring{*left}{#1}{> exp}{% \yyifsamestring{*right}{#1}{> exp}{>}% }% }% } \prettywordpair@@wvis{<}{{% \let\default\ltsymswitchdefault \switchon{#1}\in\ltsymswitch }}{% \yyifsamestring{exp}{#1}{< exp}{% \yyifsamestring{*left}{#1}{< exp}{% \yyifsamestring{*right}{#1}{< exp}{<}% }% }% } \def\astsymswitch{% exp \raw exp *left *right\raw {% {}$\times${}% } } \def\astsymswitchdefault{{\tt *}} \setspecialcharsfrom\astsymswitch \prettywordpair@@wvis{*}{% {% \let\default\astsymswitchdefault \switchon{#1}\in\astsymswitch }% }{% \yyifsamestring{exp}{#1}{* exp}{% \yyifsamestring{*left}{#1}{* exp}{% \yyifsamestring{*right}{#1}{* exp}{*}% }% }% } \prettywordpair@@{/}{{}$/${}} \expandafter\prettywordpair@@\expandafter{\harmlesscomment}{{}$\div${}}