From Mug '97
Input files are interpreted as whitespace-delimited words.
Words in the form $n (dollars-integer) are interpreted as parameters and are replaced with the n-th positional argument.
These words are reserved:
ADD CREATE DESTROY PRINT REACT REMOVE MIX
Strings may contain all printable characters.
Strings containing whitespace, or in the form $n, or which are the same as reserved words must be delimited by double quotes (").
VCL commands operate on a specific type of object (usually molecules) and will process any kind of object which contains that object type (e.g., molecules in a container or set).
A VCL set can contain any number of objects of any type.
A VCL container only contains molecules which are never implicitly combined with molecules in other containers. E.g., when REACTing a set of molecules, all molecules in the set participate; when REACTing a set of containers, the reaction can occur only among molecules in each container.
ADD from-object to-object [to-object..]Add (copy) molecules from object(s) to other object(s). Objects may be molecules, containers containing molecules, or sets containing such objects. This is a successful no-op if the from-object does not contain molecule(s). If from-object is not an existing name, it is interpreted as a SMILES (in which case it is an error if it's not a valid SMILES).
CREATE CONTAINER name [object [object..] ]Create a named object. A name is always required, it is an error if it collides with the name of an existing object. Container, molecule, and set contents are optional: if missing, an empty object will be created.
CREATE MOLECULE name [smiles]
CREATE SET name [object [object..] ]
CREATE PATTERN name smarts
CREATE TRANSFORMATION name smirks
DESTROY object [object..]
Destroy object(s) (and their contents) by name.
PRINT object|"string" [object|"string"..]
Print literal string(s), objects' descriptions, or a combination of such, followed by a newline.
REACT container transformation [product_container]
Apply a generic transformation to reactant molecules in a container to produce product molecules. If a product_container(s) ARE speciifed, products are added to those objects and the reactant objects remain unchanged. If product_container(s) ARE NOT speciifed, reacting molecules are removed from the reactant container(s) and replaced with product molecules. This is a successful no-op if the reactant object(s) do not contain molecule(s) which match the generic reactants in the transformation.
REMOVE molecule | pattern | smarts [object]Remove molecules from the object if given (if not, from the current set of all objects). Molecules to be removed may be specified as the name of a molecule or pattern; if the first argument is not an existing name, it is interpreted as a SMARTS. This is a successful no-op if the target object(s) do not contain molecule(s) which match the request.
MIX from-container [from-container..] to-container
Like ADD but with multiple sources and a single destination.