6 Commits

Author SHA1 Message Date
amery 73cda64c4b lexer: introduce a Position (Line, Column) handler
Signed-off-by: Alejandro Mery <amery@jpi.io>
2023-08-29 15:36:57 +00:00
amery df82e043bb Merge branch 'pr-amery-lexer' into next-amery 2023-08-29 15:36:31 +00:00
amery 5a7b19bb06 Merge pull request 'build-sys: import build system from darvaza.org/core' (#7)
Reviewed-on: #7
2023-08-29 17:34:16 +02:00
amery 6c189fd87d build-sys: import build system from darvaza.org/core
Signed-off-by: Alejandro Mery <amery@jpi.io>
2023-08-29 15:23:25 +00:00
amery 1d62857e14 lexer: introduce StateFn and the basic state machine loop
v2: make the error break more explicit

Signed-off-by: Alejandro Mery <amery@jpi.io>
2023-08-29 15:11:51 +00:00
amery f7e13e0978 Merge pull request 'lexer: introduce Error{}' (#6)
Reviewed-on: #6
2023-08-29 17:00:09 +02:00
+8 -3
View File
@@ -7,11 +7,16 @@ 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 {
var err error
for fn != nil && err == nil {
fn, err = fn()
if err != nil {
// failed
return err
}
}
return err
// ended
return nil
}