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 runtime switches, the precompiler will attempt to match the superficial coding
style of the original programmer when generating code. For example, the precompiler will attempt to
use the same indentation and spacing as used in the source code.
6. Subset PreCompiler
To enable a prospective user to evaluate Cats, a free, subset precompiler, called Kitten
TM
, is being
developed. The subset precompiler 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 precompiler. 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 preprocessor. (It may be most practical that the
Cats precompiler will replace the C preprocessor.)
•
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 20060830 08:00:17
http://www.tatanka.com/doc/technote/index.html
Email:
query@tatanka.com
Page 10 of 12