scopeStack.h
Description du code
Fonctions de gestion d'une pile de portées Compilateur LSD010Code source ou contenu du fichier
Code c (scopeStack.h) (65 lignes)
/* * scopeStack.h : Exposed items to manage a stack of scopes * for a declaration symbol and his re-declarations * Part of the compiler project for LSD10 language * Gaudry Stéphane * More information on http://www.gaudry.be/langages-lex-yacc-intro.html * ********************************************************** */ #ifndef SCOPE_STACK_H #define SCOPE_STACK_H #include "common.h" /** * Stack of scopes for a declaration symbol and his re-declarations * @todo: This exposes the internal data representations, must be hidden */ typedef struct ScopeStackStruct { /** * AST node of the variable or function declaration */ struct astNode *declarationNode; VariableUsage usage; struct astNode *functionNode; struct ScopeStackStruct *parentPtr; }ScopeStack; /** * Builds a scope stack instance */ ScopeStack *createScopeStack(); /** * Free resources of the scope stack */ void finalizeScopeStack(ScopeStack **scopeStack); /** * Adds an inner scope into the stack (enter into a new subscope from the current scope) * @param scopeStack current scope where the new scope is defined * @param scopeId id of the subscope * @param declarationNode declaration of the symbol for this scope * * Pre-condition: scopeStack argument not null */ void pushScopesStack(ScopeStack **scopeStack, int scopeId, AstNode *declarationNode); /** * Removes a scope from the stack (exit a scope and return to the parent scope) * @param scopeStack current scope to remove (this pointer will address the parent scope after) * @returns current declaration node from the AST * Pre-condition: scopeStack argument not null */ AstNode *popScopeStack(ScopeStack **scopeStack); /** * Sets scopeDepth for a given ScopeStack item (Not for all of the stack) * @param scopeStack ScopeStack where to set the depth * @param scopeDepth depth value to set * Pre-condition: scopeStack argument not null */ void setScopesStackDepth(ScopeStack *scopeStack, int scopeDepth); /** * Returns the depth of a scopeStack, or ERROR_INT on error * @param scopeStack ScopeStack where to find the depth */ int getScopeDepth(ScopeStack *scopeStack); #endif
Autres extraits de codes en c
- DisquetteDispo Vérifier la disponibilité du lecteur de disquette
- Suite de Fibonacci Exemple d'itération en C
- Suite de Fibonacci Exemple de récursion en C
- astDataRepresentation.h Représentation de données de l'arbre syntaxique abstrait Compilateur LSD010
- ast.h Arbre syntaxique abstrait Compilateur LSD010
- ast.c Arbre syntaxique abstrait Compilateur LSD010
- symbolsTableDataRepresentation.h Représentation de données de la table des symboles Compilateur LSD010
- symbolsTable.h Fonctions de gestion de la table des symboles Compilateur LSD010
- symbolsTable.c Fonctions de gestion de la table des symboles Compilateur LSD010
- hashCode.h Fonctions de hachage Compilateur LSD010
- hashCode.c Fonctions de hachage Compilateur LSD010
- scopeStack.h Fonctions de gestion d'une pile de portées Compilateur LSD010
- scopeStack.c Fonctions de gestion d'une pile de portées Compilateur LSD010
- scopeHelper.h Fonctions de gestion de la portée courante Compilateur LSD010
- console.h Fonctions d'affichage Compilateur LSD010
- console.c Fonctions d'affichage Compilateur LSD010
- graphVizHelper.h Génération d'une image d'un arbre syntaxique abstrait.
Classe d'intégration de l'outil GraphViz. Compilateur LSD010 - graphVizHelper.c Génération d'une image d'un arbre syntaxique abstrait.
Classe d'intégration de l'outil GraphViz. Compilateur LSD010 - common.h Définition des constantes et variables communes Compilateur LSD010
- pcode.c Génération de p-code Compilateur LSD010
- pcode.h Génération de p-code Compilateur LSD010
- Tous les extraits
Version en cache
21/11/2024 11:45:01 Cette version de la page est en cache (à la date du 21/11/2024 11:45:01) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 05/10/2009, dernière modification le 28/10/2018
Source du document imprimé : https://www.gaudry.be/sniplet-rf-lsd010/project/source/scopeStack.h.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.