summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul "LeoNerd" Evans <leonerd@leonerd.org.uk>2022-06-27 21:21:22 +0100
committerPaul Evans <leonerd@leonerd.org.uk>2022-06-28 10:52:33 +0100
commitb179236d59d4d0be43d9307d30b9e97609c9f96d (patch)
treea0f5a47df38fde36becb67dbc8aa0985792de804
parent1e45e087ebebb524df3c2247e485d7d6aebcd6f0 (diff)
downloadperl-b179236d59d4d0be43d9307d30b9e97609c9f96d.tar.gz
Rename some grammar rules/tokens to avoid 'method'
These token names are shared between perl.y and toke.c, to communicate on the nature of various tokens parsed from perl source. The name FUNCMETH used to refer to a method call with possible arguments ->NAME(...) whereas METHOD referred to one without even the parens ->NAME These names are a little confusing, and most importantly, METHOD was in the way of my adding a new `method` keyword as part of the upcoming work on 'use feature "class"'. As such, this simple rename moves them out of the way and makes them slightly more consistent and easier to read/remember, by calling them METHCALL and METHCALL0. This commit also renames the `method` grammar rule to `methodname`, for similar reasons. As all of these names are entirely internal to the tokenizer/parser, there is not expected to be any upstream CPAN incompatibility, or other issues, caused by these renames.
-rw-r--r--perly.act2
-rw-r--r--perly.h10
-rw-r--r--perly.tab44
-rw-r--r--perly.y22
-rw-r--r--toke.c20
5 files changed, 49 insertions, 49 deletions
diff --git a/perly.act b/perly.act
index 6e7c83652e..b1ee4fc3c2 100644
--- a/perly.act
+++ b/perly.act
@@ -2083,6 +2083,6 @@ case 2:
/* Generated from:
- * f6f4ca1df1f28e285f644b160b176887b111ca03c1fd20e3b4868c27a2c93623 perly.y
+ * a24382f2699548896a26e257b6f72e255658ef63e4dd5820a5cbe07d690b6f05 perly.y
* acf1cbfd2545faeaaa58b1cf0cf9d7f98b5be0752eb7a54528ef904a9e2e1ca7 regen_perly.pl
* ex: set ro: */
diff --git a/perly.h b/perly.h
index 590f52a0a1..d2df7583ce 100644
--- a/perly.h
+++ b/perly.h
@@ -80,8 +80,8 @@ extern int yydebug;
PERLY_SNAIL = 279,
PERLY_STAR = 280,
BAREWORD = 281,
- METHOD = 282,
- FUNCMETH = 283,
+ METHCALL0 = 282,
+ METHCALL = 283,
THING = 284,
PMFUNC = 285,
PRIVATEREF = 286,
@@ -179,10 +179,10 @@ S_is_opval_token(int type) {
case BAREWORD:
case FUNC0OP:
case FUNC0SUB:
- case FUNCMETH:
case LABEL:
case LSTOPSUB:
- case METHOD:
+ case METHCALL:
+ case METHCALL0:
case PLUGEXPR:
case PLUGSTMT:
case PMFUNC:
@@ -220,6 +220,6 @@ int yyparse (void);
/* Generated from:
- * f6f4ca1df1f28e285f644b160b176887b111ca03c1fd20e3b4868c27a2c93623 perly.y
+ * a24382f2699548896a26e257b6f72e255658ef63e4dd5820a5cbe07d690b6f05 perly.y
* acf1cbfd2545faeaaa58b1cf0cf9d7f98b5be0752eb7a54528ef904a9e2e1ca7 regen_perly.pl
* ex: set ro: */
diff --git a/perly.tab b/perly.tab
index ad3df3c62d..32ea2e885b 100644
--- a/perly.tab
+++ b/perly.tab
@@ -117,14 +117,14 @@ static const char *const yytname[] =
"PERLY_BRACKET_OPEN", "PERLY_BRACKET_CLOSE", "PERLY_COMMA",
"PERLY_DOLLAR", "PERLY_DOT", "PERLY_EQUAL_SIGN", "PERLY_MINUS",
"PERLY_PERCENT_SIGN", "PERLY_PLUS", "PERLY_SEMICOLON", "PERLY_SLASH",
- "PERLY_SNAIL", "PERLY_STAR", "BAREWORD", "METHOD", "FUNCMETH", "THING",
- "PMFUNC", "PRIVATEREF", "QWLIST", "FUNC0OP", "FUNC0SUB", "UNIOPSUB",
- "LSTOPSUB", "PLUGEXPR", "PLUGSTMT", "LABEL", "FORMAT", "SUB", "SIGSUB",
- "ANONSUB", "ANON_SIGSUB", "PACKAGE", "USE", "WHILE", "UNTIL", "IF",
- "UNLESS", "ELSE", "ELSIF", "CONTINUE", "FOR", "GIVEN", "WHEN", "DEFAULT",
- "TRY", "CATCH", "FINALLY", "LOOPEX", "DOTDOT", "YADAYADA", "FUNC0",
- "FUNC1", "FUNC", "UNIOP", "LSTOP", "MULOP", "ADDOP", "DOLSHARP", "DO",
- "HASHBRACK", "NOAMP", "LOCAL", "MY", "REQUIRE", "COLONATTR",
+ "PERLY_SNAIL", "PERLY_STAR", "BAREWORD", "METHCALL0", "METHCALL",
+ "THING", "PMFUNC", "PRIVATEREF", "QWLIST", "FUNC0OP", "FUNC0SUB",
+ "UNIOPSUB", "LSTOPSUB", "PLUGEXPR", "PLUGSTMT", "LABEL", "FORMAT", "SUB",
+ "SIGSUB", "ANONSUB", "ANON_SIGSUB", "PACKAGE", "USE", "WHILE", "UNTIL",
+ "IF", "UNLESS", "ELSE", "ELSIF", "CONTINUE", "FOR", "GIVEN", "WHEN",
+ "DEFAULT", "TRY", "CATCH", "FINALLY", "LOOPEX", "DOTDOT", "YADAYADA",
+ "FUNC0", "FUNC1", "FUNC", "UNIOP", "LSTOP", "MULOP", "ADDOP", "DOLSHARP",
+ "DO", "HASHBRACK", "NOAMP", "LOCAL", "MY", "REQUIRE", "COLONATTR",
"FORMLBRACK", "FORMRBRACK", "SUBLEXSTART", "SUBLEXEND", "DEFER",
"PREC_LOW", "OROP", "ANDOP", "NOTOP", "ASSIGNOP", "PERLY_QUESTION_MARK",
"PERLY_COLON", "OROR", "DORDOR", "ANDAND", "BITOROP", "BITANDOP",
@@ -143,12 +143,12 @@ static const char *const yytname[] =
"sigdefault", "sigscalarelem", "sigelem", "siglist", "optsiglist",
"optsubsignature", "subsignature", "subsigguts", "$@18", "optsubbody",
"subbody", "optsigsubbody", "sigsubbody", "expr", "listexpr", "listop",
- "@19", "method", "subscripted", "termbinop", "termrelop", "relopchain",
- "termeqop", "eqopchain", "termunop", "anonymous", "termdo", "term",
- "@20", "myattrterm", "myterm", "optlistexpr", "optexpr", "optrepl",
- "my_scalar", "list_of_scalars", "my_list_of_scalars", "my_var",
- "refgen_topic", "my_refgen", "amper", "scalar", "ary", "hsh", "arylen",
- "star", "sliceme", "kvslice", "gelem", "indirob", YY_NULLPTR
+ "@19", "methodname", "subscripted", "termbinop", "termrelop",
+ "relopchain", "termeqop", "eqopchain", "termunop", "anonymous", "termdo",
+ "term", "@20", "myattrterm", "myterm", "optlistexpr", "optexpr",
+ "optrepl", "my_scalar", "list_of_scalars", "my_list_of_scalars",
+ "my_var", "refgen_topic", "my_refgen", "amper", "scalar", "ary", "hsh",
+ "arylen", "star", "sliceme", "kvslice", "gelem", "indirob", YY_NULLPTR
};
#endif
@@ -1169,14 +1169,14 @@ static const toketypes yy_type_tab[] =
toketype_ival, toketype_ival, toketype_ival,
toketype_ival, toketype_ival, toketype_ival, toketype_ival,
toketype_ival, toketype_ival, toketype_ival, toketype_ival,
- toketype_ival, toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
+ toketype_ival, toketype_ival, toketype_opval, toketype_opval, toketype_opval,
toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
- toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_ival, toketype_ival,
+ toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_ival,
toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
- toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
+ toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
@@ -1195,15 +1195,15 @@ static const toketypes yy_type_tab[] =
toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_opval,
toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
- toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
+ toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
- toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
+ toketype_opval, toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
toketype_opval, toketype_opval, toketype_opval, toketype_opval,
- toketype_opval, toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
- toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval
+ toketype_opval, toketype_opval, toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
+ toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval
};
/* Generated from:
- * f6f4ca1df1f28e285f644b160b176887b111ca03c1fd20e3b4868c27a2c93623 perly.y
+ * a24382f2699548896a26e257b6f72e255658ef63e4dd5820a5cbe07d690b6f05 perly.y
* acf1cbfd2545faeaaa58b1cf0cf9d7f98b5be0752eb7a54528ef904a9e2e1ca7 regen_perly.pl
* ex: set ro: */
diff --git a/perly.y b/perly.y
index db1daf7747..5b6ff930fa 100644
--- a/perly.y
+++ b/perly.y
@@ -62,7 +62,7 @@
%token <ival> PERLY_SNAIL
%token <ival> PERLY_STAR
-%token <opval> BAREWORD METHOD FUNCMETH THING PMFUNC PRIVATEREF QWLIST
+%token <opval> BAREWORD METHCALL0 METHCALL THING PMFUNC PRIVATEREF QWLIST
%token <opval> FUNC0OP FUNC0SUB UNIOPSUB LSTOPSUB
%token <opval> PLUGEXPR PLUGSTMT
%token <opval> LABEL
@@ -91,7 +91,7 @@
%type <opval> empty
%type <opval> sliceme kvslice gelem
%type <opval> listexpr nexpr texpr iexpr mexpr mnexpr
-%type <opval> optlistexpr optexpr optrepl indirob listop method
+%type <opval> optlistexpr optexpr optrepl indirob listop methodname
%type <opval> formname subname proto cont my_scalar my_var
%type <opval> list_of_scalars my_list_of_scalars refgen_topic formblock
%type <opval> subattrlist myattrlist myattrterm myterm
@@ -980,28 +980,28 @@ listop : LSTOP indirob listexpr /* map {...} @args or print $fh @args */
{ $$ = op_convert_list($FUNC, OPf_STACKED,
op_prepend_elem(OP_LIST, newGVREF($FUNC,$indirob), $expr) );
}
- | term ARROW method PERLY_PAREN_OPEN optexpr PERLY_PAREN_CLOSE /* $foo->bar(list) */
+ | term ARROW methodname PERLY_PAREN_OPEN optexpr PERLY_PAREN_CLOSE /* $foo->bar(list) */
{ $$ = op_convert_list(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST,
op_prepend_elem(OP_LIST, scalar($term), $optexpr),
- newMETHOP(OP_METHOD, 0, $method)));
+ newMETHOP(OP_METHOD, 0, $methodname)));
}
- | term ARROW method /* $foo->bar */
+ | term ARROW methodname /* $foo->bar */
{ $$ = op_convert_list(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST, scalar($term),
- newMETHOP(OP_METHOD, 0, $method)));
+ newMETHOP(OP_METHOD, 0, $methodname)));
}
- | METHOD indirob optlistexpr /* new Class @args */
+ | METHCALL0 indirob optlistexpr /* new Class @args */
{ $$ = op_convert_list(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST,
op_prepend_elem(OP_LIST, $indirob, $optlistexpr),
- newMETHOP(OP_METHOD, 0, $METHOD)));
+ newMETHOP(OP_METHOD, 0, $METHCALL0)));
}
- | FUNCMETH indirob PERLY_PAREN_OPEN optexpr PERLY_PAREN_CLOSE /* method $object (@args) */
+ | METHCALL indirob PERLY_PAREN_OPEN optexpr PERLY_PAREN_CLOSE /* method $object (@args) */
{ $$ = op_convert_list(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST,
op_prepend_elem(OP_LIST, $indirob, $optexpr),
- newMETHOP(OP_METHOD, 0, $FUNCMETH)));
+ newMETHOP(OP_METHOD, 0, $METHCALL)));
}
| LSTOP optlistexpr /* print @args */
{ $$ = op_convert_list($LSTOP, 0, $optlistexpr); }
@@ -1020,7 +1020,7 @@ listop : LSTOP indirob listexpr /* map {...} @args or print $fh @args */
;
/* Names of methods. May use $object->$methodname */
-method : METHOD
+methodname: METHCALL0
| scalar
;
diff --git a/toke.c b/toke.c
index 7eec8f9ada..c3be667acb 100644
--- a/toke.c
+++ b/toke.c
@@ -440,7 +440,6 @@ static struct debug_tokens {
{ FUNC0OP, TOKENTYPE_OPVAL, "FUNC0OP" },
{ FUNC0SUB, TOKENTYPE_OPVAL, "FUNC0SUB" },
{ FUNC1, TOKENTYPE_OPNUM, "FUNC1" },
- { FUNCMETH, TOKENTYPE_OPVAL, "FUNCMETH" },
{ GIVEN, TOKENTYPE_IVAL, "GIVEN" },
{ HASHBRACK, TOKENTYPE_NONE, "HASHBRACK" },
{ IF, TOKENTYPE_IVAL, "IF" },
@@ -450,7 +449,8 @@ static struct debug_tokens {
{ LSTOP, TOKENTYPE_OPNUM, "LSTOP" },
{ LSTOPSUB, TOKENTYPE_OPVAL, "LSTOPSUB" },
{ MATCHOP, TOKENTYPE_OPNUM, "MATCHOP" },
- { METHOD, TOKENTYPE_OPVAL, "METHOD" },
+ { METHCALL, TOKENTYPE_OPVAL, "METHCALL" },
+ { METHCALL0, TOKENTYPE_OPVAL, "METHCALL0" },
{ MULOP, TOKENTYPE_OPNUM, "MULOP" },
{ MY, TOKENTYPE_IVAL, "MY" },
{ NCEQOP, TOKENTYPE_OPNUM, "NCEQOP" },
@@ -2194,7 +2194,7 @@ S_newSV_maybe_utf8(pTHX_ const char *const start, STRLEN len)
* Arguments:
* char *start : buffer position (must be within PL_linestr)
* int token : PL_next* will be this type of bare word
- * (e.g., METHOD,BAREWORD)
+ * (e.g., METHCALL0,BAREWORD)
* int check_keyword : if true, Perl checks to make sure the word isn't
* a keyword (do this if the word is a label, e.g. goto FOO)
* int allow_pack : if true, : characters will also be allowed (require,
@@ -2225,7 +2225,7 @@ S_force_word(pTHX_ char *start, int token, int check_keyword, int allow_pack)
if (keyword(s2, len2, 0))
return start;
}
- if (token == METHOD) {
+ if (token == METHCALL0) {
s = skipspace(s);
if (*s == '(')
PL_expect = XTERM;
@@ -4564,7 +4564,7 @@ S_intuit_more(pTHX_ char *s, char *e)
* Does all the checking to disambiguate
* foo bar
* between foo(bar) and bar->foo. Returns 0 if not a method, otherwise
- * FUNCMETH (bar->foo(args)) or METHOD (bar->foo args).
+ * METHCALL (bar->foo(args)) or METHCALL0 (bar->foo args).
*
* First argument is the stuff after the first token, e.g. "bar".
*
@@ -4620,7 +4620,7 @@ S_intuit_method(pTHX_ char *start, SV *ioname, CV *cv)
s = skipspace(s);
PL_bufptr = SvPVX(PL_linestr) + start_off;
PL_expect = XREF;
- return *s == '(' ? FUNCMETH : METHOD;
+ return *s == '(' ? METHCALL : METHCALL0;
}
s = scan_word(s, tmpbuf, sizeof tmpbuf, TRUE, &len);
@@ -4653,7 +4653,7 @@ S_intuit_method(pTHX_ char *start, SV *ioname, CV *cv)
PL_expect = XTERM;
force_next(BAREWORD);
PL_bufptr = s;
- return *s == '(' ? FUNCMETH : METHOD;
+ return *s == '(' ? METHCALL : METHCALL0;
}
}
return 0;
@@ -5742,7 +5742,7 @@ yyl_hyphen(pTHX_ char *s)
TOKEN(ARROW);
}
if (isIDFIRST_lazy_if_safe(s, PL_bufend, UTF)) {
- s = force_word(s,METHOD,FALSE,TRUE);
+ s = force_word(s,METHCALL0,FALSE,TRUE);
TOKEN(ARROW);
}
else if (*s == '$')
@@ -7699,7 +7699,7 @@ yyl_just_a_word(pTHX_ char *s, STRLEN len, I32 orig_keyword, struct code c)
PL_lex_fakeeof = LEX_FAKEEOF_LOWLOGIC;
PL_expect = XBLOCKTERM;
PL_bufptr = s;
- return REPORT(METHOD);
+ return REPORT(METHCALL0);
}
/* If followed by a bareword, see if it looks like indir obj. */
@@ -7720,7 +7720,7 @@ yyl_just_a_word(pTHX_ char *s, STRLEN len, I32 orig_keyword, struct code c)
else SvUTF8_off(c.sv);
}
op_free(c.rv2cv_op);
- if (key == METHOD && !PL_lex_allbrackets
+ if (key == METHCALL0 && !PL_lex_allbrackets
&& PL_lex_fakeeof > LEX_FAKEEOF_LOWLOGIC)
{
PL_lex_fakeeof = LEX_FAKEEOF_LOWLOGIC;