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
|
return token, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func appendr[ELEMENT any] (item ELEMENT, array []ELEMENT) []ELEMENT {
|
||||||
|
return append([]ELEMENT { item }, array...)
|
||||||
|
}
|
||||||
|
|
||||||
func (this *Parser) parse () error {
|
func (this *Parser) parse () error {
|
||||||
for {
|
for {
|
||||||
token, err := this.expectDesc (
|
token, err := this.expectDesc (
|
||||||
descriptionTopLevel,
|
descriptionTopLevel,
|
||||||
lexer.Symbol,
|
startTokensTopLevel...)
|
||||||
lexer.LBracket,
|
|
||||||
lexer.TypeIdent,
|
|
||||||
lexer.EOF)
|
|
||||||
if err != nil { return err }
|
if err != nil { return err }
|
||||||
if token.EOF() { return nil }
|
if token.EOF() { return nil }
|
||||||
|
|
||||||
|
@ -5,6 +5,12 @@ import "git.tebibyte.media/sashakoshka/fspl/errors"
|
|||||||
import "git.tebibyte.media/sashakoshka/fspl/entity"
|
import "git.tebibyte.media/sashakoshka/fspl/entity"
|
||||||
|
|
||||||
var descriptionTopLevel = "Typedef, Function, or Method"
|
var descriptionTopLevel = "Typedef, Function, or Method"
|
||||||
|
var startTokensTopLevel = []lexer.TokenKind {
|
||||||
|
lexer.Symbol,
|
||||||
|
lexer.LBracket,
|
||||||
|
lexer.TypeIdent,
|
||||||
|
lexer.EOF,
|
||||||
|
}
|
||||||
|
|
||||||
func (this *Parser) parseTopLevel () error {
|
func (this *Parser) parseTopLevel () error {
|
||||||
var err error
|
var err error
|
||||||
@ -62,6 +68,18 @@ func (this *Parser) parseAccess () (entity.Access, error) {
|
|||||||
func (this *Parser) parseFunction (access entity.Access) error {
|
func (this *Parser) parseFunction (access entity.Access) error {
|
||||||
signature, err := this.parseSignature()
|
signature, err := this.parseSignature()
|
||||||
if err != nil { return err }
|
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 {
|
func (this *Parser) parseMethod (access entity.Access, typeName string) error {
|
||||||
|
Loading…
Reference in New Issue
Block a user