diff --git a/parser/objt.go b/parser/objt.go index 9784f55..ec64e08 100644 --- a/parser/objt.go +++ b/parser/objt.go @@ -97,8 +97,10 @@ func (parser *ParsingOperation) parseObjtMember () ( member.what, err = parser.parseType() if err != nil { return } + println(parser.token.Describe()) + // if there is a bit width, get it - if parser.token.Is(lexer.TokenKindColon) { + if parser.token.Is(lexer.TokenKindBinaryAnd) { err = parser.nextToken(lexer.TokenKindUInt) if err != nil { return } member.bitWidth = parser.token.Value().(uint64) diff --git a/parser/objt_test.go b/parser/objt_test.go index 854272a..16a5439 100644 --- a/parser/objt_test.go +++ b/parser/objt_test.go @@ -10,8 +10,8 @@ objt ro Basic:Obj ro that:Basic ro this:Basic objt ro BitFields:Obj - ro that:Int:1 - ro this:Int:24 + ro that:Int & 1 + ro this:Int & 24 298 objt ro ComplexInit:Obj ro basic:Int 87 ro complex0:Bird diff --git a/parser/tree-tostring.go b/parser/tree-tostring.go index 6694167..114f681 100644 --- a/parser/tree-tostring.go +++ b/parser/tree-tostring.go @@ -299,7 +299,7 @@ func (member ObjtMember) ToString (indent int) (output string) { output += member.what.ToString() if member.bitWidth > 0 { - output += fmt.Sprint(":", member.bitWidth) + output += fmt.Sprint(" & ", member.bitWidth) } isComplexInitialization := diff --git a/tests/parser/objt/main.arf b/tests/parser/objt/main.arf index ebd909c..7bdaf3c 100644 --- a/tests/parser/objt/main.arf +++ b/tests/parser/objt/main.arf @@ -5,8 +5,8 @@ objt ro Basic:Obj ro this:Basic objt ro BitFields:Obj - ro that:Int:1 - ro this:Int:24 298 + ro that:Int & 1 + ro this:Int & 24 298 objt ro Init:Obj ro that:String "hello world"