Per escludere i primi due casi, mentre fai il parsing cioè scandisci tutti i caratteri, basta utilizzare un booleano che setti a true ogni volta che incontri due caratteri "/*", e setti a false ogni volta che incontri due caratteri "*/".Lo puoi settare a true anche se incontri due caratteri "//" e in questo caso lo setti a false quando si va a capo riga.Se questo booleano è uguale a true il nome non viene considerato.
Cosi' hai eliminato il primo caso.
Per eliminare il secondo caso basta verificare che il nome della funzione sia seguito da un punto e virgola anzichè da una graffa.