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

abstractbuilder.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-2003 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_ABSTRACTBUILDER_HH
00023 #define UTAP_ABSTRACTBUILDER_HH
00024 
00025 #include <exception>
00026 #include <string>
00027 
00028 #include "utap/builder.h"
00029 #include "utap/utap.h"
00030 #include "utap/position.h"
00031 
00032 namespace UTAP
00033 {
00034     class NotSupportedException : public std::exception 
00035     {
00036     private:
00037         std::string error;
00038     public:
00039         NotSupportedException(const char *err) { error = err; }
00040         virtual ~NotSupportedException() throw() {}
00041         virtual const char* what() const throw() { return error.c_str(); }
00042     };
00043 
00044     class AbstractBuilder : public ParserBuilder
00045     {
00046     protected:
00047         position_t position;
00048     public:
00049         AbstractBuilder();
00050 
00051         virtual void setPosition(uint32_t, uint32_t);
00052 
00053         /************************************************************
00054          * Query functions
00055          */
00056         virtual bool isType(const char*);
00057         virtual bool isLocation(const char*);
00058 
00059         /************************************************************
00060          * Types
00061          */
00062         virtual void typeDuplicate();
00063         virtual void typePop();
00064         virtual void typeBool(PREFIX);
00065         virtual void typeInt(PREFIX);
00066         virtual void typeBoundedInt(PREFIX);
00067         virtual void typeChannel(PREFIX);
00068         virtual void typeClock();
00069         virtual void typeVoid();
00070         virtual void typeScalar(PREFIX);
00071         virtual void typeName(PREFIX, const char* name);
00072         virtual void typeStruct(PREFIX, uint32_t fields);
00073         virtual void typeArrayOfSize(size_t);
00074         virtual void typeArrayOfType(size_t);
00075         virtual void structField(const char* name); 
00076         virtual void declTypeDef(const char* name); 
00077 
00078         /************************************************************
00079          * Variable declarations
00080          */
00081         virtual void declVar(const char* name, bool init); 
00082         virtual void declInitialiserList(uint32_t num); // n initialisers
00083         virtual void declFieldInit(const char* name); // 1 initialiser
00084 
00085         /************************************************************
00086          * Progress measure declarations
00087          */
00088         virtual void declProgress(bool);
00089         
00090         /************************************************************
00091          * Function declarations
00092          */
00093         virtual void declParameter(const char* name, bool);
00094         virtual void declFuncBegin(const char* name); // n paramaters
00095         virtual void declFuncEnd(); // 1 block
00096 
00097         /************************************************************
00098          * Process declarations
00099          */
00100         virtual void procBegin(const char* name);
00101         virtual void procEnd(); // 1 ProcBody
00102         virtual void procState(const char* name, bool hasInvariant); // 1 expr
00103         virtual void procStateCommit(const char* name); // mark previously decl. state
00104         virtual void procStateUrgent(const char* name); // mark previously decl. state
00105         virtual void procStateWinning(const char* name); // mark previously decl. state
00106         virtual void procStateLosing(const char* name); // mark previously decl. state
00107         virtual void procStateInit(const char* name); // mark previously decl. state
00108         virtual void procEdgeBegin(const char* from, const char* to, const bool control);
00109         virtual void procEdgeEnd(const char* from, const char* to); 
00110         // 1 epxr,1sync,1expr
00111         virtual void procSelect(const char *id);
00112         virtual void procGuard();
00113         virtual void procSync(Constants::synchronisation_t type); // 1 expr
00114         virtual void procUpdate();
00115     
00116         /************************************************************
00117          * Statements
00118          */
00119         virtual void blockBegin();
00120         virtual void blockEnd();
00121         virtual void emptyStatement();
00122         virtual void forBegin(); // 3 expr
00123         virtual void forEnd(); // 1 stat
00124         virtual void iterationBegin(const char *name); // 1 id, 1 type
00125         virtual void iterationEnd(const char *name); // 1 stat
00126         virtual void whileBegin();
00127         virtual void whileEnd(); // 1 expr, 1 stat
00128         virtual void doWhileBegin();
00129         virtual void doWhileEnd(); // 1 stat, 1 expr
00130         virtual void ifBegin();
00131         virtual void ifElse();
00132         virtual void ifEnd(bool); // 1 expr, 1 or 2 statements
00133         virtual void breakStatement();
00134         virtual void continueStatement();
00135         virtual void switchBegin();
00136         virtual void switchEnd(); // 1 expr, 1+ case/default
00137         virtual void caseBegin();
00138         virtual void caseEnd();  // 1 expr, 0+ stat
00139         virtual void defaultBegin();
00140         virtual void defaultEnd(); // 0+ statements
00141         virtual void exprStatement(); // 1 expr
00142         virtual void returnStatement(bool); // 1 expr if argument is true
00143     
00144         /************************************************************
00145          * Expressions
00146          */
00147         virtual void exprTrue();
00148         virtual void exprFalse();
00149         virtual void exprId(const char * varName);
00150         virtual void exprNat(int32_t); // natural number
00151         virtual void exprCallBegin();
00152         virtual void exprCallEnd(uint32_t n); // n exprs as arguments
00153         virtual void exprArray(); // 2 expr 
00154         virtual void exprPostIncrement(); // 1 expr
00155         virtual void exprPreIncrement(); // 1 expr
00156         virtual void exprPostDecrement(); // 1 expr
00157         virtual void exprPreDecrement(); // 1 expr
00158         virtual void exprAssignment(Constants::kind_t op); // 2 expr
00159         virtual void exprUnary(Constants::kind_t unaryop); // 1 expr
00160         virtual void exprBinary(Constants::kind_t binaryop); // 2 expr
00161         virtual void exprInlineIf(); // 3 expr
00162         virtual void exprComma(); // 2 expr
00163         virtual void exprDot(const char *); // 1 expr
00164         virtual void exprDeadlock();
00165         virtual void exprForAllBegin(const char *name);
00166         virtual void exprForAllEnd(const char *name);
00167         virtual void exprExistsBegin(const char *name);
00168         virtual void exprExistsEnd(const char *name);
00169     
00170         /************************************************************
00171          * System declaration
00172          */
00173         virtual void instantiationBegin(const char*, size_t, const char*);
00174         virtual void instantiationEnd(
00175             const char *, size_t, const char *, size_t); 
00176         virtual void process(const char*);
00177 
00178         virtual void done();    
00179 
00180         virtual void property(Constants::kind_t);
00181 
00182         /********************************************************************
00183          * Guiding
00184          */
00185 
00186         virtual void beforeUpdate();
00187         virtual void afterUpdate();
00188 
00189 
00190         /********************************************************************
00191          * Priority
00192          */
00193 
00194         virtual void incProcPriority();
00195         virtual void incChanPriority();
00196         virtual void chanPriority();
00197         virtual void procPriority(const char*);
00198         virtual void defaultChanPriority();
00199     };
00200 }
00201 #endif

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