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

prettyprinter.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_PRETTYPRINTER_H
00023 #define UTAP_PRETTYPRINTER_H
00024 
00025 #include <string>
00026 #include <vector>
00027 #include <ostream>
00028 #include <stack>
00029 #include "utap/abstractbuilder.h"
00030 
00031 namespace UTAP
00032 {
00033 
00034     class PrettyPrinter : public AbstractBuilder
00035     {
00036     private:
00037         std::vector<std::string> st;    
00038         std::stack<std::ostream *> o;
00039         std::string urgent;
00040         std::string committed;
00041         std::string winning;
00042         std::string losing;
00043         std::string param;
00044         std::string templateset;
00045         int select, guard, sync, update;
00046         
00047         bool first;
00048         uint32_t level;
00049         
00050         void indent();
00051         void indent(std::string &s);
00052 
00053     public:
00054         PrettyPrinter(std::ostream &stream);
00055 
00056         virtual void setErrorHandler(ErrorHandler *);
00057         virtual void setPosition(const position_t &);
00058     
00059         virtual bool isType(const char *id);
00060         virtual void typeName(int32_t prefix, const char *type, int range);
00061         virtual void declTypeDef(const char* name, uint32_t dim); 
00062         virtual void declTypeDefEnd();
00063         virtual void declVar(const char *id, uint32_t dim, bool init);
00064         virtual void declVarEnd();
00065         virtual void declInitialiserList(uint32_t num);
00066         virtual void declFieldInit(const char* name);
00067         virtual void declParameter(const char* name, bool reference, uint32_t dim);
00068         virtual void declParameterEnd();
00069         virtual void declFuncBegin(const char* name, uint32_t n);
00070         virtual void declFuncEnd();
00071         virtual void blockBegin();
00072         virtual void blockEnd();
00073         virtual void emptyStatement();
00074         virtual void forBegin();
00075         virtual void forEnd();
00076         virtual void iterationBegin(const char *name); // 1 id, 1 type
00077         virtual void iterationEnd(const char *name); // 1 stat
00078         virtual void whileBegin();
00079         virtual void whileEnd();
00080         virtual void doWhileBegin();
00081         virtual void doWhileEnd();
00082         virtual void ifBegin();
00083         virtual void ifElse();
00084         virtual void ifEnd(bool);
00085         virtual void breakStatement();
00086         virtual void continueStatement();
00087         virtual void exprStatement();
00088         virtual void returnStatement(bool hasValue);
00089         virtual void procTemplateSet(const char *name);
00090         virtual void procBegin(const char* name, uint32_t n, uint32_t m);
00091         virtual void procState(const char *id, bool hasInvariant);
00092         virtual void procStateUrgent(const char *id);
00093         virtual void procStateCommit(const char *id);
00094         virtual void procStateWinning(const char *id);
00095         virtual void procStateLosing(const char *id);
00096         virtual void procStateInit(const char *id);
00097         virtual void procSelect(const char *id);
00098         virtual void procGuard();
00099         virtual void procSync(Constants::synchronisation_t type);
00100         virtual void procUpdate();
00101         virtual void procEdgeBegin(const char *source, const char *target, const bool control);
00102         virtual void procEdgeEnd(const char *source, const char *target);
00103         virtual void procEnd();
00104         virtual void exprId(const char *id);
00105         virtual void exprNat(int32_t n);
00106         virtual void exprTrue();
00107         virtual void exprFalse();
00108         virtual void exprCallBegin();
00109         virtual void exprCallEnd(uint32_t n);
00110         virtual void exprArg(uint32_t n);
00111         virtual void exprArray();
00112         virtual void exprPostIncrement();
00113         virtual void exprPreIncrement();
00114         virtual void exprPostDecrement();
00115         virtual void exprPreDecrement();
00116         virtual void exprAssignment(Constants::kind_t op);
00117         virtual void exprUnary(Constants::kind_t op);
00118         virtual void exprBinary(Constants::kind_t op);
00119         virtual void exprInlineIf();
00120         virtual void exprComma();
00121         virtual void exprDot(const char *);
00122         virtual void exprDeadlock();
00123         virtual void exprForAllBegin(const char *name);
00124         virtual void exprForAllEnd(const char *name);
00125         virtual void beforeUpdate();
00126         virtual void afterUpdate();
00127         virtual void instantiationBegin(const char *id, const char *templ);
00128         virtual void instantiationEnd(const char* id, const char* templ, uint32_t n);
00129         virtual void process(const char *id);
00130         virtual void done();
00131     };
00132 }
00133 
00134 #endif

Generated on Thu Nov 10 13:16:12 2005 for libutap by  doxygen 1.4.2