Question

J'ai développé un langage de programmation interprété. Le problème est que je souhaite ajouter une directive foreach sans avoir la moindre idée comment.

J'utilise Bison et Flex comme analyseur et générateur de lexer.

Était-ce utile?

La solution

Dans votre grammaire, vous voudriez une expression semblable à celle-ci:

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

Lorsque vous analysez cela, vous devriez pouvoir le traduire directement en boucle while de votre AST avec une instruction supplémentaire qui assigne une variable au début.

Cela me semble le moyen le plus simple de le faire, mais il y aura probablement des limitations avec plusieurs types de données itérables (par exemple une liste par rapport à un tableau). Dans ce cas, vous pouvez envisager de consolider tous les itérables afin qu’ils disposent d’une méthode cohérente pour obtenir l’élément suivant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top