The basic elements of the Yodl grammar are identifiers, names, numbers and
parameter lists.

description(

    dit(Identifiers) are names that can have a special meaning in the Yodl
    language. E.g., the sequence tt(INCLUDEFILE) is such an identifier: when
    followed by a filename in parentheses, Yodl will take some special action
    (in this case, read the file). 
    
    Identifiers may consist of uppercase or lowercase characters. No other
    characters may appear in them.
    
    dit(A name) is a `one-word' sequence, i.e., a series of characters where
    no spaces, tabs or newlines appear. E.g., the Yodl language requires a name
    to follow the tt(INCLUDEFILE) identifier, enclosed in parentheses.
    
    dit(Numbers) consist of digits. Yodl seldom uses numbers, but they are
    required. 
    
    dit(Parameter lists) are the arguments that names or numbers that are
    arguments to a Yodl command. A parameter list must be enclosed by
    parentheses. 

)

Basically, Yodl only does `something special' when it encounters a recognized 
identifier, followed by a parameter list. Sometimes an identifier may be 
followed by more than one parameter list, in that case, the action requires 
more than one argument. The grammar of Yodl requires that the identifier and 
its first parameter list follow right after each other, without intervening 
spaces. That means that

verb(somemacro (argument))

will not start any Yodl action (supposing that tt(somemacro) is the name of a 
defined macro), since the parameter list and the identifier are separated by a 
space. The Yodl grammar is very strict in this sence; this rule however 
simplifies the parsing process of the input. 

To make life easier for those who write documentation using Yodl, there bf(may) 
be spaces or newlines between the parameter lists (i.e., between the first and 
second parameter list, between the second and third, and so on). Therefore, 
assuming that tt(somemacro) now is defined as a macro having three arguments, 
the following will work:

verb(somemacro(argument one)
    (and another argument, number two)
    (and the last one))

Summarized, an identified macro is only expanded by Yodl when it is followed by 
a parameter list without spaces in between. Further parameter lists may follow 
separated by spaces, tabs or newline characters. All required parameter lists 
must however be in the same input file.


