import java.io.*; import java.util.*; *noparse* //============================================================ // Registry //------------------------------------------------------------ Registry = TypeList EntityList CategoryList . TypeList = List(DefinedType) . EntityList = List(Entity) . CategoryList = List(CodeCategory) . //============================================================ // Types //------------------------------------------------------------ DefinedType : ClassType | NonClassType *common* TypeName
HeaderFile . NonClassType = . ClassType : SimpleClassType | TemplatedClassType . SimpleClassType = . TemplatedClassType = TemplateArgs . TypeName = String . HeaderFile = String . TemplateArgs = String . //============================================================ // Entities //------------------------------------------------------------ AccessKeyList = List(AccessKey) . Entity = EntityName AccessKeyList List(ParentEntity) List(Method) . ParentEntity = Entity . EntityName = String . Method = MethodName [ MethodBodyVersion] boolean boolean boolean AccessKeyList ReturnDecl List(ArgumentDecl) . MethodName = String . MethodBodyVersion = String . AccessKey = String . TypeDecl : ReturnDecl | ArgumentDecl *common* String String boolean TypeUse List(TypeUse) . ReturnDecl = . ArgumentDecl = ArgumentName [ Initializer ] . ArgumentName = String . Initializer = String . TypeUse = TypeName boolean [ DefinedType] . //============================================================ // Code Categories //------------------------------------------------------------ Template : HeaderTemplate | ImplTemplate | MakeTemplate *common* String . HeaderTemplate = . ImplTemplate = . MakeTemplate = . CodeCategoryType = String
HeaderTemplate ImplTemplate MakeTemplate . CodeCategory : GeneratedCodeCategory | NonGeneratedCodeCategory *common* String String String String . NonGeneratedCodeCategory = . GeneratedCodeCategory = CodeCategoryType AccessKeyList . //============================================================ // Program classes //------------------------------------------------------------ Main = . //============================================================ // Utilities //------------------------------------------------------------ List(E) ~ {E}.