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 param;
00042         int guard, sync, update;
00043         
00044         bool first;
00045         uint32_t level;
00046         
00047         void indent();
00048         void indent(std::string &s);
00049 
00050     public:
00051         PrettyPrinter(std::ostream &stream);
00052 
00053         virtual void setErrorHandler(ErrorHandler *);
00054         virtual void setPosition(const position_t &);
00055     
00056         virtual bool isType(const char *id);
00057         virtual void typeName(int32_t prefix, const char *type, int range);
00058         virtual void declVar(const char *id, uint32_t dim, bool init);
00059         virtual void declVarEnd();
00060         virtual void declInitialiserList(uint32_t num);
00061         virtual void declFieldInit(const char* name);
00062         virtual void declParameter(const char* name, bool reference, uint32_t dim);
00063         virtual void declParameterEnd();
00064         virtual void declFuncBegin(const char* name, uint32_t n);
00065         virtual void declFuncEnd();
00066         virtual void blockBegin();
00067         virtual void blockEnd();
00068         virtual void emptyStatement();
00069         virtual void forBegin();
00070         virtual void forEnd();
00071         virtual void whileBegin();
00072         virtual void whileEnd();
00073         virtual void doWhileBegin();
00074         virtual void doWhileEnd();
00075         virtual void ifBegin();
00076         virtual void ifElse();
00077         virtual void ifEnd(bool);
00078         virtual void breakStatement();
00079         virtual void continueStatement();
00080         virtual void exprStatement();
00081         virtual void returnStatement(bool hasValue);
00082         virtual void procBegin(const char *id, uint32_t n);
00083         virtual void procState(const char *id, bool hasInvariant);
00084         virtual void procStateUrgent(const char *id);
00085         virtual void procStateCommit(const char *id);
00086         virtual void procStateInit(const char *id);
00087         virtual void procGuard();
00088         virtual void procSync(Constants::synchronisation_t type);
00089         virtual void procUpdate();
00090         virtual void procEdge(const char *source, const char *target);
00091         virtual void procEnd();
00092         virtual void exprId(const char *id);
00093         virtual void exprNat(int32_t n);
00094         virtual void exprTrue();
00095         virtual void exprFalse();
00096         virtual void exprCallBegin(const char *name);
00097         virtual void exprCallEnd(uint32_t n);
00098         virtual void exprArg(uint32_t n);
00099         virtual void exprArray();
00100         virtual void exprPostIncrement();
00101         virtual void exprPreIncrement();
00102         virtual void exprPostDecrement();
00103         virtual void exprPreDecrement();
00104         virtual void exprAssignment(Constants::kind_t op);
00105         virtual void exprUnary(Constants::kind_t op);
00106         virtual void exprBinary(Constants::kind_t op);
00107         virtual void exprInlineIf();
00108         virtual void exprComma();
00109         virtual void exprDot(const char *);
00110         virtual void exprDeadlock();
00111         virtual void beforeUpdate();
00112         virtual void afterUpdate();
00113         virtual void instantiationBegin(const char *id, const char *templ);
00114         virtual void instantiationEnd(const char* id, const char* templ, uint32_t n);
00115         virtual void process(const char *id);
00116         virtual void done();
00117     };
00118 }
00119 
00120 #endif

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