diff --git a/parser/objt.go b/parser/objt.go index f384cff..9784f55 100644 --- a/parser/objt.go +++ b/parser/objt.go @@ -96,6 +96,15 @@ func (parser *ParsingOperation) parseObjtMember () ( if err != nil { return } member.what, err = parser.parseType() if err != nil { return } + + // if there is a bit width, get it + if parser.token.Is(lexer.TokenKindColon) { + err = parser.nextToken(lexer.TokenKindUInt) + if err != nil { return } + member.bitWidth = parser.token.Value().(uint64) + err = parser.nextToken() + if err != nil { return } + } // parse default value if parser.token.Is(lexer.TokenKindNewline) { diff --git a/parser/tree.go b/parser/tree.go index c450bd7..e1f2292 100644 --- a/parser/tree.go +++ b/parser/tree.go @@ -180,7 +180,7 @@ type ObjtMember struct { name string what Type - bitWidth int + bitWidth uint64 permission types.Permission defaultValue Argument }