nex
nex copied to clipboard
Unpaired curly inside string confuses nex
Quite hilariously, an unpaired curly brace inside nex golang code causes lex/parse errors with nex itself!
Example:
/\$[a-z][a-z0-9]*{[0-9]+}/
{
yylex.pos(lval) // our pos
s := yylex.Text()
a := strings.Split(s, "{") // XXX: close match here: }
lval.str = a[0]
return IDENTIFIER
}
Note the comment I added with a close brace. I added that as a workaround so that this works. Remove it and you'll see nex errors:
panic: unmatched '{'
goroutine 16 [running]:
runtime.gopanic
../../../libgo/go/runtime/panic.go:493
main.$nested34
/builddir/build/BUILD/nex-5344f151fd3251726650dffd30a531d3f1bddc17/nex.go:1027
main.$nested35
/builddir/build/BUILD/nex-5344f151fd3251726650dffd30a531d3f1bddc17/nex.go:1094
main.process
/builddir/build/BUILD/nex-5344f151fd3251726650dffd30a531d3f1bddc17/nex.go:1099
main.main
/builddir/build/BUILD/nex-5344f151fd3251726650dffd30a531d3f1bddc17/main.go:81
runtime_main
../../../libgo/runtime/proc.c:606
HTH
Interestingly enough as discovered in the source today it seems this is a known issue:
https://github.com/blynn/nex/blob/542279eaf3d8a7f5cc0eb94780323acb490e51c4/test/nex_test.go#L367
=D