// Class Dictionary for PPtrans // // By: Michael Theroux // Michael Ruelle // Jim Pappas // // COM1205 // 4/97 (@ import java.util.Vector; import java.io.*; import java.lang.*; @) //-------------------------------------------------------------- // Input CD //-------------------------------------------------------------- // Class graph traversal specifications. InTraversalPP = InTraversalClassName "{" InTraversal "}". InTraversal = "traversal-pp" InReturnTypeName InTraversalName InArgs InBody. InArgs = "(" [ Commalist(InArg) ] ")". InArg = InJavaTypeName InVariable. InBody = "{" [InInitialize] InPathDirective InWrappers "}". InWrappers = [ SList( InWrapper ) ] . InVisitor = InClassName InVisitorName. InPathDirective = [InBypassDirective] [InThroughDirective] InTargetDirective. InThroughDirective = "through" InSpecClassesList. InBypassDirective = "bypassing" InSpecClassesList. InTargetDirective : InTo. InTo = "to" InTarget ";". InInitialize = "initialize" InInitializeText. // Before and after wrappers. InWrapper = InWrapperPosition InSpecClassesList InJavaCode. InSpecClassesList : InSpec | InSpecList. InWrapperPosition : InBefore | InAfter . InBefore = "before". InAfter = "after". InSpec : InEdgeSpec | InClassSpec. InClassSpec = InClassNameExact. InSpecList = "{" Commalist( InSpec ) "}". InEdgeSpec = InEdgeType InClassNameExact "," InPartNameGlob "," InClassNameExact. InPartNameGlob : InGlobalEdgeName | InPartName. InEdgeType : InPartEdge | InSuperEdge | InSubEdge. InPartEdge = "->". InSuperEdge = ":>". InSubEdge = "=>". InClassNameExact : InSpecificClassName | InGlobalClassName. InSpecificClassName = [ ":" InVariable ] InJavaTypeName. InGlobalEdgeName = InGlobalClassName. InGlobalClassName = "*". InTarget : InClassNameExact | InClassNamesExact. InClassNamesExact = "{" Commalist( InClassNameExact ) "}". // Terminal buffer classes. InClassName = Ident. InPartName = Ident. InTraversalName = Ident. InVisitorName = Ident. InJavaCode = Text. InInitializeText = Text. InReturnTypeName = Ident. InJavaTypeName = Ident. InVariable = Ident. InTraversalClassName = Ident. // Parameterized class definitions. SList(S) ~ S { S } . List(S) ~ { S }. Commalist(S) ~ S {"," S}. //------------------------------------------------------------------ // Output Behavior //------------------------------------------------------------------ OutTraversal = OutClass OutVisitor. OutClass = OutTraverseCode OutTraversalDecl. OutTraverseCode = OutTraversalArgs OutTraversalInit OutPathDirective OutBody. OutVisitor = OutWrappers. OutWrappers = . OutTraversalDecl = . OutBody = . OutTraversalArgs = . OutTransportationInit = . OutTraversalInit = . OutPathDirective = . //----------------------------------------------------------------- // Output CD //----------------------------------------------------------------- OutCD = OutTraversalSpecification. OutTraversalSpecification = . PPtrans = . //------------------------------------------------------------------ // Visitors //------------------------------------------------------------------ GeneralInformationVisitor = ClassListVector VariableListVector ArgumentClassListVector ArgumentVariableListVector ReturnValueType ClassName TraversalName InitializationText TargetVectorList. InitializationText = Text. PathDirectiveVisitor = Directives DirectiveClassesList DirectiveEdgesList DirectiveClasses. InitializationVisitor = ClassListVector VariableListVector. ClassDictionaryVisitor = GeneralInformationVisitor. TraversalName = Ident. ClassName = Ident. TargetVectorList = *extends* Vector. Directives = *extends* Vector. DirectiveClassesList = *extends* Vector. DirectiveEdgesList = *extends* Vector. DirectiveClasses = *extends* Vector. DirectiveVectorList = *extends* Vector. ClassListVector = *extends* Vector. VariableListVector = *extends* Vector. ArgumentClassListVector = *extends* Vector. ArgumentVariableListVector = *extends* Vector. CWrapInfoVis = WrapperPrefixList WrapperPrefix WrapperCodeList WrapperClassListList WrapperClassList. EWrapInfoVis = WrapperPrefixList WrapperPrefix WrapperCodeList WrapperClassListList WrapperClassList WrapperEdgeTypes WrapperEdgeType. WrapperEdgeTypes = *extends* Vector. WrapperEdgeType = *extends* Vector. WrapperCodeList = *extends* Vector. WrapperCode = String. WrapperClassList = *extends* Vector. WrapperPrefix = Ident. WrapperPrefixList = *extends* Vector. WrapperClassListList = *extends* Vector. ReturnValueType = Ident. PrintingVisitor = GeneralInformationVisitor CWrapInfoVis EWrapInfoVis PathDirectiveVisitor InitializationVisitor TabCount WrapperCount. TabCount = Integer. WrapperCount = Integer.