diff --git a/lexer/lexer.go b/lexer/lexer.go index 33b17b6..26885ba 100644 --- a/lexer/lexer.go +++ b/lexer/lexer.go @@ -1,2 +1,17 @@ // Package lexer provides basic helpers to implement parsers package lexer + +// StateFn is a State Function of the parser +type StateFn func() (StateFn, error) + +// Run runs a state machine until the state function either +// returns nil or an error +func Run(fn StateFn) error { + var err error + + for fn != nil && err == nil { + fn, err = fn() + } + + return err +}