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 addPosition(
00057             uint32_t position, uint32_t offset, uint32_t line, std::string path);
00058 
00059         virtual void handleError(std::string);
00060         virtual void handleWarning(std::string);
00061 
00062         virtual void typeBool(PREFIX);
00063         virtual void typeInt(PREFIX);
00064         virtual void typeBoundedInt(PREFIX);
00065         virtual void typeChannel(PREFIX);
00066         virtual void typeClock();
00067         virtual void typeVoid();
00068         virtual void typeScalar(PREFIX);
00069         virtual void typeName(PREFIX, const char *type);
00070         virtual void declTypeDef(const char* name); 
00071         virtual void declVar(const char *id, bool init);
00072         virtual void declInitialiserList(uint32_t num);
00073         virtual void declFieldInit(const char* name);
00074         virtual void declParameter(const char* name, bool);
00075         virtual void declFuncBegin(const char* name);
00076         virtual void declFuncEnd();
00077         virtual void blockBegin();
00078         virtual void blockEnd();
00079         virtual void emptyStatement();
00080         virtual void forBegin();
00081         virtual void forEnd();
00082         virtual void iterationBegin(const char *name); // 1 id, 1 type
00083         virtual void iterationEnd(const char *name); // 1 stat
00084         virtual void whileBegin();
00085         virtual void whileEnd();
00086         virtual void doWhileBegin();
00087         virtual void doWhileEnd();
00088         virtual void ifBegin();
00089         virtual void ifElse();
00090         virtual void ifEnd(bool);
00091         virtual void breakStatement();
00092         virtual void continueStatement();
00093         virtual void exprStatement();
00094         virtual void returnStatement(bool hasValue);
00095         virtual void procBegin(const char* name);
00096         virtual void procState(const char *id, bool hasInvariant);
00097         virtual void procStateUrgent(const char *id);
00098         virtual void procStateCommit(const char *id);
00099         virtual void procStateWinning(const char *id);
00100         virtual void procStateLosing(const char *id);
00101         virtual void procStateInit(const char *id);
00102         virtual void procSelect(const char *id);
00103         virtual void procGuard();
00104         virtual void procSync(Constants::synchronisation_t type);
00105         virtual void procUpdate();
00106         virtual void procEdgeBegin(const char *source, const char *target, const bool control);
00107         virtual void procEdgeEnd(const char *source, const char *target);
00108         virtual void procEnd();
00109         virtual void exprId(const char *id);
00110         virtual void exprNat(int32_t n);
00111         virtual void exprTrue();
00112         virtual void exprFalse();
00113         virtual void exprCallBegin();
00114         virtual void exprCallEnd(uint32_t n);
00115         virtual void exprArray();
00116         virtual void exprPostIncrement();
00117         virtual void exprPreIncrement();
00118         virtual void exprPostDecrement();
00119         virtual void exprPreDecrement();
00120         virtual void exprAssignment(Constants::kind_t op);
00121         virtual void exprUnary(Constants::kind_t op);
00122         virtual void exprBinary(Constants::kind_t op);
00123         virtual void exprInlineIf();
00124         virtual void exprComma();
00125         virtual void exprDot(const char *);
00126         virtual void exprDeadlock();
00127         virtual void exprForAllBegin(const char *name);
00128         virtual void exprForAllEnd(const char *name);
00129         virtual void exprExistsBegin(const char *name);
00130         virtual void exprExistsEnd(const char *name);
00131         virtual void beforeUpdate();
00132         virtual void afterUpdate();
00133         virtual void instantiationBegin(const char *, size_t, const char *);
00134         virtual void instantiationEnd(
00135             const char *, size_t, const char *, size_t);
00136         virtual void process(const char *id);
00137         virtual void done();
00138     };
00139 }
00140 
00141 #endif

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