// This file was created by the GrammarConverter from the definitions 
//contained in gr.txt.
// The Grammar class just creates the Diagrams in it's initialization 
// routine and adds the diagrams created, to the vector 'diagramList'.
// The CurryDiagram class accesses the Diagrams by creating an instance 
// of class Grammar and accessing the vector diagramList.


import java.util.Vector;

public class Grammar {

public Grammar() {

//*******************************

Vector vector2 = new Vector();
vector2.addElement(new NonTerminalDiagram("Exports"));
vector2.addElement(new EmptyDiagram());

Vector vector1 = new Vector();
vector1.addElement(new TerminalDiagram("module"));
vector1.addElement(new NonTerminalDiagram("ModuleID"));
vector1.addElement(new DecisionDiagram(vector2));
vector1.addElement(new TerminalDiagram("where"));
vector1.addElement(new NonTerminalDiagram("Block"));

start = new SequenceDiagram(vector1);

//*******************************

vector1.removeAllElements();
vector1.addElement(new NonTerminalDiagram("ModuleIdentifier"));

ModuleID = new SequenceDiagram(vector1);

//*******************************

vector1.removeAllElements();
vector1.addElement(new TerminalDiagram("("));
vector1.addElement(new LoopDiagram(
    new NonTerminalDiagram("Export"),
    new TerminalDiagram(",")));
vector1.addElement(new TerminalDiagram(")"));

Exports = new SequenceDiagram(vector1);

//*******************************

Vector vector4 = new Vector();
vector4.addElement(new TerminalDiagram("module"));
vector4.addElement(new NonTerminalDiagram("ModuleID"));

Vector vector3 = new Vector();
vector3.addElement(new NonTerminalDiagram("QTypeConstrID"));
vector3.addElement(new TerminalDiagram("(..)"));

vector2.removeAllElements();
vector2.addElement(new NonTerminalDiagram("QFunctionName"));
vector2.addElement(new NonTerminalDiagram("QTypeConstrID"));
vector2.addElement(new SequenceDiagram(vector3));
vector2.addElement(new SequenceDiagram(vector4));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

Export = new SequenceDiagram(vector1);

//*******************************

vector3.removeAllElements();
vector3.addElement(new TerminalDiagram("("));
vector3.addElement(new NonTerminalDiagram("QInfixOpID"));
vector3.addElement(new TerminalDiagram(")"));

vector2.removeAllElements();
vector2.addElement(new SequenceDiagram(vector3));
vector2.addElement(new NonTerminalDiagram("QFunctionID"));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

QFunctionName = new SequenceDiagram(vector1);

//*******************************

vector3.removeAllElements();
vector3.addElement(new NonTerminalDiagram("ModuleID"));
vector3.addElement(new TerminalDiagram("."));

vector2.removeAllElements();
vector2.addElement(new SequenceDiagram(vector3));
vector2.addElement(new EmptyDiagram());

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));
vector1.addElement(new NonTerminalDiagram("TypeConstrID"));

QTypeConstrID = new SequenceDiagram(vector1);

//*******************************

vector1.removeAllElements();
vector1.addElement(new NonTerminalDiagram("Identifier"));

TypeConstrID = new SequenceDiagram(vector1);

//*******************************

vector3.removeAllElements();
vector3.addElement(new NonTerminalDiagram("ModuleID"));
vector3.addElement(new TerminalDiagram("."));

vector2.removeAllElements();
vector2.addElement(new SequenceDiagram(vector3));
vector2.addElement(new EmptyDiagram());

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));
vector1.addElement(new NonTerminalDiagram("InfixOpID"));

QInfixOpID = new SequenceDiagram(vector1);

//*******************************

vector3.removeAllElements();
vector3.addElement(new NonTerminalDiagram("ModuleID"));
vector3.addElement(new TerminalDiagram("."));

vector2.removeAllElements();
vector2.addElement(new SequenceDiagram(vector3));
vector2.addElement(new EmptyDiagram());

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));
vector1.addElement(new NonTerminalDiagram("FunctionID"));

QFunctionID = new SequenceDiagram(vector1);

//*******************************

vector1.removeAllElements();
vector1.addElement(new NonTerminalDiagram("Identifier"));

FunctionID = new SequenceDiagram(vector1);

//*******************************

Vector vector5 = new Vector();
vector5.addElement(new NonTerminalDiagram("BlockDecls"));
vector5.addElement(new EmptyDiagram());

vector4.removeAllElements();
vector4.addElement(new NonTerminalDiagram("FixityDecls"));
vector4.addElement(new EmptyDiagram());

vector3.removeAllElements();
vector3.addElement(new NonTerminalDiagram("PragmaDecls"));
vector3.addElement(new EmptyDiagram());

vector2.removeAllElements();
vector2.addElement(new NonTerminalDiagram("ImportDecls"));
vector2.addElement(new EmptyDiagram());

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));
vector1.addElement(new DecisionDiagram(vector3));
vector1.addElement(new DecisionDiagram(vector4));
vector1.addElement(new DecisionDiagram(vector5));
vector1.addElement(new TerminalDiagram("EOF"));

Block = new SequenceDiagram(vector1);

//*******************************

vector2.removeAllElements();
vector2.addElement(new LoopDiagram(
    new NonTerminalDiagram("ImportDeclaration"),
    new TerminalDiagram(";")));

vector1.removeAllElements();
vector1.addElement(new SequenceDiagram(vector2));

ImportDecls = new SequenceDiagram(vector1);

//*******************************

vector1.removeAllElements();
vector1.addElement(new LoopDiagram(
    new NonTerminalDiagram("PragmaDeclaration"),
    new TerminalDiagram(";")));

PragmaDecls = new SequenceDiagram(vector1);

//*******************************

vector1.removeAllElements();
vector1.addElement(new LoopDiagram(
    new NonTerminalDiagram("FixityDeclaration"),
    new TerminalDiagram(";")));

FixityDecls = new SequenceDiagram(vector1);

//*******************************

vector1.removeAllElements();
vector1.addElement(new LoopDiagram(
    new NonTerminalDiagram("BlockDeclaration"),
    new TerminalDiagram(";")));

BlockDecls = new SequenceDiagram(vector1);

//*******************************

Vector vector7 = new Vector();
vector7.addElement(new NonTerminalDiagram("ImportRestr"));

Vector vector6 = new Vector();
vector6.addElement(new SequenceDiagram(vector7));
vector6.addElement(new EmptyDiagram());

vector5.removeAllElements();
vector5.addElement(new TerminalDiagram("as"));
vector5.addElement(new NonTerminalDiagram("ModuleID"));

vector4.removeAllElements();
vector4.addElement(new SequenceDiagram(vector5));
vector4.addElement(new EmptyDiagram());

vector3.removeAllElements();
vector3.addElement(new TerminalDiagram("qualified"));

vector2.removeAllElements();
vector2.addElement(new SequenceDiagram(vector3));
vector2.addElement(new EmptyDiagram());

vector1.removeAllElements();
vector1.addElement(new TerminalDiagram("import"));
vector1.addElement(new DecisionDiagram(vector2));
vector1.addElement(new NonTerminalDiagram("ModuleID"));
vector1.addElement(new DecisionDiagram(vector4));
vector1.addElement(new DecisionDiagram(vector6));

ImportDeclaration = new SequenceDiagram(vector1);

//*******************************

vector4.removeAllElements();
vector4.addElement(new TerminalDiagram("hiding"));
vector4.addElement(new TerminalDiagram("("));
vector4.addElement(new LoopDiagram(
    new NonTerminalDiagram("Import"),
    new TerminalDiagram(",")));
vector4.addElement(new TerminalDiagram(")"));

vector3.removeAllElements();
vector3.addElement(new TerminalDiagram("("));
vector3.addElement(new LoopDiagram(
    new NonTerminalDiagram("Import"),
    new TerminalDiagram(",")));
vector3.addElement(new TerminalDiagram(")"));

vector2.removeAllElements();
vector2.addElement(new SequenceDiagram(vector3));
vector2.addElement(new SequenceDiagram(vector4));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

