RAQUEL the Architecture

Recursive Parameters

Certain RAQUEL operators and assignments take statements or expressions as parameters. The statements/expressions refer to scalar data that is contained within the relation(s) concerned. However, if a relation can itself contain nested relations, then some of these statements/expressions may refer to the nested relational values.

For this reason, and also because it is simpler for the user to write all expressions and statements in the same style and with the same syntactic and semantic rules, these parameter statements/expressions are tokenised, compacted and parsed in an identical way to that in which the relational statements and expressions containing the parameters are treated.

Consequently it is preferable to use the same tokeniser, compactor and parser code to deal with both the RAQUEL statements & expressions and the statements & expressions that appear as parameters within the RAQUEL statements & expressions.

Thus there is a module in the input stack which inspects the parse tree of RAQUEL statements & expressions, and for the relevant operators/assignments, recursively applies the tokeniser, compactor and parser again to those parameters which are also statements or expressions. Note that it is recursive because it is possible for the parameter statements/expresssions to also contain operators/assignments that utilise parameter statements/expresssions, and so on recursively to any level of nesting. This is because relations may contain nested relation values which themselves contain nested relation values, and so on, to any required depth of nesting.

The following summarises the documentation available on this recursive handling.