a) parse lisp as usual. This layer doesn't know about the regular vs infix distinction, so a, a-1 and ++a and ++ are all just tokens.
b) expand infix ops inside symbols, e.g. a+1 => (a + 1)
c) scan for operators inside lists and pinch them with the adjacent elements.
(.. a ++ b ..) => (.. (++ a b) ..)
(a infix b ..) => ((infix a b) ..)