ImportRestr = new SequenceDiagram(vector1);

//*******************************

vector3.removeAllElements();
vector3.addElement(new NonTerminalDiagram("TypeConstrID"));
vector3.addElement(new TerminalDiagram("(..)"));

vector2.removeAllElements();
vector2.addElement(new NonTerminalDiagram("FunctionName"));
vector2.addElement(new NonTerminalDiagram("TypeConstrID"));
vector2.addElement(new SequenceDiagram(vector3));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

Import = new SequenceDiagram(vector1);

//*******************************

vector3.removeAllElements();
vector3.addElement(new TerminalDiagram("("));
vector3.addElement(new NonTerminalDiagram("InfixOpID"));
vector3.addElement(new TerminalDiagram(")"));

vector2.removeAllElements();
vector2.addElement(new SequenceDiagram(vector3));
vector2.addElement(new NonTerminalDiagram("FunctionID"));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

FunctionName = new SequenceDiagram(vector1);

//*******************************

vector2.removeAllElements();
vector2.addElement(new TerminalDiagram("flex"));
vector2.addElement(new TerminalDiagram("rigid"));

vector1.removeAllElements();
vector1.addElement(new TerminalDiagram("pragma"));
vector1.addElement(new DecisionDiagram(vector2));

PragmaDeclaration = new SequenceDiagram(vector1);

//*******************************

vector1.removeAllElements();
vector1.addElement(new NonTerminalDiagram("FixityDeclaration"));

FixityDeclarationList = new SequenceDiagram(vector1);

//*******************************

vector2.removeAllElements();
vector2.addElement(new NonTerminalDiagram("TypeSynonymDeclaration"));
vector2.addElement(new NonTerminalDiagram("DataDeclaration"));
vector2.addElement(new NonTerminalDiagram("FunctionDeclaration"));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

BlockDeclaration = new SequenceDiagram(vector1);

//*******************************

vector1.removeAllElements();
vector1.addElement(new NonTerminalDiagram("FixityKeyWord"));
vector1.addElement(new NonTerminalDiagram("Integer"));
vector1.addElement(new LoopDiagram(
    new NonTerminalDiagram("Infixed"),
    new TerminalDiagram(",")));

FixityDeclaration = new SequenceDiagram(vector1);

//*******************************

vector2.removeAllElements();
vector2.addElement(new TerminalDiagram("infix"));
vector2.addElement(new TerminalDiagram("infixr"));
vector2.addElement(new TerminalDiagram("infixl"));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

FixityKeyWord = new SequenceDiagram(vector1);

//*******************************

vector1.removeAllElements();
vector1.addElement(new TerminalDiagram("type"));
vector1.addElement(new NonTerminalDiagram("TypeConstrID"));
vector1.addElement(new LoopDiagram(
    new NonTerminalDiagram("TypeVarID"),
    new EmptyDiagram()));
vector1.addElement(new TerminalDiagram("="));
vector1.addElement(new NonTerminalDiagram("TypeExpr"));

TypeSynonymDeclaration = new SequenceDiagram(vector1);

//*******************************

vector1.removeAllElements();
vector1.addElement(new NonTerminalDiagram("Identifier"));

TypeVarID = new SequenceDiagram(vector1);

//*******************************

vector3.removeAllElements();
vector3.addElement(new TerminalDiagram("->"));
vector3.addElement(new NonTerminalDiagram("TypeExpr"));

vector2.removeAllElements();
vector2.addElement(new SequenceDiagram(vector3));
vector2.addElement(new EmptyDiagram());

vector1.removeAllElements();
vector1.addElement(new NonTerminalDiagram("TypeAppl"));
vector1.addElement(new DecisionDiagram(vector2));

TypeExpr = new SequenceDiagram(vector1);

//*******************************

vector1.removeAllElements();
vector1.addElement(new NonTerminalDiagram("QTypeConstrID"));
vector1.addElement(new LoopDiagram(
    new NonTerminalDiagram("SimpleTypeExpr"),
    new EmptyDiagram()));

TypeAppl = new SequenceDiagram(vector1);

//*******************************

vector6.removeAllElements();
vector6.addElement(new TerminalDiagram("["));
vector6.addElement(new NonTerminalDiagram("TypeExpr"));
vector6.addElement(new TerminalDiagram("]"));

vector5.removeAllElements();
vector5.addElement(new TerminalDiagram("("));
vector5.addElement(new LoopDiagram(
    new NonTerminalDiagram("TypeExpr"),
    new EmptyDiagram()));
vector5.addElement(new TerminalDiagram(")"));

vector4.removeAllElements();
vector4.addElement(new TerminalDiagram("("));
vector4.addElement(new NonTerminalDiagram("TypeExpr"));
vector4.addElement(new TerminalDiagram(")"));

vector3.removeAllElements();
vector3.addElement(new NonTerminalDiagram("TypeVarID"));
vector3.addElement(new TerminalDiagram("_"));

vector2.removeAllElements();
vector2.addElement(new NonTerminalDiagram("QTypeConstrID"));
vector2.addElement(new DecisionDiagram(vector3));
vector2.addElement(new TerminalDiagram("()"));
vector2.addElement(new SequenceDiagram(vector4));
vector2.addElement(new SequenceDiagram(vector5));
vector2.addElement(new SequenceDiagram(vector6));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

SimpleTypeExpr = new SequenceDiagram(vector1);

//*******************************

vector1.removeAllElements();
vector1.addElement(new TerminalDiagram("data"));
vector1.addElement(new NonTerminalDiagram("TypeDeclaration"));

DataDeclaration = new SequenceDiagram(vector1);

//*******************************

vector1.removeAllElements();
vector1.addElement(new NonTerminalDiagram("TypeConstrID"));
vector1.addElement(new LoopDiagram(
    new NonTerminalDiagram("TypeVarID"),
    new EmptyDiagram()));
vector1.addElement(new TerminalDiagram("="));
vector1.addElement(new NonTerminalDiagram("ConstrDeclaration"));

TypeDeclaration = new SequenceDiagram(vector1);

//*******************************

vector1.removeAllElements();
vector1.addElement(new NonTerminalDiagram("DataConstrID"));
vector1.addElement(new LoopDiagram(
    new NonTerminalDiagram("SimpleTypeExpr"),
    new EmptyDiagram()));

ConstrDeclaration = new SequenceDiagram(vector1);

//*******************************

vector1.removeAllElements();
vector1.addElement(new NonTerminalDiagram("Identifier"));

DataConstrID = new SequenceDiagram(vector1);

//*******************************

vector2.removeAllElements();
vector2.addElement(new TerminalDiagram("->"));
vector2.addElement(new NonTerminalDiagram("FunctionType"));

vector1.removeAllElements();
vector1.addElement(new NonTerminalDiagram("SimpleType"));
vector1.addElement(new LoopDiagram(
    new EmptyDiagram(),
        new SequenceDiagram(vector2)));

FunctionType = new SequenceDiagram(vector1);

//*******************************

vector3.removeAllElements();
vector3.addElement(new NonTerminalDiagram("Identifier"));
vector3.addElement(new LoopDiagram(
    new EmptyDiagram(),
    new NonTerminalDiagram("ConstrArgType")));

vector2.removeAllElements();
vector2.addElement(new SequenceDiagram(vector3));
vector2.addElement(new NonTerminalDiagram("CommonFactorType"));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

SimpleType = new SequenceDiagram(vector1);

//*******************************

vector2.removeAllElements();
vector2.addElement(new NonTerminalDiagram("Identifier"));
vector2.addElement(new NonTerminalDiagram("CommonFactorType"));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

ConstrArgType = new SequenceDiagram(vector1);

//*******************************

vector4.removeAllElements();
vector4.addElement(new TerminalDiagram("("));
vector4.addElement(new LoopDiagram(
    new NonTerminalDiagram("FunctionType"),
    new TerminalDiagram(",")));
vector4.addElement(new TerminalDiagram(")"));

