The definition struct X { int x : 16, y : 16; } gets parsed incorrectly into the following tokens:
[<Token.STRUCT value='struct'>,
<Token.IDENTIFIER value='X'>,
<Token.BLOCK value='{'>,
<Token.IDENTIFIER value='int'>,
<Token.IDENTIFIER value='x'>,
<Token.NAME value='y : 16'>,
<Token.EOL value=';'>,
<Token.BLOCK value='}'>]
As you can see, x : 16 is mistakenly truncated and treated as an identifier instead of a name like y : 16.