Mon langage de programmation n'a pas des tableaux, pas de listes, pas de pointeurs, pas eval et aucune variable variable. Tout ce qu'il a:tableaux de mise en œuvre à l'aide d'une pile
Les variables ordinaires comme vous les connaissez dans la plupart des langages de programmation: Ils ont tous un nom exact et une valeur.
Une pile. Fonctions fournies sont: push (Ajouter un élément vers le haut), pop (retirer l'élément de haut, obtenir la valeur) et vide (vérifier si la pile est vide)
Ma langue est Turing-complet. (Arithmétique de base, sauts conditionnels, etc.) Cela signifie qu'il doit être possible d'implémenter une sorte de liste ou de tableau, n'est-ce pas?
Mais je ne sais pas comment ...
Ce que je veux atteindre: Créer une fonction qui peut récupérer et/ou modifier un élément x de la pile.
Je pourrais facilement ajouter cette fonction dans l'implémentation de mon langage, dans l'interpréteur, mais je veux le faire en mon langage de programmation.
- "Solution" une (accès à un élément x, en comptant à partir du haut de la pile)
créer une boucle. Éclatez l'élément du dessus de la pile x
fois. Le dernier élément apparu est le numéro d'élément x
. Je me retrouve avec une pile détruite.
- Solution deux:
Faites la même chose que ci-dessus, mais stocker toutes les valeurs dans un sauté hors seconde pile. Ensuite, vous pouvez déplacer tous les éléments après que vous avez terminé. Mais tu sais quoi? Je n'ai pas de deuxième pile!
Sons comme 'Forth': http://en.wikipedia.org/wiki/Forth_(programming_language) –
Forth a des pointeurs et allot (qui lui donne des tableaux) et une deuxième pile bien. –