Annotation of 43BSDReno/contrib/isode-beta/doc/manual/pepsy.tex, revision 1.1

1.1     ! root        1: % run this through LaTeX with the appropriate wrapper
        !             2: 
        !             3: \chapter      {Pepsy}\label{pepsy}
        !             4: The \man pepsy(1) program is a table-driven replacement for \pgm{pepy} and
        !             5: \pgm{posy}.
        !             6: At present,
        !             7: all three compilers are available as a part of the standard distribution.
        !             8: In the next major release,
        !             9: \pgm{pepy} and \pgm{posy} will remain,
        !            10: but most likely will not be installed by default.
        !            11: 
        !            12: The remainder of this chapter describes how to use \pgm{pepsy}.
        !            13: By virtue of having presented the preceeding two chapters,
        !            14: only a terse discussion is needed!
        !            15: 
        !            16: \section      {Abstract Syntax Module}
        !            17: As with \pgm{posy},
        !            18: the \pgm{pepsy} program reads a description of an {\em abstract syntax
        !            19: module\/}
        !            20: and produces the corresponding {\em C\/} structures along with several tables
        !            21: that define the mapping between the ASN.1 objects in the module and the
        !            22: {\em C\/} structures.
        !            23: This tables replaces the work done by the \pgm{pepy} program.
        !            24: 
        !            25: Note that unlike \pgm{posy},
        !            26: \pgm{pepsy} does not accept annotations in the abstract syntax module.
        !            27: It should be raw ASN.1,
        !            28: either entered by hand,
        !            29: or produced by the \pgm{rosy} program.
        !            30: Note that you must tell \pgm{rosy} when \pgm{pepsy} will be used.
        !            31: This is accomplished with the \switch"pepsy" option,
        !            32: e.g.,
        !            33: \begin{quote}\small\begin{verbatim}
        !            34: .ry.py:;          rosy -pepsy $(RYFLAGS) $<
        !            35: \end{verbatim}\end{quote}
        !            36: 
        !            37: \section      {PEPSY Environment}
        !            38: The \pgm{pepsy} program will produce two files after reading its abstract
        !            39: syntax module.
        !            40: 
        !            41: \subsection    {C Language Structures}
        !            42: For each type in the abstract syntax module,
        !            43: \pgm{pepy} will define a corresponding {\em C\/} language structure
        !            44: (\verb"struct"),
        !            45: using the same rules as \pgm{posy}
        !            46: (see Section~\ref{posy:c-struct} on page~\pageref{posy:c-struct}).
        !            47: 
        !            48: \subsection    {Mapping tables}
        !            49: In addition to the definition of {\em C\/} language structures,
        !            50: \pgm{pepsy} will generate a {\em C\/} file containing several tables that
        !            51: define the mapping between the structures and the corresponding ASN.1 objects.
        !            52: As this is entirely an automatic process,
        !            53: the contents of the tables are relatively unimportant.
        !            54: 
        !            55: \section      {Known Deficiences}
        !            56: \pgm{pepsy} uses essentially the same front-end as the \man posy(1) program,
        !            57: so it has some limitations in the ASN.1 syntax it can accept.
        !            58: Consult Section~\ref{posy:deficiencies} on page~\pageref{posy:deficiencies}
        !            59: for the details.
        !            60: 
        !            61: \section      {Running PEPSY}
        !            62: Here are a few things to know when running \pgm{pepsy}.
        !            63: 
        !            64: \subsection    {Options}
        !            65: The \pgm{pepsy} program has a few options to modify its behavior.
        !            66: 
        !            67: The \switch"A" switch directs \pgm{pepsy} to produce mapping tables for
        !            68: encoding, decoding, and printing.
        !            69: 
        !            70: The \switch"a" switch directs \pgm{pepy} to augment the \verb"#include" file
        !            71: it generates with commentary text.
        !            72: 
        !            73: The \switch"d" switch is a no-op with \pgm{pepsy},
        !            74: as it always ignores all \pgm{pepy}-style augmentations,
        !            75: including the 
        !            76: ``verbatim'' actions occuring at the very beginning and end of the module.
        !            77: 
        !            78: The \switch"f" switch directs \pgm{posy} to generate {\em C\/} macros to
        !            79: deallocate the structures it defines
        !            80: (e.g., for type \verb"type_MODULE_type",
        !            81: a macro called \verb"free_MODULE_type" is defined).
        !            82: 
        !            83: As with \pgm{posy},
        !            84: the \switch"h" switch enables additional heuristics when \pgm{pepsy} generates
        !            85: a {\em C\/} language structure definition.
        !            86: See Section~\ref{posy:options} on page~\pageref{posy:options}.
        !            87: 
        !            88: Normally, \pgm{posy} prints the name of each type as it works.
        !            89: The \switch"s" switch disables this behavior.
        !            90: 
        !            91: \subsection    {Makefiles}
        !            92: By convention,
        !            93: input files to \pgm{pepsy} have the extension \verb".py".
        !            94: In order to remain consistent with the naming scheme used by \pgm{posy},
        !            95: rather than starting with file \verb"module.py",
        !            96: we assume we are starting with file \verb"MODULE-asn.py".
        !            97: Let us arbitrarily select the file named \verb"MODULE-types.py" for the
        !            98: augmented abstract syntax module produced by \pgm{posy}.
        !            99: Hence
        !           100: \begin{quote}\begin{verbatim}
        !           101: pepsy MODULE-asn.py
        !           102: \end{verbatim}\end{quote}
        !           103: will produce:
        !           104: \begin{describe}
        !           105: \item[\verb"MODULE-types.h":]  the {\em C\/} language structures;
        !           106:                                and,
        !           107: 
        !           108: \item[\verb"MODULE_tables.c":] the mapping tables.
        !           109: \end{describe}
        !           110: 
        !           111: Our \man make(1) rules are:
        !           112: \begin{quote}\small\begin{verbatim}
        !           113: MODULE_tables.o:  MODULE_tables.c MODULE-types.h
        !           114: 
        !           115: MODULE_tables.c MODULE_tables.h: MODULE-asn.py
        !           116:                pepsy -A -f -h MODULE-asn.py
        !           117: \end{verbatim}\end{quote}

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.