Line data Source code
1 : #ifndef OBSTACLE_H
2 : #define OBSTACLE_H
3 :
4 : enum reason {
5 : PANIC,
6 : PROG_START,
7 : PROG_OPENBR,
8 : FUNC_OPENBR,
9 : FUNC_CLOSEBR,
10 : PROG_CLOSEBR,
11 : TYPE_UNKNOWN,
12 : EXPR_BAD_TYPE,
13 : EXPR_CLOSEBR,
14 : WRONG_SCOPE,
15 : BAD_EXPR,
16 : BAD_INT,
17 : BAD_REAL,
18 : BAD_BOOL,
19 : BAD_IF,
20 : BAD_LABEL,
21 : BAD_IDENT,
22 : BAD_STRING,
23 : BAD_OPERATOR,
24 : BAD_STRUCT,
25 : OP_CLOSEBR,
26 : BAD_PARAMS_OPBR,
27 : BAD_PARAMS_CLBR,
28 : SEMICOLON,
29 : IDENT_NOT_DEF,
30 : IDENT_DUP,
31 : BREAK_OUTSIDE_CYCLE,
32 : CONTINUE_OUTSIDE_CYCLE,
33 : STRUCT_UNDEF,
34 : LABEL_OR_IDENT,
35 : TOO_MUCH_PARAMS,
36 : NOT_CALLABLE,
37 : CALLABLE,
38 : LACK_PARAMS,
39 : PROCEDURE,
40 : BAD_PARAMS_COUNT,
41 : NO_RETURN,
42 : NO_TYPE,
43 : RETURN_TYPE_MISMATCH,
44 : MODIF_WITHOUT_TYPE,
45 : BAD_TYPE,
46 : NEED_THREAD_NUMBER,
47 : NESTED_THREADS,
48 : PRIVATE_VAR_IN_THREAD
49 : };
50 :
51 : class Obstacle {
52 : public:
53 : reason r;
54 406 : explicit Obstacle(reason x): r(x) {};
55 :
56 : void describe(void) const;
57 : static void expected(const char * msg);
58 : };
59 :
60 : #endif
|