vector3.removeAllElements();
vector3.addElement(new TerminalDiagram("["));
vector3.addElement(new NonTerminalDiagram("FunctionType"));
vector3.addElement(new TerminalDiagram("]"));

vector2.removeAllElements();
vector2.addElement(new NonTerminalDiagram("Unit"));
vector2.addElement(new NonTerminalDiagram("Anonymous"));
vector2.addElement(new SequenceDiagram(vector3));
vector2.addElement(new SequenceDiagram(vector4));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

CommonFactorType = new SequenceDiagram(vector1);

//*******************************

vector2.removeAllElements();
vector2.addElement(new NonTerminalDiagram("Signature"));
vector2.addElement(new NonTerminalDiagram("EvalAnnot"));
vector2.addElement(new NonTerminalDiagram("Equat"));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

FunctionDeclaration = new SequenceDiagram(vector1);

//*******************************

vector1.removeAllElements();
vector1.addElement(new NonTerminalDiagram("FunctionNames"));
vector1.addElement(new TerminalDiagram("::"));
vector1.addElement(new NonTerminalDiagram("TypeExpr"));

Signature = new SequenceDiagram(vector1);

//*******************************

vector1.removeAllElements();
vector1.addElement(new LoopDiagram(
    new NonTerminalDiagram("FunctionName"),
    new TerminalDiagram(",")));

FunctionNames = new SequenceDiagram(vector1);

//*******************************

vector1.removeAllElements();
vector1.addElement(new NonTerminalDiagram("FunctionNames"));
vector1.addElement(new TerminalDiagram("eval"));
vector1.addElement(new NonTerminalDiagram("Annotation"));

EvalAnnot = new SequenceDiagram(vector1);

//*******************************

vector2.removeAllElements();
vector2.addElement(new TerminalDiagram("flex"));
vector2.addElement(new TerminalDiagram("rigid"));
vector2.addElement(new TerminalDiagram("choice"));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

Annotation = new SequenceDiagram(vector1);

//*******************************

Vector vector8 = new Vector();
vector8.addElement(new TerminalDiagram("where"));
vector8.addElement(new NonTerminalDiagram("LocalDefs"));

vector7.removeAllElements();
vector7.addElement(new SequenceDiagram(vector8));
vector7.addElement(new EmptyDiagram());

vector6.removeAllElements();
vector6.addElement(new NonTerminalDiagram("FunLHS"));
vector6.addElement(new NonTerminalDiagram("CondExprs"));
vector6.addElement(new DecisionDiagram(vector7));

vector5.removeAllElements();
vector5.addElement(new TerminalDiagram("where"));
vector5.addElement(new NonTerminalDiagram("LocalDefs"));

vector4.removeAllElements();
vector4.addElement(new SequenceDiagram(vector5));
vector4.addElement(new EmptyDiagram());

vector3.removeAllElements();
vector3.addElement(new NonTerminalDiagram("FunLHS"));
vector3.addElement(new TerminalDiagram("="));
vector3.addElement(new NonTerminalDiagram("Expr"));
vector3.addElement(new DecisionDiagram(vector4));

vector2.removeAllElements();
vector2.addElement(new SequenceDiagram(vector3));
vector2.addElement(new SequenceDiagram(vector6));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

Equat = new SequenceDiagram(vector1);

//*******************************

vector4.removeAllElements();
vector4.addElement(new NonTerminalDiagram("SimplePattern"));
vector4.addElement(new NonTerminalDiagram("InfixOpID"));
vector4.addElement(new NonTerminalDiagram("SimplePattern"));

vector3.removeAllElements();
vector3.addElement(new NonTerminalDiagram("FunctionName"));
vector3.addElement(new LoopDiagram(
    new NonTerminalDiagram("SimplePattern"),
    new EmptyDiagram()));

vector2.removeAllElements();
vector2.addElement(new SequenceDiagram(vector3));
vector2.addElement(new SequenceDiagram(vector4));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

FunLHS = new SequenceDiagram(vector1);

//*******************************

vector8.removeAllElements();
vector8.addElement(new TerminalDiagram(":"));
vector8.addElement(new NonTerminalDiagram("Pattern"));

vector7.removeAllElements();
vector7.addElement(new SequenceDiagram(vector8));
vector7.addElement(new EmptyDiagram());

vector6.removeAllElements();
vector6.addElement(new NonTerminalDiagram("SimplePattern"));
vector6.addElement(new DecisionDiagram(vector7));

vector5.removeAllElements();
vector5.addElement(new TerminalDiagram(":"));
vector5.addElement(new NonTerminalDiagram("Pattern"));

vector4.removeAllElements();
vector4.addElement(new SequenceDiagram(vector5));
vector4.addElement(new EmptyDiagram());

vector3.removeAllElements();
vector3.addElement(new NonTerminalDiagram("QDataConstrID"));
vector3.addElement(new LoopDiagram(
    new NonTerminalDiagram("Pattern"),
    new EmptyDiagram()));
vector3.addElement(new DecisionDiagram(vector4));

vector2.removeAllElements();
vector2.addElement(new SequenceDiagram(vector3));
vector2.addElement(new SequenceDiagram(vector6));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

Pattern = new SequenceDiagram(vector1);

//*******************************

vector3.removeAllElements();
vector3.addElement(new NonTerminalDiagram("ModuleID"));
vector3.addElement(new TerminalDiagram("."));

vector2.removeAllElements();
vector2.addElement(new SequenceDiagram(vector3));
vector2.addElement(new EmptyDiagram());

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));
vector1.addElement(new NonTerminalDiagram("DataConstrID"));

QDataConstrID = new SequenceDiagram(vector1);

//*******************************

vector7.removeAllElements();
vector7.addElement(new TerminalDiagram("["));
vector7.addElement(new LoopDiagram(
    new NonTerminalDiagram("Pattern"),
    new TerminalDiagram(",")));
vector7.addElement(new TerminalDiagram("]"));

vector6.removeAllElements();
vector6.addElement(new TerminalDiagram("("));
vector6.addElement(new NonTerminalDiagram("Pattern"));
vector6.addElement(new TerminalDiagram(")"));

vector5.removeAllElements();
vector5.addElement(new TerminalDiagram("("));
vector5.addElement(new LoopDiagram(
    new NonTerminalDiagram("Pattern"),
    new TerminalDiagram(",")));
vector5.addElement(new TerminalDiagram(")"));

vector4.removeAllElements();
vector4.addElement(new NonTerminalDiagram("VariableID"));
vector4.addElement(new TerminalDiagram("_"));

vector3.removeAllElements();
vector3.addElement(new DecisionDiagram(vector4));

vector2.removeAllElements();
vector2.addElement(new SequenceDiagram(vector3));
vector2.addElement(new NonTerminalDiagram("QDataConstrID"));
vector2.addElement(new NonTerminalDiagram("Literal"));
vector2.addElement(new SequenceDiagram(vector5));
vector2.addElement(new SequenceDiagram(vector6));
vector2.addElement(new SequenceDiagram(vector7));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

SimplePattern = new SequenceDiagram(vector1);

//*******************************

vector1.removeAllElements();
vector1.addElement(new NonTerminalDiagram("Identifier"));

VariableID = new SequenceDiagram(vector1);

//*******************************

vector1.removeAllElements();
vector1.addElement(new LoopDiagram(
    new NonTerminalDiagram("ValueDeclaration"),
    new TerminalDiagram(";")));

LocalDefs = new SequenceDiagram(vector1);

//*******************************

vector3.removeAllElements();
vector3.addElement(new LoopDiagram(
    new NonTerminalDiagram("VariableID"),
    new TerminalDiagram(",")));
vector3.addElement(new TerminalDiagram("free"));

vector2.removeAllElements();
vector2.addElement(new NonTerminalDiagram("FunctionDeclaration"));
vector2.addElement(new NonTerminalDiagram("PatternDeclaration"));
vector2.addElement(new SequenceDiagram(vector3));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

ValueDeclaration = new SequenceDiagram(vector1);

//*******************************

vector3.removeAllElements();
vector3.addElement(new TerminalDiagram("where"));
vector3.addElement(new NonTerminalDiagram("LocalDefs"));

