1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

parse.y: simplify parse_ident

* parse.y (parse_ident): simplified selecting identifier types by
  the suffix.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59458 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2017-08-01 08:32:18 +00:00
parent fb29a4dcda
commit 4eafec5ea6

29
parse.y
View file

@ -7793,7 +7793,7 @@ parse_atmark(struct parser_params *parser, const enum lex_state_e last_state)
static enum yytokentype
parse_ident(struct parser_params *parser, int c, int cmd_state)
{
enum yytokentype result = 0;
enum yytokentype result;
int mb = ENC_CODERANGE_7BIT;
const enum lex_state_e last_state = lex_state;
ID ident;
@ -7804,36 +7804,19 @@ parse_ident(struct parser_params *parser, int c, int cmd_state)
c = nextc();
} while (parser_is_identchar());
if ((c == '!' || c == '?') && !peek('=')) {
tokadd(c);
}
else {
pushback(c);
}
tokfix();
if (toklast() == '!' || toklast() == '?') {
result = tFID;
tokadd(c);
}
else {
if (IS_lex_state(EXPR_FNAME)) {
register int c = nextc();
if (c == '=' && !peek('~') && !peek('>') &&
(!peek('=') || (peek_n('>', 1)))) {
else if (c == '=' && IS_lex_state(EXPR_FNAME) &&
(!peek('~') && !peek('>') && (!peek('=') || (peek_n('>', 1))))) {
result = tIDENTIFIER;
tokadd(c);
tokfix();
}
else {
result = ISUPPER(tok()[0]) ? tCONSTANT : tIDENTIFIER;
pushback(c);
}
}
if (result == 0 && ISUPPER(tok()[0])) {
result = tCONSTANT;
}
else {
result = tIDENTIFIER;
}
}
tokfix();
if (IS_LABEL_POSSIBLE()) {
if (IS_LABEL_SUFFIX(0)) {