Skip to content

Attribute description

Mikhail Yakshin edited this page Mar 1, 2016 · 10 revisions

Attribute description specifies how to read one particular attribute — typically, a single number, a string, array of bytes, etc. Attribute can also reference other complex structures by specifying user type given in type description. Each attribute is typically compiled into equivalent parsing instruction(s) in target language.

Common attributes

id

  • Contents: a string that matches /^[a-z][a-z0-9_]*$/ — i.e. starts with lowercase letter and then may contain lowercase letters, numbers and underscore
  • Purpose: identify attribute among others
  • Influences: used as variable / field name in target programming language
  • Mandatory: yes

type

repeat

repeat-expr

Attributes that depend on type

No type specified

If there's no type specified, attribute will be read just as a sequence of bytes from a stream. Thus, one has to decide on how many bytes to read? There are two ways:

  • Specify amount of bytes to read in size key. One can specify an integer constant or an expression in this field (for example, if the number of bytes to read depends on some other attribute)
  • Set size-eos: true, thus ordering to read all the bytes till the end of current stream.

u*, s*

str

strz

User-specified types

Clone this wiki locally