summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Cross/Makefile-cross-SH2
-rw-r--r--MANIFEST1
-rwxr-xr-xMakefile.SH4
-rw-r--r--Makefile.micro5
-rw-r--r--NetWare/Makefile1
-rwxr-xr-xPorting/makerel1
-rw-r--r--embed.fnc4
-rw-r--r--embed.h1
-rw-r--r--keywords.c3397
-rw-r--r--perl.h8
-rw-r--r--perl_keyword.pl5
-rw-r--r--proto.h10
-rw-r--r--toke.c3407
-rw-r--r--vms/descrip_mms.template2
-rw-r--r--win32/Makefile1
-rw-r--r--win32/Makefile.ce1
-rw-r--r--win32/makefile.mk1
17 files changed, 3436 insertions, 3415 deletions
diff --git a/Cross/Makefile-cross-SH b/Cross/Makefile-cross-SH
index c25b144498..cc17671283 100644
--- a/Cross/Makefile-cross-SH
+++ b/Cross/Makefile-cross-SH
@@ -348,7 +348,7 @@ h = $(h1) $(h2) $(h3) $(h4) $(h5)
c1 = av.c scope.c op.c doop.c doio.c dump.c gv.c hv.c mg.c reentr.c mro.c perl.c
c2 = perly.c pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c utf8.c sv.c
-c3 = taint.c toke.c util.c deb.c run.c universal.c pad.c globals.c
+c3 = taint.c toke.c util.c deb.c run.c universal.c pad.c globals.c keywords.c
c4 = perlio.c perlapi.c numeric.c mathoms.c locale.c pp_pack.c pp_sort.c
c5 = $(madlysrc) $(mallocsrc)
diff --git a/MANIFEST b/MANIFEST
index 3e691781b5..be2876ee74 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -3765,6 +3765,7 @@ installperl Perl script to do "make install" dirty work
INTERN.h Included before domestic .h files
intrpvar.h Variables held in each interpreter instance
iperlsys.h Perl's interface to the system
+keywords.c Perl_keyword(), generated by perl_keyword.pl
keywords.h The keyword numbers
l1_char_class_tab.h 256 word bit table of character classes (for handy.h)
lib/abbrev.pl An abbreviation table builder
diff --git a/Makefile.SH b/Makefile.SH
index 07f25d2b0a..28c539de80 100755
--- a/Makefile.SH
+++ b/Makefile.SH
@@ -446,14 +446,14 @@ h = $(h1) $(h2) $(h3) $(h4) $(h5)
c1 = av.c scope.c op.c doop.c doio.c dump.c gv.c hv.c mg.c reentr.c mro.c perl.c
c2 = perly.c pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c utf8.c sv.c
-c3 = taint.c toke.c util.c deb.c run.c universal.c pad.c globals.c
+c3 = taint.c toke.c util.c deb.c run.c universal.c pad.c globals.c keywords.c
c4 = perlio.c perlapi.c numeric.c mathoms.c locale.c pp_pack.c pp_sort.c
c5 = $(madlysrc) $(mallocsrc)
c = $(c1) $(c2) $(c3) $(c4) $(c5) miniperlmain.c opmini.c perlmini.c
obj0 = op$(OBJ_EXT) perl$(OBJ_EXT)
-obj1 = $(madlyobj) $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) pad$(OBJ_EXT) regcomp$(OBJ_EXT) dump$(OBJ_EXT) util$(OBJ_EXT) mg$(OBJ_EXT) reentr$(OBJ_EXT) mro$(OBJ_EXT)
+obj1 = $(madlyobj) $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) pad$(OBJ_EXT) regcomp$(OBJ_EXT) dump$(OBJ_EXT) util$(OBJ_EXT) mg$(OBJ_EXT) reentr$(OBJ_EXT) mro$(OBJ_EXT) keywords$(OBJ_EXT)
obj2 = hv$(OBJ_EXT) av$(OBJ_EXT) run$(OBJ_EXT) pp_hot$(OBJ_EXT) sv$(OBJ_EXT) pp$(OBJ_EXT) scope$(OBJ_EXT) pp_ctl$(OBJ_EXT) pp_sys$(OBJ_EXT)
obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT) perlapi$(OBJ_EXT) numeric$(OBJ_EXT) mathoms$(OBJ_EXT) locale$(OBJ_EXT) pp_pack$(OBJ_EXT) pp_sort$(OBJ_EXT)
diff --git a/Makefile.micro b/Makefile.micro
index 86113322d7..ec47c9b914 100644
--- a/Makefile.micro
+++ b/Makefile.micro
@@ -21,7 +21,7 @@ O = uav$(_O) udeb$(_O) udoio$(_O) udoop$(_O) udump$(_O) \
uregcomp$(_O) uregexec$(_O) urun$(_O) \
uscope$(_O) usv$(_O) utaint$(_O) utoke$(_O) \
unumeric$(_O) ulocale$(_O) umathoms$(_O) \
- uuniversal$(_O) uutf8$(_O) uutil$(_O) uperlapi$(_O)
+ uuniversal$(_O) uutf8$(_O) uutil$(_O) uperlapi$(_O) ukeywords$(_O)
microperl: $(O)
$(LD) -o $@ $(O) $(LDFLAGS) $(LIBS)
@@ -86,6 +86,9 @@ umro$(_O): $(HE) mro.c
uhv$(_O): $(HE) hv.c
$(CC) $(CCFLAGS) -o $@ $(CFLAGS) hv.c
+ukeywords$(_O): $(HE) keywords.c
+ $(CC) $(CCFLAGS) -o $@ $(CFLAGS) keywords.c
+
umg$(_O): $(HE) mg.c
$(CC) $(CCFLAGS) -o $@ $(CFLAGS) mg.c
diff --git a/NetWare/Makefile b/NetWare/Makefile
index 266a6cc04e..335ec1e764 100644
--- a/NetWare/Makefile
+++ b/NetWare/Makefile
@@ -701,6 +701,7 @@ MICROCORE_SRC = \
..\gv.c \
..\mro.c \
..\hv.c \
+ ..\keywords.c \
..\locale.c \
..\mathoms.c \
..\mg.c \
diff --git a/Porting/makerel b/Porting/makerel
index 046cd67ac5..ec4dc5ed9b 100755
--- a/Porting/makerel
+++ b/Porting/makerel
@@ -132,6 +132,7 @@ my @writables = qw(
NetWare/config_H.wc
NetWare/Makefile
keywords.h
+ keywords.c
opcode.h
opnames.h
pp_proto.h
diff --git a/embed.fnc b/embed.fnc
index 1b97c0bcfa..b4fae82c98 100644
--- a/embed.fnc
+++ b/embed.fnc
@@ -1950,7 +1950,6 @@ s |U8* |add_utf16_textfilter|NN U8 *const s|bool reversed
#endif
s |void |checkcomma |NN const char *s|NN const char *name \
|NN const char *what
-s |bool |feature_is_enabled|NN const char *const name|STRLEN namelen
s |void |force_ident |NN const char *s|int kind
s |void |incline |NN const char *s
s |int |intuit_method |NN char *s|NULLOK GV *gv|NULLOK CV *cv
@@ -2422,4 +2421,7 @@ Anop |void |clone_params_del|NN CLONE_PARAMS *param
: Used in perl.c and toke.c
op |void |populate_isa |NN const char *name|STRLEN len|...
+: Used in keywords.c and toke.c
+op |bool |feature_is_enabled|NN const char *const name|STRLEN namelen
+
: ex: set ts=8 sts=4 sw=4 noet:
diff --git a/embed.h b/embed.h
index 6f3245ee7a..90e365f936 100644
--- a/embed.h
+++ b/embed.h
@@ -1457,7 +1457,6 @@
#define check_uni() S_check_uni(aTHX)
#define checkcomma(a,b,c) S_checkcomma(aTHX_ a,b,c)
#define deprecate_commaless_var_list() S_deprecate_commaless_var_list(aTHX)
-#define feature_is_enabled(a,b) S_feature_is_enabled(aTHX_ a,b)
#define filter_gets(a,b) S_filter_gets(aTHX_ a,b)
#define find_in_my_stash(a,b) S_find_in_my_stash(aTHX_ a,b)
#define force_ident(a,b) S_force_ident(aTHX_ a,b)
diff --git a/keywords.c b/keywords.c
new file mode 100644
index 0000000000..199eaedf68
--- /dev/null
+++ b/keywords.c
@@ -0,0 +1,3397 @@
+/*
+ * The following code was generated by perl_keyword.pl.
+ */
+
+#include "EXTERN.h"
+#define PERL_IN_KEYWORDS_C
+#include "perl.h"
+#include "keywords.h"
+
+I32
+Perl_keyword (pTHX_ const char *name, I32 len, bool all_keywords)
+{
+ dVAR;
+
+ PERL_ARGS_ASSERT_KEYWORD;
+
+ switch (len)
+ {
+ case 1: /* 5 tokens of length 1 */
+ switch (name[0])
+ {
+ case 'm':
+ { /* m */
+ return KEY_m;
+ }
+
+ case 'q':
+ { /* q */
+ return KEY_q;
+ }
+
+ case 's':
+ { /* s */
+ return KEY_s;
+ }
+
+ case 'x':
+ { /* x */
+ return -KEY_x;
+ }
+
+ case 'y':
+ { /* y */
+ return KEY_y;
+ }
+
+ default:
+ goto unknown;
+ }
+
+ case 2: /* 18 tokens of length 2 */
+ switch (name[0])
+ {
+ case 'd':
+ if (name[1] == 'o')
+ { /* do */
+ return KEY_do;
+ }
+
+ goto unknown;
+
+ case 'e':
+ if (name[1] == 'q')
+ { /* eq */
+ return -KEY_eq;
+ }
+
+ goto unknown;
+
+ case 'g':
+ switch (name[1])
+ {
+ case 'e':
+ { /* ge */
+ return -KEY_ge;
+ }
+
+ case 't':
+ { /* gt */
+ return -KEY_gt;
+ }
+
+ default:
+ goto unknown;
+ }
+
+ case 'i':
+ if (name[1] == 'f')
+ { /* if */
+ return KEY_if;
+ }
+
+ goto unknown;
+
+ case 'l':
+ switch (name[1])
+ {
+ case 'c':
+ { /* lc */
+ return -KEY_lc;
+ }
+
+ case 'e':
+ { /* le */
+ return -KEY_le;
+ }
+
+ case 't':
+ { /* lt */
+ return -KEY_lt;
+ }
+
+ default:
+ goto unknown;
+ }
+
+ case 'm':
+ if (name[1] == 'y')
+ { /* my */
+ return KEY_my;
+ }
+
+ goto unknown;
+
+ case 'n':
+ switch (name[1])
+ {
+ case 'e':
+ { /* ne */
+ return -KEY_ne;
+ }
+
+ case 'o':
+ { /* no */
+ return KEY_no;
+ }
+
+ default:
+ goto unknown;
+ }
+
+ case 'o':
+ if (name[1] == 'r')
+ { /* or */
+ return -KEY_or;
+ }
+
+ goto unknown;
+
+ case 'q':
+ switch (name[1])
+ {
+ case 'q':
+ { /* qq */
+ return KEY_qq;
+ }
+
+ case 'r':
+ { /* qr */
+ return KEY_qr;
+ }
+
+ case 'w':
+ { /* qw */
+ return KEY_qw;
+ }
+
+ case 'x':
+ { /* qx */
+ return KEY_qx;
+ }
+
+ default:
+ goto unknown;
+ }
+
+ case 't':
+ if (name[1] == 'r')
+ { /* tr */
+ return KEY_tr;
+ }
+
+ goto unknown;
+
+ case 'u':
+ if (name[1] == 'c')
+ { /* uc */
+ return -KEY_uc;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 3: /* 28 tokens of length 3 */
+ switch (name[0])
+ {
+ case 'E':
+ if (name[1] == 'N' &&
+ name[2] == 'D')
+ { /* END */
+ return KEY_END;
+ }
+
+ goto unknown;
+
+ case 'a':
+ switch (name[1])
+ {
+ case 'b':
+ if (name[2] == 's')
+ { /* abs */
+ return -KEY_abs;
+ }
+
+ goto unknown;
+
+ case 'n':
+ if (name[2] == 'd')
+ { /* and */
+ return -KEY_and;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 'c':
+ switch (name[1])
+ {
+ case 'h':
+ if (name[2] == 'r')
+ { /* chr */
+ return -KEY_chr;
+ }
+
+ goto unknown;
+
+ case 'm':
+ if (name[2] == 'p')
+ { /* cmp */
+ return -KEY_cmp;
+ }
+
+ goto unknown;
+
+ case 'o':
+ if (name[2] == 's')
+ { /* cos */
+ return -KEY_cos;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 'd':
+ if (name[1] == 'i' &&
+ name[2] == 'e')
+ { /* die */
+ return -KEY_die;
+ }
+
+ goto unknown;
+
+ case 'e':
+ switch (name[1])
+ {
+ case 'o':
+ if (name[2] == 'f')
+ { /* eof */
+ return -KEY_eof;
+ }
+
+ goto unknown;
+
+ case 'x':
+ if (name[2] == 'p')
+ { /* exp */
+ return -KEY_exp;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 'f':
+ if (name[1] == 'o' &&
+ name[2] == 'r')
+ { /* for */
+ return KEY_for;
+ }
+
+ goto unknown;
+
+ case 'h':
+ if (name[1] == 'e' &&
+ name[2] == 'x')
+ { /* hex */
+ return -KEY_hex;
+ }
+
+ goto unknown;
+
+ case 'i':
+ if (name[1] == 'n' &&
+ name[2] == 't')
+ { /* int */
+ return -KEY_int;
+ }
+
+ goto unknown;
+
+ case 'l':
+ if (name[1] == 'o' &&
+ name[2] == 'g')
+ { /* log */
+ return -KEY_log;
+ }
+
+ goto unknown;
+
+ case 'm':
+ if (name[1] == 'a' &&
+ name[2] == 'p')
+ { /* map */
+ return KEY_map;
+ }
+
+ goto unknown;
+
+ case 'n':
+ if (name[1] == 'o' &&
+ name[2] == 't')
+ { /* not */
+ return -KEY_not;
+ }
+
+ goto unknown;
+
+ case 'o':
+ switch (name[1])
+ {
+ case 'c':
+ if (name[2] == 't')
+ { /* oct */
+ return -KEY_oct;
+ }
+
+ goto unknown;
+
+ case 'r':
+ if (name[2] == 'd')
+ { /* ord */
+ return -KEY_ord;
+ }
+
+ goto unknown;
+
+ case 'u':
+ if (name[2] == 'r')
+ { /* our */
+ return KEY_our;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 'p':
+ if (name[1] == 'o')
+ {
+ switch (name[2])
+ {
+ case 'p':
+ { /* pop */
+ return -KEY_pop;
+ }
+
+ case 's':
+ { /* pos */
+ return KEY_pos;
+ }
+
+ default:
+ goto unknown;
+ }
+ }
+
+ goto unknown;
+
+ case 'r':
+ if (name[1] == 'e' &&
+ name[2] == 'f')
+ { /* ref */
+ return -KEY_ref;
+ }
+
+ goto unknown;
+
+ case 's':
+ switch (name[1])
+ {
+ case 'a':
+ if (name[2] == 'y')
+ { /* say */
+ return (all_keywords || FEATURE_IS_ENABLED("say") ? KEY_say : 0);
+ }
+
+ goto unknown;
+
+ case 'i':
+ if (name[2] == 'n')
+ { /* sin */
+ return -KEY_sin;
+ }
+
+ goto unknown;
+
+ case 'u':
+ if (name[2] == 'b')
+ { /* sub */
+ return KEY_sub;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 't':
+ if (name[1] == 'i' &&
+ name[2] == 'e')
+ { /* tie */
+ return -KEY_tie;
+ }
+
+ goto unknown;
+
+ case 'u':
+ if (name[1] == 's' &&
+ name[2] == 'e')
+ { /* use */
+ return KEY_use;
+ }
+
+ goto unknown;
+
+ case 'v':
+ if (name[1] == 'e' &&
+ name[2] == 'c')
+ { /* vec */
+ return -KEY_vec;
+ }
+
+ goto unknown;
+
+ case 'x':
+ if (name[1] == 'o' &&
+ name[2] == 'r')
+ { /* xor */
+ return -KEY_xor;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 4: /* 41 tokens of length 4 */
+ switch (name[0])
+ {
+ case 'C':
+ if (name[1] == 'O' &&
+ name[2] == 'R' &&
+ name[3] == 'E')
+ { /* CORE */
+ return -KEY_CORE;
+ }
+
+ goto unknown;
+
+ case 'I':
+ if (name[1] == 'N' &&
+ name[2] == 'I' &&
+ name[3] == 'T')
+ { /* INIT */
+ return KEY_INIT;
+ }
+
+ goto unknown;
+
+ case 'b':
+ if (name[1] == 'i' &&
+ name[2] == 'n' &&
+ name[3] == 'd')
+ { /* bind */
+ return -KEY_bind;
+ }
+
+ goto unknown;
+
+ case 'c':
+ if (name[1] == 'h' &&
+ name[2] == 'o' &&
+ name[3] == 'p')
+ { /* chop */
+ return -KEY_chop;
+ }
+
+ goto unknown;
+
+ case 'd':
+ if (name[1] == 'u' &&
+ name[2] == 'm' &&
+ name[3] == 'p')
+ { /* dump */
+ return -KEY_dump;
+ }
+
+ goto unknown;
+
+ case 'e':
+ switch (name[1])
+ {
+ case 'a':
+ if (name[2] == 'c' &&
+ name[3] == 'h')
+ { /* each */
+ return -KEY_each;
+ }
+
+ goto unknown;
+
+ case 'l':
+ if (name[2] == 's' &&
+ name[3] == 'e')
+ { /* else */
+ return KEY_else;
+ }
+
+ goto unknown;
+
+ case 'v':
+ if (name[2] == 'a' &&
+ name[3] == 'l')
+ { /* eval */
+ return KEY_eval;
+ }
+
+ goto unknown;
+
+ case 'x':
+ switch (name[2])
+ {
+ case 'e':
+ if (name[3] == 'c')
+ { /* exec */
+ return -KEY_exec;
+ }
+
+ goto unknown;
+
+ case 'i':
+ if (name[3] == 't')
+ { /* exit */
+ return -KEY_exit;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ default:
+ goto unknown;
+ }
+
+ case 'f':
+ if (name[1] == 'o' &&
+ name[2] == 'r' &&
+ name[3] == 'k')
+ { /* fork */
+ return -KEY_fork;
+ }
+
+ goto unknown;
+
+ case 'g':
+ switch (name[1])
+ {
+ case 'e':
+ if (name[2] == 't' &&
+ name[3] == 'c')
+ { /* getc */
+ return -KEY_getc;
+ }
+
+ goto unknown;
+
+ case 'l':
+ if (name[2] == 'o' &&
+ name[3] == 'b')
+ { /* glob */
+ return KEY_glob;
+ }
+
+ goto unknown;
+
+ case 'o':
+ if (name[2] == 't' &&
+ name[3] == 'o')
+ { /* goto */
+ return KEY_goto;
+ }
+
+ goto unknown;
+
+ case 'r':
+ if (name[2] == 'e' &&
+ name[3] == 'p')
+ { /* grep */
+ return KEY_grep;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 'j':
+ if (name[1] == 'o' &&
+ name[2] == 'i' &&
+ name[3] == 'n')
+ { /* join */
+ return -KEY_join;
+ }
+
+ goto unknown;
+
+ case 'k':
+ switch (name[1])
+ {
+ case 'e':
+ if (name[2] == 'y' &&
+ name[3] == 's')
+ { /* keys */
+ return -KEY_keys;
+ }
+
+ goto unknown;
+
+ case 'i':
+ if (name[2] == 'l' &&
+ name[3] == 'l')
+ { /* kill */
+ return -KEY_kill;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 'l':
+ switch (name[1])
+ {
+ case 'a':
+ if (name[2] == 's' &&
+ name[3] == 't')
+ { /* last */
+ return KEY_last;
+ }
+
+ goto unknown;
+
+ case 'i':
+ if (name[2] == 'n' &&
+ name[3] == 'k')
+ { /* link */
+ return -KEY_link;
+ }
+
+ goto unknown;
+
+ case 'o':
+ if (name[2] == 'c' &&
+ name[3] == 'k')
+ { /* lock */
+ return -KEY_lock;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 'n':
+ if (name[1] == 'e' &&
+ name[2] == 'x' &&
+ name[3] == 't')
+ { /* next */
+ return KEY_next;
+ }
+
+ goto unknown;
+
+ case 'o':
+ if (name[1] == 'p' &&
+ name[2] == 'e' &&
+ name[3] == 'n')
+ { /* open */
+ return -KEY_open;
+ }
+
+ goto unknown;
+
+ case 'p':
+ switch (name[1])
+ {
+ case 'a':
+ if (name[2] == 'c' &&
+ name[3] == 'k')
+ { /* pack */
+ return -KEY_pack;
+ }
+
+ goto unknown;
+
+ case 'i':
+ if (name[2] == 'p' &&
+ name[3] == 'e')
+ { /* pipe */
+ return -KEY_pipe;
+ }
+
+ goto unknown;
+
+ case 'u':
+ if (name[2] == 's' &&
+ name[3] == 'h')
+ { /* push */
+ return -KEY_push;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 'r':
+ switch (name[1])
+ {
+ case 'a':
+ if (name[2] == 'n' &&
+ name[3] == 'd')
+ { /* rand */
+ return -KEY_rand;
+ }
+
+ goto unknown;
+
+ case 'e':
+ switch (name[2])
+ {
+ case 'a':
+ if (name[3] == 'd')
+ { /* read */
+ return -KEY_read;
+ }
+
+ goto unknown;
+
+ case 'c':
+ if (name[3] == 'v')
+ { /* recv */
+ return -KEY_recv;
+ }
+
+ goto unknown;
+
+ case 'd':
+ if (name[3] == 'o')
+ { /* redo */
+ return KEY_redo;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ default:
+ goto unknown;
+ }
+
+ case 's':
+ switch (name[1])
+ {
+ case 'e':
+ switch (name[2])
+ {
+ case 'e':
+ if (name[3] == 'k')
+ { /* seek */
+ return -KEY_seek;
+ }
+
+ goto unknown;
+
+ case 'n':
+ if (name[3] == 'd')
+ { /* send */
+ return -KEY_send;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 'o':
+ if (name[2] == 'r' &&
+ name[3] == 't')
+ { /* sort */
+ return KEY_sort;
+ }
+
+ goto unknown;
+
+ case 'q':
+ if (name[2] == 'r' &&
+ name[3] == 't')
+ { /* sqrt */
+ return -KEY_sqrt;
+ }
+
+ goto unknown;
+
+ case 't':
+ if (name[2] == 'a' &&
+ name[3] == 't')
+ { /* stat */
+ return -KEY_stat;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 't':
+ switch (name[1])
+ {
+ case 'e':
+ if (name[2] == 'l' &&
+ name[3] == 'l')
+ { /* tell */
+ return -KEY_tell;
+ }
+
+ goto unknown;
+
+ case 'i':
+ switch (name[2])
+ {
+ case 'e':
+ if (name[3] == 'd')
+ { /* tied */
+ return -KEY_tied;
+ }
+
+ goto unknown;
+
+ case 'm':
+ if (name[3] == 'e')
+ { /* time */
+ return -KEY_time;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ default:
+ goto unknown;
+ }
+
+ case 'w':
+ switch (name[1])
+ {
+ case 'a':
+ switch (name[2])
+ {
+ case 'i':
+ if (name[3] == 't')
+ { /* wait */
+ return -KEY_wait;
+ }
+
+ goto unknown;
+
+ case 'r':
+ if (name[3] == 'n')
+ { /* warn */
+ return -KEY_warn;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 'h':
+ if (name[2] == 'e' &&
+ name[3] == 'n')
+ { /* when */
+ return (all_keywords || FEATURE_IS_ENABLED("switch") ? KEY_when : 0);
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ default:
+ goto unknown;
+ }
+
+ case 5: /* 39 tokens of length 5 */
+ switch (name[0])
+ {
+ case 'B':
+ if (name[1] == 'E' &&
+ name[2] == 'G' &&
+ name[3] == 'I' &&
+ name[4] == 'N')
+ { /* BEGIN */
+ return KEY_BEGIN;
+ }
+
+ goto unknown;
+
+ case 'C':
+ if (name[1] == 'H' &&
+ name[2] == 'E' &&
+ name[3] == 'C' &&
+ name[4] == 'K')
+ { /* CHECK */
+ return KEY_CHECK;
+ }
+
+ goto unknown;
+
+ case 'a':
+ switch (name[1])
+ {
+ case 'l':
+ if (name[2] == 'a' &&
+ name[3] == 'r' &&
+ name[4] == 'm')
+ { /* alarm */
+ return -KEY_alarm;
+ }
+
+ goto unknown;
+
+ case 't':
+ if (name[2] == 'a' &&
+ name[3] == 'n' &&
+ name[4] == '2')
+ { /* atan2 */
+ return -KEY_atan2;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 'b':
+ switch (name[1])
+ {
+ case 'l':
+ if (name[2] == 'e' &&
+ name[3] == 's' &&
+ name[4] == 's')
+ { /* bless */
+ return -KEY_bless;
+ }
+
+ goto unknown;
+
+ case 'r':
+ if (name[2] == 'e' &&
+ name[3] == 'a' &&
+ name[4] == 'k')
+ { /* break */
+ return (all_keywords || FEATURE_IS_ENABLED("switch") ? -KEY_break : 0);
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 'c':
+ switch (name[1])
+ {
+ case 'h':
+ switch (name[2])
+ {
+ case 'd':
+ if (name[3] == 'i' &&
+ name[4] == 'r')
+ { /* chdir */
+ return -KEY_chdir;
+ }
+
+ goto unknown;
+
+ case 'm':
+ if (name[3] == 'o' &&
+ name[4] == 'd')
+ { /* chmod */
+ return -KEY_chmod;
+ }
+
+ goto unknown;
+
+ case 'o':
+ switch (name[3])
+ {
+ case 'm':
+ if (name[4] == 'p')
+ { /* chomp */
+ return -KEY_chomp;
+ }
+
+ goto unknown;
+
+ case 'w':
+ if (name[4] == 'n')
+ { /* chown */
+ return -KEY_chown;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ default:
+ goto unknown;
+ }
+
+ case 'l':
+ if (name[2] == 'o' &&
+ name[3] == 's' &&
+ name[4] == 'e')
+ { /* close */
+ return -KEY_close;
+ }
+
+ goto unknown;
+
+ case 'r':
+ if (name[2] == 'y' &&
+ name[3] == 'p' &&
+ name[4] == 't')
+ { /* crypt */
+ return -KEY_crypt;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 'e':
+ if (name[1] == 'l' &&
+ name[2] == 's' &&
+ name[3] == 'i' &&
+ name[4] == 'f')
+ { /* elsif */
+ return KEY_elsif;
+ }
+
+ goto unknown;
+
+ case 'f':
+ switch (name[1])
+ {
+ case 'c':
+ if (name[2] == 'n' &&
+ name[3] == 't' &&
+ name[4] == 'l')
+ { /* fcntl */
+ return -KEY_fcntl;
+ }
+
+ goto unknown;
+
+ case 'l':
+ if (name[2] == 'o' &&
+ name[3] == 'c' &&
+ name[4] == 'k')
+ { /* flock */
+ return -KEY_flock;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 'g':
+ if (name[1] == 'i' &&
+ name[2] == 'v' &&
+ name[3] == 'e' &&
+ name[4] == 'n')
+ { /* given */
+ return (all_keywords || FEATURE_IS_ENABLED("switch") ? KEY_given : 0);
+ }
+
+ goto unknown;
+
+ case 'i':
+ switch (name[1])
+ {
+ case 'n':
+ if (name[2] == 'd' &&
+ name[3] == 'e' &&
+ name[4] == 'x')
+ { /* index */
+ return -KEY_index;
+ }
+
+ goto unknown;
+
+ case 'o':
+ if (name[2] == 'c' &&
+ name[3] == 't' &&
+ name[4] == 'l')
+ { /* ioctl */
+ return -KEY_ioctl;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 'l':
+ switch (name[1])
+ {
+ case 'o':
+ if (name[2] == 'c' &&
+ name[3] == 'a' &&
+ name[4] == 'l')
+ { /* local */
+ return KEY_local;
+ }
+
+ goto unknown;
+
+ case 's':
+ if (name[2] == 't' &&
+ name[3] == 'a' &&
+ name[4] == 't')
+ { /* lstat */
+ return -KEY_lstat;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 'm':
+ if (name[1] == 'k' &&
+ name[2] == 'd' &&
+ name[3] == 'i' &&
+ name[4] == 'r')
+ { /* mkdir */
+ return -KEY_mkdir;
+ }
+
+ goto unknown;
+
+ case 'p':
+ if (name[1] == 'r' &&
+ name[2] == 'i' &&
+ name[3] == 'n' &&
+ name[4] == 't')
+ { /* print */
+ return KEY_print;
+ }
+
+ goto unknown;
+
+ case 'r':
+ switch (name[1])
+ {
+ case 'e':
+ if (name[2] == 's' &&
+ name[3] == 'e' &&
+ name[4] == 't')
+ { /* reset */
+ return -KEY_reset;
+ }
+
+ goto unknown;
+
+ case 'm':
+ if (name[2] == 'd' &&
+ name[3] == 'i' &&
+ name[4] == 'r')
+ { /* rmdir */
+ return -KEY_rmdir;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 's':
+ switch (name[1])
+ {
+ case 'e':
+ if (name[2] == 'm' &&
+ name[3] == 'o' &&
+ name[4] == 'p')
+ { /* semop */
+ return -KEY_semop;
+ }
+
+ goto unknown;
+
+ case 'h':
+ if (name[2] == 'i' &&
+ name[3] == 'f' &&
+ name[4] == 't')
+ { /* shift */
+ return -KEY_shift;
+ }
+
+ goto unknown;
+
+ case 'l':
+ if (name[2] == 'e' &&
+ name[3] == 'e' &&
+ name[4] == 'p')
+ { /* sleep */
+ return -KEY_sleep;
+ }
+
+ goto unknown;
+
+ case 'p':
+ if (name[2] == 'l' &&
+ name[3] == 'i' &&
+ name[4] == 't')
+ { /* split */
+ return KEY_split;
+ }
+
+ goto unknown;
+
+ case 'r':
+ if (name[2] == 'a' &&
+ name[3] == 'n' &&
+ name[4] == 'd')
+ { /* srand */
+ return -KEY_srand;
+ }
+
+ goto unknown;
+
+ case 't':
+ switch (name[2])
+ {
+ case 'a':
+ if (name[3] == 't' &&
+ name[4] == 'e')
+ { /* state */
+ return (all_keywords || FEATURE_IS_ENABLED("state") ? KEY_state : 0);
+ }
+
+ goto unknown;
+
+ case 'u':
+ if (name[3] == 'd' &&
+ name[4] == 'y')
+ { /* study */
+ return KEY_study;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ default:
+ goto unknown;
+ }
+
+ case 't':
+ if (name[1] == 'i' &&
+ name[2] == 'm' &&
+ name[3] == 'e' &&
+ name[4] == 's')
+ { /* times */
+ return -KEY_times;
+ }
+
+ goto unknown;
+
+ case 'u':
+ switch (name[1])
+ {
+ case 'm':
+ if (name[2] == 'a' &&
+ name[3] == 's' &&
+ name[4] == 'k')
+ { /* umask */
+ return -KEY_umask;
+ }
+
+ goto unknown;
+
+ case 'n':
+ switch (name[2])
+ {
+ case 'd':
+ if (name[3] == 'e' &&
+ name[4] == 'f')
+ { /* undef */
+ return KEY_undef;
+ }
+
+ goto unknown;
+
+ case 't':
+ if (name[3] == 'i')
+ {
+ switch (name[4])
+ {
+ case 'e':
+ { /* untie */
+ return -KEY_untie;
+ }
+
+ case 'l':
+ { /* until */
+ return KEY_until;
+ }
+
+ default:
+ goto unknown;
+ }
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 't':
+ if (name[2] == 'i' &&
+ name[3] == 'm' &&
+ name[4] == 'e')
+ { /* utime */
+ return -KEY_utime;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 'w':
+ switch (name[1])
+ {
+ case 'h':
+ if (name[2] == 'i' &&
+ name[3] == 'l' &&
+ name[4] == 'e')
+ { /* while */
+ return KEY_while;
+ }
+
+ goto unknown;
+
+ case 'r':
+ if (name[2] == 'i' &&
+ name[3] == 't' &&
+ name[4] == 'e')
+ { /* write */
+ return -KEY_write;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ default:
+ goto unknown;
+ }
+
+ case 6: /* 33 tokens of length 6 */
+ switch (name[0])
+ {
+ case 'a':
+ if (name[1] == 'c' &&
+ name[2] == 'c' &&
+ name[3] == 'e' &&
+ name[4] == 'p' &&
+ name[5] == 't')
+ { /* accept */
+ return -KEY_accept;
+ }
+
+ goto unknown;
+
+ case 'c':
+ switch (name[1])
+ {
+ case 'a':
+ if (name[2] == 'l' &&
+ name[3] == 'l' &&
+ name[4] == 'e' &&
+ name[5] == 'r')
+ { /* caller */
+ return -KEY_caller;
+ }
+
+ goto unknown;
+
+ case 'h':
+ if (name[2] == 'r' &&
+ name[3] == 'o' &&
+ name[4] == 'o' &&
+ name[5] == 't')
+ { /* chroot */
+ return -KEY_chroot;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 'd':
+ if (name[1] == 'e' &&
+ name[2] == 'l' &&
+ name[3] == 'e' &&
+ name[4] == 't' &&
+ name[5] == 'e')
+ { /* delete */
+ return KEY_delete;
+ }
+
+ goto unknown;
+
+ case 'e':
+ switch (name[1])
+ {
+ case 'l':
+ if (name[2] == 's' &&
+ name[3] == 'e' &&
+ name[4] == 'i' &&
+ name[5] == 'f')
+ { /* elseif */
+ Perl_ck_warner_d(aTHX_ packWARN(WARN_SYNTAX), "elseif should be elsif");
+ }
+
+ goto unknown;
+
+ case 'x':
+ if (name[2] == 'i' &&
+ name[3] == 's' &&
+ name[4] == 't' &&
+ name[5] == 's')
+ { /* exists */
+ return KEY_exists;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 'f':
+ switch (name[1])
+ {
+ case 'i':
+ if (name[2] == 'l' &&
+ name[3] == 'e' &&
+ name[4] == 'n' &&
+ name[5] == 'o')
+ { /* fileno */
+ return -KEY_fileno;
+ }
+
+ goto unknown;
+
+ case 'o':
+ if (name[2] == 'r' &&
+ name[3] == 'm' &&
+ name[4] == 'a' &&
+ name[5] == 't')
+ { /* format */
+ return KEY_format;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 'g':
+ if (name[1] == 'm' &&
+ name[2] == 't' &&
+ name[3] == 'i' &&
+ name[4] == 'm' &&
+ name[5] == 'e')
+ { /* gmtime */
+ return -KEY_gmtime;
+ }
+
+ goto unknown;
+
+ case 'l':
+ switch (name[1])
+ {
+ case 'e':
+ if (name[2] == 'n' &&
+ name[3] == 'g' &&
+ name[4] == 't' &&
+ name[5] == 'h')
+ { /* length */
+ return -KEY_length;
+ }
+
+ goto unknown;
+
+ case 'i':
+ if (name[2] == 's' &&
+ name[3] == 't' &&
+ name[4] == 'e' &&
+ name[5] == 'n')
+ { /* listen */
+ return -KEY_listen;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 'm':
+ if (name[1] == 's' &&
+ name[2] == 'g')
+ {
+ switch (name[3])
+ {
+ case 'c':
+ if (name[4] == 't' &&
+ name[5] == 'l')
+ { /* msgctl */
+ return -KEY_msgctl;
+ }
+
+ goto unknown;
+
+ case 'g':
+ if (name[4] == 'e' &&
+ name[5] == 't')
+ { /* msgget */
+ return -KEY_msgget;
+ }
+
+ goto unknown;
+
+ case 'r':
+ if (name[4] == 'c' &&
+ name[5] == 'v')
+ { /* msgrcv */
+ return -KEY_msgrcv;
+ }
+
+ goto unknown;
+
+ case 's':
+ if (name[4] == 'n' &&
+ name[5] == 'd')
+ { /* msgsnd */
+ return -KEY_msgsnd;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+ }
+
+ goto unknown;
+
+ case 'p':
+ if (name[1] == 'r' &&
+ name[2] == 'i' &&
+ name[3] == 'n' &&
+ name[4] == 't' &&
+ name[5] == 'f')
+ { /* printf */
+ return KEY_printf;
+ }
+
+ goto unknown;
+
+ case 'r':
+ switch (name[1])
+ {
+ case 'e':
+ switch (name[2])
+ {
+ case 'n':
+ if (name[3] == 'a' &&
+ name[4] == 'm' &&
+ name[5] == 'e')
+ { /* rename */
+ return -KEY_rename;
+ }
+
+ goto unknown;
+
+ case 't':
+ if (name[3] == 'u' &&
+ name[4] == 'r' &&
+ name[5] == 'n')
+ { /* return */
+ return KEY_return;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 'i':
+ if (name[2] == 'n' &&
+ name[3] == 'd' &&
+ name[4] == 'e' &&
+ name[5] == 'x')
+ { /* rindex */
+ return -KEY_rindex;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 's':
+ switch (name[1])
+ {
+ case 'c':
+ if (name[2] == 'a' &&
+ name[3] == 'l' &&
+ name[4] == 'a' &&
+ name[5] == 'r')
+ { /* scalar */
+ return KEY_scalar;
+ }
+
+ goto unknown;
+
+ case 'e':
+ switch (name[2])
+ {
+ case 'l':
+ if (name[3] == 'e' &&
+ name[4] == 'c' &&
+ name[5] == 't')
+ { /* select */
+ return -KEY_select;
+ }
+
+ goto unknown;
+
+ case 'm':
+ switch (name[3])
+ {
+ case 'c':
+ if (name[4] == 't' &&
+ name[5] == 'l')
+ { /* semctl */
+ return -KEY_semctl;
+ }
+
+ goto unknown;
+
+ case 'g':
+ if (name[4] == 'e' &&
+ name[5] == 't')
+ { /* semget */
+ return -KEY_semget;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ default:
+ goto unknown;
+ }
+
+ case 'h':
+ if (name[2] == 'm')
+ {
+ switch (name[3])
+ {
+ case 'c':
+ if (name[4] == 't' &&
+ name[5] == 'l')
+ { /* shmctl */
+ return -KEY_shmctl;
+ }
+
+ goto unknown;
+
+ case 'g':
+ if (name[4] == 'e' &&
+ name[5] == 't')
+ { /* shmget */
+ return -KEY_shmget;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+ }
+
+ goto unknown;
+
+ case 'o':
+ if (name[2] == 'c' &&
+ name[3] == 'k' &&
+ name[4] == 'e' &&
+ name[5] == 't')
+ { /* socket */
+ return -KEY_socket;
+ }
+
+ goto unknown;
+
+ case 'p':
+ if (name[2] == 'l' &&
+ name[3] == 'i' &&
+ name[4] == 'c' &&
+ name[5] == 'e')
+ { /* splice */
+ return -KEY_splice;
+ }
+
+ goto unknown;
+
+ case 'u':
+ if (name[2] == 'b' &&
+ name[3] == 's' &&
+ name[4] == 't' &&
+ name[5] == 'r')
+ { /* substr */
+ return -KEY_substr;
+ }
+
+ goto unknown;
+
+ case 'y':
+ if (name[2] == 's' &&
+ name[3] == 't' &&
+ name[4] == 'e' &&
+ name[5] == 'm')
+ { /* system */
+ return -KEY_system;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 'u':
+ if (name[1] == 'n')
+ {
+ switch (name[2])
+ {
+ case 'l':
+ switch (name[3])
+ {
+ case 'e':
+ if (name[4] == 's' &&
+ name[5] == 's')
+ { /* unless */
+ return KEY_unless;
+ }
+
+ goto unknown;
+
+ case 'i':
+ if (name[4] == 'n' &&
+ name[5] == 'k')
+ { /* unlink */
+ return -KEY_unlink;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 'p':
+ if (name[3] == 'a' &&
+ name[4] == 'c' &&
+ name[5] == 'k')
+ { /* unpack */
+ return -KEY_unpack;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+ }
+
+ goto unknown;
+
+ case 'v':
+ if (name[1] == 'a' &&
+ name[2] == 'l' &&
+ name[3] == 'u' &&
+ name[4] == 'e' &&
+ name[5] == 's')
+ { /* values */
+ return -KEY_values;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 7: /* 29 tokens of length 7 */
+ switch (name[0])
+ {
+ case 'D':
+ if (name[1] == 'E' &&
+ name[2] == 'S' &&
+ name[3] == 'T' &&
+ name[4] == 'R' &&
+ name[5] == 'O' &&
+ name[6] == 'Y')
+ { /* DESTROY */
+ return KEY_DESTROY;
+ }
+
+ goto unknown;
+
+ case '_':
+ if (name[1] == '_' &&
+ name[2] == 'E' &&
+ name[3] == 'N' &&
+ name[4] == 'D' &&
+ name[5] == '_' &&
+ name[6] == '_')
+ { /* __END__ */
+ return KEY___END__;
+ }
+
+ goto unknown;
+
+ case 'b':
+ if (name[1] == 'i' &&
+ name[2] == 'n' &&
+ name[3] == 'm' &&
+ name[4] == 'o' &&
+ name[5] == 'd' &&
+ name[6] == 'e')
+ { /* binmode */
+ return -KEY_binmode;
+ }
+
+ goto unknown;
+
+ case 'c':
+ if (name[1] == 'o' &&
+ name[2] == 'n' &&
+ name[3] == 'n' &&
+ name[4] == 'e' &&
+ name[5] == 'c' &&
+ name[6] == 't')
+ { /* connect */
+ return -KEY_connect;
+ }
+
+ goto unknown;
+
+ case 'd':
+ switch (name[1])
+ {
+ case 'b':
+ if (name[2] == 'm' &&
+ name[3] == 'o' &&
+ name[4] == 'p' &&
+ name[5] == 'e' &&
+ name[6] == 'n')
+ { /* dbmopen */
+ return -KEY_dbmopen;
+ }
+
+ goto unknown;
+
+ case 'e':
+ if (name[2] == 'f')
+ {
+ switch (name[3])
+ {
+ case 'a':
+ if (name[4] == 'u' &&
+ name[5] == 'l' &&
+ name[6] == 't')
+ { /* default */
+ return (all_keywords || FEATURE_IS_ENABLED("switch") ? KEY_default : 0);
+ }
+
+ goto unknown;
+
+ case 'i':
+ if (name[4] == 'n' &&
+ name[5] == 'e' &&
+ name[6] == 'd')
+ { /* defined */
+ return KEY_defined;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 'f':
+ if (name[1] == 'o' &&
+ name[2] == 'r' &&
+ name[3] == 'e' &&
+ name[4] == 'a' &&
+ name[5] == 'c' &&
+ name[6] == 'h')
+ { /* foreach */
+ return KEY_foreach;
+ }
+
+ goto unknown;
+
+ case 'g':
+ if (name[1] == 'e' &&
+ name[2] == 't' &&
+ name[3] == 'p')
+ {
+ switch (name[4])
+ {
+ case 'g':
+ if (name[5] == 'r' &&
+ name[6] == 'p')
+ { /* getpgrp */
+ return -KEY_getpgrp;
+ }
+
+ goto unknown;
+
+ case 'p':
+ if (name[5] == 'i' &&
+ name[6] == 'd')
+ { /* getppid */
+ return -KEY_getppid;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+ }
+
+ goto unknown;
+
+ case 'l':
+ if (name[1] == 'c' &&
+ name[2] == 'f' &&
+ name[3] == 'i' &&
+ name[4] == 'r' &&
+ name[5] == 's' &&
+ name[6] == 't')
+ { /* lcfirst */
+ return -KEY_lcfirst;
+ }
+
+ goto unknown;
+
+ case 'o':
+ if (name[1] == 'p' &&
+ name[2] == 'e' &&
+ name[3] == 'n' &&
+ name[4] == 'd' &&
+ name[5] == 'i' &&
+ name[6] == 'r')
+ { /* opendir */
+ return -KEY_opendir;
+ }
+
+ goto unknown;
+
+ case 'p':
+ if (name[1] == 'a' &&
+ name[2] == 'c' &&
+ name[3] == 'k' &&
+ name[4] == 'a' &&
+ name[5] == 'g' &&
+ name[6] == 'e')
+ { /* package */
+ return KEY_package;
+ }
+
+ goto unknown;
+
+ case 'r':
+ if (name[1] == 'e')
+ {
+ switch (name[2])
+ {
+ case 'a':
+ if (name[3] == 'd' &&
+ name[4] == 'd' &&
+ name[5] == 'i' &&
+ name[6] == 'r')
+ { /* readdir */
+ return -KEY_readdir;
+ }
+
+ goto unknown;
+
+ case 'q':
+ if (name[3] == 'u' &&
+ name[4] == 'i' &&
+ name[5] == 'r' &&
+ name[6] == 'e')
+ { /* require */
+ return KEY_require;
+ }
+
+ goto unknown;
+
+ case 'v':
+ if (name[3] == 'e' &&
+ name[4] == 'r' &&
+ name[5] == 's' &&
+ name[6] == 'e')
+ { /* reverse */
+ return -KEY_reverse;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+ }
+
+ goto unknown;
+
+ case 's':
+ switch (name[1])
+ {
+ case 'e':
+ switch (name[2])
+ {
+ case 'e':
+ if (name[3] == 'k' &&
+ name[4] == 'd' &&
+ name[5] == 'i' &&
+ name[6] == 'r')
+ { /* seekdir */
+ return -KEY_seekdir;
+ }
+
+ goto unknown;
+
+ case 't':
+ if (name[3] == 'p' &&
+ name[4] == 'g' &&
+ name[5] == 'r' &&
+ name[6] == 'p')
+ { /* setpgrp */
+ return -KEY_setpgrp;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 'h':
+ if (name[2] == 'm' &&
+ name[3] == 'r' &&
+ name[4] == 'e' &&
+ name[5] == 'a' &&
+ name[6] == 'd')
+ { /* shmread */
+ return -KEY_shmread;
+ }
+
+ goto unknown;
+
+ case 'p':
+ if (name[2] == 'r' &&
+ name[3] == 'i' &&
+ name[4] == 'n' &&
+ name[5] == 't' &&
+ name[6] == 'f')
+ { /* sprintf */
+ return -KEY_sprintf;
+ }
+
+ goto unknown;
+
+ case 'y':
+ switch (name[2])
+ {
+ case 'm':
+ if (name[3] == 'l' &&
+ name[4] == 'i' &&
+ name[5] == 'n' &&
+ name[6] == 'k')
+ { /* symlink */
+ return -KEY_symlink;
+ }
+
+ goto unknown;
+
+ case 's':
+ switch (name[3])
+ {
+ case 'c':
+ if (name[4] == 'a' &&
+ name[5] == 'l' &&
+ name[6] == 'l')
+ { /* syscall */
+ return -KEY_syscall;
+ }
+
+ goto unknown;
+
+ case 'o':
+ if (name[4] == 'p' &&
+ name[5] == 'e' &&
+ name[6] == 'n')
+ { /* sysopen */
+ return -KEY_sysopen;
+ }
+
+ goto unknown;
+
+ case 'r':
+ if (name[4] == 'e' &&
+ name[5] == 'a' &&
+ name[6] == 'd')
+ { /* sysread */
+ return -KEY_sysread;
+ }
+
+ goto unknown;
+
+ case 's':
+ if (name[4] == 'e' &&
+ name[5] == 'e' &&
+ name[6] == 'k')
+ { /* sysseek */
+ return -KEY_sysseek;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ default:
+ goto unknown;
+ }
+
+ default:
+ goto unknown;
+ }
+
+ case 't':
+ if (name[1] == 'e' &&
+ name[2] == 'l' &&
+ name[3] == 'l' &&
+ name[4] == 'd' &&
+ name[5] == 'i' &&
+ name[6] == 'r')
+ { /* telldir */
+ return -KEY_telldir;
+ }
+
+ goto unknown;
+
+ case 'u':
+ switch (name[1])
+ {
+ case 'c':
+ if (name[2] == 'f' &&
+ name[3] == 'i' &&
+ name[4] == 'r' &&
+ name[5] == 's' &&
+ name[6] == 't')
+ { /* ucfirst */
+ return -KEY_ucfirst;
+ }
+
+ goto unknown;
+
+ case 'n':
+ if (name[2] == 's' &&
+ name[3] == 'h' &&
+ name[4] == 'i' &&
+ name[5] == 'f' &&
+ name[6] == 't')
+ { /* unshift */
+ return -KEY_unshift;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 'w':
+ if (name[1] == 'a' &&
+ name[2] == 'i' &&
+ name[3] == 't' &&
+ name[4] == 'p' &&
+ name[5] == 'i' &&
+ name[6] == 'd')
+ { /* waitpid */
+ return -KEY_waitpid;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 8: /* 26 tokens of length 8 */
+ switch (name[0])
+ {
+ case 'A':
+ if (name[1] == 'U' &&
+ name[2] == 'T' &&
+ name[3] == 'O' &&
+ name[4] == 'L' &&
+ name[5] == 'O' &&
+ name[6] == 'A' &&
+ name[7] == 'D')
+ { /* AUTOLOAD */
+ return KEY_AUTOLOAD;
+ }
+
+ goto unknown;
+
+ case '_':
+ if (name[1] == '_')
+ {
+ switch (name[2])
+ {
+ case 'D':
+ if (name[3] == 'A' &&
+ name[4] == 'T' &&
+ name[5] == 'A' &&
+ name[6] == '_' &&
+ name[7] == '_')
+ { /* __DATA__ */
+ return KEY___DATA__;
+ }
+
+ goto unknown;
+
+ case 'F':
+ if (name[3] == 'I' &&
+ name[4] == 'L' &&
+ name[5] == 'E' &&
+ name[6] == '_' &&
+ name[7] == '_')
+ { /* __FILE__ */
+ return -KEY___FILE__;
+ }
+
+ goto unknown;
+
+ case 'L':
+ if (name[3] == 'I' &&
+ name[4] == 'N' &&
+ name[5] == 'E' &&
+ name[6] == '_' &&
+ name[7] == '_')
+ { /* __LINE__ */
+ return -KEY___LINE__;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+ }
+
+ goto unknown;
+
+ case 'c':
+ switch (name[1])
+ {
+ case 'l':
+ if (name[2] == 'o' &&
+ name[3] == 's' &&
+ name[4] == 'e' &&
+ name[5] == 'd' &&
+ name[6] == 'i' &&
+ name[7] == 'r')
+ { /* closedir */
+ return -KEY_closedir;
+ }
+
+ goto unknown;
+
+ case 'o':
+ if (name[2] == 'n' &&
+ name[3] == 't' &&
+ name[4] == 'i' &&
+ name[5] == 'n' &&
+ name[6] == 'u' &&
+ name[7] == 'e')
+ { /* continue */
+ return -KEY_continue;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 'd':
+ if (name[1] == 'b' &&
+ name[2] == 'm' &&
+ name[3] == 'c' &&
+ name[4] == 'l' &&
+ name[5] == 'o' &&
+ name[6] == 's' &&
+ name[7] == 'e')
+ { /* dbmclose */
+ return -KEY_dbmclose;
+ }
+
+ goto unknown;
+
+ case 'e':
+ if (name[1] == 'n' &&
+ name[2] == 'd')
+ {
+ switch (name[3])
+ {
+ case 'g':
+ if (name[4] == 'r' &&
+ name[5] == 'e' &&
+ name[6] == 'n' &&
+ name[7] == 't')
+ { /* endgrent */
+ return -KEY_endgrent;
+ }
+
+ goto unknown;
+
+ case 'p':
+ if (name[4] == 'w' &&
+ name[5] == 'e' &&
+ name[6] == 'n' &&
+ name[7] == 't')
+ { /* endpwent */
+ return -KEY_endpwent;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+ }
+
+ goto unknown;
+
+ case 'f':
+ if (name[1] == 'o' &&
+ name[2] == 'r' &&
+ name[3] == 'm' &&
+ name[4] == 'l' &&
+ name[5] == 'i' &&
+ name[6] == 'n' &&
+ name[7] == 'e')
+ { /* formline */
+ return -KEY_formline;
+ }
+
+ goto unknown;
+
+ case 'g':
+ if (name[1] == 'e' &&
+ name[2] == 't')
+ {
+ switch (name[3])
+ {
+ case 'g':
+ if (name[4] == 'r')
+ {
+ switch (name[5])
+ {
+ case 'e':
+ if (name[6] == 'n' &&
+ name[7] == 't')
+ { /* getgrent */
+ return -KEY_getgrent;
+ }
+
+ goto unknown;
+
+ case 'g':
+ if (name[6] == 'i' &&
+ name[7] == 'd')
+ { /* getgrgid */
+ return -KEY_getgrgid;
+ }
+
+ goto unknown;
+
+ case 'n':
+ if (name[6] == 'a' &&
+ name[7] == 'm')
+ { /* getgrnam */
+ return -KEY_getgrnam;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+ }
+
+ goto unknown;
+
+ case 'l':
+ if (name[4] == 'o' &&
+ name[5] == 'g' &&
+ name[6] == 'i' &&
+ name[7] == 'n')
+ { /* getlogin */
+ return -KEY_getlogin;
+ }
+
+ goto unknown;
+
+ case 'p':
+ if (name[4] == 'w')
+ {
+ switch (name[5])
+ {
+ case 'e':
+ if (name[6] == 'n' &&
+ name[7] == 't')
+ { /* getpwent */
+ return -KEY_getpwent;
+ }
+
+ goto unknown;
+
+ case 'n':
+ if (name[6] == 'a' &&
+ name[7] == 'm')
+ { /* getpwnam */
+ return -KEY_getpwnam;
+ }
+
+ goto unknown;
+
+ case 'u':
+ if (name[6] == 'i' &&
+ name[7] == 'd')
+ { /* getpwuid */
+ return -KEY_getpwuid;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+ }
+
+ goto unknown;
+
+ case 'r':
+ if (name[1] == 'e' &&
+ name[2] == 'a' &&
+ name[3] == 'd')
+ {
+ switch (name[4])
+ {
+ case 'l':
+ if (name[5] == 'i' &&
+ name[6] == 'n')
+ {
+ switch (name[7])
+ {
+ case 'e':
+ { /* readline */
+ return -KEY_readline;
+ }
+
+ case 'k':
+ { /* readlink */
+ return -KEY_readlink;
+ }
+
+ default:
+ goto unknown;
+ }
+ }
+
+ goto unknown;
+
+ case 'p':
+ if (name[5] == 'i' &&
+ name[6] == 'p' &&
+ name[7] == 'e')
+ { /* readpipe */
+ return -KEY_readpipe;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+ }
+
+ goto unknown;
+
+ case 's':
+ switch (name[1])
+ {
+ case 'e':
+ if (name[2] == 't')
+ {
+ switch (name[3])
+ {
+ case 'g':
+ if (name[4] == 'r' &&
+ name[5] == 'e' &&
+ name[6] == 'n' &&
+ name[7] == 't')
+ { /* setgrent */
+ return -KEY_setgrent;
+ }
+
+ goto unknown;
+
+ case 'p':
+ if (name[4] == 'w' &&
+ name[5] == 'e' &&
+ name[6] == 'n' &&
+ name[7] == 't')
+ { /* setpwent */
+ return -KEY_setpwent;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+ }
+
+ goto unknown;
+
+ case 'h':
+ switch (name[2])
+ {
+ case 'm':
+ if (name[3] == 'w' &&
+ name[4] == 'r' &&
+ name[5] == 'i' &&
+ name[6] == 't' &&
+ name[7] == 'e')
+ { /* shmwrite */
+ return -KEY_shmwrite;
+ }
+
+ goto unknown;
+
+ case 'u':
+ if (name[3] == 't' &&
+ name[4] == 'd' &&
+ name[5] == 'o' &&
+ name[6] == 'w' &&
+ name[7] == 'n')
+ { /* shutdown */
+ return -KEY_shutdown;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 'y':
+ if (name[2] == 's' &&
+ name[3] == 'w' &&
+ name[4] == 'r' &&
+ name[5] == 'i' &&
+ name[6] == 't' &&
+ name[7] == 'e')
+ { /* syswrite */
+ return -KEY_syswrite;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 't':
+ if (name[1] == 'r' &&
+ name[2] == 'u' &&
+ name[3] == 'n' &&
+ name[4] == 'c' &&
+ name[5] == 'a' &&
+ name[6] == 't' &&
+ name[7] == 'e')
+ { /* truncate */
+ return -KEY_truncate;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 9: /* 9 tokens of length 9 */
+ switch (name[0])
+ {
+ case 'U':
+ if (name[1] == 'N' &&
+ name[2] == 'I' &&
+ name[3] == 'T' &&
+ name[4] == 'C' &&
+ name[5] == 'H' &&
+ name[6] == 'E' &&
+ name[7] == 'C' &&
+ name[8] == 'K')
+ { /* UNITCHECK */
+ return KEY_UNITCHECK;
+ }
+
+ goto unknown;
+
+ case 'e':
+ if (name[1] == 'n' &&
+ name[2] == 'd' &&
+ name[3] == 'n' &&
+ name[4] == 'e' &&
+ name[5] == 't' &&
+ name[6] == 'e' &&
+ name[7] == 'n' &&
+ name[8] == 't')
+ { /* endnetent */
+ return -KEY_endnetent;
+ }
+
+ goto unknown;
+
+ case 'g':
+ if (name[1] == 'e' &&
+ name[2] == 't' &&
+ name[3] == 'n' &&
+ name[4] == 'e' &&
+ name[5] == 't' &&
+ name[6] == 'e' &&
+ name[7] == 'n' &&
+ name[8] == 't')
+ { /* getnetent */
+ return -KEY_getnetent;
+ }
+
+ goto unknown;
+
+ case 'l':
+ if (name[1] == 'o' &&
+ name[2] == 'c' &&
+ name[3] == 'a' &&
+ name[4] == 'l' &&
+ name[5] == 't' &&
+ name[6] == 'i' &&
+ name[7] == 'm' &&
+ name[8] == 'e')
+ { /* localtime */
+ return -KEY_localtime;
+ }
+
+ goto unknown;
+
+ case 'p':
+ if (name[1] == 'r' &&
+ name[2] == 'o' &&
+ name[3] == 't' &&
+ name[4] == 'o' &&
+ name[5] == 't' &&
+ name[6] == 'y' &&
+ name[7] == 'p' &&
+ name[8] == 'e')
+ { /* prototype */
+ return KEY_prototype;
+ }
+
+ goto unknown;
+
+ case 'q':
+ if (name[1] == 'u' &&
+ name[2] == 'o' &&
+ name[3] == 't' &&
+ name[4] == 'e' &&
+ name[5] == 'm' &&
+ name[6] == 'e' &&
+ name[7] == 't' &&
+ name[8] == 'a')
+ { /* quotemeta */
+ return -KEY_quotemeta;
+ }
+
+ goto unknown;
+
+ case 'r':
+ if (name[1] == 'e' &&
+ name[2] == 'w' &&
+ name[3] == 'i' &&
+ name[4] == 'n' &&
+ name[5] == 'd' &&
+ name[6] == 'd' &&
+ name[7] == 'i' &&
+ name[8] == 'r')
+ { /* rewinddir */
+ return -KEY_rewinddir;
+ }
+
+ goto unknown;
+
+ case 's':
+ if (name[1] == 'e' &&
+ name[2] == 't' &&
+ name[3] == 'n' &&
+ name[4] == 'e' &&
+ name[5] == 't' &&
+ name[6] == 'e' &&
+ name[7] == 'n' &&
+ name[8] == 't')
+ { /* setnetent */
+ return -KEY_setnetent;
+ }
+
+ goto unknown;
+
+ case 'w':
+ if (name[1] == 'a' &&
+ name[2] == 'n' &&
+ name[3] == 't' &&
+ name[4] == 'a' &&
+ name[5] == 'r' &&
+ name[6] == 'r' &&
+ name[7] == 'a' &&
+ name[8] == 'y')
+ { /* wantarray */
+ return -KEY_wantarray;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 10: /* 9 tokens of length 10 */
+ switch (name[0])
+ {
+ case 'e':
+ if (name[1] == 'n' &&
+ name[2] == 'd')
+ {
+ switch (name[3])
+ {
+ case 'h':
+ if (name[4] == 'o' &&
+ name[5] == 's' &&
+ name[6] == 't' &&
+ name[7] == 'e' &&
+ name[8] == 'n' &&
+ name[9] == 't')
+ { /* endhostent */
+ return -KEY_endhostent;
+ }
+
+ goto unknown;
+
+ case 's':
+ if (name[4] == 'e' &&
+ name[5] == 'r' &&
+ name[6] == 'v' &&
+ name[7] == 'e' &&
+ name[8] == 'n' &&
+ name[9] == 't')
+ { /* endservent */
+ return -KEY_endservent;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+ }
+
+ goto unknown;
+
+ case 'g':
+ if (name[1] == 'e' &&
+ name[2] == 't')
+ {
+ switch (name[3])
+ {
+ case 'h':
+ if (name[4] == 'o' &&
+ name[5] == 's' &&
+ name[6] == 't' &&
+ name[7] == 'e' &&
+ name[8] == 'n' &&
+ name[9] == 't')
+ { /* gethostent */
+ return -KEY_gethostent;
+ }
+
+ goto unknown;
+
+ case 's':
+ switch (name[4])
+ {
+ case 'e':
+ if (name[5] == 'r' &&
+ name[6] == 'v' &&
+ name[7] == 'e' &&
+ name[8] == 'n' &&
+ name[9] == 't')
+ { /* getservent */
+ return -KEY_getservent;
+ }
+
+ goto unknown;
+
+ case 'o':
+ if (name[5] == 'c' &&
+ name[6] == 'k' &&
+ name[7] == 'o' &&
+ name[8] == 'p' &&
+ name[9] == 't')
+ { /* getsockopt */
+ return -KEY_getsockopt;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ default:
+ goto unknown;
+ }
+ }
+
+ goto unknown;
+
+ case 's':
+ switch (name[1])
+ {
+ case 'e':
+ if (name[2] == 't')
+ {
+ switch (name[3])
+ {
+ case 'h':
+ if (name[4] == 'o' &&
+ name[5] == 's' &&
+ name[6] == 't' &&
+ name[7] == 'e' &&
+ name[8] == 'n' &&
+ name[9] == 't')
+ { /* sethostent */
+ return -KEY_sethostent;
+ }
+
+ goto unknown;
+
+ case 's':
+ switch (name[4])
+ {
+ case 'e':
+ if (name[5] == 'r' &&
+ name[6] == 'v' &&
+ name[7] == 'e' &&
+ name[8] == 'n' &&
+ name[9] == 't')
+ { /* setservent */
+ return -KEY_setservent;
+ }
+
+ goto unknown;
+
+ case 'o':
+ if (name[5] == 'c' &&
+ name[6] == 'k' &&
+ name[7] == 'o' &&
+ name[8] == 'p' &&
+ name[9] == 't')
+ { /* setsockopt */
+ return -KEY_setsockopt;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ default:
+ goto unknown;
+ }
+ }
+
+ goto unknown;
+
+ case 'o':
+ if (name[2] == 'c' &&
+ name[3] == 'k' &&
+ name[4] == 'e' &&
+ name[5] == 't' &&
+ name[6] == 'p' &&
+ name[7] == 'a' &&
+ name[8] == 'i' &&
+ name[9] == 'r')
+ { /* socketpair */
+ return -KEY_socketpair;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ default:
+ goto unknown;
+ }
+
+ case 11: /* 8 tokens of length 11 */
+ switch (name[0])
+ {
+ case '_':
+ if (name[1] == '_' &&
+ name[2] == 'P' &&
+ name[3] == 'A' &&
+ name[4] == 'C' &&
+ name[5] == 'K' &&
+ name[6] == 'A' &&
+ name[7] == 'G' &&
+ name[8] == 'E' &&
+ name[9] == '_' &&
+ name[10] == '_')
+ { /* __PACKAGE__ */
+ return -KEY___PACKAGE__;
+ }
+
+ goto unknown;
+
+ case 'e':
+ if (name[1] == 'n' &&
+ name[2] == 'd' &&
+ name[3] == 'p' &&
+ name[4] == 'r' &&
+ name[5] == 'o' &&
+ name[6] == 't' &&
+ name[7] == 'o' &&
+ name[8] == 'e' &&
+ name[9] == 'n' &&
+ name[10] == 't')
+ { /* endprotoent */
+ return -KEY_endprotoent;
+ }
+
+ goto unknown;
+
+ case 'g':
+ if (name[1] == 'e' &&
+ name[2] == 't')
+ {
+ switch (name[3])
+ {
+ case 'p':
+ switch (name[4])
+ {
+ case 'e':
+ if (name[5] == 'e' &&
+ name[6] == 'r' &&
+ name[7] == 'n' &&
+ name[8] == 'a' &&
+ name[9] == 'm' &&
+ name[10] == 'e')
+ { /* getpeername */
+ return -KEY_getpeername;
+ }
+
+ goto unknown;
+
+ case 'r':
+ switch (name[5])
+ {
+ case 'i':
+ if (name[6] == 'o' &&
+ name[7] == 'r' &&
+ name[8] == 'i' &&
+ name[9] == 't' &&
+ name[10] == 'y')
+ { /* getpriority */
+ return -KEY_getpriority;
+ }
+
+ goto unknown;
+
+ case 'o':
+ if (name[6] == 't' &&
+ name[7] == 'o' &&
+ name[8] == 'e' &&
+ name[9] == 'n' &&
+ name[10] == 't')
+ { /* getprotoent */
+ return -KEY_getprotoent;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ default:
+ goto unknown;
+ }
+
+ case 's':
+ if (name[4] == 'o' &&
+ name[5] == 'c' &&
+ name[6] == 'k' &&
+ name[7] == 'n' &&
+ name[8] == 'a' &&
+ name[9] == 'm' &&
+ name[10] == 'e')
+ { /* getsockname */
+ return -KEY_getsockname;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+ }
+
+ goto unknown;
+
+ case 's':
+ if (name[1] == 'e' &&
+ name[2] == 't' &&
+ name[3] == 'p' &&
+ name[4] == 'r')
+ {
+ switch (name[5])
+ {
+ case 'i':
+ if (name[6] == 'o' &&
+ name[7] == 'r' &&
+ name[8] == 'i' &&
+ name[9] == 't' &&
+ name[10] == 'y')
+ { /* setpriority */
+ return -KEY_setpriority;
+ }
+
+ goto unknown;
+
+ case 'o':
+ if (name[6] == 't' &&
+ name[7] == 'o' &&
+ name[8] == 'e' &&
+ name[9] == 'n' &&
+ name[10] == 't')
+ { /* setprotoent */
+ return -KEY_setprotoent;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+ case 12: /* 2 tokens of length 12 */
+ if (name[0] == 'g' &&
+ name[1] == 'e' &&
+ name[2] == 't' &&
+ name[3] == 'n' &&
+ name[4] == 'e' &&
+ name[5] == 't' &&
+ name[6] == 'b' &&
+ name[7] == 'y')
+ {
+ switch (name[8])
+ {
+ case 'a':
+ if (name[9] == 'd' &&
+ name[10] == 'd' &&
+ name[11] == 'r')
+ { /* getnetbyaddr */
+ return -KEY_getnetbyaddr;
+ }
+
+ goto unknown;
+
+ case 'n':
+ if (name[9] == 'a' &&
+ name[10] == 'm' &&
+ name[11] == 'e')
+ { /* getnetbyname */
+ return -KEY_getnetbyname;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+ }
+
+ goto unknown;
+
+ case 13: /* 4 tokens of length 13 */
+ if (name[0] == 'g' &&
+ name[1] == 'e' &&
+ name[2] == 't')
+ {
+ switch (name[3])
+ {
+ case 'h':
+ if (name[4] == 'o' &&
+ name[5] == 's' &&
+ name[6] == 't' &&
+ name[7] == 'b' &&
+ name[8] == 'y')
+ {
+ switch (name[9])
+ {
+ case 'a':
+ if (name[10] == 'd' &&
+ name[11] == 'd' &&
+ name[12] == 'r')
+ { /* gethostbyaddr */
+ return -KEY_gethostbyaddr;
+ }
+
+ goto unknown;
+
+ case 'n':
+ if (name[10] == 'a' &&
+ name[11] == 'm' &&
+ name[12] == 'e')
+ { /* gethostbyname */
+ return -KEY_gethostbyname;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+ }
+
+ goto unknown;
+
+ case 's':
+ if (name[4] == 'e' &&
+ name[5] == 'r' &&
+ name[6] == 'v' &&
+ name[7] == 'b' &&
+ name[8] == 'y')
+ {
+ switch (name[9])
+ {
+ case 'n':
+ if (name[10] == 'a' &&
+ name[11] == 'm' &&
+ name[12] == 'e')
+ { /* getservbyname */
+ return -KEY_getservbyname;
+ }
+
+ goto unknown;
+
+ case 'p':
+ if (name[10] == 'o' &&
+ name[11] == 'r' &&
+ name[12] == 't')
+ { /* getservbyport */
+ return -KEY_getservbyport;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+ }
+
+ goto unknown;
+
+ case 14: /* 1 tokens of length 14 */
+ if (name[0] == 'g' &&
+ name[1] == 'e' &&
+ name[2] == 't' &&
+ name[3] == 'p' &&
+ name[4] == 'r' &&
+ name[5] == 'o' &&
+ name[6] == 't' &&
+ name[7] == 'o' &&
+ name[8] == 'b' &&
+ name[9] == 'y' &&
+ name[10] == 'n' &&
+ name[11] == 'a' &&
+ name[12] == 'm' &&
+ name[13] == 'e')
+ { /* getprotobyname */
+ return -KEY_getprotobyname;
+ }
+
+ goto unknown;
+
+ case 16: /* 1 tokens of length 16 */
+ if (name[0] == 'g' &&
+ name[1] == 'e' &&
+ name[2] == 't' &&
+ name[3] == 'p' &&
+ name[4] == 'r' &&
+ name[5] == 'o' &&
+ name[6] == 't' &&
+ name[7] == 'o' &&
+ name[8] == 'b' &&
+ name[9] == 'y' &&
+ name[10] == 'n' &&
+ name[11] == 'u' &&
+ name[12] == 'm' &&
+ name[13] == 'b' &&
+ name[14] == 'e' &&
+ name[15] == 'r')
+ { /* getprotobynumber */
+ return -KEY_getprotobynumber;
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
+
+unknown:
+ return 0;
+}
diff --git a/perl.h b/perl.h
index 7e1ec91a53..d3fee5d223 100644
--- a/perl.h
+++ b/perl.h
@@ -6142,6 +6142,14 @@ extern void moncontrol(int);
#define PERL_PV_PRETTY_DUMP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_QUOTE
#define PERL_PV_PRETTY_REGPROP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_LTGT|PERL_PV_ESCAPE_RE|PERL_PV_ESCAPE_NONASCII
+#ifdef PERL_CORE
+# define FEATURE_IS_ENABLED(name) \
+ ((0 != (PL_hints & HINT_LOCALIZE_HH)) \
+ && Perl_feature_is_enabled(aTHX_ STR_WITH_LEN(name)))
+/* The longest string we pass in. */
+# define MAX_FEATURE_LEN (sizeof("unicode_strings")-1)
+#endif
+
/*
(KEEP THIS LAST IN perl.h!)
diff --git a/perl_keyword.pl b/perl_keyword.pl
index 63813ab2b2..7eecff60bb 100644
--- a/perl_keyword.pl
+++ b/perl_keyword.pl
@@ -65,6 +65,11 @@ print <<END;
* The following code was generated by $0.
*/
+#include "EXTERN.h"
+#define PERL_IN_KEYWORDS_C
+#include "perl.h"
+#include "keywords.h"
+
I32
Perl_keyword (pTHX_ const char *name, I32 len, bool all_keywords)
{
diff --git a/proto.h b/proto.h
index 4eabf66d93..27dbc3a80f 100644
--- a/proto.h
+++ b/proto.h
@@ -925,6 +925,11 @@ PERL_CALLCONV char* Perl_fbm_instr(pTHX_ unsigned char* big, unsigned char* bige
#define PERL_ARGS_ASSERT_FBM_INSTR \
assert(big); assert(bigend); assert(littlestr)
+PERL_CALLCONV bool Perl_feature_is_enabled(pTHX_ const char *const name, STRLEN namelen)
+ __attribute__nonnull__(pTHX_1);
+#define PERL_ARGS_ASSERT_FEATURE_IS_ENABLED \
+ assert(name)
+
PERL_CALLCONV const char * Perl_fetch_cop_label(pTHX_ COP *const cop, STRLEN *len, U32 *flags)
__attribute__nonnull__(pTHX_1);
#define PERL_ARGS_ASSERT_FETCH_COP_LABEL \
@@ -6378,11 +6383,6 @@ STATIC void S_checkcomma(pTHX_ const char *s, const char *name, const char *what
assert(s); assert(name); assert(what)
STATIC int S_deprecate_commaless_var_list(pTHX);
-STATIC bool S_feature_is_enabled(pTHX_ const char *const name, STRLEN namelen)
- __attribute__nonnull__(pTHX_1);
-#define PERL_ARGS_ASSERT_FEATURE_IS_ENABLED \
- assert(name)
-
STATIC char * S_filter_gets(pTHX_ SV *sv, STRLEN append)
__attribute__warn_unused_result__
__attribute__nonnull__(pTHX_1);
diff --git a/toke.c b/toke.c
index cb096e989e..086da8302d 100644
--- a/toke.c
+++ b/toke.c
@@ -588,18 +588,11 @@ S_missingterm(pTHX_ char *s)
Perl_croak(aTHX_ "Can't find string terminator %c%s%c anywhere before EOF",q,s,q);
}
-#define FEATURE_IS_ENABLED(name) \
- ((0 != (PL_hints & HINT_LOCALIZE_HH)) \
- && S_feature_is_enabled(aTHX_ STR_WITH_LEN(name)))
-/* The longest string we pass in. */
-#define MAX_FEATURE_LEN (sizeof("unicode_strings")-1)
-
/*
- * S_feature_is_enabled
* Check whether the named feature is enabled.
*/
-STATIC bool
-S_feature_is_enabled(pTHX_ const char *const name, STRLEN namelen)
+bool
+Perl_feature_is_enabled(pTHX_ const char *const name, STRLEN namelen)
{
dVAR;
HV * const hinthv = GvHV(PL_hintgv);
@@ -607,7 +600,8 @@ S_feature_is_enabled(pTHX_ const char *const name, STRLEN namelen)
PERL_ARGS_ASSERT_FEATURE_IS_ENABLED;
- assert(namelen <= MAX_FEATURE_LEN);
+ if (namelen > MAX_FEATURE_LEN)
+ return FALSE;
memcpy(&he_name[8], name, namelen);
return (hinthv && hv_exists(hinthv, he_name, 8 + namelen));
@@ -8388,3399 +8382,6 @@ S_pending_ident(pTHX)
return WORD;
}
-/*
- * The following code was generated by perl_keyword.pl.
- */
-
-I32
-Perl_keyword (pTHX_ const char *name, I32 len, bool all_keywords)
-{
- dVAR;
-
- PERL_ARGS_ASSERT_KEYWORD;
-
- switch (len)
- {
- case 1: /* 5 tokens of length 1 */
- switch (name[0])
- {
- case 'm':
- { /* m */
- return KEY_m;
- }
-
- case 'q':
- { /* q */
- return KEY_q;
- }
-
- case 's':
- { /* s */
- return KEY_s;
- }
-
- case 'x':
- { /* x */
- return -KEY_x;
- }
-
- case 'y':
- { /* y */
- return KEY_y;
- }
-
- default:
- goto unknown;
- }
-
- case 2: /* 18 tokens of length 2 */
- switch (name[0])
- {
- case 'd':
- if (name[1] == 'o')
- { /* do */
- return KEY_do;
- }
-
- goto unknown;
-
- case 'e':
- if (name[1] == 'q')
- { /* eq */
- return -KEY_eq;
- }
-
- goto unknown;
-
- case 'g':
- switch (name[1])
- {
- case 'e':
- { /* ge */
- return -KEY_ge;
- }
-
- case 't':
- { /* gt */
- return -KEY_gt;
- }
-
- default:
- goto unknown;
- }
-
- case 'i':
- if (name[1] == 'f')
- { /* if */
- return KEY_if;
- }
-
- goto unknown;
-
- case 'l':
- switch (name[1])
- {
- case 'c':
- { /* lc */
- return -KEY_lc;
- }
-
- case 'e':
- { /* le */
- return -KEY_le;
- }
-
- case 't':
- { /* lt */
- return -KEY_lt;
- }
-
- default:
- goto unknown;
- }
-
- case 'm':
- if (name[1] == 'y')
- { /* my */
- return KEY_my;
- }
-
- goto unknown;
-
- case 'n':
- switch (name[1])
- {
- case 'e':
- { /* ne */
- return -KEY_ne;
- }
-
- case 'o':
- { /* no */
- return KEY_no;
- }
-
- default:
- goto unknown;
- }
-
- case 'o':
- if (name[1] == 'r')
- { /* or */
- return -KEY_or;
- }
-
- goto unknown;
-
- case 'q':
- switch (name[1])
- {
- case 'q':
- { /* qq */
- return KEY_qq;
- }
-
- case 'r':
- { /* qr */
- return KEY_qr;
- }
-
- case 'w':
- { /* qw */
- return KEY_qw;
- }
-
- case 'x':
- { /* qx */
- return KEY_qx;
- }
-
- default:
- goto unknown;
- }
-
- case 't':
- if (name[1] == 'r')
- { /* tr */
- return KEY_tr;
- }
-
- goto unknown;
-
- case 'u':
- if (name[1] == 'c')
- { /* uc */
- return -KEY_uc;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 3: /* 29 tokens of length 3 */
- switch (name[0])
- {
- case 'E':
- if (name[1] == 'N' &&
- name[2] == 'D')
- { /* END */
- return KEY_END;
- }
-
- goto unknown;
-
- case 'a':
- switch (name[1])
- {
- case 'b':
- if (name[2] == 's')
- { /* abs */
- return -KEY_abs;
- }
-
- goto unknown;
-
- case 'n':
- if (name[2] == 'd')
- { /* and */
- return -KEY_and;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 'c':
- switch (name[1])
- {
- case 'h':
- if (name[2] == 'r')
- { /* chr */
- return -KEY_chr;
- }
-
- goto unknown;
-
- case 'm':
- if (name[2] == 'p')
- { /* cmp */
- return -KEY_cmp;
- }
-
- goto unknown;
-
- case 'o':
- if (name[2] == 's')
- { /* cos */
- return -KEY_cos;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 'd':
- if (name[1] == 'i' &&
- name[2] == 'e')
- { /* die */
- return -KEY_die;
- }
-
- goto unknown;
-
- case 'e':
- switch (name[1])
- {
- case 'o':
- if (name[2] == 'f')
- { /* eof */
- return -KEY_eof;
- }
-
- goto unknown;
-
- case 'x':
- if (name[2] == 'p')
- { /* exp */
- return -KEY_exp;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 'f':
- if (name[1] == 'o' &&
- name[2] == 'r')
- { /* for */
- return KEY_for;
- }
-
- goto unknown;
-
- case 'h':
- if (name[1] == 'e' &&
- name[2] == 'x')
- { /* hex */
- return -KEY_hex;
- }
-
- goto unknown;
-
- case 'i':
- if (name[1] == 'n' &&
- name[2] == 't')
- { /* int */
- return -KEY_int;
- }
-
- goto unknown;
-
- case 'l':
- if (name[1] == 'o' &&
- name[2] == 'g')
- { /* log */
- return -KEY_log;
- }
-
- goto unknown;
-
- case 'm':
- if (name[1] == 'a' &&
- name[2] == 'p')
- { /* map */
- return KEY_map;
- }
-
- goto unknown;
-
- case 'n':
- if (name[1] == 'o' &&
- name[2] == 't')
- { /* not */
- return -KEY_not;
- }
-
- goto unknown;
-
- case 'o':
- switch (name[1])
- {
- case 'c':
- if (name[2] == 't')
- { /* oct */
- return -KEY_oct;
- }
-
- goto unknown;
-
- case 'r':
- if (name[2] == 'd')
- { /* ord */
- return -KEY_ord;
- }
-
- goto unknown;
-
- case 'u':
- if (name[2] == 'r')
- { /* our */
- return KEY_our;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 'p':
- if (name[1] == 'o')
- {
- switch (name[2])
- {
- case 'p':
- { /* pop */
- return -KEY_pop;
- }
-
- case 's':
- { /* pos */
- return KEY_pos;
- }
-
- default:
- goto unknown;
- }
- }
-
- goto unknown;
-
- case 'r':
- if (name[1] == 'e' &&
- name[2] == 'f')
- { /* ref */
- return -KEY_ref;
- }
-
- goto unknown;
-
- case 's':
- switch (name[1])
- {
- case 'a':
- if (name[2] == 'y')
- { /* say */
- return (all_keywords || FEATURE_IS_ENABLED("say") ? KEY_say : 0);
- }
-
- goto unknown;
-
- case 'i':
- if (name[2] == 'n')
- { /* sin */
- return -KEY_sin;
- }
-
- goto unknown;
-
- case 'u':
- if (name[2] == 'b')
- { /* sub */
- return KEY_sub;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 't':
- if (name[1] == 'i' &&
- name[2] == 'e')
- { /* tie */
- return -KEY_tie;
- }
-
- goto unknown;
-
- case 'u':
- if (name[1] == 's' &&
- name[2] == 'e')
- { /* use */
- return KEY_use;
- }
-
- goto unknown;
-
- case 'v':
- if (name[1] == 'e' &&
- name[2] == 'c')
- { /* vec */
- return -KEY_vec;
- }
-
- goto unknown;
-
- case 'x':
- if (name[1] == 'o' &&
- name[2] == 'r')
- { /* xor */
- return -KEY_xor;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 4: /* 41 tokens of length 4 */
- switch (name[0])
- {
- case 'C':
- if (name[1] == 'O' &&
- name[2] == 'R' &&
- name[3] == 'E')
- { /* CORE */
- return -KEY_CORE;
- }
-
- goto unknown;
-
- case 'I':
- if (name[1] == 'N' &&
- name[2] == 'I' &&
- name[3] == 'T')
- { /* INIT */
- return KEY_INIT;
- }
-
- goto unknown;
-
- case 'b':
- if (name[1] == 'i' &&
- name[2] == 'n' &&
- name[3] == 'd')
- { /* bind */
- return -KEY_bind;
- }
-
- goto unknown;
-
- case 'c':
- if (name[1] == 'h' &&
- name[2] == 'o' &&
- name[3] == 'p')
- { /* chop */
- return -KEY_chop;
- }
-
- goto unknown;
-
- case 'd':
- if (name[1] == 'u' &&
- name[2] == 'm' &&
- name[3] == 'p')
- { /* dump */
- return -KEY_dump;
- }
-
- goto unknown;
-
- case 'e':
- switch (name[1])
- {
- case 'a':
- if (name[2] == 'c' &&
- name[3] == 'h')
- { /* each */
- return -KEY_each;
- }
-
- goto unknown;
-
- case 'l':
- if (name[2] == 's' &&
- name[3] == 'e')
- { /* else */
- return KEY_else;
- }
-
- goto unknown;
-
- case 'v':
- if (name[2] == 'a' &&
- name[3] == 'l')
- { /* eval */
- return KEY_eval;
- }
-
- goto unknown;
-
- case 'x':
- switch (name[2])
- {
- case 'e':
- if (name[3] == 'c')
- { /* exec */
- return -KEY_exec;
- }
-
- goto unknown;
-
- case 'i':
- if (name[3] == 't')
- { /* exit */
- return -KEY_exit;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- default:
- goto unknown;
- }
-
- case 'f':
- if (name[1] == 'o' &&
- name[2] == 'r' &&
- name[3] == 'k')
- { /* fork */
- return -KEY_fork;
- }
-
- goto unknown;
-
- case 'g':
- switch (name[1])
- {
- case 'e':
- if (name[2] == 't' &&
- name[3] == 'c')
- { /* getc */
- return -KEY_getc;
- }
-
- goto unknown;
-
- case 'l':
- if (name[2] == 'o' &&
- name[3] == 'b')
- { /* glob */
- return KEY_glob;
- }
-
- goto unknown;
-
- case 'o':
- if (name[2] == 't' &&
- name[3] == 'o')
- { /* goto */
- return KEY_goto;
- }
-
- goto unknown;
-
- case 'r':
- if (name[2] == 'e' &&
- name[3] == 'p')
- { /* grep */
- return KEY_grep;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 'j':
- if (name[1] == 'o' &&
- name[2] == 'i' &&
- name[3] == 'n')
- { /* join */
- return -KEY_join;
- }
-
- goto unknown;
-
- case 'k':
- switch (name[1])
- {
- case 'e':
- if (name[2] == 'y' &&
- name[3] == 's')
- { /* keys */
- return -KEY_keys;
- }
-
- goto unknown;
-
- case 'i':
- if (name[2] == 'l' &&
- name[3] == 'l')
- { /* kill */
- return -KEY_kill;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 'l':
- switch (name[1])
- {
- case 'a':
- if (name[2] == 's' &&
- name[3] == 't')
- { /* last */
- return KEY_last;
- }
-
- goto unknown;
-
- case 'i':
- if (name[2] == 'n' &&
- name[3] == 'k')
- { /* link */
- return -KEY_link;
- }
-
- goto unknown;
-
- case 'o':
- if (name[2] == 'c' &&
- name[3] == 'k')
- { /* lock */
- return -KEY_lock;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 'n':
- if (name[1] == 'e' &&
- name[2] == 'x' &&
- name[3] == 't')
- { /* next */
- return KEY_next;
- }
-
- goto unknown;
-
- case 'o':
- if (name[1] == 'p' &&
- name[2] == 'e' &&
- name[3] == 'n')
- { /* open */
- return -KEY_open;
- }
-
- goto unknown;
-
- case 'p':
- switch (name[1])
- {
- case 'a':
- if (name[2] == 'c' &&
- name[3] == 'k')
- { /* pack */
- return -KEY_pack;
- }
-
- goto unknown;
-
- case 'i':
- if (name[2] == 'p' &&
- name[3] == 'e')
- { /* pipe */
- return -KEY_pipe;
- }
-
- goto unknown;
-
- case 'u':
- if (name[2] == 's' &&
- name[3] == 'h')
- { /* push */
- return -KEY_push;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 'r':
- switch (name[1])
- {
- case 'a':
- if (name[2] == 'n' &&
- name[3] == 'd')
- { /* rand */
- return -KEY_rand;
- }
-
- goto unknown;
-
- case 'e':
- switch (name[2])
- {
- case 'a':
- if (name[3] == 'd')
- { /* read */
- return -KEY_read;
- }
-
- goto unknown;
-
- case 'c':
- if (name[3] == 'v')
- { /* recv */
- return -KEY_recv;
- }
-
- goto unknown;
-
- case 'd':
- if (name[3] == 'o')
- { /* redo */
- return KEY_redo;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- default:
- goto unknown;
- }
-
- case 's':
- switch (name[1])
- {
- case 'e':
- switch (name[2])
- {
- case 'e':
- if (name[3] == 'k')
- { /* seek */
- return -KEY_seek;
- }
-
- goto unknown;
-
- case 'n':
- if (name[3] == 'd')
- { /* send */
- return -KEY_send;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 'o':
- if (name[2] == 'r' &&
- name[3] == 't')
- { /* sort */
- return KEY_sort;
- }
-
- goto unknown;
-
- case 'q':
- if (name[2] == 'r' &&
- name[3] == 't')
- { /* sqrt */
- return -KEY_sqrt;
- }
-
- goto unknown;
-
- case 't':
- if (name[2] == 'a' &&
- name[3] == 't')
- { /* stat */
- return -KEY_stat;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 't':
- switch (name[1])
- {
- case 'e':
- if (name[2] == 'l' &&
- name[3] == 'l')
- { /* tell */
- return -KEY_tell;
- }
-
- goto unknown;
-
- case 'i':
- switch (name[2])
- {
- case 'e':
- if (name[3] == 'd')
- { /* tied */
- return -KEY_tied;
- }
-
- goto unknown;
-
- case 'm':
- if (name[3] == 'e')
- { /* time */
- return -KEY_time;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- default:
- goto unknown;
- }
-
- case 'w':
- switch (name[1])
- {
- case 'a':
- switch (name[2])
- {
- case 'i':
- if (name[3] == 't')
- { /* wait */
- return -KEY_wait;
- }
-
- goto unknown;
-
- case 'r':
- if (name[3] == 'n')
- { /* warn */
- return -KEY_warn;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 'h':
- if (name[2] == 'e' &&
- name[3] == 'n')
- { /* when */
- return (all_keywords || FEATURE_IS_ENABLED("switch") ? KEY_when : 0);
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- default:
- goto unknown;
- }
-
- case 5: /* 39 tokens of length 5 */
- switch (name[0])
- {
- case 'B':
- if (name[1] == 'E' &&
- name[2] == 'G' &&
- name[3] == 'I' &&
- name[4] == 'N')
- { /* BEGIN */
- return KEY_BEGIN;
- }
-
- goto unknown;
-
- case 'C':
- if (name[1] == 'H' &&
- name[2] == 'E' &&
- name[3] == 'C' &&
- name[4] == 'K')
- { /* CHECK */
- return KEY_CHECK;
- }
-
- goto unknown;
-
- case 'a':
- switch (name[1])
- {
- case 'l':
- if (name[2] == 'a' &&
- name[3] == 'r' &&
- name[4] == 'm')
- { /* alarm */
- return -KEY_alarm;
- }
-
- goto unknown;
-
- case 't':
- if (name[2] == 'a' &&
- name[3] == 'n' &&
- name[4] == '2')
- { /* atan2 */
- return -KEY_atan2;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 'b':
- switch (name[1])
- {
- case 'l':
- if (name[2] == 'e' &&
- name[3] == 's' &&
- name[4] == 's')
- { /* bless */
- return -KEY_bless;
- }
-
- goto unknown;
-
- case 'r':
- if (name[2] == 'e' &&
- name[3] == 'a' &&
- name[4] == 'k')
- { /* break */
- return (all_keywords || FEATURE_IS_ENABLED("switch") ? -KEY_break : 0);
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 'c':
- switch (name[1])
- {
- case 'h':
- switch (name[2])
- {
- case 'd':
- if (name[3] == 'i' &&
- name[4] == 'r')
- { /* chdir */
- return -KEY_chdir;
- }
-
- goto unknown;
-
- case 'm':
- if (name[3] == 'o' &&
- name[4] == 'd')
- { /* chmod */
- return -KEY_chmod;
- }
-
- goto unknown;
-
- case 'o':
- switch (name[3])
- {
- case 'm':
- if (name[4] == 'p')
- { /* chomp */
- return -KEY_chomp;
- }
-
- goto unknown;
-
- case 'w':
- if (name[4] == 'n')
- { /* chown */
- return -KEY_chown;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- default:
- goto unknown;
- }
-
- case 'l':
- if (name[2] == 'o' &&
- name[3] == 's' &&
- name[4] == 'e')
- { /* close */
- return -KEY_close;
- }
-
- goto unknown;
-
- case 'r':
- if (name[2] == 'y' &&
- name[3] == 'p' &&
- name[4] == 't')
- { /* crypt */
- return -KEY_crypt;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 'e':
- if (name[1] == 'l' &&
- name[2] == 's' &&
- name[3] == 'i' &&
- name[4] == 'f')
- { /* elsif */
- return KEY_elsif;
- }
-
- goto unknown;
-
- case 'f':
- switch (name[1])
- {
- case 'c':
- if (name[2] == 'n' &&
- name[3] == 't' &&
- name[4] == 'l')
- { /* fcntl */
- return -KEY_fcntl;
- }
-
- goto unknown;
-
- case 'l':
- if (name[2] == 'o' &&
- name[3] == 'c' &&
- name[4] == 'k')
- { /* flock */
- return -KEY_flock;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 'g':
- if (name[1] == 'i' &&
- name[2] == 'v' &&
- name[3] == 'e' &&
- name[4] == 'n')
- { /* given */
- return (all_keywords || FEATURE_IS_ENABLED("switch") ? KEY_given : 0);
- }
-
- goto unknown;
-
- case 'i':
- switch (name[1])
- {
- case 'n':
- if (name[2] == 'd' &&
- name[3] == 'e' &&
- name[4] == 'x')
- { /* index */
- return -KEY_index;
- }
-
- goto unknown;
-
- case 'o':
- if (name[2] == 'c' &&
- name[3] == 't' &&
- name[4] == 'l')
- { /* ioctl */
- return -KEY_ioctl;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 'l':
- switch (name[1])
- {
- case 'o':
- if (name[2] == 'c' &&
- name[3] == 'a' &&
- name[4] == 'l')
- { /* local */
- return KEY_local;
- }
-
- goto unknown;
-
- case 's':
- if (name[2] == 't' &&
- name[3] == 'a' &&
- name[4] == 't')
- { /* lstat */
- return -KEY_lstat;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 'm':
- if (name[1] == 'k' &&
- name[2] == 'd' &&
- name[3] == 'i' &&
- name[4] == 'r')
- { /* mkdir */
- return -KEY_mkdir;
- }
-
- goto unknown;
-
- case 'p':
- if (name[1] == 'r' &&
- name[2] == 'i' &&
- name[3] == 'n' &&
- name[4] == 't')
- { /* print */
- return KEY_print;
- }
-
- goto unknown;
-
- case 'r':
- switch (name[1])
- {
- case 'e':
- if (name[2] == 's' &&
- name[3] == 'e' &&
- name[4] == 't')
- { /* reset */
- return -KEY_reset;
- }
-
- goto unknown;
-
- case 'm':
- if (name[2] == 'd' &&
- name[3] == 'i' &&
- name[4] == 'r')
- { /* rmdir */
- return -KEY_rmdir;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 's':
- switch (name[1])
- {
- case 'e':
- if (name[2] == 'm' &&
- name[3] == 'o' &&
- name[4] == 'p')
- { /* semop */
- return -KEY_semop;
- }
-
- goto unknown;
-
- case 'h':
- if (name[2] == 'i' &&
- name[3] == 'f' &&
- name[4] == 't')
- { /* shift */
- return -KEY_shift;
- }
-
- goto unknown;
-
- case 'l':
- if (name[2] == 'e' &&
- name[3] == 'e' &&
- name[4] == 'p')
- { /* sleep */
- return -KEY_sleep;
- }
-
- goto unknown;
-
- case 'p':
- if (name[2] == 'l' &&
- name[3] == 'i' &&
- name[4] == 't')
- { /* split */
- return KEY_split;
- }
-
- goto unknown;
-
- case 'r':
- if (name[2] == 'a' &&
- name[3] == 'n' &&
- name[4] == 'd')
- { /* srand */
- return -KEY_srand;
- }
-
- goto unknown;
-
- case 't':
- switch (name[2])
- {
- case 'a':
- if (name[3] == 't' &&
- name[4] == 'e')
- { /* state */
- return (all_keywords || FEATURE_IS_ENABLED("state") ? KEY_state : 0);
- }
-
- goto unknown;
-
- case 'u':
- if (name[3] == 'd' &&
- name[4] == 'y')
- { /* study */
- return KEY_study;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- default:
- goto unknown;
- }
-
- case 't':
- if (name[1] == 'i' &&
- name[2] == 'm' &&
- name[3] == 'e' &&
- name[4] == 's')
- { /* times */
- return -KEY_times;
- }
-
- goto unknown;
-
- case 'u':
- switch (name[1])
- {
- case 'm':
- if (name[2] == 'a' &&
- name[3] == 's' &&
- name[4] == 'k')
- { /* umask */
- return -KEY_umask;
- }
-
- goto unknown;
-
- case 'n':
- switch (name[2])
- {
- case 'd':
- if (name[3] == 'e' &&
- name[4] == 'f')
- { /* undef */
- return KEY_undef;
- }
-
- goto unknown;
-
- case 't':
- if (name[3] == 'i')
- {
- switch (name[4])
- {
- case 'e':
- { /* untie */
- return -KEY_untie;
- }
-
- case 'l':
- { /* until */
- return KEY_until;
- }
-
- default:
- goto unknown;
- }
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 't':
- if (name[2] == 'i' &&
- name[3] == 'm' &&
- name[4] == 'e')
- { /* utime */
- return -KEY_utime;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 'w':
- switch (name[1])
- {
- case 'h':
- if (name[2] == 'i' &&
- name[3] == 'l' &&
- name[4] == 'e')
- { /* while */
- return KEY_while;
- }
-
- goto unknown;
-
- case 'r':
- if (name[2] == 'i' &&
- name[3] == 't' &&
- name[4] == 'e')
- { /* write */
- return -KEY_write;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- default:
- goto unknown;
- }
-
- case 6: /* 33 tokens of length 6 */
- switch (name[0])
- {
- case 'a':
- if (name[1] == 'c' &&
- name[2] == 'c' &&
- name[3] == 'e' &&
- name[4] == 'p' &&
- name[5] == 't')
- { /* accept */
- return -KEY_accept;
- }
-
- goto unknown;
-
- case 'c':
- switch (name[1])
- {
- case 'a':
- if (name[2] == 'l' &&
- name[3] == 'l' &&
- name[4] == 'e' &&
- name[5] == 'r')
- { /* caller */
- return -KEY_caller;
- }
-
- goto unknown;
-
- case 'h':
- if (name[2] == 'r' &&
- name[3] == 'o' &&
- name[4] == 'o' &&
- name[5] == 't')
- { /* chroot */
- return -KEY_chroot;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 'd':
- if (name[1] == 'e' &&
- name[2] == 'l' &&
- name[3] == 'e' &&
- name[4] == 't' &&
- name[5] == 'e')
- { /* delete */
- return KEY_delete;
- }
-
- goto unknown;
-
- case 'e':
- switch (name[1])
- {
- case 'l':
- if (name[2] == 's' &&
- name[3] == 'e' &&
- name[4] == 'i' &&
- name[5] == 'f')
- { /* elseif */
- Perl_ck_warner_d(aTHX_ packWARN(WARN_SYNTAX), "elseif should be elsif");
- }
-
- goto unknown;
-
- case 'x':
- if (name[2] == 'i' &&
- name[3] == 's' &&
- name[4] == 't' &&
- name[5] == 's')
- { /* exists */
- return KEY_exists;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 'f':
- switch (name[1])
- {
- case 'i':
- if (name[2] == 'l' &&
- name[3] == 'e' &&
- name[4] == 'n' &&
- name[5] == 'o')
- { /* fileno */
- return -KEY_fileno;
- }
-
- goto unknown;
-
- case 'o':
- if (name[2] == 'r' &&
- name[3] == 'm' &&
- name[4] == 'a' &&
- name[5] == 't')
- { /* format */
- return KEY_format;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 'g':
- if (name[1] == 'm' &&
- name[2] == 't' &&
- name[3] == 'i' &&
- name[4] == 'm' &&
- name[5] == 'e')
- { /* gmtime */
- return -KEY_gmtime;
- }
-
- goto unknown;
-
- case 'l':
- switch (name[1])
- {
- case 'e':
- if (name[2] == 'n' &&
- name[3] == 'g' &&
- name[4] == 't' &&
- name[5] == 'h')
- { /* length */
- return -KEY_length;
- }
-
- goto unknown;
-
- case 'i':
- if (name[2] == 's' &&
- name[3] == 't' &&
- name[4] == 'e' &&
- name[5] == 'n')
- { /* listen */
- return -KEY_listen;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 'm':
- if (name[1] == 's' &&
- name[2] == 'g')
- {
- switch (name[3])
- {
- case 'c':
- if (name[4] == 't' &&
- name[5] == 'l')
- { /* msgctl */
- return -KEY_msgctl;
- }
-
- goto unknown;
-
- case 'g':
- if (name[4] == 'e' &&
- name[5] == 't')
- { /* msgget */
- return -KEY_msgget;
- }
-
- goto unknown;
-
- case 'r':
- if (name[4] == 'c' &&
- name[5] == 'v')
- { /* msgrcv */
- return -KEY_msgrcv;
- }
-
- goto unknown;
-
- case 's':
- if (name[4] == 'n' &&
- name[5] == 'd')
- { /* msgsnd */
- return -KEY_msgsnd;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
- }
-
- goto unknown;
-
- case 'p':
- if (name[1] == 'r' &&
- name[2] == 'i' &&
- name[3] == 'n' &&
- name[4] == 't' &&
- name[5] == 'f')
- { /* printf */
- return KEY_printf;
- }
-
- goto unknown;
-
- case 'r':
- switch (name[1])
- {
- case 'e':
- switch (name[2])
- {
- case 'n':
- if (name[3] == 'a' &&
- name[4] == 'm' &&
- name[5] == 'e')
- { /* rename */
- return -KEY_rename;
- }
-
- goto unknown;
-
- case 't':
- if (name[3] == 'u' &&
- name[4] == 'r' &&
- name[5] == 'n')
- { /* return */
- return KEY_return;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 'i':
- if (name[2] == 'n' &&
- name[3] == 'd' &&
- name[4] == 'e' &&
- name[5] == 'x')
- { /* rindex */
- return -KEY_rindex;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 's':
- switch (name[1])
- {
- case 'c':
- if (name[2] == 'a' &&
- name[3] == 'l' &&
- name[4] == 'a' &&
- name[5] == 'r')
- { /* scalar */
- return KEY_scalar;
- }
-
- goto unknown;
-
- case 'e':
- switch (name[2])
- {
- case 'l':
- if (name[3] == 'e' &&
- name[4] == 'c' &&
- name[5] == 't')
- { /* select */
- return -KEY_select;
- }
-
- goto unknown;
-
- case 'm':
- switch (name[3])
- {
- case 'c':
- if (name[4] == 't' &&
- name[5] == 'l')
- { /* semctl */
- return -KEY_semctl;
- }
-
- goto unknown;
-
- case 'g':
- if (name[4] == 'e' &&
- name[5] == 't')
- { /* semget */
- return -KEY_semget;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- default:
- goto unknown;
- }
-
- case 'h':
- if (name[2] == 'm')
- {
- switch (name[3])
- {
- case 'c':
- if (name[4] == 't' &&
- name[5] == 'l')
- { /* shmctl */
- return -KEY_shmctl;
- }
-
- goto unknown;
-
- case 'g':
- if (name[4] == 'e' &&
- name[5] == 't')
- { /* shmget */
- return -KEY_shmget;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
- }
-
- goto unknown;
-
- case 'o':
- if (name[2] == 'c' &&
- name[3] == 'k' &&
- name[4] == 'e' &&
- name[5] == 't')
- { /* socket */
- return -KEY_socket;
- }
-
- goto unknown;
-
- case 'p':
- if (name[2] == 'l' &&
- name[3] == 'i' &&
- name[4] == 'c' &&
- name[5] == 'e')
- { /* splice */
- return -KEY_splice;
- }
-
- goto unknown;
-
- case 'u':
- if (name[2] == 'b' &&
- name[3] == 's' &&
- name[4] == 't' &&
- name[5] == 'r')
- { /* substr */
- return -KEY_substr;
- }
-
- goto unknown;
-
- case 'y':
- if (name[2] == 's' &&
- name[3] == 't' &&
- name[4] == 'e' &&
- name[5] == 'm')
- { /* system */
- return -KEY_system;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 'u':
- if (name[1] == 'n')
- {
- switch (name[2])
- {
- case 'l':
- switch (name[3])
- {
- case 'e':
- if (name[4] == 's' &&
- name[5] == 's')
- { /* unless */
- return KEY_unless;
- }
-
- goto unknown;
-
- case 'i':
- if (name[4] == 'n' &&
- name[5] == 'k')
- { /* unlink */
- return -KEY_unlink;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 'p':
- if (name[3] == 'a' &&
- name[4] == 'c' &&
- name[5] == 'k')
- { /* unpack */
- return -KEY_unpack;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
- }
-
- goto unknown;
-
- case 'v':
- if (name[1] == 'a' &&
- name[2] == 'l' &&
- name[3] == 'u' &&
- name[4] == 'e' &&
- name[5] == 's')
- { /* values */
- return -KEY_values;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 7: /* 29 tokens of length 7 */
- switch (name[0])
- {
- case 'D':
- if (name[1] == 'E' &&
- name[2] == 'S' &&
- name[3] == 'T' &&
- name[4] == 'R' &&
- name[5] == 'O' &&
- name[6] == 'Y')
- { /* DESTROY */
- return KEY_DESTROY;
- }
-
- goto unknown;
-
- case '_':
- if (name[1] == '_' &&
- name[2] == 'E' &&
- name[3] == 'N' &&
- name[4] == 'D' &&
- name[5] == '_' &&
- name[6] == '_')
- { /* __END__ */
- return KEY___END__;
- }
-
- goto unknown;
-
- case 'b':
- if (name[1] == 'i' &&
- name[2] == 'n' &&
- name[3] == 'm' &&
- name[4] == 'o' &&
- name[5] == 'd' &&
- name[6] == 'e')
- { /* binmode */
- return -KEY_binmode;
- }
-
- goto unknown;
-
- case 'c':
- if (name[1] == 'o' &&
- name[2] == 'n' &&
- name[3] == 'n' &&
- name[4] == 'e' &&
- name[5] == 'c' &&
- name[6] == 't')
- { /* connect */
- return -KEY_connect;
- }
-
- goto unknown;
-
- case 'd':
- switch (name[1])
- {
- case 'b':
- if (name[2] == 'm' &&
- name[3] == 'o' &&
- name[4] == 'p' &&
- name[5] == 'e' &&
- name[6] == 'n')
- { /* dbmopen */
- return -KEY_dbmopen;
- }
-
- goto unknown;
-
- case 'e':
- if (name[2] == 'f')
- {
- switch (name[3])
- {
- case 'a':
- if (name[4] == 'u' &&
- name[5] == 'l' &&
- name[6] == 't')
- { /* default */
- return (all_keywords || FEATURE_IS_ENABLED("switch") ? KEY_default : 0);
- }
-
- goto unknown;
-
- case 'i':
- if (name[4] == 'n' &&
- name[5] == 'e' &&
- name[6] == 'd')
- { /* defined */
- return KEY_defined;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 'f':
- if (name[1] == 'o' &&
- name[2] == 'r' &&
- name[3] == 'e' &&
- name[4] == 'a' &&
- name[5] == 'c' &&
- name[6] == 'h')
- { /* foreach */
- return KEY_foreach;
- }
-
- goto unknown;
-
- case 'g':
- if (name[1] == 'e' &&
- name[2] == 't' &&
- name[3] == 'p')
- {
- switch (name[4])
- {
- case 'g':
- if (name[5] == 'r' &&
- name[6] == 'p')
- { /* getpgrp */
- return -KEY_getpgrp;
- }
-
- goto unknown;
-
- case 'p':
- if (name[5] == 'i' &&
- name[6] == 'd')
- { /* getppid */
- return -KEY_getppid;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
- }
-
- goto unknown;
-
- case 'l':
- if (name[1] == 'c' &&
- name[2] == 'f' &&
- name[3] == 'i' &&
- name[4] == 'r' &&
- name[5] == 's' &&
- name[6] == 't')
- { /* lcfirst */
- return -KEY_lcfirst;
- }
-
- goto unknown;
-
- case 'o':
- if (name[1] == 'p' &&
- name[2] == 'e' &&
- name[3] == 'n' &&
- name[4] == 'd' &&
- name[5] == 'i' &&
- name[6] == 'r')
- { /* opendir */
- return -KEY_opendir;
- }
-
- goto unknown;
-
- case 'p':
- if (name[1] == 'a' &&
- name[2] == 'c' &&
- name[3] == 'k' &&
- name[4] == 'a' &&
- name[5] == 'g' &&
- name[6] == 'e')
- { /* package */
- return KEY_package;
- }
-
- goto unknown;
-
- case 'r':
- if (name[1] == 'e')
- {
- switch (name[2])
- {
- case 'a':
- if (name[3] == 'd' &&
- name[4] == 'd' &&
- name[5] == 'i' &&
- name[6] == 'r')
- { /* readdir */
- return -KEY_readdir;
- }
-
- goto unknown;
-
- case 'q':
- if (name[3] == 'u' &&
- name[4] == 'i' &&
- name[5] == 'r' &&
- name[6] == 'e')
- { /* require */
- return KEY_require;
- }
-
- goto unknown;
-
- case 'v':
- if (name[3] == 'e' &&
- name[4] == 'r' &&
- name[5] == 's' &&
- name[6] == 'e')
- { /* reverse */
- return -KEY_reverse;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
- }
-
- goto unknown;
-
- case 's':
- switch (name[1])
- {
- case 'e':
- switch (name[2])
- {
- case 'e':
- if (name[3] == 'k' &&
- name[4] == 'd' &&
- name[5] == 'i' &&
- name[6] == 'r')
- { /* seekdir */
- return -KEY_seekdir;
- }
-
- goto unknown;
-
- case 't':
- if (name[3] == 'p' &&
- name[4] == 'g' &&
- name[5] == 'r' &&
- name[6] == 'p')
- { /* setpgrp */
- return -KEY_setpgrp;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 'h':
- if (name[2] == 'm' &&
- name[3] == 'r' &&
- name[4] == 'e' &&
- name[5] == 'a' &&
- name[6] == 'd')
- { /* shmread */
- return -KEY_shmread;
- }
-
- goto unknown;
-
- case 'p':
- if (name[2] == 'r' &&
- name[3] == 'i' &&
- name[4] == 'n' &&
- name[5] == 't' &&
- name[6] == 'f')
- { /* sprintf */
- return -KEY_sprintf;
- }
-
- goto unknown;
-
- case 'y':
- switch (name[2])
- {
- case 'm':
- if (name[3] == 'l' &&
- name[4] == 'i' &&
- name[5] == 'n' &&
- name[6] == 'k')
- { /* symlink */
- return -KEY_symlink;
- }
-
- goto unknown;
-
- case 's':
- switch (name[3])
- {
- case 'c':
- if (name[4] == 'a' &&
- name[5] == 'l' &&
- name[6] == 'l')
- { /* syscall */
- return -KEY_syscall;
- }
-
- goto unknown;
-
- case 'o':
- if (name[4] == 'p' &&
- name[5] == 'e' &&
- name[6] == 'n')
- { /* sysopen */
- return -KEY_sysopen;
- }
-
- goto unknown;
-
- case 'r':
- if (name[4] == 'e' &&
- name[5] == 'a' &&
- name[6] == 'd')
- { /* sysread */
- return -KEY_sysread;
- }
-
- goto unknown;
-
- case 's':
- if (name[4] == 'e' &&
- name[5] == 'e' &&
- name[6] == 'k')
- { /* sysseek */
- return -KEY_sysseek;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- default:
- goto unknown;
- }
-
- default:
- goto unknown;
- }
-
- case 't':
- if (name[1] == 'e' &&
- name[2] == 'l' &&
- name[3] == 'l' &&
- name[4] == 'd' &&
- name[5] == 'i' &&
- name[6] == 'r')
- { /* telldir */
- return -KEY_telldir;
- }
-
- goto unknown;
-
- case 'u':
- switch (name[1])
- {
- case 'c':
- if (name[2] == 'f' &&
- name[3] == 'i' &&
- name[4] == 'r' &&
- name[5] == 's' &&
- name[6] == 't')
- { /* ucfirst */
- return -KEY_ucfirst;
- }
-
- goto unknown;
-
- case 'n':
- if (name[2] == 's' &&
- name[3] == 'h' &&
- name[4] == 'i' &&
- name[5] == 'f' &&
- name[6] == 't')
- { /* unshift */
- return -KEY_unshift;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 'w':
- if (name[1] == 'a' &&
- name[2] == 'i' &&
- name[3] == 't' &&
- name[4] == 'p' &&
- name[5] == 'i' &&
- name[6] == 'd')
- { /* waitpid */
- return -KEY_waitpid;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 8: /* 26 tokens of length 8 */
- switch (name[0])
- {
- case 'A':
- if (name[1] == 'U' &&
- name[2] == 'T' &&
- name[3] == 'O' &&
- name[4] == 'L' &&
- name[5] == 'O' &&
- name[6] == 'A' &&
- name[7] == 'D')
- { /* AUTOLOAD */
- return KEY_AUTOLOAD;
- }
-
- goto unknown;
-
- case '_':
- if (name[1] == '_')
- {
- switch (name[2])
- {
- case 'D':
- if (name[3] == 'A' &&
- name[4] == 'T' &&
- name[5] == 'A' &&
- name[6] == '_' &&
- name[7] == '_')
- { /* __DATA__ */
- return KEY___DATA__;
- }
-
- goto unknown;
-
- case 'F':
- if (name[3] == 'I' &&
- name[4] == 'L' &&
- name[5] == 'E' &&
- name[6] == '_' &&
- name[7] == '_')
- { /* __FILE__ */
- return -KEY___FILE__;
- }
-
- goto unknown;
-
- case 'L':
- if (name[3] == 'I' &&
- name[4] == 'N' &&
- name[5] == 'E' &&
- name[6] == '_' &&
- name[7] == '_')
- { /* __LINE__ */
- return -KEY___LINE__;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
- }
-
- goto unknown;
-
- case 'c':
- switch (name[1])
- {
- case 'l':
- if (name[2] == 'o' &&
- name[3] == 's' &&
- name[4] == 'e' &&
- name[5] == 'd' &&
- name[6] == 'i' &&
- name[7] == 'r')
- { /* closedir */
- return -KEY_closedir;
- }
-
- goto unknown;
-
- case 'o':
- if (name[2] == 'n' &&
- name[3] == 't' &&
- name[4] == 'i' &&
- name[5] == 'n' &&
- name[6] == 'u' &&
- name[7] == 'e')
- { /* continue */
- return -KEY_continue;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 'd':
- if (name[1] == 'b' &&
- name[2] == 'm' &&
- name[3] == 'c' &&
- name[4] == 'l' &&
- name[5] == 'o' &&
- name[6] == 's' &&
- name[7] == 'e')
- { /* dbmclose */
- return -KEY_dbmclose;
- }
-
- goto unknown;
-
- case 'e':
- if (name[1] == 'n' &&
- name[2] == 'd')
- {
- switch (name[3])
- {
- case 'g':
- if (name[4] == 'r' &&
- name[5] == 'e' &&
- name[6] == 'n' &&
- name[7] == 't')
- { /* endgrent */
- return -KEY_endgrent;
- }
-
- goto unknown;
-
- case 'p':
- if (name[4] == 'w' &&
- name[5] == 'e' &&
- name[6] == 'n' &&
- name[7] == 't')
- { /* endpwent */
- return -KEY_endpwent;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
- }
-
- goto unknown;
-
- case 'f':
- if (name[1] == 'o' &&
- name[2] == 'r' &&
- name[3] == 'm' &&
- name[4] == 'l' &&
- name[5] == 'i' &&
- name[6] == 'n' &&
- name[7] == 'e')
- { /* formline */
- return -KEY_formline;
- }
-
- goto unknown;
-
- case 'g':
- if (name[1] == 'e' &&
- name[2] == 't')
- {
- switch (name[3])
- {
- case 'g':
- if (name[4] == 'r')
- {
- switch (name[5])
- {
- case 'e':
- if (name[6] == 'n' &&
- name[7] == 't')
- { /* getgrent */
- return -KEY_getgrent;
- }
-
- goto unknown;
-
- case 'g':
- if (name[6] == 'i' &&
- name[7] == 'd')
- { /* getgrgid */
- return -KEY_getgrgid;
- }
-
- goto unknown;
-
- case 'n':
- if (name[6] == 'a' &&
- name[7] == 'm')
- { /* getgrnam */
- return -KEY_getgrnam;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
- }
-
- goto unknown;
-
- case 'l':
- if (name[4] == 'o' &&
- name[5] == 'g' &&
- name[6] == 'i' &&
- name[7] == 'n')
- { /* getlogin */
- return -KEY_getlogin;
- }
-
- goto unknown;
-
- case 'p':
- if (name[4] == 'w')
- {
- switch (name[5])
- {
- case 'e':
- if (name[6] == 'n' &&
- name[7] == 't')
- { /* getpwent */
- return -KEY_getpwent;
- }
-
- goto unknown;
-
- case 'n':
- if (name[6] == 'a' &&
- name[7] == 'm')
- { /* getpwnam */
- return -KEY_getpwnam;
- }
-
- goto unknown;
-
- case 'u':
- if (name[6] == 'i' &&
- name[7] == 'd')
- { /* getpwuid */
- return -KEY_getpwuid;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
- }
-
- goto unknown;
-
- case 'r':
- if (name[1] == 'e' &&
- name[2] == 'a' &&
- name[3] == 'd')
- {
- switch (name[4])
- {
- case 'l':
- if (name[5] == 'i' &&
- name[6] == 'n')
- {
- switch (name[7])
- {
- case 'e':
- { /* readline */
- return -KEY_readline;
- }
-
- case 'k':
- { /* readlink */
- return -KEY_readlink;
- }
-
- default:
- goto unknown;
- }
- }
-
- goto unknown;
-
- case 'p':
- if (name[5] == 'i' &&
- name[6] == 'p' &&
- name[7] == 'e')
- { /* readpipe */
- return -KEY_readpipe;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
- }
-
- goto unknown;
-
- case 's':
- switch (name[1])
- {
- case 'e':
- if (name[2] == 't')
- {
- switch (name[3])
- {
- case 'g':
- if (name[4] == 'r' &&
- name[5] == 'e' &&
- name[6] == 'n' &&
- name[7] == 't')
- { /* setgrent */
- return -KEY_setgrent;
- }
-
- goto unknown;
-
- case 'p':
- if (name[4] == 'w' &&
- name[5] == 'e' &&
- name[6] == 'n' &&
- name[7] == 't')
- { /* setpwent */
- return -KEY_setpwent;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
- }
-
- goto unknown;
-
- case 'h':
- switch (name[2])
- {
- case 'm':
- if (name[3] == 'w' &&
- name[4] == 'r' &&
- name[5] == 'i' &&
- name[6] == 't' &&
- name[7] == 'e')
- { /* shmwrite */
- return -KEY_shmwrite;
- }
-
- goto unknown;
-
- case 'u':
- if (name[3] == 't' &&
- name[4] == 'd' &&
- name[5] == 'o' &&
- name[6] == 'w' &&
- name[7] == 'n')
- { /* shutdown */
- return -KEY_shutdown;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 'y':
- if (name[2] == 's' &&
- name[3] == 'w' &&
- name[4] == 'r' &&
- name[5] == 'i' &&
- name[6] == 't' &&
- name[7] == 'e')
- { /* syswrite */
- return -KEY_syswrite;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 't':
- if (name[1] == 'r' &&
- name[2] == 'u' &&
- name[3] == 'n' &&
- name[4] == 'c' &&
- name[5] == 'a' &&
- name[6] == 't' &&
- name[7] == 'e')
- { /* truncate */
- return -KEY_truncate;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 9: /* 9 tokens of length 9 */
- switch (name[0])
- {
- case 'U':
- if (name[1] == 'N' &&
- name[2] == 'I' &&
- name[3] == 'T' &&
- name[4] == 'C' &&
- name[5] == 'H' &&
- name[6] == 'E' &&
- name[7] == 'C' &&
- name[8] == 'K')
- { /* UNITCHECK */
- return KEY_UNITCHECK;
- }
-
- goto unknown;
-
- case 'e':
- if (name[1] == 'n' &&
- name[2] == 'd' &&
- name[3] == 'n' &&
- name[4] == 'e' &&
- name[5] == 't' &&
- name[6] == 'e' &&
- name[7] == 'n' &&
- name[8] == 't')
- { /* endnetent */
- return -KEY_endnetent;
- }
-
- goto unknown;
-
- case 'g':
- if (name[1] == 'e' &&
- name[2] == 't' &&
- name[3] == 'n' &&
- name[4] == 'e' &&
- name[5] == 't' &&
- name[6] == 'e' &&
- name[7] == 'n' &&
- name[8] == 't')
- { /* getnetent */
- return -KEY_getnetent;
- }
-
- goto unknown;
-
- case 'l':
- if (name[1] == 'o' &&
- name[2] == 'c' &&
- name[3] == 'a' &&
- name[4] == 'l' &&
- name[5] == 't' &&
- name[6] == 'i' &&
- name[7] == 'm' &&
- name[8] == 'e')
- { /* localtime */
- return -KEY_localtime;
- }
-
- goto unknown;
-
- case 'p':
- if (name[1] == 'r' &&
- name[2] == 'o' &&
- name[3] == 't' &&
- name[4] == 'o' &&
- name[5] == 't' &&
- name[6] == 'y' &&
- name[7] == 'p' &&
- name[8] == 'e')
- { /* prototype */
- return KEY_prototype;
- }
-
- goto unknown;
-
- case 'q':
- if (name[1] == 'u' &&
- name[2] == 'o' &&
- name[3] == 't' &&
- name[4] == 'e' &&
- name[5] == 'm' &&
- name[6] == 'e' &&
- name[7] == 't' &&
- name[8] == 'a')
- { /* quotemeta */
- return -KEY_quotemeta;
- }
-
- goto unknown;
-
- case 'r':
- if (name[1] == 'e' &&
- name[2] == 'w' &&
- name[3] == 'i' &&
- name[4] == 'n' &&
- name[5] == 'd' &&
- name[6] == 'd' &&
- name[7] == 'i' &&
- name[8] == 'r')
- { /* rewinddir */
- return -KEY_rewinddir;
- }
-
- goto unknown;
-
- case 's':
- if (name[1] == 'e' &&
- name[2] == 't' &&
- name[3] == 'n' &&
- name[4] == 'e' &&
- name[5] == 't' &&
- name[6] == 'e' &&
- name[7] == 'n' &&
- name[8] == 't')
- { /* setnetent */
- return -KEY_setnetent;
- }
-
- goto unknown;
-
- case 'w':
- if (name[1] == 'a' &&
- name[2] == 'n' &&
- name[3] == 't' &&
- name[4] == 'a' &&
- name[5] == 'r' &&
- name[6] == 'r' &&
- name[7] == 'a' &&
- name[8] == 'y')
- { /* wantarray */
- return -KEY_wantarray;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 10: /* 9 tokens of length 10 */
- switch (name[0])
- {
- case 'e':
- if (name[1] == 'n' &&
- name[2] == 'd')
- {
- switch (name[3])
- {
- case 'h':
- if (name[4] == 'o' &&
- name[5] == 's' &&
- name[6] == 't' &&
- name[7] == 'e' &&
- name[8] == 'n' &&
- name[9] == 't')
- { /* endhostent */
- return -KEY_endhostent;
- }
-
- goto unknown;
-
- case 's':
- if (name[4] == 'e' &&
- name[5] == 'r' &&
- name[6] == 'v' &&
- name[7] == 'e' &&
- name[8] == 'n' &&
- name[9] == 't')
- { /* endservent */
- return -KEY_endservent;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
- }
-
- goto unknown;
-
- case 'g':
- if (name[1] == 'e' &&
- name[2] == 't')
- {
- switch (name[3])
- {
- case 'h':
- if (name[4] == 'o' &&
- name[5] == 's' &&
- name[6] == 't' &&
- name[7] == 'e' &&
- name[8] == 'n' &&
- name[9] == 't')
- { /* gethostent */
- return -KEY_gethostent;
- }
-
- goto unknown;
-
- case 's':
- switch (name[4])
- {
- case 'e':
- if (name[5] == 'r' &&
- name[6] == 'v' &&
- name[7] == 'e' &&
- name[8] == 'n' &&
- name[9] == 't')
- { /* getservent */
- return -KEY_getservent;
- }
-
- goto unknown;
-
- case 'o':
- if (name[5] == 'c' &&
- name[6] == 'k' &&
- name[7] == 'o' &&
- name[8] == 'p' &&
- name[9] == 't')
- { /* getsockopt */
- return -KEY_getsockopt;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- default:
- goto unknown;
- }
- }
-
- goto unknown;
-
- case 's':
- switch (name[1])
- {
- case 'e':
- if (name[2] == 't')
- {
- switch (name[3])
- {
- case 'h':
- if (name[4] == 'o' &&
- name[5] == 's' &&
- name[6] == 't' &&
- name[7] == 'e' &&
- name[8] == 'n' &&
- name[9] == 't')
- { /* sethostent */
- return -KEY_sethostent;
- }
-
- goto unknown;
-
- case 's':
- switch (name[4])
- {
- case 'e':
- if (name[5] == 'r' &&
- name[6] == 'v' &&
- name[7] == 'e' &&
- name[8] == 'n' &&
- name[9] == 't')
- { /* setservent */
- return -KEY_setservent;
- }
-
- goto unknown;
-
- case 'o':
- if (name[5] == 'c' &&
- name[6] == 'k' &&
- name[7] == 'o' &&
- name[8] == 'p' &&
- name[9] == 't')
- { /* setsockopt */
- return -KEY_setsockopt;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- default:
- goto unknown;
- }
- }
-
- goto unknown;
-
- case 'o':
- if (name[2] == 'c' &&
- name[3] == 'k' &&
- name[4] == 'e' &&
- name[5] == 't' &&
- name[6] == 'p' &&
- name[7] == 'a' &&
- name[8] == 'i' &&
- name[9] == 'r')
- { /* socketpair */
- return -KEY_socketpair;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- default:
- goto unknown;
- }
-
- case 11: /* 8 tokens of length 11 */
- switch (name[0])
- {
- case '_':
- if (name[1] == '_' &&
- name[2] == 'P' &&
- name[3] == 'A' &&
- name[4] == 'C' &&
- name[5] == 'K' &&
- name[6] == 'A' &&
- name[7] == 'G' &&
- name[8] == 'E' &&
- name[9] == '_' &&
- name[10] == '_')
- { /* __PACKAGE__ */
- return -KEY___PACKAGE__;
- }
-
- goto unknown;
-
- case 'e':
- if (name[1] == 'n' &&
- name[2] == 'd' &&
- name[3] == 'p' &&
- name[4] == 'r' &&
- name[5] == 'o' &&
- name[6] == 't' &&
- name[7] == 'o' &&
- name[8] == 'e' &&
- name[9] == 'n' &&
- name[10] == 't')
- { /* endprotoent */
- return -KEY_endprotoent;
- }
-
- goto unknown;
-
- case 'g':
- if (name[1] == 'e' &&
- name[2] == 't')
- {
- switch (name[3])
- {
- case 'p':
- switch (name[4])
- {
- case 'e':
- if (name[5] == 'e' &&
- name[6] == 'r' &&
- name[7] == 'n' &&
- name[8] == 'a' &&
- name[9] == 'm' &&
- name[10] == 'e')
- { /* getpeername */
- return -KEY_getpeername;
- }
-
- goto unknown;
-
- case 'r':
- switch (name[5])
- {
- case 'i':
- if (name[6] == 'o' &&
- name[7] == 'r' &&
- name[8] == 'i' &&
- name[9] == 't' &&
- name[10] == 'y')
- { /* getpriority */
- return -KEY_getpriority;
- }
-
- goto unknown;
-
- case 'o':
- if (name[6] == 't' &&
- name[7] == 'o' &&
- name[8] == 'e' &&
- name[9] == 'n' &&
- name[10] == 't')
- { /* getprotoent */
- return -KEY_getprotoent;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- default:
- goto unknown;
- }
-
- case 's':
- if (name[4] == 'o' &&
- name[5] == 'c' &&
- name[6] == 'k' &&
- name[7] == 'n' &&
- name[8] == 'a' &&
- name[9] == 'm' &&
- name[10] == 'e')
- { /* getsockname */
- return -KEY_getsockname;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
- }
-
- goto unknown;
-
- case 's':
- if (name[1] == 'e' &&
- name[2] == 't' &&
- name[3] == 'p' &&
- name[4] == 'r')
- {
- switch (name[5])
- {
- case 'i':
- if (name[6] == 'o' &&
- name[7] == 'r' &&
- name[8] == 'i' &&
- name[9] == 't' &&
- name[10] == 'y')
- { /* setpriority */
- return -KEY_setpriority;
- }
-
- goto unknown;
-
- case 'o':
- if (name[6] == 't' &&
- name[7] == 'o' &&
- name[8] == 'e' &&
- name[9] == 'n' &&
- name[10] == 't')
- { /* setprotoent */
- return -KEY_setprotoent;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
- case 12: /* 2 tokens of length 12 */
- if (name[0] == 'g' &&
- name[1] == 'e' &&
- name[2] == 't' &&
- name[3] == 'n' &&
- name[4] == 'e' &&
- name[5] == 't' &&
- name[6] == 'b' &&
- name[7] == 'y')
- {
- switch (name[8])
- {
- case 'a':
- if (name[9] == 'd' &&
- name[10] == 'd' &&
- name[11] == 'r')
- { /* getnetbyaddr */
- return -KEY_getnetbyaddr;
- }
-
- goto unknown;
-
- case 'n':
- if (name[9] == 'a' &&
- name[10] == 'm' &&
- name[11] == 'e')
- { /* getnetbyname */
- return -KEY_getnetbyname;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
- }
-
- goto unknown;
-
- case 13: /* 4 tokens of length 13 */
- if (name[0] == 'g' &&
- name[1] == 'e' &&
- name[2] == 't')
- {
- switch (name[3])
- {
- case 'h':
- if (name[4] == 'o' &&
- name[5] == 's' &&
- name[6] == 't' &&
- name[7] == 'b' &&
- name[8] == 'y')
- {
- switch (name[9])
- {
- case 'a':
- if (name[10] == 'd' &&
- name[11] == 'd' &&
- name[12] == 'r')
- { /* gethostbyaddr */
- return -KEY_gethostbyaddr;
- }
-
- goto unknown;
-
- case 'n':
- if (name[10] == 'a' &&
- name[11] == 'm' &&
- name[12] == 'e')
- { /* gethostbyname */
- return -KEY_gethostbyname;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
- }
-
- goto unknown;
-
- case 's':
- if (name[4] == 'e' &&
- name[5] == 'r' &&
- name[6] == 'v' &&
- name[7] == 'b' &&
- name[8] == 'y')
- {
- switch (name[9])
- {
- case 'n':
- if (name[10] == 'a' &&
- name[11] == 'm' &&
- name[12] == 'e')
- { /* getservbyname */
- return -KEY_getservbyname;
- }
-
- goto unknown;
-
- case 'p':
- if (name[10] == 'o' &&
- name[11] == 'r' &&
- name[12] == 't')
- { /* getservbyport */
- return -KEY_getservbyport;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
- }
-
- goto unknown;
-
- case 14: /* 1 tokens of length 14 */
- if (name[0] == 'g' &&
- name[1] == 'e' &&
- name[2] == 't' &&
- name[3] == 'p' &&
- name[4] == 'r' &&
- name[5] == 'o' &&
- name[6] == 't' &&
- name[7] == 'o' &&
- name[8] == 'b' &&
- name[9] == 'y' &&
- name[10] == 'n' &&
- name[11] == 'a' &&
- name[12] == 'm' &&
- name[13] == 'e')
- { /* getprotobyname */
- return -KEY_getprotobyname;
- }
-
- goto unknown;
-
- case 16: /* 1 tokens of length 16 */
- if (name[0] == 'g' &&
- name[1] == 'e' &&
- name[2] == 't' &&
- name[3] == 'p' &&
- name[4] == 'r' &&
- name[5] == 'o' &&
- name[6] == 't' &&
- name[7] == 'o' &&
- name[8] == 'b' &&
- name[9] == 'y' &&
- name[10] == 'n' &&
- name[11] == 'u' &&
- name[12] == 'm' &&
- name[13] == 'b' &&
- name[14] == 'e' &&
- name[15] == 'r')
- { /* getprotobynumber */
- return -KEY_getprotobynumber;
- }
-
- goto unknown;
-
- default:
- goto unknown;
- }
-
-unknown:
- return 0;
-}
-
STATIC void
S_checkcomma(pTHX_ const char *s, const char *name, const char *what)
{
diff --git a/vms/descrip_mms.template b/vms/descrip_mms.template
index dcceff0c5f..73c2a31c10 100644
--- a/vms/descrip_mms.template
+++ b/vms/descrip_mms.template
@@ -289,7 +289,7 @@ FULLLIBS2 = $(LIBS2)|$(THRLIBS1)|$(THRLIBS2)
c0 = $(MALLOC_C) $(SOCKC) av.c deb.c doio.c doop.c dump.c globals.c gv.c hv.c mro.c
c1 = mg.c locale.c mathoms.c miniperlmain.c numeric.c op.c pad.c perl.c perlapi.c perlio.c
c2 = perly.c pp.c pp_ctl.c pp_hot.c pp_pack.c pp_sort.c pp_sys.c regcomp.c regexec.c reentr.c
-c3 = run.c scope.c sv.c taint.c toke.c universal.c utf8.c util.c vms.c
+c3 = run.c scope.c sv.c taint.c toke.c universal.c utf8.c util.c vms.c keywords.c
c = $(c0) $(c1) $(c2) $(c3)
obj0 = perl$(O)
diff --git a/win32/Makefile b/win32/Makefile
index 8e8dbc6d13..db96082a9f 100644
--- a/win32/Makefile
+++ b/win32/Makefile
@@ -620,6 +620,7 @@ MICROCORE_SRC = \
..\mro.c \
..\hv.c \
..\locale.c \
+ ..\keywords.c \
..\mathoms.c \
..\mg.c \
..\numeric.c \
diff --git a/win32/Makefile.ce b/win32/Makefile.ce
index cc2d06c147..b8bedea5c0 100644
--- a/win32/Makefile.ce
+++ b/win32/Makefile.ce
@@ -571,6 +571,7 @@ MICROCORE_SRC = \
..\gv.c \
..\mro.c \
..\hv.c \
+ ..\keywords.c \
..\mg.c \
..\op.c \
..\pad.c \
diff --git a/win32/makefile.mk b/win32/makefile.mk
index 9f76c85963..c8a8b3f091 100644
--- a/win32/makefile.mk
+++ b/win32/makefile.mk
@@ -832,6 +832,7 @@ MICROCORE_SRC = \
..\mro.c \
..\hv.c \
..\locale.c \
+ ..\keywords.c \
..\mathoms.c \
..\mg.c \
..\numeric.c \