func compile(g *ast.Grammar, record bool) (*Auto, error) { var m *mem.Mem var err error if record { m, err = mem.NewRecord(g) } else { m, err = mem.New(g) } if err != nil { return nil, err } if err := m.Compile(); err != nil { return nil, err } a := &Auto{ calls: m.Calls, returns: newReturns(m.Returns), escapables: m.Escapables, start: m.Start, stateToNullable: m.StateToNullable, accept: m.Accept, } return a, nil }