vector2.removeAllElements();
vector2.addElement(new SequenceDiagram(vector3));
vector2.addElement(new EmptyDiagram());

vector1.removeAllElements();
vector1.addElement(new NonTerminalDiagram("Pattern"));
vector1.addElement(new TerminalDiagram("="));
vector1.addElement(new NonTerminalDiagram("Expr"));
vector1.addElement(new DecisionDiagram(vector2));

PatternDeclaration = new SequenceDiagram(vector1);

//*******************************

vector2.removeAllElements();
vector2.addElement(new NonTerminalDiagram("CondExprs"));
vector2.addElement(new EmptyDiagram());

vector1.removeAllElements();
vector1.addElement(new TerminalDiagram("|"));
vector1.addElement(new NonTerminalDiagram("Expr"));
vector1.addElement(new TerminalDiagram("="));
vector1.addElement(new NonTerminalDiagram("Expr"));
vector1.addElement(new DecisionDiagram(vector2));

CondExprs = new SequenceDiagram(vector1);

//*******************************

Vector vector9 = new Vector();
vector9.addElement(new NonTerminalDiagram("FunctExpr"));

vector8.removeAllElements();
vector8.addElement(new TerminalDiagram("-"));
vector8.addElement(new NonTerminalDiagram("Expr"));

vector7.removeAllElements();
vector7.addElement(new NonTerminalDiagram("Expr"));
vector7.addElement(new NonTerminalDiagram("QInfixOpID"));
vector7.addElement(new NonTerminalDiagram("Expr"));

vector6.removeAllElements();
vector6.addElement(new TerminalDiagram("do"));
vector6.addElement(new LoopDiagram(
    new NonTerminalDiagram("Stmt"),
    new TerminalDiagram(";")));

vector5.removeAllElements();
vector5.addElement(new TerminalDiagram("if"));
vector5.addElement(new NonTerminalDiagram("Expr"));
vector5.addElement(new TerminalDiagram("then"));
vector5.addElement(new NonTerminalDiagram("Expr"));
vector5.addElement(new TerminalDiagram("else"));
vector5.addElement(new NonTerminalDiagram("Expr"));

vector4.removeAllElements();
vector4.addElement(new TerminalDiagram("let"));
vector4.addElement(new NonTerminalDiagram("LocalDefs"));
vector4.addElement(new TerminalDiagram("in"));
vector4.addElement(new NonTerminalDiagram("Expr"));

vector3.removeAllElements();
vector3.addElement(new TerminalDiagram("\\"));
vector3.addElement(new LoopDiagram(
    new NonTerminalDiagram("SimplePattern"),
    new EmptyDiagram()));
vector3.addElement(new TerminalDiagram("->"));
vector3.addElement(new NonTerminalDiagram("Expr"));

vector2.removeAllElements();
vector2.addElement(new SequenceDiagram(vector3));
vector2.addElement(new SequenceDiagram(vector4));
vector2.addElement(new SequenceDiagram(vector5));
vector2.addElement(new SequenceDiagram(vector6));
vector2.addElement(new SequenceDiagram(vector7));
vector2.addElement(new SequenceDiagram(vector8));
vector2.addElement(new SequenceDiagram(vector9));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

Expr = new SequenceDiagram(vector1);

//*******************************

vector2.removeAllElements();
vector2.addElement(new NonTerminalDiagram("FunctExpr"));
vector2.addElement(new EmptyDiagram());

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));
vector1.addElement(new NonTerminalDiagram("BasicExpr"));

FunctExpr = new SequenceDiagram(vector1);

//*******************************

vector2.removeAllElements();
vector2.addElement(new NonTerminalDiagram("QOptions"));
vector2.addElement(new NonTerminalDiagram("Literal"));
vector2.addElement(new TerminalDiagram("()"));
vector2.addElement(new NonTerminalDiagram("ExprOptions"));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

BasicExpr = new SequenceDiagram(vector1);

//*******************************

vector3.removeAllElements();
vector3.addElement(new TerminalDiagram("("));
vector3.addElement(new NonTerminalDiagram("QInfixOpID"));
vector3.addElement(new TerminalDiagram(")"));

vector2.removeAllElements();
vector2.addElement(new NonTerminalDiagram("QVariableID"));
vector2.addElement(new NonTerminalDiagram("QDataConstrID"));
vector2.addElement(new NonTerminalDiagram("QFunctionID"));
vector2.addElement(new SequenceDiagram(vector3));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

QOptions = new SequenceDiagram(vector1);

//*******************************

Vector vector11 = new Vector();
vector11.addElement(new TerminalDiagram("("));
vector11.addElement(new NonTerminalDiagram("QInfixOpID"));
vector11.addElement(new NonTerminalDiagram("Expr"));
vector11.addElement(new TerminalDiagram(")"));

Vector vector10 = new Vector();
vector10.addElement(new TerminalDiagram("("));
vector10.addElement(new NonTerminalDiagram("Expr"));
vector10.addElement(new NonTerminalDiagram("QInfixOpID"));
vector10.addElement(new TerminalDiagram(")"));

vector9.removeAllElements();
vector9.addElement(new TerminalDiagram("["));
vector9.addElement(new NonTerminalDiagram("Expr"));
vector9.addElement(new TerminalDiagram("|"));
vector9.addElement(new LoopDiagram(
    new NonTerminalDiagram("Qual"),
    new EmptyDiagram()));
vector9.addElement(new TerminalDiagram("]"));

vector8.removeAllElements();
vector8.addElement(new TerminalDiagram(","));
vector8.addElement(new LoopDiagram(
    new NonTerminalDiagram("Expr"),
    new EmptyDiagram()));

vector7.removeAllElements();
vector7.addElement(new SequenceDiagram(vector8));
vector7.addElement(new EmptyDiagram());

vector6.removeAllElements();
vector6.addElement(new TerminalDiagram("["));
vector6.addElement(new NonTerminalDiagram("Expr"));
vector6.addElement(new DecisionDiagram(vector7));
vector6.addElement(new TerminalDiagram("]"));

vector5.removeAllElements();
vector5.addElement(new TerminalDiagram("["));
vector5.addElement(new LoopDiagram(
    new NonTerminalDiagram("Expr"),
    new TerminalDiagram(",")));
vector5.addElement(new TerminalDiagram("]"));

vector4.removeAllElements();
vector4.addElement(new TerminalDiagram("("));
vector4.addElement(new LoopDiagram(
    new NonTerminalDiagram("Expr"),
    new TerminalDiagram(",")));
vector4.addElement(new TerminalDiagram(")"));

vector3.removeAllElements();
vector3.addElement(new TerminalDiagram("("));
vector3.addElement(new NonTerminalDiagram("Expr"));
vector3.addElement(new TerminalDiagram(")"));

vector2.removeAllElements();
vector2.addElement(new SequenceDiagram(vector3));
vector2.addElement(new SequenceDiagram(vector4));
vector2.addElement(new SequenceDiagram(vector5));
vector2.addElement(new SequenceDiagram(vector6));
vector2.addElement(new SequenceDiagram(vector9));
vector2.addElement(new SequenceDiagram(vector10));
vector2.addElement(new SequenceDiagram(vector11));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

ExprOptions = new SequenceDiagram(vector1);

//*******************************

vector3.removeAllElements();
vector3.addElement(new NonTerminalDiagram("Pattern"));
vector3.addElement(new TerminalDiagram("<-"));
vector3.addElement(new NonTerminalDiagram("Expr"));

vector2.removeAllElements();
vector2.addElement(new NonTerminalDiagram("Expr"));
vector2.addElement(new SequenceDiagram(vector3));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

Qual = new SequenceDiagram(vector1);

//*******************************

vector4.removeAllElements();
vector4.addElement(new NonTerminalDiagram("Pattern"));
vector4.addElement(new TerminalDiagram("<-"));
vector4.addElement(new NonTerminalDiagram("Expr"));

vector3.removeAllElements();
vector3.addElement(new TerminalDiagram("let"));
vector3.addElement(new NonTerminalDiagram("LocalDefs"));

