This document describes RainCode's scripting language. This language will enable you to define properties that can be asserted for pieces of source code, and to define metrics that can be measured. You can also write scripts that will perform systematic changes on your source file, to improve their quality, their readability or to make them compliant to some form of standard.
While some of RainCode's most peculiar concepts are described extensively, elementary programming issues such as values, data types, variables, etc... are considered as part of the background of any reasonably technical reader. Similarly, the user's guide approach, with small examples on which more elaborate issues are introduced gradually is replaced by a more concise reference manual style, which is more appropriate for technically educated readers.
This document focuses on RainCode's syntax and semantics, in an entirely language-independent way, in the sense that the peculiarities of the analysis of Cobol PL/1, or Ada (or any other language for which a RainCode-compatible parser exists) parse trees are not covered. The language used to write scripts for Cobol is not Cobol-dependant in any way. The concepts - variables, data types, etc...- are independent from Cobol. The only part that depends on Cobol is the data structure that describes the input file to analyse. This data structure reflects Cobol's syntactical definition as well as some semantic information.
Hence, this document alone is not sufficient to take reasonable
advantage of the various facilities of RainCode. One
must also consult the class libraries that describe the parse tree
to analyze, and the various environments
provided with RainCode. An environment is made of a number of logically
connected routines that can be used for
common computing purposes. For instance, RainCode includes a
STR environment
environment for character string manipulation
primitives, a
SYS environment
that encapsulates system issues, etc...
In the various grammar rules presented in this document, <void>
denotes the empty string.