func readAddRewriter(s *toki.Scanner, table *tbl.Table) error { var t *toki.Result if t = s.Next(); t.Token != word { return errFmtAddRewriter } old := t.Value if t = s.Next(); t.Token != word { return errFmtAddRewriter } new := t.Value // token can be a word if it's a negative number. we should probably not have a separate number token, since numbers could be in so many formats // and we try out Atoi (or whatever fits) anyway. if t = s.Next(); t.Token != num && t.Token != word { return errFmtAddRewriter } max, err := strconv.Atoi(strings.TrimSpace(string(t.Value))) if err != nil { return errFmtAddRewriter } rw, err := rewriter.NewFromByte(old, new, max) if err != nil { return err } table.AddRewriter(rw) return nil }