Que estudies la teoría (de lenguajes y de compiladores), y que ya con los conceptos en la cabeza intentes llevarlo a la practica con soluciones tuyas, y no con la ayuda de herramientas que te permiten ahorrarte pasos (aunque llegues mas lejos).
En mi caso: en la escuela nos pidieron hacer las fases de analisis lexico, sintanctico y semantico de un lenguaje inventado por ti. El programa de mi equipo fue
el unico que no funciono, pero fue el unico que saco 100 (

), eso fue por que lo demas utilizaron herramientas, programas bajados de la red, o cosas muy simples. Lo de nosotros fue algo totalemnte artesanal (en Delphi), que aunque horripilante (ni funcionaba) deducía problemas o tenia soluciones alternas a problemas siempre abordados de la misma manera