Did the same thing with type specifiers

This commit is contained in:
Sasha Koshka 2022-09-03 22:56:08 -04:00
parent 8e74216430
commit ef375810fb
5 changed files with 27 additions and 13 deletions

View File

@ -42,9 +42,8 @@ func (parser *ParsingOperation) parseArgument () (argument Argument, err error)
return return
} }
declaration := Declaration { declaration := Declaration { }
what: what, declaration.what = what
}
declaration.setName(identifier.trail[0]) declaration.setName(identifier.trail[0])
declaration.setLocation(argument.Location()) declaration.setLocation(argument.Location())

View File

@ -43,3 +43,18 @@ func (trait nameable) Name () (name string) {
func (trait *nameable) setName (name string) { func (trait *nameable) setName (name string) {
trait.name = name trait.name = name
} }
// typeable allows a node to have a type.
type typeable struct {
what Type
}
// Type returns the type of the node.
func (trait typeable) Type () (what Type) {
return trait.what
}
// setType sets the type of the node.
func (trait *typeable) setType (what Type) () {
}

View File

@ -309,7 +309,7 @@ func (section *TypeSection) ToString (indent int) (output string) {
"type ", "type ",
section.permission.ToString(), " ", section.permission.ToString(), " ",
section.name, ":", section.name, ":",
section.inherits.ToString()) section.what.ToString())
isComplexInitialization := isComplexInitialization :=
section.defaultValue.kind == ArgumentKindObjectInitializationValues || section.defaultValue.kind == ArgumentKindObjectInitializationValues ||

View File

@ -62,7 +62,7 @@ type Type struct {
type Declaration struct { type Declaration struct {
locatable locatable
nameable nameable
what Type typeable
} }
// ObjectInitializationValues represents a list of object member initialization // ObjectInitializationValues represents a list of object member initialization
@ -150,8 +150,8 @@ type Argument struct {
type DataSection struct { type DataSection struct {
locatable locatable
nameable nameable
typeable
what Type
permission types.Permission permission types.Permission
value Argument value Argument
} }
@ -160,8 +160,8 @@ type DataSection struct {
type TypeSection struct { type TypeSection struct {
locatable locatable
nameable nameable
typeable
inherits Type
permission types.Permission permission types.Permission
defaultValue Argument defaultValue Argument
} }
@ -170,8 +170,8 @@ type TypeSection struct {
type ObjtMember struct { type ObjtMember struct {
locatable locatable
nameable nameable
typeable
what Type
bitWidth uint64 bitWidth uint64
permission types.Permission permission types.Permission
defaultValue Argument defaultValue Argument
@ -181,8 +181,8 @@ type ObjtMember struct {
type ObjtSection struct { type ObjtSection struct {
locatable locatable
nameable nameable
inherits Identifier
inherits Identifier
permission types.Permission permission types.Permission
members []ObjtMember members []ObjtMember
} }
@ -198,8 +198,8 @@ type EnumMember struct {
type EnumSection struct { type EnumSection struct {
locatable locatable
nameable nameable
typeable
what Type
permission types.Permission permission types.Permission
members []EnumMember members []EnumMember
} }

View File

@ -31,7 +31,7 @@ func (parser *ParsingOperation) parseTypeSection () (
if err != nil { return } if err != nil { return }
err = parser.nextToken() err = parser.nextToken()
if err != nil { return } if err != nil { return }
section.inherits, err = parser.parseType() section.what, err = parser.parseType()
if err != nil { return } if err != nil { return }
// parse default values // parse default values