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 <stdexcept>
00026 
00027 #include "utap/builder.h"
00028 #include "utap/utap.h"
00029 
00030 namespace UTAP
00031 {
00032     class NotSupportedException : public std::logic_error
00033     {
00034     public:
00035         NotSupportedException(const char *msg) : std::logic_error(msg) {}
00036 
00037     };
00038 
00039     class AbstractBuilder : public ParserBuilder
00040     {
00041     protected:
00042         /* A pointer to the error handler */
00043         ErrorHandler *errorHandler;
00044 
00045         position_t position;
00046     public:
00047         AbstractBuilder();
00048 
00049         virtual void setErrorHandler(ErrorHandler *);
00050         virtual void setPosition(const position_t &);
00051 
00052         /************************************************************
00053          * Query functions
00054          */
00055         virtual bool isType(const char*);
00056         virtual bool isLocation(const char*);
00057 
00058         /************************************************************
00059          * Types
00060          */
00061         virtual void typeName(int32_t prefix, const char* name, int range);
00062         // 2 expr if range==true
00063         virtual void typeStruct(int32_t prefix, uint32_t fields);
00064 
00065         virtual void structField(const char* name, uint32_t dim); 
00066         // 1 type and dim array sizes
00067         virtual void structFieldEnd();
00068 
00069         virtual void declTypeDef(const char* name, uint32_t dim); 
00070         // 1 type and dim array sizes
00071         virtual void declTypeDefEnd();
00072 
00073         /************************************************************
00074          * Variable declarations
00075          */
00076         virtual void declVar(const char* name, uint32_t dim, bool init); 
00077         // 1 type, dims, initializer if init==true
00078         virtual void declVarEnd();
00079         virtual void declInitialiserList(uint32_t num); // n initialisers
00080         virtual void declFieldInit(const char* name); // 1 initialiser
00081 
00082         /************************************************************
00083          * Progress measure declarations
00084          */
00085         virtual void declProgress(bool);
00086         
00087         /************************************************************
00088          * Function declarations
00089          */
00090         virtual void declParameter(const char* name, bool reference, uint32_t dim);
00091         // 1 type, dim array sizes
00092         virtual void declParameterEnd(); // pop parameter type
00093     
00094         virtual void declFuncBegin(const char* name, uint32_t n); // n paramaters
00095         virtual void declFuncEnd(); // 1 block
00096 
00097         /************************************************************
00098          * Process declarations
00099          */
00100         virtual void procBegin(const char* name, uint32_t n); // n parameters
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 procStateInit(const char* name); // mark previously decl. state
00106         virtual void procEdge(const char* from, const char* to); 
00107         // 1 epxr,1sync,1expr
00108         virtual void procGuard();
00109         virtual void procSync(Constants::synchronisation_t type); // 1 expr
00110         virtual void procUpdate();
00111     
00112         /************************************************************
00113          * Statements
00114          */
00115         virtual void blockBegin();
00116         virtual void blockEnd();
00117         virtual void emptyStatement();
00118         virtual void forBegin();
00119         virtual void forEnd(); // 3 expr, 1 stat
00120         virtual void whileBegin();
00121         virtual void whileEnd(); // 1 expr, 1 stat
00122         virtual void doWhileBegin();
00123         virtual void doWhileEnd(); // 1 stat, 1 expr
00124         virtual void ifBegin();
00125         virtual void ifElse();
00126         virtual void ifEnd(bool); // 1 expr, 1 or 2 statements
00127         virtual void breakStatement();
00128         virtual void continueStatement();
00129         virtual void switchBegin();
00130         virtual void switchEnd(); // 1 expr, 1+ case/default
00131         virtual void caseBegin();
00132         virtual void caseEnd();  // 1 expr, 0+ stat
00133         virtual void defaultBegin();
00134         virtual void defaultEnd(); // 0+ statements
00135         virtual void exprStatement(); // 1 expr
00136         virtual void returnStatement(bool); // 1 expr if argument is true
00137     
00138         /************************************************************
00139          * Expressions
00140          */
00141         virtual void exprTrue();
00142         virtual void exprFalse();
00143         virtual void exprId(const char * varName);
00144         virtual void exprNat(int32_t); // natural number
00145         virtual void exprCallBegin(const char * functionName);
00146         virtual void exprCallEnd(uint32_t n); // n exprs as arguments
00147         virtual void exprArg(uint32_t n); // 1 exprs as n-th argument for fn-call
00148         virtual void exprArray(); // 2 expr 
00149         virtual void exprPostIncrement(); // 1 expr
00150         virtual void exprPreIncrement(); // 1 expr
00151         virtual void exprPostDecrement(); // 1 expr
00152         virtual void exprPreDecrement(); // 1 expr
00153         virtual void exprAssignment(Constants::kind_t op); // 2 expr
00154         virtual void exprUnary(Constants::kind_t unaryop); // 1 expr
00155         virtual void exprBinary(Constants::kind_t binaryop); // 2 expr
00156         virtual void exprInlineIf(); // 3 expr
00157         virtual void exprComma(); // 2 expr
00158         virtual void exprDot(const char *); // 1 expr
00159         virtual void exprDeadlock();
00160     
00161         /************************************************************
00162          * System declaration
00163          */
00164         virtual void instantiationBegin(const char*, const char*);
00165         virtual void instantiationEnd(const char *, const char *, uint32_t n); // n arguments
00166         virtual void process(const char*);
00167 
00168         virtual void done();    
00169 
00170         virtual void property(Constants::kind_t, int line);
00171 
00172         /********************************************************************
00173          * Guiding
00174          */
00175 
00176         virtual void beforeUpdate();
00177         virtual void afterUpdate();
00178 
00179 
00180         /********************************************************************
00181          * Priority
00182          */
00183 
00184         virtual void lowPriority(const char*);
00185         virtual void samePriority(const char*);
00186         virtual void higherPriority(const char*);
00187     };
00188 }
00189 #endif

Generated on Thu Feb 17 15:20:58 2005 for libutap by  doxygen 1.4.1