The mark-to-base attachment lookup attaches marks to base glyphs. This means that every base glyph is supposed to have exactly one attachment point for a certain mark glyph. A mark should be what the Unicode standard calls a "combining mark": a mark the does not have an advance width or height of itself and whose position is determined by the position of the base glyph. An example of a simple mark-to-base attachment lookup:

lookup marks {
    ignore mark except @marksAbove;
    mark [@marksAbove - macroncomb] <: -25, 160>;
    mark macroncomb <: -25, 170>;

    base [A Delta Lambda] @marksAbove <: 90, 200>;
    base [B Beta] @marksAbove <: 75, 200>;
}

In this example the attachment points for all glyphs are the same, except for "macroncomb" because of the form of this glyph. Here, each base glyphs has the same attachment point for all mark glyphs, but this is not required. (It is a lot easier to use one anchor for all marks though.) It is required that all mark glyphs that are used are attached to all base glyphs that are used.