code: func (m *matcher) init(prog *syntax.Prog) error {
  	m.prog = prog
  	m.dstate = make(map[string]*dstate)
  
  	m.z1.q.Init(uint32(len(prog.Inst)))
  	m.z2.q.Init(uint32(len(prog.Inst)))
  
  	m.addq(&m.z1.q, uint32(prog.Start), syntax.EmptyBeginLine|syntax.EmptyBeginText)
  	m.z1.flag = flagBOL | flagBOT
  	m.start = m.cache(&m.z1)
  
  	m.z1.q.Reset()
  	m.addq(&m.z1.q, uint32(prog.Start), syntax.EmptyBeginLine)
  	m.z1.flag = flagBOL
  	m.startLine = m.cache(&m.z1)
  
  	return nil
  }
docs: // init initializes the matcher.