Hessian 2.0 Grammar
From Resin 3.0
(Difference between revisions)
Line 4: | Line 4: | ||
See [[Hessian 1.0 Grammar]] | See [[Hessian 1.0 Grammar]] | ||
+ | |||
+ | [[Category: Hessian]] | ||
+ | |||
+ | The following is the complete grammar for Hessian 1.1. All integers are big-endian, i.e. starting with the most-significant byte first. | ||
+ | |||
+ | top ::= call | ||
+ | ::= reply | ||
+ | |||
+ | call ::= c x01 x00 header* method object* z | ||
+ | |||
+ | reply ::= r x01 x00 header* object z | ||
+ | ::= r x01 x00 header* fault z | ||
+ | |||
+ | object ::= null | ||
+ | ::= boolean | ||
+ | ::= int | ||
+ | ::= long | ||
+ | ::= double | ||
+ | ::= date | ||
+ | ::= string | ||
+ | ::= xml | ||
+ | ::= binary | ||
+ | ::= remote | ||
+ | ::= ref | ||
+ | ::= list | ||
+ | ::= map | ||
+ | |||
+ | header ::= H b1 b0 header-string object | ||
+ | method ::= m b1 b0 method-string | ||
+ | |||
+ | fault ::= f (object object)* | ||
+ | |||
+ | list ::= V type? length? object* z | ||
+ | map ::= M type? (object object)* z | ||
+ | remote ::= r type? string | ||
+ | |||
+ | type ::= t b1 b0 type-string | ||
+ | length ::= l b3 b2 b1 b0 | ||
+ | ::= 0x0b b0 | ||
+ | ::= 0x0c b1 b0 | ||
+ | |||
+ | null ::= N | ||
+ | boolean ::= T | ||
+ | ::= F | ||
+ | |||
+ | int ::= I b3 b2 b1 b0 | ||
+ | ::= 0x80 - 0xaf | ||
+ | ::= 0x01 b0 | ||
+ | ::= 0x02 b1 b0 | ||
+ | |||
+ | long ::= L b7 b6 b5 b4 b3 b2 b1 b0 | ||
+ | ::= 0xb0 - 0xcf | ||
+ | ::= 0x03 b0 | ||
+ | ::= 0x04 b1 b0 | ||
+ | ::= 0x05 b3 b2 b1 b0 | ||
+ | |||
+ | double ::= D b7 b6 b5 b4 b3 b2 b1 b0 | ||
+ | ::= 0x06 | ||
+ | ::= 0x07 | ||
+ | ::= 0x08 int | ||
+ | |||
+ | date ::= d b7 b6 b5 b4 b3 b2 b1 b0 | ||
+ | |||
+ | string ::= (s b1 b0 string-data)* S b1 b0 string-data | ||
+ | |||
+ | xml ::= (x b1 b0 xml-data)* X b1 b0 xml-data | ||
+ | |||
+ | binary ::= (b b1 b0 binary-data)* B b1 b0 binary-data | ||
+ | |||
+ | ref ::= R b3 b2 b1 b0 |
Revision as of 22:18, 16 June 2006
Draft Grammar of Hessian 1.1
The following is the complete grammar for Hessian 1.1. All integers are big-endian, i.e. starting with the most-significant byte first.
top ::= call ::= reply call ::= c x01 x00 header* method object* z reply ::= r x01 x00 header* object z ::= r x01 x00 header* fault z object ::= null ::= boolean ::= int ::= long ::= double ::= date ::= string ::= xml ::= binary ::= remote ::= ref ::= list ::= map header ::= H b1 b0 header-string object method ::= m b1 b0 method-string fault ::= f (object object)* list ::= V type? length? object* z map ::= M type? (object object)* z remote ::= r type? string type ::= t b1 b0 type-string length ::= l b3 b2 b1 b0 ::= 0x0b b0 ::= 0x0c b1 b0 null ::= N boolean ::= T ::= F int ::= I b3 b2 b1 b0 ::= 0x80 - 0xaf ::= 0x01 b0 ::= 0x02 b1 b0 long ::= L b7 b6 b5 b4 b3 b2 b1 b0 ::= 0xb0 - 0xcf ::= 0x03 b0 ::= 0x04 b1 b0 ::= 0x05 b3 b2 b1 b0 double ::= D b7 b6 b5 b4 b3 b2 b1 b0 ::= 0x06 ::= 0x07 ::= 0x08 int
date ::= d b7 b6 b5 b4 b3 b2 b1 b0 string ::= (s b1 b0 string-data)* S b1 b0 string-data xml ::= (x b1 b0 xml-data)* X b1 b0 xml-data binary ::= (b b1 b0 binary-data)* B b1 b0 binary-data ref ::= R b3 b2 b1 b0