como acer un complilador en java proyecto de escuela

#1
hola que tal este es un pequeño proyecto que nos encargo un profesor de como dessarrollar un un compilador en java el compilador lo que deve de hacer o contener es lo siguiente alisis lexicco, analisis sintactico, analisis semantico, generador de codigo, generacion de codigo intemedio, optimizacion de codigo y generacion de codigo. este me seria de mucha ayuda que me dieran una idea de como acerlo o como programarlo en java. :metal:
 

novos

Bovino maduro
#2
El profesor les explico algo?
Compilador de que lenguaje? uno inventado? o que onda?

sabes como leer de un archivo?, empieza a investigar que es el análisis léxico, así con lo demás..., lo mas cañon son los últimos componentes.

Saludos!:vientos:
 
#3
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!
 
Arriba