return the series of the generating functions associated with a grammar
gfseries(spec, typ, var, tags)
labeling type; 'labeled' or 'unlabeled'
variable to use in the generating functions
(optional) list of lists; each list contains a variable tag followed by the Epsilon nonterminal name(s) associated with that tag
The gfseries function returns a table containing the generating functions, in series form, that count the objects associated with each production in the grammar.
Each nonterminal has an associated equation which uses the nonterminal name as the name of the equation. For example, A⁡z would be the generating function for A.
If the objects are labeled, exponential generating functions are produced. If the objects are unlabeled, ordinary generating functions are used.
Objects can be marked (tagged) by forming the product of that object with a named Epsilon and associating a tag with that Epsilon.
If the tag is a variable name, the resulting series has an extra variable that marks the object. The same tag can be associated with more than one Epsilon name. The tag does not need to be a variable.
The gfseries function uses the series command to generate the series. Thus, the order of the result is controlled by the Order environment variable.
For information on how to write specifications, see combstruct and combstruct[specification].
An example of a labeled binary tree.
tree ≔ T=Union⁡L,Prod⁡N,T,T,L=Atom,N=Atom:
Mark the leaf nodes of an unlabeled general tree.
tree1 ≔ T=Union⁡L,Prod⁡N,Set⁡T,L=Prod⁡leaf,Atom,leaf=Ε,N=Atom:
Order ≔ 10
Download Help Document