Pregunta

He desarrollado un lenguaje de programación interpretado. Se basa en gran medida en C. El problema es que quiero agregar una directiva foreach y no tengo idea de cómo hacerlo.

Estoy utilizando Bison y Flex como el analizador y el generador de lexer.

¿Fue útil?

Solución

En tu gramática, querrías una expresión que sea como la siguiente:

foreach := foreach ( name in name ) { statements }

Cuando lo analices, deberías poder traducirlo directamente en un bucle while en tu AST con una declaración adicional que asigna una variable al principio.

Esto me parece la forma más sencilla de hacerlo, pero probablemente tendrá limitaciones con múltiples tipos de datos iterables (por ejemplo, una lista frente a una matriz). En este caso, es posible que desee considerar la consolidación de todos los iterables para que tengan un método coherente para obtener el siguiente elemento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top