URL
https://opencores.org/ocsvn/thor/thor/trunk
Subversion Repositories thor
[/] [thor/] [trunk/] [FT64v5/] [software/] [CC64/] [source/] [Statement.h] - Rev 58
Go to most recent revision | Compare with Previous | Blame | View Log
#ifndef _STATEMENT #define _STATEMENT // ============================================================================ // __ // \\__/ o\ (C) 2012-2017 Robert Finch, Waterloo // \ __ / All rights reserved. // \/_// robfinch<remove>@finitron.ca // || // // C64 - 'C' derived language compiler // - 64 bit CPU // // This source file is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published // by the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This source file is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. // // ============================================================================ // enum e_stmt { st_empty, st_funcbody, st_expr, st_compound, st_while, st_until, st_forever, st_firstcall, st_asm, st_dountil, st_doloop, st_try, st_catch, st_throw, st_critical, st_spinlock, st_spinunlock, st_for, st_do, st_if, st_switch, st_default, st_case, st_goto, st_break, st_continue, st_label, st_return, st_vortex, st_intoff, st_inton, st_stop, st_check }; class Statement { public: __int8 stype; Statement *outer; Statement *next; Statement *prolog; Statement *epilog; bool nkd; int predreg; // assigned predicate register ENODE *exp; // condition or expression ENODE *initExpr; // initialization expression - for loops ENODE *incrExpr; // increment expression - for loops Statement *s1, *s2; // internal statements int num; // resulting expression type (hash code for throw) int64_t *label; // label number for goto int64_t *casevals; // case values TABLE ssyms; // local symbols associated with statement char *fcname; // firstcall block var name char *lptr; unsigned int prediction : 2; // static prediction for if statements static Statement *ParseStop(); static Statement *ParseCompound(); static Statement *ParseDo(); static Statement *ParseFor(); static Statement *ParseForever(); static Statement *ParseFirstcall(); static Statement *ParseIf(); static Statement *ParseCatch(); static Statement *ParseCase(); int CheckForDuplicateCases(); static Statement *ParseThrow(); static Statement *ParseContinue(); static Statement *ParseAsm(); static Statement *ParseTry(); static Statement *ParseExpression(); static Statement *ParseLabel(); static Statement *ParseWhile(); static Statement *ParseUntil(); static Statement *ParseGoto(); static Statement *ParseReturn(); static Statement *ParseBreak(); static Statement *ParseSwitch(bool); static Statement *Parse(bool); void GenMixedSource(); void GenerateStop(); void GenerateAsm(); void GenerateFirstcall(); void GenerateWhile(); void GenerateUntil(); void GenerateFor(); void GenerateForever(); void GenerateIf(); void GenerateDo(); void GenerateDoUntil(); void GenerateCompound(); void GenerateCase(); void GenerateTry(); void GenerateThrow(); void GenerateCheck(); void GenerateFuncBody(); void GenerateSwitch(); void GenerateLinearSwitch(); void GenerateTabularSwitch(); void Generate(); }; #endif
Go to most recent revision | Compare with Previous | Blame | View Log