Autor Tema: Cierre de etiquetas END en los INCLUDE  (Leído 4370 veces)

splinter_work

  • Full Member
  • ***
  • Mensajes: 249
  • Karma: 6
Re: Cierre de etiquetas END en los INCLUDE
« Respuesta #15 en: Septiembre 28, 2009, 06:21:58 pm »
esto implicaria un doble contexto de parseo...

Windgate

  • Hero Member
  • *****
  • Mensajes: 2930
  • Karma: 124
    • TRINIT Asociación de Informáticos de Zaragoza
Re: Cierre de etiquetas END en los INCLUDE
« Respuesta #16 en: Septiembre 28, 2009, 09:16:28 pm »
Cierto, implicaría llevar "otro hilo de compilación" por separado, es una cosa peculiar...

Si lo propongo es porque ya no concibo la programación de un proyecto en Bennu por mínimo que sea sin hacer uso de varios .prg, me atrevo a poner 10 como mínimo que son los que meto para configurar vídeo / animar / controlar sonidos / cargar fnt y fpg / gravedad, etc, etc, etc, a los que se suman al menos uno por proceso "importante" en el juego, véase disparo / enemigo / interfaz / protagonista...

Entonces creo que podría ser útil... Una opción sería añadir una opción a bgdc, por ejemplo -m para que tenga en cuenta esa "compilación" para los múltiples ficheros .prg por separado.

Entiendo que es mucho pedir para un simple Warning, si supiese meter mano al código encargado de compilar... Este año tengo una asignatura de compiladores que es de las pocas que me quedan, no me importaría echar un vistazo al compilador de Bennu para ver si puedo sacar algo en limpio, ¿Qué fichero/s son? Tengo los fuentes de Bennu localizados pero me da pánico meter mano.
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

Drumpi

  • Hero Member
  • *****
  • Mensajes: 6340
  • Karma: 162
  • Odio el periodo "entre proyectos"
    • La web de Drumpi
Re: Cierre de etiquetas END en los INCLUDE
« Respuesta #17 en: Septiembre 29, 2009, 02:05:13 am »
El código del compilador son los que están en la carpeta CORE->BGDC->SRC, busca el main.c y ve tirando del hilo para sacar el ovillo (mira los includes).

Yo recuerdo que uno de los primeros ejercicios que hacíamos el primer año de programación con pseudocódigo era precisamente el balanceo de apertura/cierre de sentencias. Claro, en pseudocódigo es fácil y bonito, hasta que no me he hecho yo mi propio "compilador" no he comprobado con horror y estupefación lo diabólicamente enrevesado del asunto. En C tienen la ventaja de que para eso se usan llaves (un único carácter, que encima no se usa para otra cosa) aunque por ejemplo los IFs de una sóla instrucción no necesitan llaves :S
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Windgate

  • Hero Member
  • *****
  • Mensajes: 2930
  • Karma: 124
    • TRINIT Asociación de Informáticos de Zaragoza
Re: Cierre de etiquetas END en los INCLUDE
« Respuesta #18 en: Septiembre 29, 2009, 12:47:10 pm »
A ver, sin saber prácticamente nada de compiladores:

En una variable inicializada a 0 para cada módulo le sumas 1 por cada LOOP, BEGIN, IF, LOOP, WHILE, FROM y le restas 1 por cada END

Si al final la variable no vale 0 lanzas el Warning.

Que el programa lo podría hacer yo, pero la idea es tenerlo en Bennu para editar mis .sh y mis .bat y que usen esa opción para compilar siempre.

Gracias por indicarme la ruta del compilador, voy a echar un ojo a ver qué descubro pero miedo me da :P
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

Drumpi

  • Hero Member
  • *****
  • Mensajes: 6340
  • Karma: 162
  • Odio el periodo "entre proyectos"
    • La web de Drumpi
Re: Cierre de etiquetas END en los INCLUDE
« Respuesta #19 en: Septiembre 29, 2009, 04:15:22 pm »
El problema de los compiladores son la ámplia gama de combinaciones posibles entre las letras. Puede parecer fácil buscar, por ejemplo, loop, pero ten en cuenta que hay quien lo escribe con mayúsculas, hay quien con minúsculas, con la primera en mayúsculas, alternando...
Vale, hay una función que la pone todas en mayúsculas, pero tienes que mirar que no forme parte de otra palabra, como por ejemplo dIFerente, y ya tienes que buscar espacios antes y después.
Pero miserias de la vida, después puede haber un espacio, una tabulación, un paréntesis o un error de sintaxis cualquiera, y antes, además de eso, puede estar el salto de línea de la línea anterior.
Es el fabuloso mundo de la flexibilidad del lenguaje XD. Don't panic, había una función en el código de Bennu que te devuelve un "token", que supongo que se refiere a una palabra del lenguaje, así que la cosa se simplifica mucho.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Windgate

  • Hero Member
  • *****
  • Mensajes: 2930
  • Karma: 124
    • TRINIT Asociación de Informáticos de Zaragoza
Re: Cierre de etiquetas END en los INCLUDE
« Respuesta #20 en: Septiembre 29, 2009, 04:18:53 pm »
Sí, a lo del token sí que llegaba... Es de lo poco que recuerdo del año pasado, que matriculé la asignatura de compiladores y apenas pasé por clase un par de días... Si es que combinar estudios y trabajo no trae nada bueno :S

Lo de mayúsculas/minúsculas al menos con el cutre compilador que hice usando Flex y Bison no era problema, todavía no he mirado el compilador de Bennu, a ver si saco tiempo.

Gracias.
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es