
META TOPICPARENT 
name="FstExtensions" 
MultiPushdown Transducer Library (MPDTs) 
 vector<typename Arc::Label> . From the command line the parentheses and assignments are passed from a file of lines of label pairs, with a third column showing the stack affiliation (in a 1based enumeration) of each pair
(using the flag mpdt_parentheses ). 

< <  The implementation supports multiple stacks, but the library only exposes two stacks. In addition there are three pushpop protocols, READ_RESTRICT , WRITE_RESTRICT , NO_RESTRICT . With READ_RESTRICT , one can only read (i.e. pop) from the first empty stack. So if the first stack is not empty, one can continue to write (push) to the second stack, but one cannot pop. With WRITE_RESTRICT , one can only write (i.e. push) to the first empty stack. With NO_RESTRICT , as the name implies, there are no restrictions on readwrite operations. Note that a NO_RESTRICT machine is Turingequivalent. The default configuration is READ_RESTRICT . 
> >  The implementation supports multiple stacks, but the library only exposes two stacks. In addition there are three pushpop disciplines, READ_RESTRICT , WRITE_RESTRICT , NO_RESTRICT . With READ_RESTRICT , one can only read (i.e. pop) from the first empty stack. So if the first stack is not empty, one can continue to write (push) to the second stack, but one cannot pop. With WRITE_RESTRICT , one can only write (i.e. push) to the first empty stack. With NO_RESTRICT , as the name implies, there are no restrictions on readwrite operations. Note that a NO_RESTRICT machine is Turingequivalent. The default configuration is READ_RESTRICT . 

The following operations, many which have FST analogues (but are distinguished in C++ by having a vector<pair<Label, Label>> parenthesis pair argument), are provided for MPDTs: 