Further normalize expectation responsibilities of parsing methods
This commit is contained in:
parent
befb178291
commit
c0ca9108e7
@ -100,13 +100,7 @@ func (this *Parser) next () error {
|
|||||||
func (this *Parser) parse () error {
|
func (this *Parser) parse () error {
|
||||||
err := this.next()
|
err := this.next()
|
||||||
if err != nil { return err }
|
if err != nil { return err }
|
||||||
for {
|
for {
|
||||||
err = this.expectDesc (
|
|
||||||
descriptionTopLevel,
|
|
||||||
startTokensTopLevel...)
|
|
||||||
if err != nil { return err }
|
|
||||||
if this.token.EOF() { return nil }
|
|
||||||
|
|
||||||
err = this.parseTopLevel()
|
err = this.parseTopLevel()
|
||||||
if err != nil { return err }
|
if err != nil { return err }
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,12 @@ var startTokensTopLevel = []lexer.TokenKind {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (this *Parser) parseTopLevel () error {
|
func (this *Parser) parseTopLevel () error {
|
||||||
var err error
|
err := this.expectDesc (
|
||||||
|
descriptionTopLevel,
|
||||||
|
startTokensTopLevel...)
|
||||||
|
if err != nil { return err }
|
||||||
|
if this.token.EOF() { return nil }
|
||||||
|
|
||||||
access := entity.AccessPrivate
|
access := entity.AccessPrivate
|
||||||
if this.token.Kind == lexer.Symbol {
|
if this.token.Kind == lexer.Symbol {
|
||||||
access, err = this.parseAccess()
|
access, err = this.parseAccess()
|
||||||
@ -60,13 +65,18 @@ func (this *Parser) parseTopLevel () error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (this *Parser) parseAccess () (entity.Access, error) {
|
func (this *Parser) parseAccess () (entity.Access, error) {
|
||||||
|
err := this.expectValueDesc (
|
||||||
|
"Access control specifier",
|
||||||
|
lexer.Symbol, "-", "~", "+")
|
||||||
|
if err != nil { return 0, err }
|
||||||
|
|
||||||
switch this.token.Value {
|
switch this.token.Value {
|
||||||
case "-": return entity.AccessPrivate, nil
|
case "-": return entity.AccessPrivate, nil
|
||||||
case "~": return entity.AccessRestricted, nil
|
case "~": return entity.AccessRestricted, nil
|
||||||
case "+": return entity.AccessPublic, nil
|
case "+": return entity.AccessPublic, nil
|
||||||
default : return 0, errors.Errorf (
|
default : return 0, errors.Errorf (
|
||||||
this.token.Position,
|
this.token.Position,
|
||||||
"unrecognized access symbol")
|
"unrecognized access control specifier")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,8 +135,6 @@ func (this *Parser) parseMethodCore (access entity.Access, typeName string) (*en
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (this *Parser) parseTypedefCore (access entity.Access, typeName string) (*entity.Typedef, error) {
|
func (this *Parser) parseTypedefCore (access entity.Access, typeName string) (*entity.Typedef, error) {
|
||||||
err := this.expectDesc(descriptionType, startTokensType...)
|
|
||||||
if err != nil { return nil, err }
|
|
||||||
ty, err := this.parseType()
|
ty, err := this.parseType()
|
||||||
if err != nil { return nil, err }
|
if err != nil { return nil, err }
|
||||||
return &entity.Typedef {
|
return &entity.Typedef {
|
||||||
|
Loading…
Reference in New Issue
Block a user