Si tu maestro no te dió el lenguaje (palabras reservadas, operadores, reglas sintaxicas, sintacticas y semanticas) entonces has un compilador de un lenguaje que conozcas, por ejemplo C. Es decir, en java vas a abrir archivos .c o .cpp y tu programa debe informar todos los errores de sintaxis, sintacticos y semanticos que tenga.
Si no sabes diferenciar que es sintaxis, sintaxis y semantica, si no sabes realizar autómatas y programar bien en java, veo muy complicado que puedas hacer el compilador.
Necesitas:
- Abrir un archivo de texto en java
- Leer caracter por caracter en un ciclo hasta EOF (End of File).
- Si existe un caracter (símbolo) no válido del lenguaje, por ejemplo $, #, Ñ, ä, ë, á, @ etc... marcar un error como "Caractér no válido @ en línea 1"
- Si es válido entonces concatenar cada caracter en una variable y en cada paso verificar si esa cadena es:
a) operador de asignación
b) operador unario
c) operador incremental
d) operador relacional
e) operador lógico
f) operador a nivel de bits
g) palabra reservara
h)... etc
si es algo de eso limpiar la variable y seguir leyendo el archivo hasta terminar.
Esto es una manera sencilla de hacer un analizador léxico, el sintáctico es una extensión del léxico donde cada que se forme un token (elemento del lenguaje) se va a estar cambiando entre estados (CASE de SWITCH) organizados a partir de un autómata y verificando que no se llegue a una secuencia no válida.
Si no tienes ni idea de como empezar mandame tus dudas por MP
Suerte!