Document ::= <FileName> ComplexElement* ; abstract Element ; abstract ComplexElement : Element ; MappingElement : ComplexElement ::= KeyValuePair* ; KeyValuePair : ComplexElement ::= <Key> Value:Element ; ListElement : ComplexElement ::= Element* ; abstract SimpleElement : Element ;
ValueElement : SimpleElement ::= <Value> ;
StringElement : SimpleElement ::= <Value> ;