diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-01-21 15:26:20 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-01-21 15:26:20 +0000 |
commit | c91b8a1b3df6959ab020e7b534c906ba380709f1 (patch) | |
tree | adb9dd7116783623f4e492b193791db7e1044652 | |
parent | 3cefccb6f91f6b2ab127a0ee32be86cc52809dc2 (diff) | |
download | ruby-c91b8a1b3df6959ab020e7b534c906ba380709f1.tar.gz |
parse.y: expand tokp macro
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62003 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | parse.y | 64 |
1 files changed, 31 insertions, 33 deletions
@@ -177,10 +177,10 @@ typedef struct rb_strterm_struct rb_strterm_t; /* Structure of Lexer Buffer: - p->lex.pbeg tokp p->lex.pcur p->lex.pend - | | | | - |-----------+--------------+------------| - |<------------>| + lex.pbeg lex.ptok lex.pcur lex.pend + | | | | + |------------+------------+------------| + |<---------->| token */ struct parser_params { @@ -298,9 +298,8 @@ static int parser_yyerror(struct parser_params*, const YYLTYPE *yylloc, const ch #else #define compile_for_eval (p->base_block != 0 && !p->in_main) #endif -#define tokp lex.ptok -#define token_column ((int)(p->tokp - p->lex.pbeg)) +#define token_column ((int)(p->lex.ptok - p->lex.pbeg)) #define CALL_Q_P(q) ((q) == TOKEN2VAL(tANDDOT)) #define NODE_CALL_Q(q) (CALL_Q_P(q) ? NODE_QCALL : NODE_CALL) @@ -4400,7 +4399,7 @@ ripper_yylval_id(struct parser_params *p, ID x) #endif #ifndef RIPPER -#define literal_flush(ptr) (p->tokp = (ptr)) +#define literal_flush(ptr) (p->lex.ptok = (ptr)) #define dispatch_scan_event(t) ((void)0) #define dispatch_delayed_token(t) ((void)0) #define has_delayed_token() (0) @@ -4419,15 +4418,14 @@ intern_sym(const char *name) static int ripper_has_scan_event(struct parser_params *p) { - - if (p->lex.pcur < p->tokp) rb_raise(rb_eRuntimeError, "p->lex.pcur < tokp"); - return p->lex.pcur > p->tokp; + if (p->lex.pcur < p->lex.ptok) rb_raise(rb_eRuntimeError, "lex.pcur < lex.ptok"); + return p->lex.pcur > p->lex.ptok; } static VALUE ripper_scan_event_val(struct parser_params *p, int t) { - VALUE str = STR_NEW(p->tokp, p->lex.pcur - p->tokp); + VALUE str = STR_NEW(p->lex.ptok, p->lex.pcur - p->lex.ptok); VALUE rval = ripper_dispatch1(p, ripper_token2eventid(t), str); token_flush(p); return rval; @@ -4445,14 +4443,14 @@ static void ripper_dispatch_delayed_token(struct parser_params *p, int t) { int saved_line = p->ruby_sourceline; - const char *saved_tokp = p->tokp; + const char *saved_tokp = p->lex.ptok; p->ruby_sourceline = p->delayed_line; - p->tokp = p->lex.pbeg + p->delayed_col; + p->lex.ptok = p->lex.pbeg + p->delayed_col; add_mark_object(p, yylval_rval = ripper_dispatch1(p, ripper_token2eventid(t), p->delayed)); p->delayed = Qnil; p->ruby_sourceline = saved_line; - p->tokp = saved_tokp; + p->lex.ptok = saved_tokp; } #define dispatch_delayed_token(t) ripper_dispatch_delayed_token(p, t) #define has_delayed_token() (!NIL_P(p->delayed)) @@ -5062,7 +5060,7 @@ parser_add_delayed_token(struct parser_params *p, const char *tok, const char *e p->delayed_col = (int)(tok - p->lex.pbeg); } rb_str_buf_cat(p->delayed, tok, end - tok); - p->tokp = end; + p->lex.ptok = end; } } #define add_delayed_token(tok, end) parser_add_delayed_token(p, (tok), (end)) @@ -5086,7 +5084,7 @@ parser_nextline(struct parser_params *p) } p->cr_seen = FALSE; } - add_delayed_token(p->tokp, p->lex.pend); + add_delayed_token(p->lex.ptok, p->lex.pend); if (p->heredoc_end > 0) { p->ruby_sourceline = p->heredoc_end; p->heredoc_end = 0; @@ -5194,7 +5192,7 @@ parser_tok_hex(struct parser_params *p, size_t *numlen) c = scan_hex(p->lex.pcur, 2, numlen); if (!*numlen) { - p->tokp = p->lex.pcur; + p->lex.ptok = p->lex.pcur; yyerror0("invalid hex escape"); return 0; } @@ -5645,7 +5643,7 @@ parser_tokadd_string(struct parser_params *p, if ((c = tokadd_escape(&enc)) < 0) return -1; if (enc && enc != *encp) { - mixed_escape(p->tokp+2, enc, *encp); + mixed_escape(p->lex.ptok+2, enc, *encp); } continue; } @@ -5707,12 +5705,12 @@ token_flush_string_content(struct parser_params *p, rb_encoding *enc) if (!ripper_is_node_yylval(content)) content = ripper_new_yylval(p, 0, 0, content); if (has_delayed_token()) { - ptrdiff_t len = p->lex.pcur - p->tokp; + ptrdiff_t len = p->lex.pcur - p->lex.ptok; if (len > 0) { - rb_enc_str_buf_cat(p->delayed, p->tokp, len, enc); + rb_enc_str_buf_cat(p->delayed, p->lex.ptok, len, enc); } dispatch_delayed_token(tSTRING_CONTENT); - p->tokp = p->lex.pcur; + p->lex.ptok = p->lex.pcur; RNODE(content)->nd_rval = yylval.val; } dispatch_scan_event(tSTRING_CONTENT); @@ -5841,14 +5839,14 @@ parser_parse_string(struct parser_params *p, rb_strterm_literal_t *quote) if (func & STR_FUNC_QWORDS) { quote->u1.func |= STR_FUNC_TERM; pushback(c); /* dispatch the term at tSTRING_END */ - add_delayed_token(p->tokp, p->lex.pcur); + add_delayed_token(p->lex.ptok, p->lex.pcur); return ' '; } return parser_string_term(p, func); } if (space) { pushback(c); - add_delayed_token(p->tokp, p->lex.pcur); + add_delayed_token(p->lex.ptok, p->lex.pcur); return ' '; } newtok(); @@ -6176,7 +6174,7 @@ ripper_dispatch_heredoc_end(struct parser_params *p) VALUE str; if (has_delayed_token()) dispatch_delayed_token(tSTRING_CONTENT); - str = STR_NEW(p->tokp, p->lex.pend - p->tokp); + str = STR_NEW(p->lex.ptok, p->lex.pend - p->lex.ptok); ripper_dispatch1(p, ripper_token2eventid(tHEREDOC_END), str); lex_goto_eol(p); token_flush(p); @@ -6212,17 +6210,17 @@ parser_here_document(struct parser_params *p, rb_strterm_heredoc_t *here) if (str) { rb_str_append(p->delayed, str); } - else if ((len = p->lex.pcur - p->tokp) > 0) { + else if ((len = p->lex.pcur - p->lex.ptok) > 0) { if (!(func & STR_FUNC_REGEXP) && rb_enc_asciicompat(enc)) { int cr = ENC_CODERANGE_UNKNOWN; - rb_str_coderange_scan_restartable(p->tokp, p->lex.pcur, enc, &cr); + rb_str_coderange_scan_restartable(p->lex.ptok, p->lex.pcur, enc, &cr); if (cr != ENC_CODERANGE_7BIT && p->enc == rb_usascii_encoding() && enc != rb_utf8_encoding()) { enc = rb_ascii8bit_encoding(); } } - rb_enc_str_buf_cat(p->delayed, p->tokp, len, enc); + rb_enc_str_buf_cat(p->delayed, p->lex.ptok, len, enc); } dispatch_delayed_token(tSTRING_CONTENT); } @@ -7570,11 +7568,11 @@ parser_yylex(struct parser_params *p) p->lex.pbeg = RSTRING_PTR(p->lex.lastline); p->lex.pend = p->lex.pcur = p->lex.pbeg + RSTRING_LEN(p->lex.lastline); pushback(1); /* always pushback */ - p->tokp = p->lex.pcur; + p->lex.ptok = p->lex.pcur; #else lex_goto_eol(p); if (c != -1) { - p->tokp = p->lex.pcur; + p->lex.ptok = p->lex.pcur; } #endif goto normal_newline; @@ -8934,16 +8932,16 @@ void rb_parser_set_location_of_none(struct parser_params *p, YYLTYPE *yylloc) { yylloc->beg_pos.lineno = p->ruby_sourceline; - yylloc->beg_pos.column = (int)(p->tokp - p->lex.pbeg); + yylloc->beg_pos.column = (int)(p->lex.ptok - p->lex.pbeg); yylloc->end_pos.lineno = p->ruby_sourceline; - yylloc->end_pos.column = (int)(p->tokp - p->lex.pbeg); + yylloc->end_pos.column = (int)(p->lex.ptok - p->lex.pbeg); } void rb_parser_set_location(struct parser_params *p, YYLTYPE *yylloc) { yylloc->beg_pos.lineno = p->ruby_sourceline; - yylloc->beg_pos.column = (int)(p->tokp - p->lex.pbeg); + yylloc->beg_pos.column = (int)(p->lex.ptok - p->lex.pbeg); yylloc->end_pos.lineno = p->ruby_sourceline; yylloc->end_pos.column = (int)(p->lex.pcur - p->lex.pbeg); } @@ -11233,7 +11231,7 @@ ripper_column(VALUE self) rb_raise(rb_eArgError, "method called for uninitialized object"); } if (NIL_P(p->parsing_thread)) return Qnil; - col = p->tokp - p->lex.pbeg; + col = p->lex.ptok - p->lex.pbeg; return LONG2NUM(col); } |