(@ import java.io.*; @) Schcmp = "Class Definitions" ClassList "Attribute Definitions" AttrList "Syntax Definitions" SyntaxList *EOF*. SyntaxList = List(SyntaxDef). SyntaxDef = "[" Syntaxname "]" ["Flags" List(SyntaxFlags)]. //List(SyntaxDef) ~ { SyntaxDef }. //List(SyntaxFlags) ~ { SyntaxFlags }. SyntaxFlags = String. Syntaxname = String. AttrList = List(AttrDef). AttrDef = "[" Attrname "]" ["Flags" List(AttrFlags)] ["Syntax" List(AttrSyntax)]. //List(AttrDef) ~ { AttrDef }. //List(AttrFlags) ~ { AttrFlags }. //List(AttrSyntax) ~ { AttrSyntax }. AttrFlags = String. AttrSyntax = String. Attrname = String. ClassDef = "[" Classname "]" ["Flags" List(Flags)] ["Super Class" List(SuperClasses)] ["Containment" List(Containment)] ["Named By" List(NamedBy)] ["Mandatory Attributes" List(Mandatory)] ["Optional Attributes" List(Opt)]. ClassList = List(ClassDef). List(S) ~ {S}. //List(ClassDef) ~ { ClassDef }. //List(Flags) ~ { Flags }. //List(SuperClasses) ~ { SuperClasses }. //List(Containment) ~ { Containment }. //List(NamedBy) ~ { NamedBy }. //List(Mandatory) ~ Mandatory { Mandatory }. //List(Opt) ~ Opt { Opt }. Flags = String. SuperClasses = String. Containment = String. NamedBy = String. Mandatory = String. Opt = String. Classname = String. Main = . ClistVisitor = List(ClassDef). ClassNameVisitor = ClassDef_List boolean boolean. AlistVisitor = List(AttrDef). AttrNameVisitor = AttrDef_List boolean boolean. SlistVisitor = List(SyntaxDef). SyntaxNameVisitor = SyntaxDef_List boolean boolean. IsDiffVisitor = ClassDef_List boolean boolean boolean ClassDef_List.