implement-modules #43
@ -114,14 +114,14 @@ func (this *Parser) parseTypeArray () (entity.Type, error) {
|
|||||||
func (this *Parser) parseTypeStructCore () (entity.Type, error) {
|
func (this *Parser) parseTypeStructCore () (entity.Type, error) {
|
||||||
err := this.expect(lexer.Dot)
|
err := this.expect(lexer.Dot)
|
||||||
if err != nil { return nil, err }
|
if err != nil { return nil, err }
|
||||||
|
ty := &entity.TypeStruct {
|
||||||
|
Position: this.pos(),
|
||||||
|
}
|
||||||
this.next()
|
this.next()
|
||||||
|
|
||||||
ty := &entity.TypeStruct {
|
|
||||||
|
|
||||||
}
|
|
||||||
for {
|
for {
|
||||||
err := this.expectDesc (
|
err := this.expectDesc (
|
||||||
"Struct member or Struct end",
|
"Struct member or end",
|
||||||
appendCopy(startTokensDeclaration, lexer.RParen)...)
|
appendCopy(startTokensDeclaration, lexer.RParen)...)
|
||||||
if err != nil { return nil, err }
|
if err != nil { return nil, err }
|
||||||
if this.kind() == lexer.RParen { break }
|
if this.kind() == lexer.RParen { break }
|
||||||
@ -130,15 +130,33 @@ func (this *Parser) parseTypeStructCore () (entity.Type, error) {
|
|||||||
if err != nil { return nil, err }
|
if err != nil { return nil, err }
|
||||||
ty.Members = append(ty.Members, member)
|
ty.Members = append(ty.Members, member)
|
||||||
}
|
}
|
||||||
|
ty.Position = ty.Position.Union(this.pos())
|
||||||
this.next()
|
this.next()
|
||||||
return ty, nil
|
return ty, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *Parser) parseTypeInterfaceCore () (entity.Type, error) {
|
func (this *Parser) parseTypeInterfaceCore () (entity.Type, error) {
|
||||||
err := this.expectValue(lexer.Dot, "?")
|
err := this.expectValue(lexer.Symbol, "?")
|
||||||
if err != nil { return nil, err }
|
if err != nil { return nil, err }
|
||||||
// TODO
|
ty := &entity.TypeInterface {
|
||||||
return nil, nil
|
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) {
|
func (this *Parser) parseTypeInt () (entity.Type, error) {
|
||||||
|
Loading…
Reference in New Issue
Block a user