%D \module
%D   [      file=s-system-tokens.mkxl,
%D        version=2020.06.02,
%D          title=\CONTEXT\ Style File,
%D       subtitle=System Tokens Checking,
%D         author=Hans Hagen,
%D           date=\currentdate,
%D      copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.

\startmodule[system-tokens]

\registerctxluafile{s-system-tokens}{}

\permanent\protected\def\showsystemtokens{\ctxlua{moduledata.system.tokens.showlist()}} % can be public implementor

\stopmodule

\continueifinputfile{s-system-tokens.mkxl}

\usemodule[article-basic]

\setuppapersize[A4,landscape]

\setuplayout[tight]

\setupbodyfont[8pt]

\starttext

    \showsystemtokens

    Some tokens cannot be created yet because they are more complex but eventually the creator will
    deal with them. The indices are sometimes the same as internal but in most cases nicely start
    at zero. When they start at another value, then there is an internal token or state that is not
    user accessible. You always need to use symbolic constants as the numbers can change.

    The first column is a classifier (which is experimental and categories might change when we feel
    the need).

    \startcolumns[n=5]
    \starttabulate[|T||]
    \NC 0 \NC unused    \NC \NR
    \NC 1 \NC regular   \NC \NR
    \NC 2 \NC character \NC \NR
    \NC 3 \NC register  \NC \NR
    \NC 4 \NC internal  \NC \NR
    \NC 5 \NC reference \NC \NR
    \NC 6 \NC data      \NC \NR
    \NC 7 \NC token     \NC \NR
    \NC 8 \NC node      \NC \NR
    \stoptabulate
    \stopcolumns

    \page

    Here is a typeset table of \type {\startframed} using \type {\luatokentable\startframed}:

    \luatokentable\startframed

    which calls \type {\pack_framed_start_framed} where \type {\luatokentable\pack_framed_start_framed} gives:


    \unprotect
    \luatokentable\pack_framed_start_framed
    \protect

    So you can guess what generates this:

    \unprotect
    \luatokentable\pack_framed_start_framed_nop
    \protect

    And this:

    \unprotect
    \luatokentable\pack_framed_start_framed_yes
    \protect

\stoptext