vector2.removeAllElements();
vector2.addElement(new NonTerminalDiagram("Expr"));
vector2.addElement(new SequenceDiagram(vector3));
vector2.addElement(new SequenceDiagram(vector4));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

Stmt = new SequenceDiagram(vector1);

//*******************************

vector3.removeAllElements();
vector3.addElement(new NonTerminalDiagram("ModuleID"));
vector3.addElement(new TerminalDiagram("."));

vector2.removeAllElements();
vector2.addElement(new SequenceDiagram(vector3));
vector2.addElement(new EmptyDiagram());

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));
vector1.addElement(new NonTerminalDiagram("VariableID"));

QVariableID = new SequenceDiagram(vector1);

//*******************************

vector2.removeAllElements();
vector2.addElement(new NonTerminalDiagram("Integer"));
vector2.addElement(new NonTerminalDiagram("FloatLiteral"));
vector2.addElement(new NonTerminalDiagram("CharLiteral"));
vector2.addElement(new NonTerminalDiagram("StringLiteral"));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

Literal = new SequenceDiagram(vector1);

//*******************************

vector4.removeAllElements();
vector4.addElement(new TerminalDiagram("eval"));
vector4.addElement(new NonTerminalDiagram("Annotation"));

vector3.removeAllElements();
vector3.addElement(new TerminalDiagram("::"));
vector3.addElement(new NonTerminalDiagram("FunctionType"));

vector2.removeAllElements();
vector2.addElement(new SequenceDiagram(vector3));
vector2.addElement(new SequenceDiagram(vector4));

vector1.removeAllElements();
vector1.addElement(new LoopDiagram(
    new NonTerminalDiagram("Prefixed"),
    new TerminalDiagram(",")));
vector1.addElement(new DecisionDiagram(vector2));

FunctionNonRuleDeclaration = new SequenceDiagram(vector1);

//*******************************

Symbol = new Regular(" [ \"~\",  \"!\",  \"@\",  \"#\",  \"$\",  \"%\", \"^\",\"&\",  \"*\",  \"+\",  \"=\", \":\",  \"<\",  \">\",  \"?\",  \".\", \"|\" ,\"/\", \"\\\\\" ] ");

//*******************************

vector1.removeAllElements();
vector1.addElement(new NonTerminalDiagram("Symbol"));
vector1.addElement(new LoopDiagram(
    new EmptyDiagram(),
    new NonTerminalDiagram("Symbol")));

InfixOpID = new SequenceDiagram(vector1);

//*******************************

vector4.removeAllElements();
vector4.addElement(new NonTerminalDiagram("InfixOpID"));
vector4.addElement(new TerminalDiagram("-"));

vector3.removeAllElements();
vector3.addElement(new TerminalDiagram("("));
vector3.addElement(new DecisionDiagram(vector4));
vector3.addElement(new TerminalDiagram(")"));

vector2.removeAllElements();
vector2.addElement(new NonTerminalDiagram("Identifier"));
vector2.addElement(new SequenceDiagram(vector3));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

Prefixed = new SequenceDiagram(vector1);

//*******************************

vector1.removeAllElements();
vector1.addElement(new NonTerminalDiagram("Identifier"));
vector1.addElement(new LoopDiagram(
    new EmptyDiagram(),
    new NonTerminalDiagram("Pattern")));
vector1.addElement(new NonTerminalDiagram("HeadLessEquation"));

FunctionPrefixRuleDeclaration = new SequenceDiagram(vector1);

//*******************************

vector1.removeAllElements();
vector1.addElement(new NonTerminalDiagram("Pattern"));
vector1.addElement(new NonTerminalDiagram("Infixed"));
vector1.addElement(new NonTerminalDiagram("Pattern"));
vector1.addElement(new NonTerminalDiagram("HeadLessEquation"));

FunctionInfixRuleDeclaration = new SequenceDiagram(vector1);

//*******************************

vector4.removeAllElements();
vector4.addElement(new TerminalDiagram("or"));
vector4.addElement(new TerminalDiagram("and"));

vector3.removeAllElements();
vector3.addElement(    new DecisionDiagram(vector4));
vector3.addElement(new NonTerminalDiagram("EvalTree"));

vector2.removeAllElements();
vector2.addElement(new NonTerminalDiagram("Branch"));
vector2.addElement(new TerminalDiagram("rule"));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));
vector1.addElement(new LoopDiagram(
    new EmptyDiagram(),
        new SequenceDiagram(vector3)));

EvalTree = new SequenceDiagram(vector1);

//*******************************

Space = new Regular(" ( [\" \",\"\\n\", \"\\r\" ] ) *");

//*******************************

vector2.removeAllElements();
vector2.addElement(new NonTerminalDiagram("Space"));
vector2.addElement(new TerminalDiagram("."));
vector2.addElement(new NonTerminalDiagram("Space"));
vector2.addElement(new NonTerminalDiagram("Integer"));

vector1.removeAllElements();
vector1.addElement(new NonTerminalDiagram("Integer"));
vector1.addElement(new LoopDiagram(
    new EmptyDiagram(),
        new SequenceDiagram(vector2)));
vector1.addElement(new NonTerminalDiagram("Space"));
vector1.addElement(new TerminalDiagram("::"));

Position = new SequenceDiagram(vector1);

//*******************************

vector4.removeAllElements();
vector4.addElement(new TerminalDiagram("("));
vector4.addElement(new LoopDiagram(
    new NonTerminalDiagram("ConstrAnnotation"),
    new EmptyDiagram()));
vector4.addElement(new TerminalDiagram(")"));

vector3.removeAllElements();
vector3.addElement(new SequenceDiagram(vector4));
vector3.addElement(new EmptyDiagram());

vector2.removeAllElements();
vector2.addElement(new TerminalDiagram("flex"));
vector2.addElement(new TerminalDiagram("rigid"));

vector1.removeAllElements();
vector1.addElement(new NonTerminalDiagram("Position"));
vector1.addElement(new DecisionDiagram(vector2));
vector1.addElement(new DecisionDiagram(vector3));

Branch = new SequenceDiagram(vector1);

//*******************************

vector1.removeAllElements();
vector1.addElement(new LoopDiagram(
    new NonTerminalDiagram("InnerDeclaration"),
    new EmptyDiagram()));

InnerDeclarationList = new SequenceDiagram(vector1);

//*******************************

vector2.removeAllElements();
vector2.addElement(new NonTerminalDiagram("FreeDeclaration"));
vector2.addElement(new NonTerminalDiagram("FunctionDeclaration"));
vector2.addElement(new NonTerminalDiagram("PatternDeclaration"));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

InnerDeclaration = new SequenceDiagram(vector1);

//*******************************

vector1.removeAllElements();
vector1.addElement(new LoopDiagram(
    new NonTerminalDiagram("Identifier"),
    new TerminalDiagram(",")));
vector1.addElement(new TerminalDiagram("free"));

FreeDeclaration = new SequenceDiagram(vector1);

//*******************************

Identifier = new Regular("( [ \"a\" - \"z\",\"A\" - \"Z\"]) (([\"a\" - \"z\",\"A\" - \"Z\", \"0\" - \"9\"]) | (\"_\"))*");

//*******************************

ModuleIdentifier = new Regular("( [ \"a\" - \"z\",\"A\" - \"Z\"]) (([\"a\" - \"z\",\"A\" - \"Z\", \"0\" - \"9\"]) | (\"_\") | (\".\"))*");

//*******************************

vector4.removeAllElements();
vector4.addElement(new TerminalDiagram("`"));
vector4.addElement(new NonTerminalDiagram("Identifier"));
vector4.addElement(new TerminalDiagram("`"));

vector3.removeAllElements();
vector3.addElement(new NonTerminalDiagram("InfixOpID"));
vector3.addElement(new TerminalDiagram(":"));
vector3.addElement(new TerminalDiagram("-"));

vector2.removeAllElements();
vector2.addElement(new DecisionDiagram(vector3));
vector2.addElement(new SequenceDiagram(vector4));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

