implement-modules #43

Closed
sashakoshka wants to merge 502 commits from implement-modules into main
Showing only changes of commit 48fe20b472 - Show all commits

View File

@ -114,14 +114,14 @@ func (this *Parser) parseTypeArray () (entity.Type, error) {
func (this *Parser) parseTypeStructCore () (entity.Type, error) {
err := this.expect(lexer.Dot)
if err != nil { return nil, err }
ty := &entity.TypeStruct {
Position: this.pos(),
}
this.next()
ty := &entity.TypeStruct {
}
for {
err := this.expectDesc (
"Struct member or Struct end",
"Struct member or end",
appendCopy(startTokensDeclaration, lexer.RParen)...)
if err != nil { return nil, err }
if this.kind() == lexer.RParen { break }
@ -130,15 +130,33 @@ func (this *Parser) parseTypeStructCore () (entity.Type, error) {
if err != nil { return nil, err }
ty.Members = append(ty.Members, member)
}
ty.Position = ty.Position.Union(this.pos())
this.next()
return ty, nil
}
func (this *Parser) parseTypeInterfaceCore () (entity.Type, error) {
err := this.expectValue(lexer.Dot, "?")
err := this.expectValue(lexer.Symbol, "?")
if err != nil { return nil, err }
// TODO
return nil, nil
ty := &entity.TypeInterface {
Position: this.pos(),
}
this.next()
for {
err := this.expectDesc (
"Interface behavior or end",
appendCopy(startTokensSignature, lexer.RParen)...)
if err != nil { return nil, err }
if this.kind() == lexer.RParen { break }
behavior, err := this.parseSignature()
if err != nil { return nil, err }
ty.Behaviors = append(ty.Behaviors, behavior)
}
ty.Position = ty.Position.Union(this.pos())
this.next()
return ty, nil
}
func (this *Parser) parseTypeInt () (entity.Type, error) {