while ( fgets (linea,200,p)!=NULL)
con esta condicion lo que haces linea por linea del archivo, hasta que sea fin de archivo, y luego harias otro ciclopara ir leyendo caracter por caracter de la linea y asi ir descubriendo <variable> y </variable>
linea: vector de tipo caracter de N posiciones, en el cual se almacenara cada linea del archivo
200: un limite (dependiendo de que tantos caracteres creas convenientes que se lean)
p: apuntador de tipo file en donde se almacena la direccion del archivo
no se los demas; pero creo que esto es una de las etapas de algun compilador... lexico para ser mas exactos...espero y te sirva lo anterior.
si es asi...lo haria con una matriz de estados (aunque no se que mas uses) o un vector de palabras reservadas