Infixed = new SequenceDiagram(vector1);

//*******************************

vector2.removeAllElements();
vector2.addElement(new NonTerminalDiagram("Atomic"));
vector2.addElement(new NonTerminalDiagram("ListConstr"));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));
vector1.addElement(new TerminalDiagram("=>"));
vector1.addElement(new NonTerminalDiagram("EvalTree"));

ConstrAnnotation = new SequenceDiagram(vector1);

//*******************************

vector2.removeAllElements();
vector2.addElement(new NonTerminalDiagram("Nil"));
vector2.addElement(new TerminalDiagram(":"));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

ListConstr = new SequenceDiagram(vector1);

//*******************************

vector8.removeAllElements();
vector8.addElement(new TerminalDiagram("where"));
vector8.addElement(new NonTerminalDiagram("InnerDeclarationList"));

vector7.removeAllElements();
vector7.addElement(new SequenceDiagram(vector8));
vector7.addElement(new EmptyDiagram());

vector6.removeAllElements();
vector6.addElement(new NonTerminalDiagram("Expr"));
vector6.addElement(new NonTerminalDiagram("NonConstraintExpr"));

vector5.removeAllElements();
vector5.addElement(new TerminalDiagram("|"));
vector5.addElement(new DecisionDiagram(vector6));
vector5.addElement(new TerminalDiagram("="));
vector5.addElement(new NonTerminalDiagram("Expr"));

vector4.removeAllElements();
vector4.addElement(new SequenceDiagram(vector5));
vector4.addElement(new EmptyDiagram());

vector3.removeAllElements();
vector3.addElement(new TerminalDiagram("="));
vector3.addElement(new NonTerminalDiagram("Expr"));

vector2.removeAllElements();
vector2.addElement(new SequenceDiagram(vector3));
vector2.addElement(new DecisionDiagram(vector4));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));
vector1.addElement(new DecisionDiagram(vector7));

HeadLessEquation = new SequenceDiagram(vector1);

//*******************************

vector1.removeAllElements();
vector1.addElement(new NonTerminalDiagram("Expr"));

NonConstraintExpr = new SequenceDiagram(vector1);

//*******************************

StringLiteral = new Regular("\"\\\" ( (~[ \"\\\",\"\\\\\", \"\\n\", \"\\r\"] ) | (\"\\\\\" ( [\"n\", \"t\", \"b\", \"r\", \"f\", \"\\\\\", \"'\", \"\\\" ] |[\"0\" - \"7\"] ( [\"0\" - \"7\" ] )? | [ \"0\" - \"3\" ] [ \"0\" - \"7\" ] [\"0\" - \"7\" ] ) ) ) * \"\\\"");

//*******************************

CharLiteral = new Regular("\"'\" ( ( ~[\"'\", \"\\\\\", \"\\n\", \"\\r\" ] ) | ( \"\\\\\" ( [ \"n\", \"t\", \"b\",\"r\", \"f\", \"\\\\\", \"'\", \"\\\" ] \"|\" [ \"0\" - \"7\"] ( [ \"0\" - \"7\"] ) ? \"|\"  [ \"0\" - \"3\" ] [ \"0\"- \"7\" ] [ \"0\" - \"7\" ] ) ) )");

//*******************************

Exponent = new Regular("[ \"e\", \"E\" ] ( [ \"+\", \"-\" ] ) ? ( [ \"0\" - \"9\" ] ) + ");

//*******************************

vector9.removeAllElements();
vector9.addElement(new NonTerminalDiagram("Exponent"));
vector9.addElement(new EmptyDiagram());

vector8.removeAllElements();
vector8.addElement(new LoopDiagram(
    new TerminalDiagram("[ 0 - 9 ]"),
    new EmptyDiagram()));
vector8.addElement(new DecisionDiagram(vector9));

vector7.removeAllElements();
vector7.addElement(new NonTerminalDiagram("Exponent"));
vector7.addElement(new EmptyDiagram());

vector6.removeAllElements();
vector6.addElement(new TerminalDiagram("."));
vector6.addElement(new LoopDiagram(
    new TerminalDiagram("[ 0 - 9 ]"),
    new EmptyDiagram()));
vector6.addElement(new DecisionDiagram(vector7));

vector5.removeAllElements();
vector5.addElement(new LoopDiagram(
    new TerminalDiagram("[ 0 - 9 ]"),
    new EmptyDiagram()));
vector5.addElement(new NonTerminalDiagram("Exponent"));

vector4.removeAllElements();
vector4.addElement(new NonTerminalDiagram("Exponent"));
vector4.addElement(new EmptyDiagram());

vector3.removeAllElements();
vector3.addElement(new LoopDiagram(
    new TerminalDiagram("[ 0 - 9 ]"),
    new EmptyDiagram()));
vector3.addElement(new TerminalDiagram("."));
vector3.addElement(new LoopDiagram(
    new EmptyDiagram(),
    new TerminalDiagram("[ 0 - 9 ] ")));
vector3.addElement(new DecisionDiagram(vector4));

vector2.removeAllElements();
vector2.addElement(new SequenceDiagram(vector3));
vector2.addElement(new SequenceDiagram(vector5));
vector2.addElement(new SequenceDiagram(vector6));
vector2.addElement(new SequenceDiagram(vector8));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

FloatLiteral = new SequenceDiagram(vector1);

//*******************************

vector2.removeAllElements();
vector2.addElement(new NonTerminalDiagram("Anonymous"));
vector2.addElement(new NonTerminalDiagram("Unit"));
vector2.addElement(new NonTerminalDiagram("Nil"));
vector2.addElement(new NonTerminalDiagram("Identifier"));
vector2.addElement(new NonTerminalDiagram("Integer"));
vector2.addElement(new NonTerminalDiagram("FloatLiteral"));
vector2.addElement(new NonTerminalDiagram("CharLiteral"));
vector2.addElement(new NonTerminalDiagram("StringLiteral"));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

Atomic = new SequenceDiagram(vector1);

//*******************************

vector2.removeAllElements();
vector2.addElement(new NonTerminalDiagram("Atomic"));
vector2.addElement(new NonTerminalDiagram("ExtraVariable"));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

AtomicExtra = new SequenceDiagram(vector1);

//*******************************

Unit = new Regular("\"(\" ([\" \", \"\\n\", \"\\r\"])* \")\"  ");

//*******************************

Nil = new Regular("\"[\" ([ \" \", \"\\n\", \"\\r\"])* \"]\"");

//*******************************

vector1.removeAllElements();
vector1.addElement(new TerminalDiagram("_"));
vector1.addElement(new NonTerminalDiagram("Identifier"));

ExtraVariable = new SequenceDiagram(vector1);

//*******************************

Anonymous = new Regular("\"_\"");

//*******************************

Decimal = new Regular("[ \"1\" - \"9\" ] ( [ \"0\" - \"9\" ] ) *");

//*******************************

Hexadecimal = new Regular("\"0\" [\"x\" , \"X\" ] ( [ \"0\" - \"9\", \"a\" -\"f\", \"A\" - \"F\" ] ) + ");

//*******************************

Octal = new Regular("\"0\" ( [ \"0\" - \"7\" ] ) * ");

//*******************************

vector2.removeAllElements();
vector2.addElement(new NonTerminalDiagram("Hexadecimal"));
vector2.addElement(new NonTerminalDiagram("Decimal"));
vector2.addElement(new NonTerminalDiagram("Octal"));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

Integer = new SequenceDiagram(vector1);

//*******************************

vector3.removeAllElements();
vector3.addElement(new TerminalDiagram(":"));
vector3.addElement(new NonTerminalDiagram("ConsPattern"));

vector2.removeAllElements();
vector2.addElement(new SequenceDiagram(vector3));
vector2.addElement(new EmptyDiagram());

vector1.removeAllElements();
vector1.addElement(new NonTerminalDiagram("ApplicPattern"));
vector1.addElement(new DecisionDiagram(vector2));

ConsPattern = new SequenceDiagram(vector1);

//*******************************

