Provided by: scheme2c_2012.10.14-1ubuntu1_amd64 bug

NAME

       s2cc - Scheme to C compiler

SYNTAX

       s2cc [ option ] ... file ...

DESCRIPTION

       The  s2cc  command (previously known as scc) invokes a Scheme compiler which accepts the language defined
       in the essential portions of Revised4 Report on the Algorithmic Language Scheme, with  minor  constraints
       and  some  additions.   The compiler produces C source files which are then compiled using the system's C
       compiler to produce conventional .o and a.out files.  The  C  code  produced  by  this  compiler  may  be
       intermixed with other C code or code written in other languages.

OPTIONS

       These  options  are  accepted  by  s2cc.   Other  options will be assumed to be options of the system's C
       compiler and they will be passed to it when it is invoked.

       -cc  C compiler   Compile the Scheme compiler produced C code with C  compiler.   If  this  flag  is  not
                         supplied, then the C compiler cc will be used.

       -C                Compile  the  Scheme programs found in the files source.sc and leave the resulting code
                         in source.c files.  No further operations are performed.

       -I  directory     Specifies a directory to be searched by include for source files.

       -f  symbol  value Define the compile-time constant symbol to value.  This is equivalent to the  construct
                         (define-constant symbol value) appearing in the Scheme source.

       -i                Combine  the  source  and  object files into a Scheme interpreter.  The module name for
                         each Scheme source file is  automatically  determined.   Module  names  for  previously
                         compiled modules must be specified using the -m option.

       -m  module-name   Specifies the name of a previously compiled module.  Note that the Scheme compiler will
                         downshift the alphabetic characters in the module-name.  Modules are initialized in the
                         order that the -m flags appear.

       -Ob               Optimize code by omitting bounds checks on vectors and strings.

       -Og               Optimize code by omitting stack trace-back code.

       -On               Optimize code by assuming that all numbers are fixed point.

       -Ot               Optimize code by omitting type error checks.

       -pg               Produce profiled code for run-time measurement using gprof(1).  The profiled library is
                         used in lieu of the standard Scheme library.

       -scgc   statflag  Enables garbage collection statistics.  If set to 1, then garbage collection statistics
                         will be printed.  The default is 0, that will result in no statistics.

       -sch  heap        Specifies  the  compiler's  initial  heap  size  in  megabytes.   The default is system
                         dependent.

       -scl percent      Specifies the percent of the heap allocated after  a  generational  garbage  collection
                         that will force a full collection.  The default is 40.

       -scmh  heap       Specifies the compiler's maximum heap size in megabytes.  The default is five times the
                         initial size of the heap.

       -LIBDIR  directory
                         Specifies a  directory  containing  the  files:  predef.sc,  objects.h,  libs2c.a,  and
                         optionally libs2c_p.a.

       -log              Logs  information  internal  to  the  compiler  to  the  C  source file produced by the
                         compiler.  Each type of information is controlled by a flag: -source, -macro,  -expand,
                         -closed,  -transform,  -lambda,  -tree,  -lap,  -peep.   The flag -log is equivalent to
                         specifying the flags: -source, -macro, -expand, -closed, -transform, -lambda, -tree.

ENVIRONMENT VARIABLES

       The items controlled by -sc.. flags can also be controlled by environment variables.  If  both  the  flag
       and the environment variable are provided, then the flag's value will be used.

       SCGCINFO          Controls the reporting of garbage collection statistics to the standard error file.  If
                         set to 1, then garbage collection statistics will be printed.  The default setting is 0
                         that will not print the statistics.

       SCHEAP            Specifies  the  initial size of the heap in megabytes.  The default heap size is system
                         dependent.

       SCLIMIT           Specifies the percent of the heap allocated after  a  generational  garbage  collection
                         that will force a full collection.  The default is 40.

       SCMAXHEAP         Specifies the maximum size of the heap in megabytes.

INPUT FILES

       Following the command options come one or more file names.

       name.sc           Scheme source.  Scheme source files will be compiled into C files with the name name.c.

       name.c            C source.

       name.s            Assembly language source.

       name.o            Object file which may have been generated by any compiler.

       name.a            Object file archive which may have been generated by any compiler.

DIAGNOSTICS

       The disgnostic messages produced by the compiler are printed on the standard error file.

FILES

       /.../schemetoc/...  source and documentation
       /.../libs2c.a       library
       /.../libs2c_p.a     profiled library (optional)
       /.../s2cc           shell script
       /.../s2ccomp        compiler
       /.../predef.sc      predefined functions
       /.../objects.h      definitions "#include'd" in the C code
       SC-TO-C.c           temporary C source file
       source.S2C          temporary C source file
       SC-TO-C.o           temporary object file

LIMITATIONS

       When the compiler is able to identify every call to a procedure, it is able to generate it "in-line", and
       perform tail calls by using "goto".  This analysis covers most loops, conditional expressions, and finite
       state  machines.   For  non-tail  recursive calls, the code generated by the compiler uses the standard C
       mechanisms for procedure call and return.  This therefore requires that each top-level Scheme  procedure,
       and  any  Scheme  procedure which has more than one call which is not tail-recursive be compiled into its
       own C procedure.  Calls to such procedures will be tail-recursive if and only  if  the  host  C  compiler
       optimizes tail-recursion.

SEE ALSO

       Harold  Abelson  and  Gerald  Jay  Sussman  with  Julie Sussman, Structure and Interpretation of Computer
       Programs, The MIT Press.

       William Clinger and Jonathan Rees (Editors), Revised4 Report on the  Algorithmic  Language  Scheme,  LISP
       Pointers, Volume IV, Number 3, July-September 1991.  PostScript for this file is included in the software
       distribution.

       Jerry D. Smith, An Introduction to Scheme, Prentice Hall, Inc.  Chapter notes for using  this  text  with
       Scheme->C are included in the software distribution.

       R. Kent Dybvig, The SCHEME Programming Language, Prentice Hall, Inc.

       Daniel P. Friedman and Matthias Felleisen, The Little LISPer, MIT Press.

       Joel F. Bartlett, Scheme->C  a Portable Scheme-to-C Compiler, WRL Research Report 89/1.

       Additional documentation is included in the software distribution.

       s2ci(1)

QUESTIONS, COMMENTS, AND COMPLAINTS

       http://alioth.debian.org/projects/scheme2c/

                                                      local                                              S2CC(1)