2022-09-04 12:02:48 -06:00
|
|
|
package parser
|
|
|
|
|
2022-09-04 15:13:49 -06:00
|
|
|
// LookupSection looks returns the section under the give name. If the section
|
|
|
|
// does not exist, nil is returned.
|
|
|
|
func (tree *SyntaxTree) LookupSection (name string) (section Section) {
|
|
|
|
section = tree.sections[name]
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2022-09-04 12:02:48 -06:00
|
|
|
// Kind returns the section's kind (SectionKindType).
|
|
|
|
func (section TypeSection) Kind () (kind SectionKind) {
|
|
|
|
kind = SectionKindType
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// Kind returns the section's kind (SectionKindObjt).
|
|
|
|
func (section ObjtSection) Kind () (kind SectionKind) {
|
|
|
|
kind = SectionKindObjt
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// Kind returns the section's kind (SectionKindEnum).
|
|
|
|
func (section EnumSection) Kind () (kind SectionKind) {
|
|
|
|
kind = SectionKindEnum
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// Kind returns the section's kind (SectionKindFace).
|
|
|
|
func (section FaceSection) Kind () (kind SectionKind) {
|
|
|
|
kind = SectionKindFace
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// Kind returns the section's kind (SectionKindData).
|
|
|
|
func (section DataSection) Kind () (kind SectionKind) {
|
|
|
|
kind = SectionKindData
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// Kind returns the section's kind (SectionKindFunc).
|
|
|
|
func (section FuncSection) Kind () (kind SectionKind) {
|
|
|
|
kind = SectionKindFunc
|
|
|
|
return
|
|
|
|
}
|
2022-09-04 20:19:19 -06:00
|
|
|
|
|
|
|
// Length returns the amount of names in the identifier.
|
|
|
|
func (identifier Identifier) Length () (length int) {
|
|
|
|
length = len(identifier.trail)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// Item returns the name at the specified index.
|
|
|
|
func (identifier Identifier) Item (index int) (item string) {
|
|
|
|
item = identifier.trail[index]
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// Kind returns the type's kind.
|
|
|
|
func (what Type) Kind () (kind TypeKind) {
|
|
|
|
kind = what.kind
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// Mutable returns whether or not the type's data is mutable.
|
|
|
|
func (what Type) Mutable () (mutable bool) {
|
|
|
|
mutable = what.mutable
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2022-09-04 20:27:06 -06:00
|
|
|
// Length returns the length of the type if the type is a fixed length array.
|
|
|
|
// Otherwise, it just returns zero.
|
2022-09-04 20:19:19 -06:00
|
|
|
func (what Type) Length () (length uint64) {
|
|
|
|
if what.kind == TypeKindArray {
|
|
|
|
length = what.length
|
|
|
|
}
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// Name returns the name of the type, if it is a basic type. Otherwise, it
|
|
|
|
// returns a zero value identifier.
|
|
|
|
func (what Type) Name () (name Identifier) {
|
|
|
|
if what.kind == TypeKindBasic {
|
|
|
|
name = what.name
|
|
|
|
}
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// Points returns the type that this type points to, or is an array of. If the
|
|
|
|
// type is a basic type, this returns a zero value type.
|
|
|
|
func (what Type) Points () (points Type) {
|
|
|
|
if what.kind != TypeKindBasic {
|
|
|
|
points = *what.points
|
|
|
|
}
|
|
|
|
return
|
|
|
|
}
|