You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by Apache Wiki <wi...@apache.org> on 2008/07/13 08:56:45 UTC

[Thrift Wiki] Update of "ThriftIDL" by ChadWalters

Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Thrift Wiki" for change notification.

The following page has been changed by ChadWalters:
http://wiki.apache.org/thrift/ThriftIDL

The comment on the change is:
Add initial stab at definitions

------------------------------------------------------------------------------
  
  = Description =
  
- Here is an informal description of the Thrift IDL:
+ ''Under construction''
  
- ''To be added''
+ Here is a description of the Thrift IDL:
+ 
+ {{{Document      ::=  Header* Definition*}}}
+ 
+ {{{Header        ::=  Include | CppInclude | Namespace | XsdNamespace}}}
+ 
+ {{{Include       ::=  'include' Literal}}}
+ 
+ {{{CppInclude    ::=  'cpp_include' Literal}}}
+ 
+ {{{Namespace     ::=  'namespace' ( ( NamespaceType Identifier ) |}}}
+ {{{                     ( 'smalltalk.category' STIdentifier ) )}}}
+ 
+ {{{NamespaceType ::=  '*' | LangID | 'smalltalk.prefix'}}}
+ 
+ {{{LangID        ::=  'cpp' | 'java' | 'php' | 'py' | 'perl' | 'rb' |}}}
+ {{{                     'cocoa' | 'csharp'}}}
+ 
+ {{{XsdNamespace  ::=  'xsd_namespace' Literal}}}
+ 
+ {{{Definition    ::=  Const | Typedef | Enum | Senum | Struct | Xception | Service}}}
+ 
+ {{{Const         ::=}}}
+ 
+ {{{Typedef       ::=}}}
+ 
+ {{{Enum          ::=}}}
+ 
+ {{{Senum         ::=}}}
+ 
+ {{{Struct        ::=  'struct' Identifier XSDAll? '{' FieldList '}'}}}
+ 
+ {{{Xception      ::=}}}
+ 
+ {{{Service       ::=  'service' Identifier ( 'extends' Identifier )? '{' FunctionList '}'}}}
+ 
+ {{{XSDAll        ::=}}}
+ 
+ {{{FieldList     ::=}}}
+ 
+ {{{FunctionList  ::=}}}
+ 
+ {{{Literal       ::=  ('"' [^"]* '"') | ("'" [^']* "'")}}}
+ 
+ {{{Identifier    ::=  ( Letter | '_' ) ( Letter | Digit | '.' | '_' )*}}}
+ 
+ {{{STIdentifier  ::=  ( Letter | '_' ) ( Letter | Digit | '.' | '_' | '-' )*}}}
+ 
+ {{{Letter        ::=  ['A'-'Z'] | ['a'-'z']}}}
+ 
+ {{{Digit         ::=  ['0'-'9']}}}
  
  = Examples =