\count255=\catcode`@
\catcode`@=11

\let\MakeDollarLetter\relax
\let\MakeDollarOther\relax
\let\MakeDollarActive\relax
\let\DefineDollar\relax
\let\MakeDefineDollar\relax
\let\MakeDefineFDollar\relax
\def\test{\SpecialCharactersInIdent\MakeDefineDollar}
\ifx\SetIdentCatcodes\test
   \def\SetIdentCatcodes{\SpecialCharactersInIdent}
\fi

%Remember the commands that were = @kernel
\ifx\WordOrNumber\WordOrNumber@kernel \let\WordOrNumber\relax \fi
\ifx\NcodeParseWord\NcodeParseWord@kernel \let\NcodeParseWord\relax \fi

\def\WordOrNumber@kernel#1{%
  \WordToPrint{#1}%
  \let\parsecode\NcodeParseWord \condCsname @+#1\endcsname %If #1 is a number, \let\parsecode=\NcodeParseNumber
}

\ifdefined\toksapp %In luatex

\def\NcodeParseWord@kernel#1{%
\ifcat\noexpand#1a% If #1 is a letter, _ or 0-9 or dollar, append it to WordToPrint
  \toksapp\WordToPrint{#1}%
  \exP\NcodeParseWord
\else
  \NcodeEndWord #1%
\fi
}

\else

\def\NcodeParseWord@kernel#1{%
\ifcat\noexpand#1a% If #1 is a letter, _ or 0-9 or dollar, append it to WordToPrint
  \WordToPrint=\exP{\the\WordToPrint#1}%
  \exP\NcodeParseWord
\else
  \NcodeEndWord #1%
\fi
}

\fi %luatex

\ifx\WordOrNumber\relax \let\WordOrNumber\WordOrNumber@kernel
\ifx\NcodeParseWord\relax \let\NcodeParseWord\NcodeParseWord@kernel

%Cancel an existing dollar
\let\dollarchar\undefined
\let\activedollar\undefined
\let\DollarChar\relax

\catcode`@=\count255