vector1.removeAllElements();
vector1.addElement(new LoopDiagram(
    new NonTerminalDiagram("Pattern"),
    new EmptyDiagram()));

ApplicPattern = new SequenceDiagram(vector1);

//*******************************

vector1.removeAllElements();
vector1.addElement(new NonTerminalDiagram("Infixed"));

Operator = new SequenceDiagram(vector1);

//*******************************

vector9.removeAllElements();
vector9.addElement(new TerminalDiagram(","));
vector9.addElement(new NonTerminalDiagram("ChoicePair"));

vector8.removeAllElements();
vector8.addElement(new TerminalDiagram("choice"));
vector8.addElement(new NonTerminalDiagram("ChoicePair"));
vector8.addElement(new LoopDiagram(
    new EmptyDiagram(),
        new SequenceDiagram(vector9)));

vector7.removeAllElements();
vector7.addElement(new TerminalDiagram(","));
vector7.addElement(new NonTerminalDiagram("Expr"));

vector6.removeAllElements();
vector6.addElement(new TerminalDiagram("["));
vector6.addElement(new NonTerminalDiagram("Expr"));
vector6.addElement(new LoopDiagram(
    new EmptyDiagram(),
        new SequenceDiagram(vector7)));
vector6.addElement(new TerminalDiagram("]"));

vector5.removeAllElements();
vector5.addElement(new TerminalDiagram("if"));
vector5.addElement(new NonTerminalDiagram("Expr"));
vector5.addElement(new TerminalDiagram("then"));
vector5.addElement(new NonTerminalDiagram("Expr"));
vector5.addElement(new TerminalDiagram("then"));
vector5.addElement(new NonTerminalDiagram("Expr"));

vector4.removeAllElements();
vector4.addElement(new TerminalDiagram("let"));
vector4.addElement(new NonTerminalDiagram("InnerDeclarationList"));
vector4.addElement(new TerminalDiagram("in"));
vector4.addElement(new NonTerminalDiagram("Expr"));

vector3.removeAllElements();
vector3.addElement(new LoopDiagram(
    new NonTerminalDiagram("Pattern"),
    new EmptyDiagram()));
vector3.addElement(new TerminalDiagram("->"));
vector3.addElement(new NonTerminalDiagram("Expr"));

vector2.removeAllElements();
vector2.addElement(new SequenceDiagram(vector3));
vector2.addElement(new NonTerminalDiagram("AtomicExtra"));
vector2.addElement(new NonTerminalDiagram("Section"));
vector2.addElement(new SequenceDiagram(vector4));
vector2.addElement(new SequenceDiagram(vector5));
vector2.addElement(new SequenceDiagram(vector6));
vector2.addElement(new SequenceDiagram(vector8));

vector1.removeAllElements();
vector1.addElement(new DecisionDiagram(vector2));

Operand = new SequenceDiagram(vector1);

//*******************************

vector3.removeAllElements();
vector3.addElement(new TerminalDiagram("where"));
vector3.addElement(new NonTerminalDiagram("InnerDeclarationList"));

vector2.removeAllElements();
vector2.addElement(new SequenceDiagram(vector3));
vector2.addElement(new EmptyDiagram());

vector1.removeAllElements();
vector1.addElement(new NonTerminalDiagram("Expr"));
vector1.addElement(new TerminalDiagram("->"));
vector1.addElement(new NonTerminalDiagram("Expr"));
vector1.addElement(new DecisionDiagram(vector2));

ChoicePair = new SequenceDiagram(vector1);

//*******************************

vector3.removeAllElements();
vector3.addElement(new TerminalDiagram("="));
vector3.addElement(new NonTerminalDiagram("Expr"));

vector2.removeAllElements();
vector2.addElement(new SequenceDiagram(vector3));
vector2.addElement(new EmptyDiagram());

vector1.removeAllElements();
vector1.addElement(new NonTerminalDiagram("Expr"));
vector1.addElement(new DecisionDiagram(vector2));

ConstraintExpr = new SequenceDiagram(vector1);

//*******************************

vector4.removeAllElements();
vector4.addElement(new NonTerminalDiagram("Operand"));
vector4.addElement(new NonTerminalDiagram("Operator"));

vector3.removeAllElements();
vector3.addElement(new NonTerminalDiagram("Operator"));
vector3.addElement(new NonTerminalDiagram("Operand"));

vector2.removeAllElements();
vector2.addElement(new SequenceDiagram(vector3));
vector2.addElement(new SequenceDiagram(vector4));

vector1.removeAllElements();
vector1.addElement(new TerminalDiagram("("));
vector1.addElement(new DecisionDiagram(vector2));
vector1.addElement(new TerminalDiagram(")"));

Section = new SequenceDiagram(vector1);

