| Index: tools/lexer_generator/code_generator.jinja
|
| diff --git a/tools/lexer_generator/code_generator.jinja b/tools/lexer_generator/code_generator.jinja
|
| index a80fb0d15c0fd4e162a449dbec2898e1b475ee01..68cdf8c42cb35740599d192210fcaae2c29eef34 100644
|
| --- a/tools/lexer_generator/code_generator.jinja
|
| +++ b/tools/lexer_generator/code_generator.jinja
|
| @@ -45,26 +45,28 @@
|
| {%- if type == 'code' %}
|
| {{value}}
|
| {% elif type == 'terminate' %}
|
| - PUSH_EOS();
|
| + DO_EOS();
|
| {% elif type == 'terminate_illegal' %}
|
| - start_ = marker_; BACKWARD(1); PUSH_TOKEN(Token::ILLEGAL);
|
| + start_ = marker_;
|
| + BACKWARD(1);
|
| + DO_TOKEN(Token::ILLEGAL);
|
| {% elif type == 'skip' %}
|
| SKIP();
|
| {% elif type == 'skip_and_terminate' %}
|
| SKIP();
|
| --start_;
|
| {{dispatch_action('terminate', None)}}
|
| - {% elif type == 'push_line_terminator' %}
|
| - PUSH_LINE_TERMINATOR();
|
| - {% elif type == 'push_token' %}
|
| - PUSH_TOKEN(Token::{{value}})
|
| - {% elif type == 'push_token_and_go_forward' %}
|
| - PUSH_TOKEN_AND_GO_FORWARD(Token::{{value}})
|
| - {% elif type == 'push_harmony_token' %}
|
| + {% elif type == 'line_terminator' %}
|
| + DO_LINE_TERMINATOR();
|
| + {% elif type == 'token' %}
|
| + DO_TOKEN(Token::{{value}})
|
| + {% elif type == 'do_token_and_go_forward' %}
|
| + DO_TOKEN_AND_GO_FORWARD(Token::{{value}})
|
| + {% elif type == 'harmony_token' %}
|
| if (harmony_{{value[0]}}_) {
|
| - PUSH_TOKEN(Token::{{value[1][0]}});
|
| + DO_TOKEN(Token::{{value[1][0]}});
|
| } else {
|
| - PUSH_TOKEN(Token::{{value[1][1]}});
|
| + DO_TOKEN(Token::{{value[1][1]}});
|
| }
|
| {% elif type == 'set_marker' %}
|
| marker_ = cursor_ - {{value}};
|
| @@ -189,32 +191,32 @@
|
|
|
| {%- endmacro %}
|
|
|
| -#define PREPARE_PUSH_TOKEN() { \
|
| +#define PREPARE_TOKEN() { \
|
| next_.beg_pos = start_ - buffer_; \
|
| next_.end_pos = cursor_ - buffer_; \
|
| start_ = cursor_; \
|
| }
|
|
|
| -#define PUSH_TOKEN(T) { \
|
| - PREPARE_PUSH_TOKEN(); \
|
| +#define DO_TOKEN(T) { \
|
| + PREPARE_TOKEN(); \
|
| next_.token = T; \
|
| return; \
|
| }
|
|
|
| -#define PUSH_TOKEN_AND_GO_FORWARD(T) {\
|
| - PREPARE_PUSH_TOKEN(); \
|
| +#define DO_TOKEN_AND_GO_FORWARD(T) { \
|
| + PREPARE_TOKEN(); \
|
| FORWARD(); \
|
| next_.token = T; \
|
| return; \
|
| }
|
|
|
| -#define PUSH_EOS() { \
|
| +#define DO_EOS() { \
|
| cursor_ -= 1; \
|
| - PUSH_TOKEN(Token::EOS); \
|
| + DO_TOKEN(Token::EOS); \
|
| }
|
|
|
| -#define PUSH_LINE_TERMINATOR(s) { \
|
| - start_ = cursor_; \
|
| +#define DO_LINE_TERMINATOR(s) { \
|
| + start_ = cursor_; \
|
| has_line_terminator_before_next_ = true; \
|
| }
|
|
|
|
|