~eda-qa/leaflang/cpp

« back to all changes in this revision

Viewing changes to include/lang/statement.hpp

  • Committer: edA-qa mort-ora-y
  • Date: 2017-08-19 06:03:00 UTC
  • mfrom: (100.1.22 misc)
  • Revision ID: eda-qa@disemia.com-20170819060300-209dwd5884343mi0
merging miscelaneous changes, mainly platform improvements

Show diffs side-by-side

added added

removed removed

Lines of Context:
13
13
                c->pre_copy( *this ); \
14
14
                return c; \
15
15
        } \
16
 
        virtual shared_ptr<statement> pre_clone() const { \
 
16
        shared_ptr<statement> pre_clone() const override { \
17
17
                return pre_clone_derived(); \
18
18
        }
19
19
 
20
20
#define STATEMENT_SERIAL() \
21
 
        void write( serial_out & so ) const { \
 
21
        void write( serial_out & so ) const override { \
22
22
                write_impl(so); \
23
23
        } \
24
 
        void read( serial_in & si ) { \
 
24
        void read( serial_in & si ) override { \
25
25
                read_impl(si); \
26
26
        }
27
27
        
33
33
        STATEMENT_FORM(assign) \
34
34
        STATEMENT_FORM(defer) \
35
35
        STATEMENT_FORM(do) \
 
36
        STATEMENT_FORM(error) \
36
37
        STATEMENT_FORM(expression) \
37
38
        STATEMENT_FORM(fail) \
38
39
        STATEMENT_FORM(for) \
62
63
        flow_loop_break = 1<<4,
63
64
        flow_loop_next = 1<<5,
64
65
        flow_resume = 1<<6,
 
66
        flow_skippable = 1<<7,
65
67
};
66
68
 
67
69
char const * name_of( statement_form_t f );
76
78
        
77
79
        virtual statement_form_t statement_form() const = 0;
78
80
        
79
 
        virtual bool is_declarative() const 
80
 
        { return false; }
 
81
        virtual bool is_declarative() const { 
 
82
                return false; 
 
83
        }
81
84
        
82
85
        /**
83
86
                A terminator ends a scope block. No code can exist past a terminator.
85
88
        bool is_terminator() const { 
86
89
                return (get_flow() & ~flow_sequence); 
87
90
        }
 
91
        bool is_skippable() const {
 
92
                return (get_flow() & flow_skippable);
 
93
        }
88
94
        virtual int get_flow() const { 
89
95
                return flow_sequence; 
90
96
        }
134
140
        void read_impl( serial_in & so );
135
141
};
136
142
 
137
 
struct error_block {
138
 
        //on error handling
139
 
        fail_level on_match;
140
 
        shared_ptr<statement_block> on_error; //null if none set (TODO: rename block)
141
 
        shared_ptr<declaration> error_info; //null if not an error (as in `defer`)
142
 
};
143
 
 
144
 
struct error_statement : public statement {
145
 
        error_block error;
146
 
};
147
 
 
148
 
 
149
143
} //eon leaf
150
144
 
151
145
#endif
 
 
b'\\ No newline at end of file'