package EDU.neu.ccs.demeter.tools.apstudio.graphedit; import java.awt.*; import java.io.*; import java.util.*; import EDU.neu.ccs.demeter.*; import EDU.neu.ccs.demeter.common.tg.*; UGraph = "#Class" "#Dictionary" "#Graph" *l [ Package*l] [ Import_SList*l] [ JavaCode*l] [ UVertex_List] Hashtable [ UEdge_List] Hashtable Hashtable [ UID] *EOF*. UVertex_List = "#Vertex" "#List" *l + Nonempty_UVertex_List *l -. UVertex : UConstOrAltVertex | UTerm | UInterface *common* UID UVertexName Coordinates [ IEdge_List] [ OEdge_List] Vector Vector [ Decorator] TGVertex Perspective *extends* NetPrimitive. UConstOrAltVertex : UConstVertex | UAltVertex *common* ParseOrNot Vector [ ScopeIdentifier_List]extends UVertex. ParseOrNot : YaParse | NopParse . YaParse = "#parse" extends ParseOrNot. NopParse = "#noparse" extends ParseOrNot. UTerm : UTermConstVertex | UTermInterface extends UVertex. IEdge_List = "#Incoming" Nonempty_IEdge_List. OEdge_List = "#Outgoing" Nonempty_OEdge_List. UConstVertex = "#ConstVertex" [ UBefore] [ UAfter]extends UConstOrAltVertex. UBefore = "#Before" String. UAfter = "#After" String. UAltVertex = "#AltVertex" extends UConstOrAltVertex. UInterface = "#Interface" [ InterfaceModifier_List] JavaCode extends UVertex. InterfaceModifier_List = Nonempty_InterfaceModifier_List. InterfaceModifier : PublicModifier . PublicModifier = "#public" extends InterfaceModifier. UTermConstVertex = "#TermConstVertex" extends UTerm. UTermInterface = "#TermInterface" extends UTerm. ScopeIdentifier_List = Nonempty_ScopeIdentifier_List. ScopeIdentifier : PublicIdentifier | FinalIdentifier . PublicIdentifier = "#public" extends ScopeIdentifier. FinalIdentifier = "#final" extends ScopeIdentifier. UEdge_List = "#Edge" "#List" *l + Nonempty_UEdge_List *l -. UEdge : USuperEdge | UConstEdge *common* UID UID UID [ Decorator] [ BendPoint] ArcPerspective *extends* NetPrimitive. USuperEdge : UAltEdge | UExtendEdge | UImplEdge extends UEdge. BendPoint = Coordinates. UAltEdge = "#AltEdge" TGAEdge extends USuperEdge. UExtendEdge = "#ExtendEdge" TGAEdge extends USuperEdge. UImplEdge = "#ImplEdge" TGIEdge extends USuperEdge. UConstEdge = "#ConstEdge" [ UEdgeName] Cardinality [ UBefore] [ UAfter] [ PartModifier_List] TGCEdge extends UEdge. PartModifier_List = Nonempty_PartModifier_List. PartModifier : FinalMod | StaticMod | ReadOnlyMod | PrivateMod . FinalMod = "#final" extends PartModifier. StaticMod = "#static" extends PartModifier. ReadOnlyMod = "#read-only" extends PartModifier. PrivateMod = "#private" extends PartModifier. Cardinality = "#Cardinality" Lower [ Upper]. Lower = Integer. Upper = "." "." String. UID = Integer. UEdgeName = Ident *implements* PartNameI. UVertexName = Ident *implements* ClassNameI. Coordinates = "{" X Y "}". X = Integer. Y = Integer. Decorator = "travstat" Integer Vector. UniqueIDGenerator = . Program = GlobalImports ClassGraph *EOF*. GlobalImports = [ Import_SList*l]. Import = "import" PackageName [ ImportAllClasses] ";". ImportAllClasses = ".*". ClassGraph = Hashtable ClassGraphEntry_DList ["tg:" TraversalGraph]. ClassGraphEntry : Directive | Definition . Directive : ParseDirective | VisitorDirective | PackageDirective extends ClassGraphEntry. ParseDirective = ParseKeyword extends Directive. VisitorDirective = VisitorKeyword extends Directive. PackageDirective = Package *l LocalImports extends Directive. Package = "package" PackageName ";". LocalImports = [ Import_SList*l]. Definition : ClassDef extends ClassGraphEntry. ClassDef = ClassKeyword_List ParamClassName [*s ParseDirective] *s ClassParts [ ClassMethods] [*s EOFtoken] "." extends Definition. ParamClassName = ClassName ["(" ClassName_Commalist ")"]. ClassParts : ConstOrAltClass | RepetitionClass . ConstOrAltClass : ConstructionClass | AlternationClass *common* + + + PartOrSyntax_List ClassParents - - -extends ClassParts. PartOrSyntax : Part | OptionalPart | Syntax . Part = ["<" PartName ">" *s] PartKeyword_List ClassSpec [ PartInit]extends PartOrSyntax. PartInit = PartInitKeyword *s JavaCode. OptionalPart = "[" [ LocalLookahead] Part_Sandwich "]" extends PartOrSyntax. ClassParents = [ Superclasses] [ Interfaces]. Superclasses = ExtendsKeyword Superclass_Commalist. Superclass = ClassSpec. Interfaces = ImplementsKeyword Interface_Commalist. Interface = ClassSpec. ConstructionClass = "=" extends ConstOrAltClass. AlternationClass = ":" + + + [*lookahead*(@ _Subclass() @) Subclass_Barlist] - - - [ CommonKeyword]extends ConstOrAltClass. Subclass = [ LocalLookahead] ClassSpec. LocalLookahead = LookaheadKeyword JavaCode. RepetitionClass = "~" RepeatedPart_Sandwich extends ClassParts. RepeatedPart = [ ClassSpec] "{" [ LocalLookahead] ClassSpec_Sandwich *s "}". ClassSpec = ClassName ["(" ClassSpec_Commalist ")"]. Syntax : PlainSyntax | PrintCommand extends PartOrSyntax. PlainSyntax = String extends Syntax. PrintCommand : PrintIndent | PrintUnindent | PrintSkip | PrintSpace extends Syntax. PrintIndent = "+" extends PrintCommand. PrintUnindent = "-" extends PrintCommand. PrintSkip = "*l" extends PrintCommand. PrintSpace = "*s" extends PrintCommand. EOFtoken = "*EOF*". ProgramBehavior = [ Behavior_DList] *EOF*. Behavior : StrategyDefinition | ClassBehavior . StrategyDefinition = "strategy" StrategyName "=" StrategyExpression "." extends Behavior. StrategyExpression : StrategyGraph | PathDirective | StrategyVariable | CompoundStrategy . StrategyGraph = "{" *l + ["vec:" *s Vector] SGEdge_SList - *l "}" *s ["source:" ClassGlobSpec] ["source-edge:" Integer_NList] ["target:" ClassGlobSpec]extends StrategyExpression *implements* StrategyGraphI. SGEdge = ClassGlobSpec *s "->" *s ClassGlobSpec [ NegativeConstraint]. PathDirective = [ NegativeConstraint] PathSegment_List TargetDirective extends StrategyExpression. PathSegment = PositiveConstraint [ NegativeConstraint]. Constraint : PositiveConstraint | NegativeConstraint *common* GlobSpec. PositiveConstraint : Through | Via extends Constraint. Through = "through" extends PositiveConstraint. Via = "via" extends PositiveConstraint. NegativeConstraint : Bypassing | OnlyThrough extends Constraint. Bypassing = "bypassing" extends NegativeConstraint. OnlyThrough = "only-through" extends NegativeConstraint. TargetDirective : To | ToStop *common* ClassGlobSpec. To = "to" extends TargetDirective. ToStop = "to-stop" extends TargetDirective. StrategyVariable = "do" StrategyName extends StrategyExpression. CompoundStrategy : Join | Merge | Intersect *common* "(" StrategyExpression_Commalist ")" extends StrategyExpression. Join = "join" extends CompoundStrategy. Merge = "merge" extends CompoundStrategy. Intersect = "intersect" extends CompoundStrategy. GlobSpec : OneGlob | GlobSet extends HostSpec. OneGlob = Glob extends GlobSpec. GlobSet = "{" *s [ Glob_Commalist*s] "}" extends GlobSpec. Glob : ClassGlob | EdgeGlob . EdgeGlob : PartGlob | SubclassGlob | SuperclassGlob extends Glob. ClassGlob = ClassNameGlob extends Glob. PartGlob = "->" *s SourceGlob "," *s PartNameGlob "," *s DestGlob extends EdgeGlob. SubclassGlob = "=>" *s SourceGlob "," *s DestGlob extends EdgeGlob. SuperclassGlob = ":>" *s SourceGlob "," *s DestGlob extends EdgeGlob. SourceGlob = ClassNameGlob. DestGlob = ClassNameGlob. ClassNameGlob : ClassNameExact | AnyClass . ClassNameExact = ClassName extends ClassNameGlob. AnyClass = "*" extends ClassNameGlob. PartNameGlob : PartNameExact | AnyPart . PartNameExact = PartName extends PartNameGlob. AnyPart = "*" extends PartNameGlob. ClassGlobSpec : OneClassGlob | ClassGlobSet . OneClassGlob = ClassGlob extends ClassGlobSpec. ClassGlobSet = "{" *s ClassGlob_Commalist *s "}" extends ClassGlobSpec. ClassBehavior = ClassGlobSpec ClassMethods extends Behavior. ClassMethods = "{" *l + [ Method_SList] - *l "}" ["wrappers:" Hashtable]. HostSet = ["exact:" Hashtable] ["partnames:" Hashtable] ["globs:" GlobSet]. Method : TraversalDef | MethodDef | Wrapper | Accessor | Constructor | Start | Finish | ReturnValue | Verbatim . TraversalDef = "traversal" TraversalName TraversalParms *s "{" *l + StrategyExpression ";" - *l "}" extends Method. TraversalParms = "(" [ Visitor_Commalist] ")". Visitor = ClassName [ VisitorName]. MethodDef = MethodSignature MethodBody extends Method. MethodSignature = MethodKeyword_List JavaType MethodName "(" [ MethodParm_Commalist] ")" Throws. MethodKeyword : PublicMethod | ProtectedMethod | PrivateMethod | StaticMethod | FinalMethod | AbstractMethod . PublicMethod = "public" extends MethodKeyword. ProtectedMethod = "protected" extends MethodKeyword. PrivateMethod = "private" extends MethodKeyword. StaticMethod = "static" extends MethodKeyword. FinalMethod = "final" extends MethodKeyword. AbstractMethod = "abstract" extends MethodKeyword. MethodParm = JavaType ArraySpec_List ParmName ArraySpec_List. ArraySpec = "[" "]". Throws = [*s "throws" ClassName_Commalist]. MethodBody : VerbatimMethodBody | AdaptiveMethodBody | NoMethodBody . VerbatimMethodBody = JavaCode extends MethodBody. AdaptiveMethodBody = TraversalExpression VisitorExpression extends MethodBody. NoMethodBody = ";" extends MethodBody. TraversalExpression : TraversalRef | TraversalSpec . TraversalRef = [ Equals] TraversalName extends TraversalExpression. Equals = "=". TraversalSpec = StrategyExpression extends TraversalExpression. VisitorExpression : VisitorRef | VisitorSpec . VisitorRef : WithVisitorRef | ParenVisitorRef extends VisitorExpression. WithVisitorRef = "with" ClassName_Commalist ";" extends VisitorRef. ParenVisitorRef = "(" ClassName_Commalist ")" ";" extends VisitorRef. VisitorSpec = ClassMethods extends VisitorExpression. Wrapper = WrapperKind HostSpec JavaCode extends Method. WrapperKind : Before | Around | After . Before = "before" extends WrapperKind. Around = "around" extends WrapperKind. After = "after" extends WrapperKind. HostSpec : GlobSpec . Accessor : Getter | Setter *common* PartName JavaCode extends Method. Getter = "get" extends Accessor. Setter = "set" extends Accessor. Constructor = "init" JavaCode extends Method. Start = "start" JavaCode extends Method. Finish = "finish" JavaCode extends Method. ReturnValue = "return" [ JavaType] JavaCode extends Method. Verbatim = JavaCode extends Method. PackageName = Nonempty_PackageName. ClassName = Name *implements* ClassNameI. PartName = IdentOrKeyword *implements* PartNameI. TraversalName = Name. VisitorName = Name. MethodName = Ident. ParmName = Ident. StrategyName = Ident. JavaType = Name. JavaCode = Text. Name = Nonempty_Name. IdentOrKeyword : ParseIdent | NoParseIdent | VisitorsIdent | EndVisitorsIdent | VisitorIdent | NotParsedIdent | DerivedIdent | InitIdent | CommonIdent | LookaheadIdent | OtherIdent . ParseIdent = "parse" extends IdentOrKeyword. NoParseIdent = "noparse" extends IdentOrKeyword. VisitorsIdent = "visitors" extends IdentOrKeyword. EndVisitorsIdent = "endvisitors" extends IdentOrKeyword. VisitorIdent = "visitor" extends IdentOrKeyword. NotParsedIdent = "notparsed" extends IdentOrKeyword. DerivedIdent = "derived" extends IdentOrKeyword. InitIdent = "init" extends IdentOrKeyword. CommonIdent = "common" extends IdentOrKeyword. LookaheadIdent = "lookahead" extends IdentOrKeyword. OtherIdent = Ident extends IdentOrKeyword. ParseKeyword : DoParse | DontParse . DoParse : DoParseWithoutStars | DoParseWithStars extends ParseKeyword. DoParseWithoutStars = "parse" extends DoParse. DoParseWithStars = "*parse*" extends DoParse. DontParse : DontParseWithoutStars | DontParseWithStars extends ParseKeyword. DontParseWithoutStars = "noparse" extends DontParse. DontParseWithStars = "*noparse*" extends DontParse. VisitorKeyword : BeginVisitors | EndVisitors . BeginVisitors : BeginVisitorsWithoutStars | BeginVisitorsWithStars extends VisitorKeyword. BeginVisitorsWithoutStars = "visitors" extends BeginVisitors. BeginVisitorsWithStars = "*visitors*" extends BeginVisitors. EndVisitors : EndVisitorsWithoutStars | EndVisitorsWithStars extends VisitorKeyword. EndVisitorsWithoutStars = "endvisitors" extends EndVisitors. EndVisitorsWithStars = "*endvisitors*" extends EndVisitors. ClassKeyword : PublicClass | FinalClass | InterfaceClass | VisitorClass | NotParsedClass . PublicClass : PublicClassWithoutStars | PublicClassWithStars extends ClassKeyword. PublicClassWithoutStars = "public" extends PublicClass. PublicClassWithStars = "*public*" extends PublicClass. FinalClass : FinalClassWithoutStars | FinalClassWithStars extends ClassKeyword. FinalClassWithoutStars = "final" extends FinalClass. FinalClassWithStars = "*final*" extends FinalClass. InterfaceClass : InterfaceClassWithoutStars | InterfaceClassWithStars extends ClassKeyword. InterfaceClassWithoutStars = "interface" extends InterfaceClass. InterfaceClassWithStars = "*interface*" extends InterfaceClass. VisitorClass : VisitorClassWithoutStars | VisitorClassWithStars extends ClassKeyword. VisitorClassWithoutStars = "visitor" extends VisitorClass. VisitorClassWithStars = "*visitor*" extends VisitorClass. NotParsedClass : NotParsedClassWithoutStars | NotParsedClassWithStars extends ClassKeyword. NotParsedClassWithoutStars = "notparsed" extends NotParsedClass. NotParsedClassWithStars = "*notparsed*" extends NotParsedClass. PartKeyword : FinalPart | StaticPart | ReadOnlyPart | PrivatePart | DerivedPart . FinalPart : FinalPartWithoutStars | FinalPartWithStars extends PartKeyword. FinalPartWithoutStars = "final" extends FinalPart. FinalPartWithStars = "*final*" extends FinalPart. StaticPart : StaticPartWithoutStars | StaticPartWithStars extends PartKeyword. StaticPartWithoutStars = "static" extends StaticPart. StaticPartWithStars = "*static*" extends StaticPart. ReadOnlyPart : ReadOnlyPartWithoutStars | ReadOnlyPartWithStars extends PartKeyword. ReadOnlyPartWithoutStars = "read-only" extends ReadOnlyPart. ReadOnlyPartWithStars = "*read-only*" extends ReadOnlyPart. PrivatePart : PrivatePartWithoutStars | PrivatePartWithStars extends PartKeyword. PrivatePartWithoutStars = "private" extends PrivatePart. PrivatePartWithStars = "*private*" extends PrivatePart. DerivedPart : DerivedPartWithoutStars | DerivedPartWithStars extends PartKeyword. DerivedPartWithoutStars = "derived" extends DerivedPart. DerivedPartWithStars = "*derived*" extends DerivedPart. PartInitKeyword : PartInitKeywordWithoutStars | PartInitKeywordWithStars . PartInitKeywordWithoutStars = "init" extends PartInitKeyword. PartInitKeywordWithStars = "*init*" extends PartInitKeyword. ExtendsKeyword : ExtendsKeywordWithoutStars | ExtendsKeywordWithStars . ExtendsKeywordWithoutStars = "extends" extends ExtendsKeyword. ExtendsKeywordWithStars = *s "*extends*" *s extends ExtendsKeyword. ImplementsKeyword : ImplementsKeywordWithoutStars | ImplementsKeywordWithStars . ImplementsKeywordWithoutStars = "implements" extends ImplementsKeyword. ImplementsKeywordWithStars = *s "*implements*" *s extends ImplementsKeyword. CommonKeyword : CommonWithoutStars | CommonWithStars . CommonWithoutStars = *l + + + "common" - - -extends CommonKeyword. CommonWithStars = *l + + + "*common*" - - -extends CommonKeyword. LookaheadKeyword : LookaheadKeywordWithoutStars | LookaheadKeywordWithStars . LookaheadKeywordWithoutStars = "lookahead" extends LookaheadKeyword. LookaheadKeywordWithStars = "*lookahead*" extends LookaheadKeyword. *noparse* notparsed TraversalMethodName = MethodName. notparsed ClassType = boolean boolean boolean boolean boolean boolean boolean boolean. notparsed PartType = boolean boolean boolean boolean boolean. notparsed Parts = [ Nonempty_Parts]. *noparse* *visitors* notparsed visitor PlacementVisitor = UGraph extends UniversalVisitor. notparsed visitor EdgeDistinctionVisitor = String extends UniversalVisitor. notparsed visitor ClassNameRetVisitor = ClassName extends UniversalVisitor. notparsed visitor ClassNameTranspVisitor = ParamClassName extends UniversalVisitor. notparsed visitor EdgeVisitor = EdgeDistinctionVisitor ClassNameTranspVisitor UGraph extends UniversalVisitor. notparsed visitor VertexReadingVisitor = UGraph String Integer Integer extends UniversalVisitor. notparsed visitor EdgeReadingVisitor = UGraph String String Integer String Integer Integer extends UniversalVisitor. notparsed visitor ReadVertexVisitor = VertexContainer extends UniversalVisitor. notparsed visitor VertexContainer = Vector Vector Vector extends UniversalVisitor. notparsed visitor ReadEdgeVisitor = EdgeContainer extends UniversalVisitor. notparsed visitor EdgeContainer = Vector Vector extends UniversalVisitor. notparsed visitor Main = extends UniversalVisitor. notparsed visitor CountingVisitor = Integer extends UniversalVisitor. notparsed visitor superInitVisitor : InitVisitor | HashCreateVisitor | TGUpdateVisitor extends UniversalVisitor. notparsed visitor InitVisitor = extends superInitVisitor. notparsed visitor HashCreateVisitor = extends superInitVisitor. notparsed visitor ListVectorVisitor = Vector Vector Vector extends UniversalVisitor. notparsed visitor DecoCollectVisitor = UID Vector extends UniversalVisitor. notparsed visitor tostopVisitor = extends UniversalVisitor. notparsed visitor RepClassSpecVisitor = Name Name extends UniversalVisitor. notparsed visitor PlaceVertexVisitor = Coordinates Hashtable Hashtable extends UniversalVisitor. notparsed visitor SomeClassSpecVisitor = UConstEdge extends UniversalVisitor. notparsed visitor IntModVisitor = InterfaceModifier_List extends UniversalVisitor. notparsed visitor ClassModVisitor = ScopeIdentifier_List extends UniversalVisitor. notparsed visitor PartModVisitor = PartModifier_List extends UniversalVisitor. notparsed visitor cdStringVisitor : ConstVisitor | AltVisitor | IntVisitor *common* String extends UniversalVisitor. notparsed visitor ConstVisitor = Hashtable Hashtable extends cdStringVisitor. notparsed visitor AltVisitor = Hashtable Hashtable extends cdStringVisitor. notparsed visitor IntVisitor = Hashtable Hashtable extends cdStringVisitor. notparsed visitor ClassGlobVisitor : SourceEdgeCollector extends UniversalVisitor. notparsed visitor SourceEdgeCollector = StrategyGraph Integer_NList extends ClassGlobVisitor. notparsed visitor ClassNameAccessor : extends UniversalVisitor. notparsed visitor GlobVisitor : GlobMatcher | GlobCollector | ClassGlobCollector | EdgeGlobCollector | OutgoingEdgeSpecConvertor | SGEdgeMatcher extends UniversalVisitor. notparsed visitor GlobMatcher = Glob boolean extends GlobVisitor. notparsed visitor GlobCollector = GlobSet extends GlobVisitor. notparsed visitor ClassGlobCollector = ClassGlobSet extends GlobVisitor. notparsed visitor EdgeGlobCollector = GlobSet extends GlobVisitor. notparsed visitor OutgoingEdgeSpecConvertor = GlobSet extends GlobVisitor. notparsed visitor SGEdgeMatcher = ClassNameI int Vector extends GlobVisitor. notparsed visitor TGVertexCollector = TraversalGraph extends UniversalVisitor. notparsed visitor TGEdgeGlobMaker = ClassName ClassName ClassName PartName Glob *extends* TGEdgeVisitor. notparsed visitor TGCreateVisitor = TraversalGraph Hashtable extends UniversalVisitor. notparsed visitor TGUpdateVisitor = extends superInitVisitor. notparsed visitor SaveGraphVisitor = String extends UniversalVisitor. notparsed visitor SelectMarkedVisitor = boolean boolean boolean String String extends UniversalVisitor. notparsed visitor SGraphCollector = Vector Vector extends UniversalVisitor. notparsed visitor VecVisitor = Vector extends UniversalVisitor. notparsed visitor StringVisitor = String extends UniversalVisitor. notparsed visitor DummyVisitor = extends UniversalVisitor. notparsed visitor notparsed visitor PrintVisitor = int boolean extends UniversalVisitor. notparsed visitor notparsed visitor CopyVisitor = derived Object extends UniversalVisitor. notparsed visitor notparsed visitor EqualVisitor = boolean init (@ true @) extends UniversalVisitor. notparsed visitor notparsed visitor DisplayVisitor = int extends UniversalVisitor. notparsed visitor notparsed visitor TraceVisitor = int extends UniversalVisitor. notparsed visitor notparsed visitor UniversalVisitor : . Import_SList = Nonempty_Import_SList. ClassGraphEntry_DList = Nonempty_ClassGraphEntry_DList *l. ClassKeyword_List = [ Nonempty_ClassKeyword_List]. ClassName_Commalist = Nonempty_ClassName_Commalist. PartOrSyntax_List = [ Nonempty_PartOrSyntax_List]. PartKeyword_List = [ Nonempty_PartKeyword_List]. Part_Sandwich = Syntax_List *s Part Syntax_List. Superclass_Commalist = Nonempty_Superclass_Commalist. Interface_Commalist = Nonempty_Interface_Commalist. Subclass_Barlist = Nonempty_Subclass_Barlist. RepeatedPart_Sandwich = Syntax_List *s RepeatedPart Syntax_List. ClassSpec_Sandwich = Syntax_List *s ClassSpec Syntax_List. Syntax_List = [ Nonempty_Syntax_List]. ClassSpec_Commalist = Nonempty_ClassSpec_Commalist. Behavior_DList = Nonempty_Behavior_DList *l. SGEdge_SList = Nonempty_SGEdge_SList. Integer_NList = Nonempty_Integer_NList. PathSegment_List = [ Nonempty_PathSegment_List]. StrategyExpression_Commalist = Nonempty_StrategyExpression_Commalist. Glob_Commalist = Nonempty_Glob_Commalist. ClassGlob_Commalist = Nonempty_ClassGlob_Commalist. Method_SList = Nonempty_Method_SList. Visitor_Commalist = Nonempty_Visitor_Commalist. MethodKeyword_List = [ Nonempty_MethodKeyword_List]. MethodParm_Commalist = Nonempty_MethodParm_Commalist. ArraySpec_List = [ Nonempty_ArraySpec_List]. Nonempty_UVertex_List = UVertex [*l Nonempty_UVertex_List]. Nonempty_IEdge_List = UID ["," Nonempty_IEdge_List]. Nonempty_OEdge_List = UID ["," Nonempty_OEdge_List]. Nonempty_InterfaceModifier_List = InterfaceModifier [ Nonempty_InterfaceModifier_List]. Nonempty_ScopeIdentifier_List = ScopeIdentifier [ Nonempty_ScopeIdentifier_List]. Nonempty_UEdge_List = UEdge [*l Nonempty_UEdge_List]. Nonempty_PartModifier_List = PartModifier [ Nonempty_PartModifier_List]. Nonempty_PackageName = IdentOrKeyword [*lookahead*(@ 2 @) "." Nonempty_PackageName]. Nonempty_Name = Ident [*lookahead*(@ "." _Ident(),{ "=:~(".indexOf(getToken(3).image) == -1 } @) "." Nonempty_Name]. notparsed Nonempty_Parts = Part [ Nonempty_Parts]. Nonempty_Import_SList = Import [*l Nonempty_Import_SList]. Nonempty_ClassGraphEntry_DList = ClassGraphEntry [*l *l Nonempty_ClassGraphEntry_DList]. Nonempty_ClassKeyword_List = ClassKeyword [*s Nonempty_ClassKeyword_List]. Nonempty_ClassName_Commalist = ClassName ["," *s Nonempty_ClassName_Commalist]. Nonempty_PartOrSyntax_List = PartOrSyntax [*s Nonempty_PartOrSyntax_List]. Nonempty_PartKeyword_List = PartKeyword [*s Nonempty_PartKeyword_List]. Nonempty_Superclass_Commalist = Superclass ["," *s Nonempty_Superclass_Commalist]. Nonempty_Interface_Commalist = Interface ["," *s Nonempty_Interface_Commalist]. Nonempty_Subclass_Barlist = Subclass [*l "|" *s Nonempty_Subclass_Barlist]. Nonempty_Syntax_List = Syntax [*s Nonempty_Syntax_List]. Nonempty_ClassSpec_Commalist = ClassSpec ["," *s Nonempty_ClassSpec_Commalist]. Nonempty_Behavior_DList = Behavior [*l *l Nonempty_Behavior_DList]. Nonempty_SGEdge_SList = SGEdge [*l Nonempty_SGEdge_SList]. Nonempty_Integer_NList = Integer [*s Nonempty_Integer_NList]. Nonempty_PathSegment_List = PathSegment [*s Nonempty_PathSegment_List]. Nonempty_StrategyExpression_Commalist = StrategyExpression ["," *s Nonempty_StrategyExpression_Commalist]. Nonempty_Glob_Commalist = Glob ["," *s Nonempty_Glob_Commalist]. Nonempty_ClassGlob_Commalist = ClassGlob ["," *s Nonempty_ClassGlob_Commalist]. Nonempty_Method_SList = Method [*l Nonempty_Method_SList]. Nonempty_Visitor_Commalist = Visitor ["," *s Nonempty_Visitor_Commalist]. Nonempty_MethodKeyword_List = MethodKeyword [*s Nonempty_MethodKeyword_List]. Nonempty_MethodParm_Commalist = MethodParm ["," *s Nonempty_MethodParm_Commalist]. Nonempty_ArraySpec_List = ArraySpec [*s Nonempty_ArraySpec_List].