#ifndef __SYNTREE_H__ #define __SYNTREE_H__ #include #include #include /* maksimalna duzina imena identifikatora */ #define MAX_ID 64 /* funkcija za prijavljivanje greske */ void yyerror(char* s); /* node je pokazivac na strukturu node_ */ typedef struct node_* node; struct node_ { /* vrsta cvora: konstante, promenljive, operatori */ enum {typeCon, typeId, typeOp} type; union { /* vrednost konstante */ int value; /* ime promenljive */ char name[MAX_ID]; /* binarni operator ('+', '-', '*', '/') i dva njegova operanda */ struct { char operator; node left, right; } op; }; }; /* konstruktor konstante na osnovu njene vrednosti */ node con(int value); /* konstruktor promenljive na osnovu njenog imena */ node id(char name[]); /* konstruktor binarnog operatora na osnovu njegovog simbola i operanada */ node op(char operator, node left, node right); /* brisanje drveta */ void freeNode(node n); /* stampanje drveta (samo zbog debagovanja) */ void print(node n); #endif