include "../lib/lib.java.cd"; package edu.neu.ccs.demeterf.demfgen.classes; lookahead = 3; import edu.neu.ccs.demeterf.demfgen.*; import edu.neu.ccs.demeterf.demfgen.dgp.DGPFunc; import edu.neu.ccs.demeterf.demfgen.pcdgp.PCDGPFunc; import edu.neu.ccs.demeterf.dispatch.*; import edu.neu.ccs.demeterf.*; import edu.neu.ccs.demeterf.demfgen.ClassHier.InhrtPair; import java.io.*; import java.io.FileInputStream; import edu.neu.ccs.demeterf.util.Util; // ** CD File DemFGenMain = IncludeList PackageDef LookDef ImportList TypeDefList EOF. Include = DoGen "include" *s String ";". IncludeList = IncludeCons | IncludeEmpty. IncludeCons = Include *l IncludeList. IncludeEmpty = *l. PackageDef = Package | NoPackage. Package = "package" *s NEPkgList ";" *l. NoPackage = . LookDef = LookAhead | NoLook. LookAhead = "lookahead" *s "=" *s int ";" *l. NoLook = . Import = "import" *s NEPkgList ";". PkgList = PkgCons | PkgStar | PkgEmpty. NEPkgList = ident PkgList. PkgCons = "." ident PkgList. PkgStar = ".*". PkgEmpty = . ImportList = ImportCons | ImportEmpty. ImportCons = Import *l ImportList. ImportEmpty = . TypeDef = IntfcDef | ClassDef. IntfcDef = *t DoGen "interface" *s ident TypeDefParams *s "=" *s PESubtypeList ".". ClassDef = *t DoGen ident TypeDefParams *s "=" *s PESubtypeList *s FieldList *s Impl ".". DoGen = NoParse | NoGen | Extern | YesGen. NoGen = "nogen" *s. NoParse = "noparse" *s. Extern = "extern" *s. YesGen = . TypeDefParams = DefParams | EmptyDefParams. DefParams = "(" NENameList ")". EmptyDefParams = . NameDef = ident Bound. Bound = ClassBound | NoBound. ClassBound = ":" TypeUse. NoBound = . Impl = IntfImpl | NoImpl. NoImpl = . IntfImpl = "implements" *s NETypeUseList. NameList = NameCons | NameEmpty. NENameList = NameDef NameList. NameCons = "," *s NameDef NameList. NameEmpty = . TypeUse = ident TypeUseParams. TypeUseParams = UseParams | EmptyUseParams. UseParams = "(" NETypeUseList ")". EmptyUseParams = . TypeUseList = TypeUseCons | TypeUseEmpty. NETypeUseList = TypeUse TypeUseList. TypeUseCons = "," *s TypeUse TypeUseList. TypeUseEmpty = . Field = "<" ident ">" *s TypeUse. FieldOrSyntax = Field | Syntax. Syntax = AddSpace | AddTab | AddLine | Plus | Minus | AddToken | TheEOF. AddSpace = "*s". AddTab = "*t". AddLine = "*l". Plus = "+". Minus = "-". AddToken = String. TheEOF = "EOF". SumToken = RealToken | EmptyToken. RealToken = String. EmptyToken = . TypeDefList = TypeDefCons | TypeDefEmpty. TypeDefCons = TypeDef *l TypeDefList. TypeDefEmpty = . FieldList = FieldCons | FieldEmpty. FieldCons = FieldOrSyntax *s FieldList. FieldEmpty = . interface PESubtypeList = NESubtypeList | SubtypeEmpty. NESubtypeList = TypeUse SubtypeList. SubtypeList = SubtypeCons | SubtypeEmpty. SubtypeCons = *s "|" *s TypeUse SubtypeList. SubtypeEmpty = . // ** BEH File BehFile = IncludeList *l BehDefList *l EOF. BehDefList = BehDefCons | BehDefEmpty. BehDefCons = BehDef *l BehDefList. BehDefEmpty = . BehDef = ident verbatim. interface EmptyList = IncludeEmpty | PkgStar | PkgEmpty | ImportEmpty | EmptyDefParams | NameEmpty | EmptyUseParams | TypeUseEmpty | TypeDefEmpty | FieldEmpty | SubtypeEmpty. interface ConsList = IncludeCons | NEPkgList | PkgCons | ImportCons | NENameList | NameCons | NETypeUseList | TypeUseCons | TypeDefCons | FieldCons | NESubtypeList | SubtypeCons. interface LitToken = AddToken | TheEOF | SumToken. nogen RuntimeException = TE | RTParseException | RTFileNotFound. TE = . RTParseException = . RTFileNotFound = . DummyTrav = List(DemFGenMain) List(TypeDef) Option(List(TypeDef)) List(FieldOrSyntax).