askl;d;sldkf
This commit is contained in:
parent
ac433f07ec
commit
4a2671c601
|
@ -71,14 +71,15 @@ func (this *Parser) next () (lexer.Token, error) {
|
|||
return token, nil
|
||||
}
|
||||
|
||||
func appendr[ELEMENT any] (item ELEMENT, array []ELEMENT) []ELEMENT {
|
||||
return append([]ELEMENT { item }, array...)
|
||||
}
|
||||
|
||||
func (this *Parser) parse () error {
|
||||
for {
|
||||
token, err := this.expectDesc (
|
||||
descriptionTopLevel,
|
||||
lexer.Symbol,
|
||||
lexer.LBracket,
|
||||
lexer.TypeIdent,
|
||||
lexer.EOF)
|
||||
startTokensTopLevel...)
|
||||
if err != nil { return err }
|
||||
if token.EOF() { return nil }
|
||||
|
||||
|
|
|
@ -5,6 +5,12 @@ import "git.tebibyte.media/sashakoshka/fspl/errors"
|
|||
import "git.tebibyte.media/sashakoshka/fspl/entity"
|
||||
|
||||
var descriptionTopLevel = "Typedef, Function, or Method"
|
||||
var startTokensTopLevel = []lexer.TokenKind {
|
||||
lexer.Symbol,
|
||||
lexer.LBracket,
|
||||
lexer.TypeIdent,
|
||||
lexer.EOF,
|
||||
}
|
||||
|
||||
func (this *Parser) parseTopLevel () error {
|
||||
var err error
|
||||
|
@ -62,6 +68,18 @@ func (this *Parser) parseAccess () (entity.Access, error) {
|
|||
func (this *Parser) parseFunction (access entity.Access) error {
|
||||
signature, err := this.parseSignature()
|
||||
if err != nil { return err }
|
||||
token, err := this.expectDesc (
|
||||
"Function body, Link name, " + descriptionTopLevel,
|
||||
appendr(lexer.Symbol, appendr(lexer.String, startTokensTopLevel))...)
|
||||
if err != nil { return err }
|
||||
|
||||
switch token.Kind {
|
||||
|
||||
}
|
||||
|
||||
// TODO there will be a lot of code duplication between this and parseMethod
|
||||
// if we keep continuing along this route, need only one function to parse
|
||||
// both
|
||||
}
|
||||
|
||||
func (this *Parser) parseMethod (access entity.Access, typeName string) error {
|
||||
|
|
Loading…
Reference in New Issue