Recipe files are expressed using a programming language. Since recipe files are intended to manipulate directory attributes and their values, which are generally thought of most naturally as strings or lists of strings, the recipe language is rather string oriented. Recipe file syntax includes C-like if...then...else statements and assignment statements; plus strings and list data structures; plus special operators and functions (mostly based on Sieve), especially string and list functions, and also including some special directory related functions; and the special template...endtemplate statement, used to provide essentially a "picture" of the directory output.
With simple recipe files, often the task to be performed is to perform a few complex directory attribute transformations initially, and then copy the input directory attributes (or expressions based on those directory attributes) to the output directory attributes. Thus a typical simple recipe file can have the form of some initial C type programming statements, performing some more complex directory attribute transformations, and then a "template" statement describing the directory output.
Details of the recipe programming language are described in the subsections below.