bionic (1) preprocess.1.gz

Provided by: preprocess_1.1.0+ds-1build1_all bug

NAME

       preprocess - Preprocess a file.

SYNOPSIS

       preprocess [options...] infile

DESCRIPTION

       Preprocess is like a typical C preprocessor, but it extends to multiple languages. Languages for which it
       works include: C++, Python, Perl, Tcl, XML, JavaScript, CSS, IDL, TeX, Fortran, PHP, Java, Shell  scripts
       (Bash, CSH, etc.) and C#. Preprocess is usable both as a command line app and as a Python module.

OPTIONS

       -h, --help
              Print help text and exit.

       -V, --version
              Print the version info and exit.

       -v, --verbose
              Give verbose output for errors.

       -o outfile
              Write output to the given file instead of to stdout.

       -f, --force
              Overwrite given output file. Otherwise an IOError will be raised if outfile already exists.

       -D define
              Define  a  variable for preprocessing. define can simply be a variable name (in which case it will
              be true) or it can be of the form var=val. An attempt will be made to convert val to an integer so
              "-D FOO=0" will create a false value.

       -I dir Add a directory to the include path for #include directives.

       -k, --keep-lines
              Emit  empty  lines  for  preprocessor  statement  lines and skipped output lines. This allows line
              numbers to stay constant.

       -s, --substitute
              Substitute defines into emitted lines. By default substitution is NOT done  because  it  currently
              will substitute into program strings.

MODULE USAGE

               from preprocess import preprocess
               preprocess(infile, outfile=sys.stdout, defines={}, force=0,
                          keepLines=0, includePath=[], substitute=0)

       The <infile> can be marked up with special preprocessor statement lines of the form:

               <comment-prefix> <preprocessor-statement> <comment-suffix>

       where the <comment-prefix/suffix> are the native comment delimiters for that file type.

EXAMPLES

       HTML (*.htm, *.html) or XML (*.xml, *.kpf, *.xul) files:

               <!-- #if FOO -->
               ...
               <!-- #endif -->

       Python (*.py), Perl (*.pl), Tcl (*.tcl), Ruby (*.rb), Bash (*.sh), or make ([Mm]akefile*) files:

               # #if defined('FAV_COLOR') and FAV_COLOR == "blue"
               ...
               # #elif FAV_COLOR == "red"
               ...
               # #else
               ...
               # #endif

       C  (*.c, *.h), C++ (*.cpp, *.cxx, *.cc, *.h, *.hpp, *.hxx, *.hh), Java (*.java), PHP (*.php) or C# (*.cs)
       files:

               // #define FAV_COLOR 'blue'
               ...
               /* #ifndef FAV_COLOR */
               ...
               // #endif

       Fortran 77 (*.f) or 90/95 (*.f90) files:

               C     #if COEFF == 'var'
                     ...
               C     #endif

PREPROCESSOR SYNTAX

       Valid statements:

               #define <var> [<value>]
               #undef <var>
               #ifdef <var>
               #ifndef <var>
               #if <expr>
               #elif <expr>
               #else
               #endif
               #error <error string>
               #include "<file>"

       where <expr> is any valid Python expression.

       The expression after #if/elif may be a Python statement. It is an error to refer to a variable  that  has
       not been defined by a -D option or by an in-content #define.

       Special built-in methods for expressions:

               defined(varName)    Return true if given variable is defined.

TIPS

       A  suggested file naming convention is to let input files to preprocess be of the form <basename>.p.<ext>
       and direct the output of preprocess to <basename>.<ext>, e.g.:

               preprocess -o foo.py foo.p.py

       The advantage is that other tools (esp. editors) will still recognize  the  unpreprocessed  file  as  the
       original language.

AUTHORS

       Trent Mick <trentm@gmail.com>

       This  manual  page  was written by Johannes Ring <johannr@simula.no> for the Debian GNU/Linux system (but
       may be used by others).

                                                                                                   PREPROCESS(1)