Creando una palabra clave foreach con yacc o Bison y Flex
-
05-07-2019 - |
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.
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.