Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members

systembuilder.h

Go to the documentation of this file.
00001 // -*- mode: C++; c-file-style: "stroustrup"; c-basic-offset: 4; -*-
00002 
00003 /* libutap - Uppaal Timed Automata Parser.
00004    Copyright (C) 2002-2004 Uppsala University and Aalborg University.
00005    
00006    This library is free software; you can redistribute it and/or
00007    modify it under the terms of the GNU Lesser General Public License
00008    as published by the Free Software Foundation; either version 2.1 of
00009    the License, or (at your option) any later version.
00010 
00011    This library is distributed in the hope that it will be useful, but
00012    WITHOUT ANY WARRANTY; without even the implied warranty of
00013    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014    Lesser General Public License for more details.
00015 
00016    You should have received a copy of the GNU Lesser General Public
00017    License along with this library; if not, write to the Free Software
00018    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
00019    USA
00020 */
00021 
00022 #ifndef UTAP_SYSTEMBUILDER_H
00023 #define UTAP_SYSTEMBUILDER_H
00024 
00025 #include <cassert>
00026 #include <vector>
00027 #include <inttypes.h>
00028 
00029 #include "utap/expressionbuilder.h"
00030 #include "utap/utap.h"
00031 
00032 namespace UTAP
00033 {
00069     class SystemBuilder : public ExpressionBuilder
00070     {
00071     protected:
00073         int32_t currentChanPriority;
00074 
00076         int32_t currentProcPriority;
00077 
00082         frame_t params;
00083 
00085         function_t *currentFun;
00086 
00088         edge_t *currentEdge;
00089 
00091         std::vector<BlockStatement*> blocks; 
00092 
00094         std::vector<type_t> fields;
00095 
00097         std::vector<std::string> labels;
00098 
00099         //
00100         // Method for handling types
00101         //
00102 
00103         declarations_t *getCurrentDeclarationBlock();
00104 
00105     public:
00106         SystemBuilder(TimedAutomataSystem *);
00107 
00108         virtual void typeArrayOfSize(size_t);
00109         virtual void typeArrayOfType(size_t);
00110         virtual void typeStruct(PREFIX, uint32_t fields);
00111         virtual void structField(const char* name); 
00112         virtual void declTypeDef(const char* name); 
00113         virtual void declVar(const char* name, bool init); 
00114         virtual void declInitialiserList(uint32_t num); 
00115         virtual void declFieldInit(const char* name); 
00116         virtual void declProgress(bool);
00117         virtual void declParameter(const char* name, bool);
00118         virtual void declFuncBegin(const char* name);
00119         virtual void declFuncEnd();
00120         virtual void procBegin(const char* name);
00121         virtual void procEnd(); 
00122         virtual void procState(const char* name, bool hasInvariant); 
00123         virtual void procStateCommit(const char* name); 
00124         virtual void procStateUrgent(const char* name); 
00125         virtual void procStateWinning(const char* name);
00126         virtual void procStateLosing(const char* name); 
00127         virtual void procStateInit(const char* name); 
00128         virtual void procEdgeBegin(const char* from, const char* to, const bool control);
00129         virtual void procEdgeEnd(const char* from, const char* to); 
00130         virtual void procSelect(const char *id);
00131         virtual void procGuard();
00132         virtual void procSync(Constants::synchronisation_t type);
00133         virtual void procUpdate();
00134         virtual void blockBegin();
00135         virtual void blockEnd();
00136         virtual void emptyStatement();
00137         virtual void forBegin();
00138         virtual void forEnd(); 
00139         virtual void iterationBegin(const char *name);
00140         virtual void iterationEnd(const char *name);
00141         virtual void whileBegin();
00142         virtual void whileEnd();
00143         virtual void doWhileBegin();
00144         virtual void doWhileEnd();
00145         virtual void ifBegin();
00146         virtual void ifElse();
00147         virtual void ifEnd(bool); 
00148         virtual void exprStatement(); 
00149         virtual void returnStatement(bool);
00150         virtual void exprCallBegin();
00151         virtual void instantiationBegin(const char*, size_t, const char*);
00152         virtual void instantiationEnd(
00153             const char *, size_t, const char *, size_t);
00154         virtual void process(const char*);
00155         virtual void done();    
00156         virtual void beforeUpdate();
00157         virtual void afterUpdate();
00158         virtual void incProcPriority();
00159         virtual void incChanPriority();
00160         virtual void chanPriority();
00161         virtual void procPriority(const char*);
00162         virtual void defaultChanPriority();
00163     };
00164 }
00165 #endif

Generated on Sat Apr 29 21:02:14 2006 for libutap by  doxygen 1.4.2