Here's an example of the changes that's been made in Argot in the latest version. In Argot 1.2 an unsigned 8-bit integer:
u8: meta.basic( 8, 0 );
In the latest version, the text format is now using a form of S-Expressions. The unsigned 8-bit integer now looks like:
(meta.structure meta.name:"uint8"
(meta.fixed_width uint8:8
[ (meta.fixed_width.attribute.size uint8:8)
(meta.fixed_width.attribute.integer)
(meta.fixed_width.attribute.unsigned)
(meta.fixed_width.attribute.bigendian) ] ))
There's obviously some big changes here. The name has changed from u8 to uint8 to be more in line with the C language definition. The other big change is that instead of defined using meta.basic, it is defined with meta.fixed_width. This new type includes the size and an array of attributes. The attribute type is abstract and can be extended define any number of attribute types.
The same definition can be shown in a very quick and dirty visual editor.
There's plenty to improve with the editor, but it shows the concept.