implement-modules #43
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user