00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
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);
00077 virtual void iterationEnd(const char *name);
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