objt-bitfields #8
| @ -96,6 +96,17 @@ func (parser *ParsingOperation) parseObjtMember () ( | ||||
| 	if err != nil { return } | ||||
| 	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.TokenKindBinaryAnd) { | ||||
| 		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) { | ||||
|  | ||||
| @ -9,6 +9,9 @@ func TestObjt (test *testing.T) { | ||||
| objt ro Basic:Obj | ||||
| 	ro that:Basic | ||||
| 	ro this:Basic | ||||
| objt ro BitFields:Obj | ||||
| 	ro that:Int & 1 | ||||
| 	ro this:Int & 24 298 | ||||
| objt ro ComplexInit:Obj | ||||
| 	ro basic:Int 87 | ||||
| 	ro complex0:Bird | ||||
|  | ||||
| @ -297,6 +297,10 @@ func (member ObjtMember) ToString (indent int) (output string) { | ||||
| 	output += member.permission.ToString() + " " | ||||
| 	output += member.name + ":" | ||||
| 	output += member.what.ToString() | ||||
| 
 | ||||
| 	if member.bitWidth > 0 { | ||||
| 		output += fmt.Sprint(" & ", member.bitWidth) | ||||
| 	} | ||||
| 	 | ||||
| 	isComplexInitialization := | ||||
| 		member.defaultValue.kind == ArgumentKindObjectInitializationValues || | ||||
|  | ||||
| @ -178,8 +178,9 @@ type TypeSection struct { | ||||
| type ObjtMember struct { | ||||
| 	location file.Location | ||||
| 	name     string | ||||
| 	 | ||||
| 
 | ||||
| 	what         Type | ||||
| 	bitWidth     uint64 | ||||
| 	permission   types.Permission | ||||
| 	defaultValue Argument | ||||
| } | ||||
| @ -188,7 +189,8 @@ type ObjtMember struct { | ||||
| type ObjtSection struct { | ||||
| 	location file.Location | ||||
| 	name     string | ||||
| 	 | ||||
| 
 | ||||
| 	// TODO: make this Identifier instead of Type | ||||
| 	inherits     Type | ||||
| 	permission   types.Permission | ||||
| 	// TODO: order matters here we need to store these in an array | ||||
| @ -225,6 +227,7 @@ type FaceBehavior struct { | ||||
| type FaceSection struct { | ||||
| 	location file.Location | ||||
| 	name     string | ||||
| 	// TODO: make this Identifier instead of string | ||||
| 	inherits string | ||||
| 	 | ||||
| 	permission types.Permission | ||||
|  | ||||
| @ -4,6 +4,10 @@ objt ro Basic:Obj | ||||
| 	ro that:Basic | ||||
| 	ro this:Basic | ||||
| 
 | ||||
| objt ro BitFields:Obj | ||||
| 	ro that:Int & 1 | ||||
| 	ro this:Int & 24 298 | ||||
| 
 | ||||
| objt ro Init:Obj | ||||
| 	ro that:String "hello world" | ||||
| 	ro this:Int 23 | ||||
|  | ||||
		Reference in New Issue
	
	Block a user