import edu.neu.ccs.demeter.dj.*; import java.util.*; import java.lang.reflect.*; Main = . Schema = "" *l Parts_List "" *l. Parts : Types | Element . Types : ComplexType | SimpleType extends Parts. ComplexType = " Name] ">" *l Sequence [ Attribute] "" *l extends Types. Attribute = " Name Type EndPart. Sequence = "" *l Parts_List "" *l. Element = " NameRef ElementParts_List ElementEndParts extends Parts. NameRef : Name | Ref . ElementParts : Type | MinOccurs | MaxOccurs . ElementEndParts : SimpleElementEnd | ComplexElementEnd . SimpleElementEnd = EndPart extends ElementEndParts. ComplexElementEnd = ">" *l Types_List "" *l extends ElementEndParts. SimpleType = " Name] ">" *l Restriction *l "" *l extends Types. Restriction = " Base ">" *l SimpleParts_List "". SimpleParts : MinExclusive | MaxExclusive | MinInclusive | MaxInclusive . Name = "name=" String extends NameRef. Ref = "ref=" String extends NameRef. Base = "base=" String. Type = "type=" String extends ElementParts. MinOccurs = "minOccurs=" String extends ElementParts. MaxOccurs = "maxOccurs=" String extends ElementParts. MinExclusive = " Value EndPart extends SimpleParts. MaxExclusive = " Value EndPart extends SimpleParts. MinInclusive = " Value EndPart extends SimpleParts. MaxInclusive = " Value EndPart extends SimpleParts. Value = "value=" String. EndPart = "/>" *l. notparsed visitor PrintVisitor = int boolean extends UniversalVisitor. notparsed visitor CopyVisitor = derived Object extends UniversalVisitor. notparsed visitor SubgraphVisitor = boolean init (@ true @) 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 : . Parts_List = [ Nonempty_Parts_List]. ElementParts_List = [ Nonempty_ElementParts_List]. Types_List = [ Nonempty_Types_List]. SimpleParts_List = [ Nonempty_SimpleParts_List]. Nonempty_Parts_List = Parts [ Nonempty_Parts_List]. Nonempty_ElementParts_List = ElementParts [ Nonempty_ElementParts_List]. Nonempty_Types_List = Types [ Nonempty_Types_List]. Nonempty_SimpleParts_List = SimpleParts [ Nonempty_SimpleParts_List].