Further normalize expectation responsibilities of parsing methods

This commit is contained in:
Sasha Koshka 2024-02-06 16:39:15 -05:00
parent befb178291
commit c0ca9108e7
2 changed files with 13 additions and 11 deletions

View File

@ -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 }
}

View File

@ -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 {