background image
C
ATS
(
TM
) P
ROGRAMMING
 L
ANGUAGE
 O
VERVIEW
As revised 2006.08.23
Bionic Buffalo Tech Note #84 
Security: 
Unrestricted
Other Cats statements require the generation of code at points removed from the same Cats statements. 
For examples:
Declaration in a block of a structure which requires memory allocation may also require the 
generation of code at each exit from the block to release the allocated memory. 
Expressions which require the use of temporary variables may require the declaration of those 
temporary variables at the appropriate places. 
Some debugging features will cause the generation of additional code for C programs which do not 
contain any Cats statements. For instance, a traceback message may be generated upon program failure, 
providing the names of procedures called up to the point of failure; such a traceback message requires 
that each program push its name onto the traceback stack as it is called, and pull it off upon exit. 
Aided by the values of run­time switches, the pre­compiler will attempt to match the superficial coding 
style of the original programmer when generating code. For example, the pre­compiler will attempt to 
use the same indentation and spacing as used in the source code. 
6.  Subset Pre­Compiler 
To enable a prospective user to evaluate Cats, a free, subset pre­compiler, called Kitten
TM
, is being 
developed. The subset pre­compiler supports strings, but not the other data types. Kitten also supports 
regular expressions and the related syntax of Cats. 
7.  Future Directions 
Bionic Buffalo is considering various enhancements to Cats and to the pre­compiler. Among these are: 
Support for additional string quoting mechanisms, similar to 
qw
 and other Perl constructs. 
Because the C preprocessor becomes confused by these quoting mechanisms, this requires 
processing the code before it is seen by the C pre­processor. (It may be most practical that  the 
Cats pre­compiler will replace the C pre­processor.)  
Association of variables with files or with URLs, so that their values are persistent, and so that 
very large data structures can be accessed in small amounts of memory. This might be viewed as 
a specialized kind of virtual memory. 
Integration with underlying file and directory system. Under consideration are file and directory 
data types. It would be useful to enable Cats to do things with files and directories, now normally 
done with shell scripts. 
Support for literate programming: documentation and other information directly embedded in the 
source code, or to be produced from the source code. 
Copyright 2006 Bionic Buffalo. All rights reserved.
File tn0084; Modified 2006­08­30 08:00:17
http://www.tatanka.com/doc/technote/index.html
E­mail: 
query@tatanka.com
Page 10 of 12