A Vision for Open Hypermedia Systems | Nürnberg and Leggett |
The semantics of the grammar below are not specified in detail here, but a brief description follows. Basically, specifications consist of a protocol (interface) identifier, a list of legal "targets" or classes of processes in the protocol (often "client" and "server"), a list of type definitions, and a list of services. There are several built-in types including cardinal, integer, byte, NULL-terminated strings, and identifier (opaque byte block), as well as arrays of these types. The type declaration facilities allow other types to be composed into arrays, structures, and linked lists.
Each service definition (sequence) consists of a name, an initiator target, and an arbitrary number of parts (messages). Each part consists of a name, a source target, a destination target, and an arbitrary number of parameters.
Currently, the PDC generates two "basic" libraries per protocol and one library per target per protocol. The basic libraries contain code to initialize the source process identifier and to encode and decode parameters of protocol-specific types. The target libraries contain messages to send and receive messages for which the target was specified as the source or destination, respectively. Also, for sequences that specify the target as the initiator, a message that composes the appropriate sending and receiving functions is generated. (This provides an "RPC-like" synchronous blocking interface to services for initiators.) The examples provided in Section 5 and the Appendix E specification of the current Davis et al. proposal in this format should provide clarifying examples.
Character sequence definitions. The following are shorthand for sequences of characters referred to in this specification. They are specified as UNIX regular expressions. Although not shown here, the regular expression for the ID sequence should be understood to exclude the keywords listed below.
WS | [ \t\n] |
COMMENT | #.*\n |
ID | [a-zA-Z]+[a-zA-Zo-0_]* |
DECNUM | [0-9]+ |
HEXNUM | 0x[a-fA-F0-9]+ |
STRING | \"[^\"\n]*\" |
Keyword list.
ALIAS | FOR | SEQUENCE |
ARRAY | GENERATE | SIZE |
DECLARED | LIST | STATIC |
DECODE_FN | MESSAGE | STRUCTURE |
DIMENSION | NEXT | TARGET |
DYNAMIC | OF | TO |
ENCODE_FN | POINTER | TYPE |
Grammar specification. The grammar consists of special token sequences and keywords. Tokens are delimited by white space as defined in the WS sequence. Additionally, the grammar refers to characters in the set {':', ';', ',', '.', '{', '}', '[', ']', '(', ')', '-', '>', '='}, which are rendered in bold to distinguish them from the grammar specification symbols. Comments are ignored.
PDCLFile:: | TargetDecl* TypeDecl* SeqDecl* |
TargetDecl:: | TARGET Id |
TypeDecl:: | TypeDeclHeader Id TypeDeclRest ; |
TypeDeclHeader:: | TYPE [ ( Loc [ , Loc ]* ) ] |
Loc:: | ( DECLARED | ENCODE_FN | DECODE_FN ) = ( GENERATE | STRING ) |
TypeDeclRest:: | ( SimpleTypeDeclRest | AliasTypeDeclRest | StaticArrayTypeDeclRest | DynArrayTypeDeclRest | StructTypeDeclRest | ListTypeDeclRest | PointerTypeDeclRest ) |
SimpleTypeDeclRest:: | SIZE STRING |
AliasTypeDeclRest:: | ALIAS FOR Id |
StaticArrayTypeDeclRest:: | STATIC ARRAY [ SimpleDim [ , SimpleDim ]* ] OF Id |
SimpleDim:: | ( Id | STRING | NUMBER ) |
DynArrayTypeDeclRest:: | DYNAMIC NUMBER DIMENSION ARRAY OF Id |
StructTypeDeclRest:: | STRUCTURE ( FieldDecl* ) |
FieldDecl:: | Id : [ [ Index [ , Index ]* ] ] ; |
Index:: | Id [ ( ) ]* |
ListTypeDeclRest:: | LIST ( FieldDecl* ) NEXT = Id |
PointerTypeDeclRest:: | POINTER TO Id |
SeqDecl:: | SEQUENCE Id Id MessageDecl* |
MessageDecl:: | MESSAGE Id Id -> Id ( ParamDecl* ) ; |
ParamDecl:: | Id : Id [ [ Index [ , Index ]* ] ] ; |
Id:: | ID | ALIAS | ARRAY | DECLARED | DECODE_FN | DIMENSION | DYNAMIC | ENCODE_FN | FOR | GENERATE | LIST | MESSAGE | NEXT | OF | POINTER | SEQUENCE | SIZE | STATIC | STRUCTURE | TARGET | TO | TYPE |
Contents
Top
1. Introduction
2. Scope of the OHSWG...
3. Scenarios...
4. An OHS Reference Architecture Proposal...
5. An OHP Proposal...
6. Metacommentary
7. Conclusions
References
Appendix A. Generic Encoding Layer Rules
Appendix B. Sproc Generic Layer Rules
Appendix C. Sproc Specific Layer Rules
Appendix D. Sproc Interface Format
Appendix E. Current Protocol Proposal in Sproc Interface Format
Peter J. Nürnberg, John J. Leggett