Person = "[" "person" Ident ["spouse" Person] ["siblings" Person_NList] "]". Main = . *notparsed* *visitor*PrintVisitor = int boolean *extends* UniversalVisitor. *notparsed* *visitor*CopyVisitor = *derived*Object *extends* UniversalVisitor. *notparsed* *visitor*EqualVisitor = boolean*init* (@ true @) *extends* UniversalVisitor. *notparsed* *visitor*DisplayVisitor = int *extends* UniversalVisitor. *notparsed* *visitor*TraceVisitor = int *extends* UniversalVisitor. *notparsed* *visitor*UniversalVisitor : PrintVisitor | CopyVisitor | EqualVisitor | DisplayVisitor | TraceVisitor . Person_NList = Nonempty_Person_NList. Nonempty_Person_NList = Person [ Nonempty_Person_NList].