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 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);
00083 virtual void iterationEnd(const char *name);
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