diagramList.addElement(start);
diagramNames.addElement("start"); 
diagramList.addElement(ModuleID);
diagramNames.addElement("ModuleID"); 
diagramList.addElement(Exports);
diagramNames.addElement("Exports"); 
diagramList.addElement(Export);
diagramNames.addElement("Export"); 
diagramList.addElement(QFunctionName);
diagramNames.addElement("QFunctionName"); 
diagramList.addElement(QTypeConstrID);
diagramNames.addElement("QTypeConstrID"); 
diagramList.addElement(TypeConstrID);
diagramNames.addElement("TypeConstrID"); 
diagramList.addElement(QInfixOpID);
diagramNames.addElement("QInfixOpID"); 
diagramList.addElement(QFunctionID);
diagramNames.addElement("QFunctionID"); 
diagramList.addElement(FunctionID);
diagramNames.addElement("FunctionID"); 
diagramList.addElement(Block);
diagramNames.addElement("Block"); 
diagramList.addElement(ImportDecls);
diagramNames.addElement("ImportDecls"); 
diagramList.addElement(PragmaDecls);
diagramNames.addElement("PragmaDecls"); 
diagramList.addElement(FixityDecls);
diagramNames.addElement("FixityDecls"); 
diagramList.addElement(BlockDecls);
diagramNames.addElement("BlockDecls"); 
diagramList.addElement(ImportDeclaration);
diagramNames.addElement("ImportDeclaration"); 
diagramList.addElement(ImportRestr);
diagramNames.addElement("ImportRestr"); 
diagramList.addElement(Import);
diagramNames.addElement("Import"); 
diagramList.addElement(FunctionName);
diagramNames.addElement("FunctionName"); 
diagramList.addElement(PragmaDeclaration);
diagramNames.addElement("PragmaDeclaration"); 
diagramList.addElement(FixityDeclarationList);
diagramNames.addElement("FixityDeclarationList"); 
diagramList.addElement(BlockDeclaration);
diagramNames.addElement("BlockDeclaration"); 
diagramList.addElement(FixityDeclaration);
diagramNames.addElement("FixityDeclaration"); 
diagramList.addElement(FixityKeyWord);
diagramNames.addElement("FixityKeyWord"); 
diagramList.addElement(TypeSynonymDeclaration);
diagramNames.addElement("TypeSynonymDeclaration"); 
diagramList.addElement(TypeVarID);
diagramNames.addElement("TypeVarID"); 
diagramList.addElement(TypeExpr);
diagramNames.addElement("TypeExpr"); 
diagramList.addElement(TypeAppl);
diagramNames.addElement("TypeAppl"); 
diagramList.addElement(SimpleTypeExpr);
diagramNames.addElement("SimpleTypeExpr"); 
diagramList.addElement(DataDeclaration);
diagramNames.addElement("DataDeclaration"); 
diagramList.addElement(TypeDeclaration);
diagramNames.addElement("TypeDeclaration"); 
diagramList.addElement(ConstrDeclaration);
diagramNames.addElement("ConstrDeclaration"); 
diagramList.addElement(DataConstrID);
diagramNames.addElement("DataConstrID"); 
diagramList.addElement(FunctionType);
diagramNames.addElement("FunctionType"); 
diagramList.addElement(SimpleType);
diagramNames.addElement("SimpleType"); 
diagramList.addElement(ConstrArgType);
diagramNames.addElement("ConstrArgType"); 
diagramList.addElement(CommonFactorType);
diagramNames.addElement("CommonFactorType"); 
diagramList.addElement(FunctionDeclaration);
diagramNames.addElement("FunctionDeclaration"); 
diagramList.addElement(Signature);
diagramNames.addElement("Signature"); 
diagramList.addElement(FunctionNames);
diagramNames.addElement("FunctionNames"); 
diagramList.addElement(EvalAnnot);
diagramNames.addElement("EvalAnnot"); 
diagramList.addElement(Annotation);
diagramNames.addElement("Annotation"); 
diagramList.addElement(Equat);
diagramNames.addElement("Equat"); 
diagramList.addElement(FunLHS);
diagramNames.addElement("FunLHS"); 
diagramList.addElement(Pattern);
diagramNames.addElement("Pattern"); 
diagramList.addElement(QDataConstrID);
diagramNames.addElement("QDataConstrID"); 
diagramList.addElement(SimplePattern);
diagramNames.addElement("SimplePattern"); 
diagramList.addElement(VariableID);
diagramNames.addElement("VariableID"); 
diagramList.addElement(LocalDefs);
diagramNames.addElement("LocalDefs"); 
diagramList.addElement(ValueDeclaration);
diagramNames.addElement("ValueDeclaration"); 
diagramList.addElement(PatternDeclaration);
diagramNames.addElement("PatternDeclaration"); 
diagramList.addElement(CondExprs);
diagramNames.addElement("CondExprs"); 
diagramList.addElement(Expr);
diagramNames.addElement("Expr"); 
diagramList.addElement(FunctExpr);
diagramNames.addElement("FunctExpr"); 
diagramList.addElement(BasicExpr);
diagramNames.addElement("BasicExpr"); 
diagramList.addElement(QOptions);
diagramNames.addElement("QOptions"); 
diagramList.addElement(ExprOptions);
diagramNames.addElement("ExprOptions"); 
diagramList.addElement(Qual);
diagramNames.addElement("Qual"); 
diagramList.addElement(Stmt);
diagramNames.addElement("Stmt"); 
diagramList.addElement(QVariableID);
diagramNames.addElement("QVariableID"); 
diagramList.addElement(Literal);
diagramNames.addElement("Literal"); 
diagramList.addElement(FunctionNonRuleDeclaration);
diagramNames.addElement("FunctionNonRuleDeclaration"); 
diagramList.addElement(Symbol);
diagramNames.addElement("Symbol"); 
diagramList.addElement(InfixOpID);
diagramNames.addElement("InfixOpID"); 
diagramList.addElement(Prefixed);
diagramNames.addElement("Prefixed"); 
diagramList.addElement(FunctionPrefixRuleDeclaration);
diagramNames.addElement("FunctionPrefixRuleDeclaration"); 
diagramList.addElement(FunctionInfixRuleDeclaration);
diagramNames.addElement("FunctionInfixRuleDeclaration"); 
diagramList.addElement(EvalTree);
diagramNames.addElement("EvalTree"); 
diagramList.addElement(Space);
diagramNames.addElement("Space"); 
diagramList.addElement(Position);
diagramNames.addElement("Position"); 
diagramList.addElement(Branch);
diagramNames.addElement("Branch"); 
diagramList.addElement(InnerDeclarationList);
diagramNames.addElement("InnerDeclarationList"); 
diagramList.addElement(InnerDeclaration);
diagramNames.addElement("InnerDeclaration"); 
diagramList.addElement(FreeDeclaration);
diagramNames.addElement("FreeDeclaration"); 
diagramList.addElement(Identifier);
diagramNames.addElement("Identifier"); 
diagramList.addElement(ModuleIdentifier);
diagramNames.addElement("ModuleIdentifier"); 
diagramList.addElement(Infixed);
diagramNames.addElement("Infixed"); 
diagramList.addElement(ConstrAnnotation);
diagramNames.addElement("ConstrAnnotation"); 
diagramList.addElement(ListConstr);
diagramNames.addElement("ListConstr"); 
diagramList.addElement(HeadLessEquation);
diagramNames.addElement("HeadLessEquation"); 
diagramList.addElement(NonConstraintExpr);
diagramNames.addElement("NonConstraintExpr"); 
diagramList.addElement(StringLiteral);
diagramNames.addElement("StringLiteral"); 
diagramList.addElement(CharLiteral);
diagramNames.addElement("CharLiteral"); 
diagramList.addElement(Exponent);
diagramNames.addElement("Exponent"); 
diagramList.addElement(FloatLiteral);
diagramNames.addElement("FloatLiteral"); 
diagramList.addElement(Atomic);
diagramNames.addElement("Atomic"); 
diagramList.addElement(AtomicExtra);
diagramNames.addElement("AtomicExtra"); 
diagramList.addElement(Unit);
diagramNames.addElement("Unit"); 
diagramList.addElement(Nil);
diagramNames.addElement("Nil"); 
diagramList.addElement(ExtraVariable);
diagramNames.addElement("ExtraVariable"); 
diagramList.addElement(Anonymous);
diagramNames.addElement("Anonymous"); 
diagramList.addElement(Decimal);
diagramNames.addElement("Decimal"); 
diagramList.addElement(Hexadecimal);
diagramNames.addElement("Hexadecimal"); 
diagramList.addElement(Octal);
diagramNames.addElement("Octal"); 
diagramList.addElement(Integer);
diagramNames.addElement("Integer"); 
diagramList.addElement(ConsPattern);
diagramNames.addElement("ConsPattern"); 
diagramList.addElement(ApplicPattern);
diagramNames.addElement("ApplicPattern"); 
diagramList.addElement(Operator);
diagramNames.addElement("Operator"); 
diagramList.addElement(Operand);
diagramNames.addElement("Operand"); 
diagramList.addElement(ChoicePair);
diagramNames.addElement("ChoicePair"); 
diagramList.addElement(ConstraintExpr);
diagramNames.addElement("ConstraintExpr"); 
diagramList.addElement(Section);
diagramNames.addElement("Section"); 

} // End of constructor

//====================================

public Vector diagramList = new Vector(); 
public Vector diagramNames = new Vector(); 
public Diagram start, ModuleID, Exports, Export, QFunctionName,
               QTypeConstrID, TypeConstrID, QInfixOpID, QFunctionID,
               FunctionID, Block, ImportDecls, PragmaDecls, FixityDecls,
               BlockDecls, ImportDeclaration, ImportRestr, Import,
               FunctionName, PragmaDeclaration, FixityDeclarationList,
               BlockDeclaration, FixityDeclaration, FixityKeyWord,
               TypeSynonymDeclaration, TypeVarID, TypeExpr, TypeAppl,
               SimpleTypeExpr, DataDeclaration, TypeDeclaration,
               ConstrDeclaration, DataConstrID, FunctionType, SimpleType,
               ConstrArgType, CommonFactorType, FunctionDeclaration,
               Signature, FunctionNames, EvalAnnot, Annotation, Equat,
               FunLHS, Pattern, QDataConstrID, SimplePattern, VariableID,
               LocalDefs, ValueDeclaration, PatternDeclaration,
               CondExprs, Expr, FunctExpr, BasicExpr, QOptions,
               ExprOptions, Qual, Stmt, QVariableID, Literal,
               FunctionNonRuleDeclaration, Symbol, InfixOpID, Prefixed,
               FunctionPrefixRuleDeclaration,
               FunctionInfixRuleDeclaration, EvalTree, Space, Position,
               Branch, InnerDeclarationList, InnerDeclaration,
               FreeDeclaration, Identifier, ModuleIdentifier, Infixed,
               ConstrAnnotation, ListConstr, HeadLessEquation,
               NonConstraintExpr, StringLiteral, CharLiteral, Exponent,
               FloatLiteral, Atomic, AtomicExtra, Unit, Nil,
               ExtraVariable, Anonymous, Decimal, Hexadecimal, Octal,
               Integer, ConsPattern, ApplicPattern, Operator, Operand,
               ChoicePair, ConstraintExpr, Section;


} // End of class Grammar
