Skip to content

Commit

Permalink
Moved parsing utils to parse/node.go
Browse files Browse the repository at this point in the history
  • Loading branch information
RealA10N committed Aug 2, 2024
1 parent f2fef9f commit fce3e7f
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 27 deletions.
27 changes: 0 additions & 27 deletions parse/argument.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package parse

import (
"usm/lex"
"usm/source"
)

type ArgumentNode struct {
Expand All @@ -13,32 +12,6 @@ type ArgumentNode struct {

type ArgumentNodeParser struct{}

func ConsumeToken(v *TokenView, typ lex.TokenType) (tkn lex.Token, perr ParsingError) {
tknView, restView := v.Partition(1)
tkn, err := tknView.At(0)

if err != nil {
perr = EofError{Expected: lex.TypToken}
return
}

if tkn.Type != typ {
perr = UnexpectedTokenError{Expected: typ, Got: tkn}
return
}

*v = restView
return tkn, nil
}

func NewNodeFromBoundaryTokens(first, last lex.Token) Node {
return Node{
View: source.UnmanagedSourceView{
Start: first.View.Start,
End: last.View.End},
}
}

func (p ArgumentNodeParser) Parse(v *TokenView) (node ArgumentNode, err ParsingError) {
typ, err := ConsumeToken(v, lex.TypToken)
if err != nil {
Expand Down
28 changes: 28 additions & 0 deletions parse/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,34 @@ type Node struct {
View source.UnmanagedSourceView
}

func NewNodeFromBoundaryTokens(first, last lex.Token) Node {
return Node{
View: source.UnmanagedSourceView{
Start: first.View.Start,
End: last.View.End},
}
}

type NodeParser[T any] interface {
Parse(view TokenView) (T, error)
}

// Parsing Utilities

func ConsumeToken(v *TokenView, typ lex.TokenType) (tkn lex.Token, perr ParsingError) {
tknView, restView := v.Partition(1)
tkn, err := tknView.At(0)

if err != nil {
perr = EofError{Expected: lex.TypToken}
return
}

if tkn.Type != typ {
perr = UnexpectedTokenError{Expected: typ, Got: tkn}
return
}

*v = restView
return tkn, nil
}

0 comments on commit fce3e7f

Please sign in to comment.