Hessian 2.0 Grammar
From CauchoWiki
Draft Grammar of Hessian 2.0. Notes and explanation are at Hessian 2.0. The spec development process has just begun.
The following is the complete grammar for Hessian 2.0. All integers are big-endian, i.e. starting with the most-significant byte first.
top ::= call
::= reply
call ::= c x02 x00 header* method object* z
reply ::= r x02 x00 header* object z
::= r x02 x00 header* fault z
object ::= null
::= boolean
::= int
::= long
::= double
::= date
::= string
::= xml
::= binary
::= remote
::= ref
::= list
::= map
::= class
::= instance
header ::= H b1 b0 header-string object
method ::= m b1 b0 method-string
fault ::= f (object object)*
list ::= V type? length? object* z
::= [x10 - x1f] <int> object*
map ::= M type? (object object)* z
remote ::= r type? string
type ::= t b1 b0 type-string
::= T <int>
length ::= l b3 b2 b1 b0
::= x0f b0
null ::= N
boolean ::= T
::= F
int ::= I b3 b2 b1 b0
::= [x80 - 0xcf]
::= x01 b0
::= x02 b1 b0
long ::= L b7 b6 b5 b4 b3 b2 b1 b0
::= [x20 - x3f]
::= x03 b0
::= x04 b1 b0
::= x05 b3 b2 b1 b0
double ::= D b7 b6 b5 b4 b3 b2 b1 b0
::= x06
::= x07
::= x08 b0
::= x09 b1 b0
::= x0b b3 b2 b1 b0
::= x0c b1 b0
::= x0e b3 b2 b1 b0
date ::= d b7 b6 b5 b4 b3 b2 b1 b0
string ::= (s b1 b0 string-data)* S b1 b0 string-data
::= [xd0 - xef] string-data
xml ::= (x b1 b0 xml-data)* X b1 b0 xml-data
binary ::= (b b1 b0 binary-data)* B b1 b0 binary-data
::= [xf0 - xff] binary-data
ref ::= R b3 b2 b1 b0
::= x5b b0
::= x5c b1 b1
class ::= O int string-data int string* object*
instance ::= o int object*
