Further normalize expectation responsibilities of parsing methods
This commit is contained in:
parent
befb178291
commit
c0ca9108e7
@ -101,12 +101,6 @@ func (this *Parser) parse () error {
|
||||
err := this.next()
|
||||
if err != nil { return err }
|
||||
for {
|
||||
err = this.expectDesc (
|
||||
descriptionTopLevel,
|
||||
startTokensTopLevel...)
|
||||
if err != nil { return err }
|
||||
if this.token.EOF() { return nil }
|
||||
|
||||
err = this.parseTopLevel()
|
||||
if err != nil { return err }
|
||||
}
|
||||
|
@ -13,7 +13,12 @@ var startTokensTopLevel = []lexer.TokenKind {
|
||||
}
|
||||
|
||||
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
|
||||
if this.token.Kind == lexer.Symbol {
|
||||
access, err = this.parseAccess()
|
||||
@ -60,13 +65,18 @@ func (this *Parser) parseTopLevel () 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 {
|
||||
case "-": return entity.AccessPrivate, nil
|
||||
case "~": return entity.AccessRestricted, nil
|
||||
case "+": return entity.AccessPublic, nil
|
||||
default : return 0, errors.Errorf (
|
||||
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) {
|
||||
err := this.expectDesc(descriptionType, startTokensType...)
|
||||
if err != nil { return nil, err }
|
||||
ty, err := this.parseType()
|
||||
if err != nil { return nil, err }
|
||||
return &entity.Typedef {
|
||||
|
Loading…
Reference in New Issue
Block a user