code: func (c *Compiler) compileLine() error {
  	n := c.next()
  	if n.typ != lineStart {
  		return compileErr(n, n.typ.String(), lineStart.String())
  	}
  
  	lvalue := c.next()
  	switch lvalue.typ {
  	case eof:
  		return nil
  	case element:
  		if err := c.compileElement(lvalue); err != nil {
  			return err
  		}
  	case labelDef:
  		c.compileLabel()
  	case lineEnd:
  		return nil
  	default:
  		return compileErr(lvalue, lvalue.text, fmt.Sprintf("%v or %v", labelDef, element))
  	}
  
  	if n := c.next(); n.typ != lineEnd {
  		return compileErr(n, n.text, lineEnd.String())
  	}
  
  	return nil
  }
docs: // compileLine compiles a single line instruction e.g.
  // "push 1", "jump @label".