rlm@1: // -*- C++ -*- rlm@1: // VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. rlm@1: // Copyright (C) 1999-2003 Forgotten rlm@1: // Copyright (C) 2004 Forgotten and the VBA development team rlm@1: rlm@1: // This program is free software; you can redistribute it and/or modify rlm@1: // it under the terms of the GNU General Public License as published by rlm@1: // the Free Software Foundation; either version 2, or(at your option) rlm@1: // any later version. rlm@1: // rlm@1: // This program is distributed in the hope that it will be useful, rlm@1: // but WITHOUT ANY WARRANTY; without even the implied warranty of rlm@1: // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the rlm@1: // GNU General Public License for more details. rlm@1: // rlm@1: // You should have received a copy of the GNU General Public License rlm@1: // along with this program; if not, write to the Free Software Foundation, rlm@1: // Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. rlm@1: rlm@1: struct Node { rlm@1: Type *type; rlm@1: u32 location; rlm@1: u32 objLocation; rlm@1: LocationType locType; rlm@1: int value; rlm@1: int index; rlm@1: char *name; rlm@1: Node *expression; rlm@1: Member *member; rlm@1: void (*print)(Node *); rlm@1: bool (*resolve)(Node *, Function *f, CompileUnit *u); rlm@1: }; rlm@1: rlm@1: extern void exprNodeCleanUp(); rlm@1: rlm@1: extern Node *exprNodeIdentifier(); rlm@1: extern void exprNodeIdentifierPrint(Node *); rlm@1: extern bool exprNodeIdentifierResolve(Node *, Function *, CompileUnit *); rlm@1: rlm@1: extern Node *exprNodeNumber(); rlm@1: extern void exprNodeNumberPrint(Node *); rlm@1: extern bool exprNodeNumberResolve(Node *, Function *, CompileUnit *); rlm@1: rlm@1: extern Node *exprNodeStar(Node *); rlm@1: extern void exprNodeStarPrint(Node *); rlm@1: extern bool exprNodeStarResolve(Node *, Function *, CompileUnit *); rlm@1: rlm@1: extern Node *exprNodeDot(Node *, Node *); rlm@1: extern void exprNodeDotPrint(Node *); rlm@1: extern bool exprNodeDotResolve(Node *, Function *, CompileUnit *); rlm@1: rlm@1: extern Node *exprNodeArrow(Node *, Node *); rlm@1: extern void exprNodeArrowPrint(Node *); rlm@1: extern bool exprNodeArrowResolve(Node *, Function *, CompileUnit *); rlm@1: rlm@1: extern Node *exprNodeAddr(Node *); rlm@1: extern void exprNodeAddrPrint(Node *); rlm@1: extern bool exprNodeAddrResolve(Node *, Function *, CompileUnit *); rlm@1: rlm@1: extern Node *exprNodeSizeof(Node *); rlm@1: extern void exprNodeSizeofPrint(Node *); rlm@1: extern bool exprNodeSizeofResolve(Node *, Function *, CompileUnit *); rlm@1: rlm@1: extern Node *exprNodeArray(Node *, Node *); rlm@1: extern void exprNodeArrayPrint(Node *); rlm@1: extern bool exprNodeArrayResolve(Node *, Function *, CompileUnit *); rlm@1: rlm@1: #define YYSTYPE struct Node *