code: func (c *Compiler) Feed(ch <-chan token) {
  	for i := range ch {
  		switch i.typ {
  		case number:
  			num := math.MustParseBig256(i.text).Bytes()
  			if len(num) == 0 {
  				num = []byte{0}
  			}
  			c.pc += len(num)
  		case stringValue:
  			c.pc += len(i.text) - 2
  		case element:
  			c.pc++
  		case labelDef:
  			c.labels[i.text] = c.pc
  			c.pc++
  		case label:
  			c.pc += 5
  		}
  
  		c.tokens = append(c.tokens, i)
  	}
  	if c.debug {
  		fmt.Fprintln(os.Stderr, "found", len(c.labels), "labels")
  	}
  }
docs: // Feed feeds tokens in to ch and are interpreted by
  // the compiler.
  //
  // feed is the first pass in the compile stage as it
  // collects the used labels in the program and keeps a
  // program counter which is used to determine the locations
  // of the jump dests. The labels can than be used in the
  // second stage to push labels and determine the right
  // position.