prettyprinter.h

Go to the documentation of this file.
00001 // -*- mode: C++; c-file-style: "stroustrup"; c-basic-offset: 4; indent-tabs-mode: nil; -*-
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::string> type;
00039         std::stack<std::string> array;
00040         std::stack<std::ostream *> o;
00041         std::set<std::string> types;
00042         std::string urgent;
00043         std::string committed;
00044         std::string param;
00045         std::string templateset;
00046         int select, guard, sync, update;
00047         
00048         bool first;
00049         uint32_t level;
00050         
00051         void indent();
00052         void indent(std::string &s);
00053 
00054     public:
00055         PrettyPrinter(std::ostream &stream);
00056 
00057         virtual void addPosition(
00058             uint32_t position, uint32_t offset, uint32_t line, std::string path);
00059 
00060         virtual void handleError(std::string);
00061         virtual void handleWarning(std::string);
00062 
00063         virtual bool isType(const char *);
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 *type);
00072         virtual void typePop();
00073         virtual void typeDuplicate();
00074         virtual void typeArrayOfSize(size_t n);
00075         virtual void typeArrayOfType(size_t n);
00076         virtual void declTypeDef(const char* name); 
00077         virtual void declVar(const char *id, bool init);
00078         virtual void declInitialiserList(uint32_t num);
00079         virtual void declFieldInit(const char* name);
00080         virtual void declParameter(const char* name, bool);
00081         virtual void declFuncBegin(const char* name);
00082         virtual void declFuncEnd();
00083         virtual void blockBegin();
00084         virtual void blockEnd();
00085         virtual void emptyStatement();
00086         virtual void forBegin();
00087         virtual void forEnd();
00088         virtual void iterationBegin(const char *name); // 1 id, 1 type
00089         virtual void iterationEnd(const char *name); // 1 stat
00090         virtual void whileBegin();
00091         virtual void whileEnd();
00092         virtual void doWhileBegin();
00093         virtual void doWhileEnd();
00094         virtual void ifBegin();
00095         virtual void ifElse();
00096         virtual void ifEnd(bool);
00097         virtual void breakStatement();
00098         virtual void continueStatement();
00099         virtual void exprStatement();
00100         virtual void returnStatement(bool hasValue);
00101         virtual void procBegin(const char* name);
00102         virtual void procState(const char *id, bool hasInvariant);
00103         virtual void procStateUrgent(const char *id);
00104         virtual void procStateCommit(const char *id);
00105         virtual void procStateInit(const char *id);
00106         virtual void procSelect(const char *id);
00107         virtual void procGuard();
00108         virtual void procSync(Constants::synchronisation_t type);
00109         virtual void procUpdate();
00110         virtual void procEdgeBegin(const char *source, const char *target, const bool control);
00111         virtual void procEdgeEnd(const char *source, const char *target);
00112         virtual void procEnd();
00113         virtual void exprId(const char *id);
00114         virtual void exprNat(int32_t n);
00115         virtual void exprTrue();
00116         virtual void exprFalse();
00117         virtual void exprCallBegin();
00118         virtual void exprCallEnd(uint32_t n);
00119         virtual void exprArray();
00120         virtual void exprPostIncrement();
00121         virtual void exprPreIncrement();
00122         virtual void exprPostDecrement();
00123         virtual void exprPreDecrement();
00124         virtual void exprAssignment(Constants::kind_t op);
00125         virtual void exprUnary(Constants::kind_t op);
00126         virtual void exprBinary(Constants::kind_t op);
00127         virtual void exprTernary(Constants::kind_t op);
00128         virtual void exprInlineIf();
00129         virtual void exprComma();
00130         virtual void exprDot(const char *);
00131         virtual void exprDeadlock();
00132         virtual void exprForAllBegin(const char *name);
00133         virtual void exprForAllEnd(const char *name);
00134         virtual void exprExistsBegin(const char *name);
00135         virtual void exprExistsEnd(const char *name);
00136         virtual void beforeUpdate();
00137         virtual void afterUpdate();
00138         virtual void instantiationBegin(const char *, size_t, const char *);
00139         virtual void instantiationEnd(
00140             const char *, size_t, const char *, size_t);
00141         virtual void process(const char *id);
00142         virtual void done();
00143     };
00144 }
00145 
00146 #endif

Generated on Thu Feb 22 14:46:52 2007 for libutap by  doxygen 1.4.7