syntax-tree-accessors #2
| @ -3,8 +3,6 @@ package parser | ||||
| import "git.tebibyte.media/arf/arf/lexer" | ||||
| import "git.tebibyte.media/arf/arf/infoerr" | ||||
| 
 | ||||
| // TODO: parser must ensure that these names are unique | ||||
| 
 | ||||
| // parse body parses the body of an arf file, after the metadata header. | ||||
| func (parser *ParsingOperation) parseBody () (err error) { | ||||
| 	for { | ||||
|  | ||||
| @ -5,13 +5,12 @@ import "git.tebibyte.media/arf/arf/lexer" | ||||
| 
 | ||||
| // parseData parses a data section. | ||||
| func (parser *ParsingOperation) parseDataSection () ( | ||||
| 	section *DataSection, | ||||
| 	section DataSection, | ||||
| 	err     error, | ||||
| ) { | ||||
| 	err = parser.expect(lexer.TokenKindName) | ||||
| 	if err != nil { return } | ||||
| 	 | ||||
| 	section = &DataSection { } | ||||
| 	section.location = parser.token.Location() | ||||
| 
 | ||||
| 	err = parser.nextToken(lexer.TokenKindPermission) | ||||
|  | ||||
| @ -6,13 +6,12 @@ import "git.tebibyte.media/arf/arf/infoerr" | ||||
| 
 | ||||
| // parseEnumSection parses an enumerated type section. | ||||
| func (parser *ParsingOperation) parseEnumSection () ( | ||||
| 	section *EnumSection, | ||||
| 	section EnumSection, | ||||
| 	err     error, | ||||
| ) { | ||||
| 	err = parser.expect(lexer.TokenKindName) | ||||
| 	if err != nil { return } | ||||
| 	 | ||||
| 	section = &EnumSection { } | ||||
| 	section.location = parser.token.Location() | ||||
| 
 | ||||
| 	// get permission | ||||
| @ -38,7 +37,7 @@ func (parser *ParsingOperation) parseEnumSection () ( | ||||
| 	if err != nil { return } | ||||
| 
 | ||||
| 	// parse members | ||||
| 	err = parser.parseEnumMembers(section) | ||||
| 	err = parser.parseEnumMembers(§ion) | ||||
| 	if err != nil { return } | ||||
| 	 | ||||
| 	if len(section.members) == 0 { | ||||
|  | ||||
| @ -6,16 +6,14 @@ import "git.tebibyte.media/arf/arf/infoerr" | ||||
| 
 | ||||
| // parseFaceSection parses an interface section. | ||||
| func (parser *ParsingOperation) parseFaceSection () ( | ||||
| 	section *FaceSection, | ||||
| 	section FaceSection, | ||||
| 	err     error, | ||||
| ) { | ||||
| 	err = parser.expect(lexer.TokenKindName) | ||||
| 	if err != nil { return } | ||||
| 	 | ||||
| 	section = &FaceSection { | ||||
| 		behaviors:  make(map[string] FaceBehavior), | ||||
| 	} | ||||
| 	section.location = parser.token.Location() | ||||
| 	section.behaviors = make(map[string] FaceBehavior) | ||||
| 	section.location  = parser.token.Location() | ||||
| 
 | ||||
| 	// get permission | ||||
| 	err = parser.nextToken(lexer.TokenKindPermission) | ||||
|  | ||||
| @ -6,13 +6,12 @@ import "git.tebibyte.media/arf/arf/infoerr" | ||||
| 
 | ||||
| // parseFunc parses a function section. | ||||
| func (parser *ParsingOperation) parseFuncSection () ( | ||||
| 	section *FuncSection, | ||||
| 	section FuncSection, | ||||
| 	err     error, | ||||
| ) { | ||||
| 	err = parser.expect(lexer.TokenKindName) | ||||
| 	if err != nil { return } | ||||
| 	 | ||||
| 	section = &FuncSection { } | ||||
| 	section.location = parser.token.Location() | ||||
| 
 | ||||
| 	// get permission | ||||
| @ -30,7 +29,7 @@ func (parser *ParsingOperation) parseFuncSection () ( | ||||
| 	if err != nil { return } | ||||
| 	err = parser.nextToken() | ||||
| 	if err != nil { return } | ||||
| 	err = parser.parseFuncArguments(section) | ||||
| 	err = parser.parseFuncArguments(§ion) | ||||
| 	if err != nil { return } | ||||
| 
 | ||||
| 	// check to see if the function is external | ||||
|  | ||||
| @ -7,13 +7,12 @@ import "git.tebibyte.media/arf/arf/infoerr" | ||||
| // parseObjtSection parses an object type definition. This allows for structured | ||||
| // types to be defined, and for member variables to be added and overridden. | ||||
| func (parser *ParsingOperation) parseObjtSection () ( | ||||
| 	section *ObjtSection, | ||||
| 	section ObjtSection, | ||||
| 	err     error, | ||||
| ) { | ||||
| 	err = parser.expect(lexer.TokenKindName) | ||||
| 	if err != nil { return } | ||||
| 	 | ||||
| 	section = &ObjtSection { } | ||||
| 	section.location = parser.token.Location() | ||||
| 
 | ||||
| 	// get permission | ||||
| @ -39,7 +38,7 @@ func (parser *ParsingOperation) parseObjtSection () ( | ||||
| 	if err != nil { return } | ||||
| 
 | ||||
| 	// parse members | ||||
| 	err = parser.parseObjtMembers(section) | ||||
| 	err = parser.parseObjtMembers(§ion) | ||||
| 	if err != nil { return } | ||||
| 	 | ||||
| 	if len(section.members) == 0 { | ||||
|  | ||||
| @ -30,7 +30,7 @@ func sortMapKeysAlphabetically[KEY_TYPE any] ( | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| func (tree *SyntaxTree) ToString (indent int) (output string) { | ||||
| func (tree SyntaxTree) ToString (indent int) (output string) { | ||||
| 	output += doIndent(indent, ":arf\n") | ||||
| 
 | ||||
| 	if tree.author != "" { | ||||
| @ -66,7 +66,7 @@ func (identifier Identifier) ToString () (output string) { | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| func (what *Type) ToString () (output string) { | ||||
| func (what Type) ToString () (output string) { | ||||
| 	if what.kind == TypeKindBasic { | ||||
| 		output += what.name.ToString() | ||||
| 	} else { | ||||
| @ -130,7 +130,7 @@ func (values ArrayInitializationValues) ToString ( | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| func (argument *Argument) ToString (indent int, breakLine bool) (output string) { | ||||
| func (argument Argument) ToString (indent int, breakLine bool) (output string) { | ||||
| 	if !breakLine { indent = 0 } | ||||
| 	if argument.kind == ArgumentKindNil { | ||||
| 		output += "NIL-ARGUMENT" | ||||
| @ -255,7 +255,7 @@ func (argument *Argument) ToString (indent int, breakLine bool) (output string) | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| func (section *DataSection) ToString (indent int) (output string) { | ||||
| func (section DataSection) ToString (indent int) (output string) { | ||||
| 	output += doIndent ( | ||||
| 		indent, | ||||
| 		"data ", | ||||
| @ -279,7 +279,7 @@ func (section *DataSection) ToString (indent int) (output string) { | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| func (section *TypeSection) ToString (indent int) (output string) { | ||||
| func (section TypeSection) ToString (indent int) (output string) { | ||||
| 	output += doIndent ( | ||||
| 		indent, | ||||
| 		"type ", | ||||
| @ -331,7 +331,7 @@ func (member ObjtMember) ToString (indent int) (output string) { | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| func (section *ObjtSection) ToString (indent int) (output string) { | ||||
| func (section ObjtSection) ToString (indent int) (output string) { | ||||
| 	output += doIndent ( | ||||
| 		indent, | ||||
| 		"objt ", | ||||
| @ -345,7 +345,7 @@ func (section *ObjtSection) ToString (indent int) (output string) { | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| func (section *EnumSection) ToString (indent int) (output string) { | ||||
| func (section EnumSection) ToString (indent int) (output string) { | ||||
| 	output += doIndent ( | ||||
| 		indent, | ||||
| 		"enum ", | ||||
| @ -373,7 +373,7 @@ func (section *EnumSection) ToString (indent int) (output string) { | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| func (section *FaceSection) ToString (indent int) (output string) { | ||||
| func (section FaceSection) ToString (indent int) (output string) { | ||||
| 	output += doIndent ( | ||||
| 		indent, | ||||
| 		"face ", | ||||
| @ -388,7 +388,7 @@ func (section *FaceSection) ToString (indent int) (output string) { | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| func (behavior *FaceBehavior) ToString (indent int) (output string) { | ||||
| func (behavior FaceBehavior) ToString (indent int) (output string) { | ||||
| 	output += doIndent(indent, behavior.name, "\n") | ||||
| 	 | ||||
| 	for _, inputItem := range behavior.inputs { | ||||
| @ -455,7 +455,7 @@ func (funcOutput FuncOutput) ToString () (output string) { | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| func (section *FuncSection) ToString (indent int) (output string) { | ||||
| func (section FuncSection) ToString (indent int) (output string) { | ||||
| 	output += doIndent ( | ||||
| 		indent, | ||||
| 		"func ", | ||||
|  | ||||
| @ -171,8 +171,7 @@ type DataSection struct { | ||||
| 	nameable | ||||
| 	typeable | ||||
| 	permissionable | ||||
| 	 | ||||
| 	value Argument | ||||
| 	valuable | ||||
| } | ||||
| 
 | ||||
| // TypeSection represents a blind type definition. | ||||
| @ -202,7 +201,7 @@ type ObjtSection struct { | ||||
| 	permissionable | ||||
| 	inherits Identifier | ||||
| 
 | ||||
| 	members      []ObjtMember | ||||
| 	members []ObjtMember | ||||
| } | ||||
| 
 | ||||
| // EnumMember represents a member of an enum section. | ||||
|  | ||||
| @ -6,13 +6,12 @@ import "git.tebibyte.media/arf/arf/lexer" | ||||
| // parseTypeSection parses a blind type definition, meaning it can inherit from | ||||
| // anything including primitives, but cannot define structure. | ||||
| func (parser *ParsingOperation) parseTypeSection () ( | ||||
| 	section *TypeSection, | ||||
| 	section TypeSection, | ||||
| 	err     error, | ||||
| ) { | ||||
| 	err = parser.expect(lexer.TokenKindName) | ||||
| 	if err != nil { return } | ||||
| 	 | ||||
| 	section = &TypeSection { } | ||||
| 	section.location = parser.token.Location() | ||||
| 
 | ||||
| 	// get permission | ||||
|  | ||||
		Reference in New Issue
	
	Block a user