Česky
Kamil Dudka

IFJ 05 (C language)

File detail

Name:Downloadsymbols.h [Download]
Location: ifj05 > src
Size:2.2 KB
Last modification:2007-08-29 02:18

Source code

/*
 * Projekt: IFJ05
 * Resitele: xbarin02, xdudka00, xfilak01, xhefka00, xhradi08
 *
 * Soubor: symbols.h - modul tabulky symbolu
 * Autor: David Barina, xbarin02
 */
 
#ifndef SYMBOLS_H
#define SYMBOLS_H
 
#include "variables.h"
 
/***
 * TSymbolType
 *   kazdy symbol muze byt jednim z techto typu 
 */
typedef enum
        {
          stVariable,   // na zacatku je kazdy identifikator promena
          stLabel       // o nekterych se dozvime, ze jsou to labely
        } TSymbolType;
 
/***
 * TSymbols
 *   vlastni struktura symbolu
 */
typedef struct _TSymbol
        TSymbol, *PSymbol;
 
/***
 * TSymbols
 *   pozor na jmeno prechoziho typu, struktura zastresujici tabulku symbolu
 */ 
typedef struct _TSymbols
        TSymbols, *PSymbols;
 
/***
 * SymbolsCreate()
 *   vytvori prazdnou tabulku symbolu a vrati ukazatel na ni
 */ 
PSymbols SymbolsCreate();
 
/***
 * SymbolsInsert()
 *   vlozi symbol do tabulky; jestlize existuje, vrati jen
 *   ukazatel na nej, jinak provede vlozeni a take vrati ukazatel na nej;
 *   parametr - nazev symbolu 
 */ 
PSymbol SymbolsInsert(PSymbols table, char *strName, PVariableTable vartable);
 
/***
 * SymbolsSetLabel()
 *   udela z identifikatoru label
 *   1. parametr - adresa symbolu vracena funkci SymbolsInsert()
 *   2. parametr - index do pasky, kam label ukazuje
 *   ! pri pokusu o redefinici labelu vraci nenulovou hodnotu, jinak 0
 */
int SymbolsSetLabel(PSymbol symbol, unsigned index);
 
/***
 * SymbolsGetType()
 *   funkce pro runtime, kt. vrati typ symbolu
 *   parametr - adresa symbolu 
 */
TSymbolType SymbolsGetType(PSymbol symbol);
 
/***
 * SymbolsGetName()
 *   funkce pro runtime, kt. vrati jmeno symbolu (pro vypis chyb)
 *   parametr - adresa symbolu
 */
char *SymbolsGetName(PSymbol symbol);
 
/***
 * SymbolsGetLabelIndex()
 *   funkce pro runtime, kt. vrati index do pasky u labelu
 *   parametr - adresa symbolu  
 */
unsigned SymbolsGetLabelIndex(PSymbol symbol);
 
/***
 * SymbolsGetVariable()
 *   funkce pro runtime, kt. vrati odkaz na promenou 
 *   parametr - adresa symbolu 
 */
PVariable SymbolsGetVariable(PSymbol symbol);
 
/***
 * SymbolsDestroy()
 *   uvolni vsechny symboly + tabulku symbolu z pameti
 *   parametr - adresa tabulky symbolu  
 */ 
void SymbolsDestroy(PSymbols table);
 
#endif