Hessian 2.0 Grammar

From Resin 3.0

(Difference between revisions)
Jump to: navigation, search
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

See Hessian 1.0 Grammar

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
Personal tools