%{ package main import ( "flag" "fmt" ) %} %union{} %token T %% Start: | T Start %% type lx struct{ i, max int } func (lx *lx) Lex(lval *yySymType) int { if lx.i += 1; lx.i < lx.max { return T } return 0 } func (lx *lx) Error(s string) { fmt.Println(s) } func main() { delta := flag.Int("delta", 0, "produce yyMaxDepth+delta T tokens") flag.Parse() fmt.Println(yyParse(&lx{max: yyMaxDepth+*delta})) }