|Lemon Home Page| About PIML| PIML Grammar|

Structure の文法

Structure ::
  notes: Notes
  relations: Relations;
  cloneables: Cloneables;
  roles: Roles;
  layout: LayoutInfo

 <structure>
    notes
    relations
    roles
    layout
 </structure>


Roles :: Role* ::

 <roles>
    role ...
 </roles>


Role ::

  syslabel: Identifier;
  abstract, croneable: Boolean;
  notes: Notes; operations: Operations;

 <role syslabel= syslabel
    abstract= abstract
    croneable= croneable>
    notes
    operations
 </role>

Relations :: Relation* ::

 <relations>
    relation ...
 </relations>


Relation ::

  Inheritance
  $|$ Aggregate
  $|$ Reference
  $|$ Creation

Inheritance ::

  target, origin: Identifier

  <inheritance target= target
     origin= origin >


Aggregate ::

  target, origin,
  syslabel: Identifier;
  plural: Boolean

  <aggregate syslabel= syslabel
     target= target
     origin= origin
     plural= true
  >


Reference ::
  target, origin,
  syslabel: Identifier;
  croneable: Boolean

  <reference syslabel= syslabel
     target= target
     origin= origin
     croneable= croneable
  >


Creation ::
  target, origin: Identifier

  <creation target= target
  origin= origin >

Cloneables :: Cloneable* ::

  <cloneables>
    cloneable ...
  </cloneables>

Cloneable ::

  CloneElem*

CloneElem ::
  type, id: Identifier

  <celem type= type id= id>

Operations :: Operation* ::

 <operations>
    operation ...
 </operations>

Operation ::
  syslabel, retval: Identifier;
  abstract, croneable: Boolean;
  access: AccessSpec; notes: Notes;
  code: PseudoCode;  

  <operation syslabel= syslabel
     retval= retval
  access access
     abstract= abstract
  croneable= croneable
  >
    notes
    code
  </operation>

AccessSpec ::
  spec: S

  "spec"
 
Boolean ::
  bool: B

  "bool"

Mika Ohtsuki <mika@db.is.kyushu-u.ac.jp>
Last modified: Tue Jan 27 18:37:12 JST 1998