As with general synthesis, Xconq has a number of naming methods available.
An implementation is free to define additional naming methods.
NamingMethod: random
names......
This method picks a name from the given list of names and removes that name from the list
NamingMethod: junky
This method produces a gobbledy-gook name, very techy-looking.
NamingMethod: grammar
root max-length rules...
This method defines a grammar, where root is the root symbol, max-length is a limit on the length of the generated names (in characters), and rules is a list of rules of the form
(symbol ([sym] [weight] symbol/string/list [n] ...))
The generation process works by substituting one of the rule's alternatives
for the symbol, starting with the root symbol.
The probability of an alternative being selected is arrived at by
adding up the optional weights weight (assuming missing weights
to be 1
), and choosing with a probability of the weight
divided by the total sum of weights.
Thus the weights need not add up to any particular value.
Strings get used directly. If a symbol in the rule's chosen expansion does not appear as the lefthand side in any rule, then it will be handled as a string, otherwise it will be expanded in turn. If the symbol matches a namer's name, then that namer will be run (passing the same object??) and its result incorporated. A list should be a list of strings and symbols, and the expansion of each will be concatenated.
GlobalConstant: any
GlobalConstant: or
GlobalConstant: reject
A special rule headed by reject
is a list of substrings
that should not appear in a generated name; this is a convenient
way to filter out particularly unlovely results.
GlobalConstant: capitalize
Directs capitalization of a nonterminal.
[text is not actually different from a namer?]
Form: text
[symbol/id] method rejects...
[elsewhere?]
GlobalVariable: action-messages
patterns
GlobalVariable: event-messages
patterns