This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add the `isa` operator
[perl5.git] / keywords.c
1 /* -*- buffer-read-only: t -*-
2  * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
3  * This file is built by regen/keywords.pl from its data.
4  * Any changes made here will be lost!
5  */
6
7 #include "EXTERN.h"
8 #define PERL_IN_KEYWORDS_C
9 #include "perl.h"
10 #include "keywords.h"
11 #include "feature.h"
12
13 I32
14 Perl_keyword (pTHX_ const char *name, I32 len, bool all_keywords)
15 {
16   PERL_ARGS_ASSERT_KEYWORD;
17
18   switch (len)
19   {
20     case 1: /* 5 tokens of length 1 */
21       switch (name[0])
22       {
23         case 'm':
24           {                                       /* m                */
25             return KEY_m;
26           }
27
28         case 'q':
29           {                                       /* q                */
30             return KEY_q;
31           }
32
33         case 's':
34           {                                       /* s                */
35             return KEY_s;
36           }
37
38         case 'x':
39           {                                       /* x                */
40             return -KEY_x;
41           }
42
43         case 'y':
44           {                                       /* y                */
45             return KEY_y;
46           }
47
48         default:
49           goto unknown;
50       }
51
52     case 2: /* 19 tokens of length 2 */
53       switch (name[0])
54       {
55         case 'd':
56           if (name[1] == 'o')
57           {                                       /* do               */
58             return KEY_do;
59           }
60
61           goto unknown;
62
63         case 'e':
64           if (name[1] == 'q')
65           {                                       /* eq               */
66             return -KEY_eq;
67           }
68
69           goto unknown;
70
71         case 'f':
72           if (name[1] == 'c')
73           {                                       /* fc               */
74             return (all_keywords || FEATURE_FC_IS_ENABLED ? -KEY_fc : 0);
75           }
76
77           goto unknown;
78
79         case 'g':
80           switch (name[1])
81           {
82             case 'e':
83               {                                   /* ge               */
84                 return -KEY_ge;
85               }
86
87             case 't':
88               {                                   /* gt               */
89                 return -KEY_gt;
90               }
91
92             default:
93               goto unknown;
94           }
95
96         case 'i':
97           if (name[1] == 'f')
98           {                                       /* if               */
99             return KEY_if;
100           }
101
102           goto unknown;
103
104         case 'l':
105           switch (name[1])
106           {
107             case 'c':
108               {                                   /* lc               */
109                 return -KEY_lc;
110               }
111
112             case 'e':
113               {                                   /* le               */
114                 return -KEY_le;
115               }
116
117             case 't':
118               {                                   /* lt               */
119                 return -KEY_lt;
120               }
121
122             default:
123               goto unknown;
124           }
125
126         case 'm':
127           if (name[1] == 'y')
128           {                                       /* my               */
129             return KEY_my;
130           }
131
132           goto unknown;
133
134         case 'n':
135           switch (name[1])
136           {
137             case 'e':
138               {                                   /* ne               */
139                 return -KEY_ne;
140               }
141
142             case 'o':
143               {                                   /* no               */
144                 return KEY_no;
145               }
146
147             default:
148               goto unknown;
149           }
150
151         case 'o':
152           if (name[1] == 'r')
153           {                                       /* or               */
154             return -KEY_or;
155           }
156
157           goto unknown;
158
159         case 'q':
160           switch (name[1])
161           {
162             case 'q':
163               {                                   /* qq               */
164                 return KEY_qq;
165               }
166
167             case 'r':
168               {                                   /* qr               */
169                 return KEY_qr;
170               }
171
172             case 'w':
173               {                                   /* qw               */
174                 return KEY_qw;
175               }
176
177             case 'x':
178               {                                   /* qx               */
179                 return KEY_qx;
180               }
181
182             default:
183               goto unknown;
184           }
185
186         case 't':
187           if (name[1] == 'r')
188           {                                       /* tr               */
189             return KEY_tr;
190           }
191
192           goto unknown;
193
194         case 'u':
195           if (name[1] == 'c')
196           {                                       /* uc               */
197             return -KEY_uc;
198           }
199
200           goto unknown;
201
202         default:
203           goto unknown;
204       }
205
206     case 3: /* 29 tokens of length 3 */
207       switch (name[0])
208       {
209         case 'E':
210           if (name[1] == 'N' &&
211               name[2] == 'D')
212           {                                       /* END              */
213             return KEY_END;
214           }
215
216           goto unknown;
217
218         case 'a':
219           switch (name[1])
220           {
221             case 'b':
222               if (name[2] == 's')
223               {                                   /* abs              */
224                 return -KEY_abs;
225               }
226
227               goto unknown;
228
229             case 'n':
230               if (name[2] == 'd')
231               {                                   /* and              */
232                 return -KEY_and;
233               }
234
235               goto unknown;
236
237             default:
238               goto unknown;
239           }
240
241         case 'c':
242           switch (name[1])
243           {
244             case 'h':
245               if (name[2] == 'r')
246               {                                   /* chr              */
247                 return -KEY_chr;
248               }
249
250               goto unknown;
251
252             case 'm':
253               if (name[2] == 'p')
254               {                                   /* cmp              */
255                 return -KEY_cmp;
256               }
257
258               goto unknown;
259
260             case 'o':
261               if (name[2] == 's')
262               {                                   /* cos              */
263                 return -KEY_cos;
264               }
265
266               goto unknown;
267
268             default:
269               goto unknown;
270           }
271
272         case 'd':
273           if (name[1] == 'i' &&
274               name[2] == 'e')
275           {                                       /* die              */
276             return -KEY_die;
277           }
278
279           goto unknown;
280
281         case 'e':
282           switch (name[1])
283           {
284             case 'o':
285               if (name[2] == 'f')
286               {                                   /* eof              */
287                 return -KEY_eof;
288               }
289
290               goto unknown;
291
292             case 'x':
293               if (name[2] == 'p')
294               {                                   /* exp              */
295                 return -KEY_exp;
296               }
297
298               goto unknown;
299
300             default:
301               goto unknown;
302           }
303
304         case 'f':
305           if (name[1] == 'o' &&
306               name[2] == 'r')
307           {                                       /* for              */
308             return KEY_for;
309           }
310
311           goto unknown;
312
313         case 'h':
314           if (name[1] == 'e' &&
315               name[2] == 'x')
316           {                                       /* hex              */
317             return -KEY_hex;
318           }
319
320           goto unknown;
321
322         case 'i':
323           switch (name[1])
324           {
325             case 'n':
326               if (name[2] == 't')
327               {                                   /* int              */
328                 return -KEY_int;
329               }
330
331               goto unknown;
332
333             case 's':
334               if (name[2] == 'a')
335               {                                   /* isa              */
336                 return (all_keywords || FEATURE_ISA_IS_ENABLED ? -KEY_isa : 0);
337               }
338
339               goto unknown;
340
341             default:
342               goto unknown;
343           }
344
345         case 'l':
346           if (name[1] == 'o' &&
347               name[2] == 'g')
348           {                                       /* log              */
349             return -KEY_log;
350           }
351
352           goto unknown;
353
354         case 'm':
355           if (name[1] == 'a' &&
356               name[2] == 'p')
357           {                                       /* map              */
358             return KEY_map;
359           }
360
361           goto unknown;
362
363         case 'n':
364           if (name[1] == 'o' &&
365               name[2] == 't')
366           {                                       /* not              */
367             return -KEY_not;
368           }
369
370           goto unknown;
371
372         case 'o':
373           switch (name[1])
374           {
375             case 'c':
376               if (name[2] == 't')
377               {                                   /* oct              */
378                 return -KEY_oct;
379               }
380
381               goto unknown;
382
383             case 'r':
384               if (name[2] == 'd')
385               {                                   /* ord              */
386                 return -KEY_ord;
387               }
388
389               goto unknown;
390
391             case 'u':
392               if (name[2] == 'r')
393               {                                   /* our              */
394                 return KEY_our;
395               }
396
397               goto unknown;
398
399             default:
400               goto unknown;
401           }
402
403         case 'p':
404           if (name[1] == 'o')
405           {
406             switch (name[2])
407             {
408               case 'p':
409                 {                                 /* pop              */
410                   return -KEY_pop;
411                 }
412
413               case 's':
414                 {                                 /* pos              */
415                   return KEY_pos;
416                 }
417
418               default:
419                 goto unknown;
420             }
421           }
422
423           goto unknown;
424
425         case 'r':
426           if (name[1] == 'e' &&
427               name[2] == 'f')
428           {                                       /* ref              */
429             return -KEY_ref;
430           }
431
432           goto unknown;
433
434         case 's':
435           switch (name[1])
436           {
437             case 'a':
438               if (name[2] == 'y')
439               {                                   /* say              */
440                 return (all_keywords || FEATURE_SAY_IS_ENABLED ? KEY_say : 0);
441               }
442
443               goto unknown;
444
445             case 'i':
446               if (name[2] == 'n')
447               {                                   /* sin              */
448                 return -KEY_sin;
449               }
450
451               goto unknown;
452
453             case 'u':
454               if (name[2] == 'b')
455               {                                   /* sub              */
456                 return KEY_sub;
457               }
458
459               goto unknown;
460
461             default:
462               goto unknown;
463           }
464
465         case 't':
466           if (name[1] == 'i' &&
467               name[2] == 'e')
468           {                                       /* tie              */
469             return -KEY_tie;
470           }
471
472           goto unknown;
473
474         case 'u':
475           if (name[1] == 's' &&
476               name[2] == 'e')
477           {                                       /* use              */
478             return KEY_use;
479           }
480
481           goto unknown;
482
483         case 'v':
484           if (name[1] == 'e' &&
485               name[2] == 'c')
486           {                                       /* vec              */
487             return -KEY_vec;
488           }
489
490           goto unknown;
491
492         case 'x':
493           if (name[1] == 'o' &&
494               name[2] == 'r')
495           {                                       /* xor              */
496             return -KEY_xor;
497           }
498
499           goto unknown;
500
501         default:
502           goto unknown;
503       }
504
505     case 4: /* 40 tokens of length 4 */
506       switch (name[0])
507       {
508         case 'I':
509           if (name[1] == 'N' &&
510               name[2] == 'I' &&
511               name[3] == 'T')
512           {                                       /* INIT             */
513             return KEY_INIT;
514           }
515
516           goto unknown;
517
518         case 'b':
519           if (name[1] == 'i' &&
520               name[2] == 'n' &&
521               name[3] == 'd')
522           {                                       /* bind             */
523             return -KEY_bind;
524           }
525
526           goto unknown;
527
528         case 'c':
529           if (name[1] == 'h' &&
530               name[2] == 'o' &&
531               name[3] == 'p')
532           {                                       /* chop             */
533             return -KEY_chop;
534           }
535
536           goto unknown;
537
538         case 'd':
539           if (name[1] == 'u' &&
540               name[2] == 'm' &&
541               name[3] == 'p')
542           {                                       /* dump             */
543             return -KEY_dump;
544           }
545
546           goto unknown;
547
548         case 'e':
549           switch (name[1])
550           {
551             case 'a':
552               if (name[2] == 'c' &&
553                   name[3] == 'h')
554               {                                   /* each             */
555                 return -KEY_each;
556               }
557
558               goto unknown;
559
560             case 'l':
561               if (name[2] == 's' &&
562                   name[3] == 'e')
563               {                                   /* else             */
564                 return KEY_else;
565               }
566
567               goto unknown;
568
569             case 'v':
570               if (name[2] == 'a' &&
571                   name[3] == 'l')
572               {                                   /* eval             */
573                 return KEY_eval;
574               }
575
576               goto unknown;
577
578             case 'x':
579               switch (name[2])
580               {
581                 case 'e':
582                   if (name[3] == 'c')
583                   {                               /* exec             */
584                     return -KEY_exec;
585                   }
586
587                   goto unknown;
588
589                 case 'i':
590                   if (name[3] == 't')
591                   {                               /* exit             */
592                     return -KEY_exit;
593                   }
594
595                   goto unknown;
596
597                 default:
598                   goto unknown;
599               }
600
601             default:
602               goto unknown;
603           }
604
605         case 'f':
606           if (name[1] == 'o' &&
607               name[2] == 'r' &&
608               name[3] == 'k')
609           {                                       /* fork             */
610             return -KEY_fork;
611           }
612
613           goto unknown;
614
615         case 'g':
616           switch (name[1])
617           {
618             case 'e':
619               if (name[2] == 't' &&
620                   name[3] == 'c')
621               {                                   /* getc             */
622                 return -KEY_getc;
623               }
624
625               goto unknown;
626
627             case 'l':
628               if (name[2] == 'o' &&
629                   name[3] == 'b')
630               {                                   /* glob             */
631                 return KEY_glob;
632               }
633
634               goto unknown;
635
636             case 'o':
637               if (name[2] == 't' &&
638                   name[3] == 'o')
639               {                                   /* goto             */
640                 return KEY_goto;
641               }
642
643               goto unknown;
644
645             case 'r':
646               if (name[2] == 'e' &&
647                   name[3] == 'p')
648               {                                   /* grep             */
649                 return KEY_grep;
650               }
651
652               goto unknown;
653
654             default:
655               goto unknown;
656           }
657
658         case 'j':
659           if (name[1] == 'o' &&
660               name[2] == 'i' &&
661               name[3] == 'n')
662           {                                       /* join             */
663             return -KEY_join;
664           }
665
666           goto unknown;
667
668         case 'k':
669           switch (name[1])
670           {
671             case 'e':
672               if (name[2] == 'y' &&
673                   name[3] == 's')
674               {                                   /* keys             */
675                 return -KEY_keys;
676               }
677
678               goto unknown;
679
680             case 'i':
681               if (name[2] == 'l' &&
682                   name[3] == 'l')
683               {                                   /* kill             */
684                 return -KEY_kill;
685               }
686
687               goto unknown;
688
689             default:
690               goto unknown;
691           }
692
693         case 'l':
694           switch (name[1])
695           {
696             case 'a':
697               if (name[2] == 's' &&
698                   name[3] == 't')
699               {                                   /* last             */
700                 return KEY_last;
701               }
702
703               goto unknown;
704
705             case 'i':
706               if (name[2] == 'n' &&
707                   name[3] == 'k')
708               {                                   /* link             */
709                 return -KEY_link;
710               }
711
712               goto unknown;
713
714             case 'o':
715               if (name[2] == 'c' &&
716                   name[3] == 'k')
717               {                                   /* lock             */
718                 return -KEY_lock;
719               }
720
721               goto unknown;
722
723             default:
724               goto unknown;
725           }
726
727         case 'n':
728           if (name[1] == 'e' &&
729               name[2] == 'x' &&
730               name[3] == 't')
731           {                                       /* next             */
732             return KEY_next;
733           }
734
735           goto unknown;
736
737         case 'o':
738           if (name[1] == 'p' &&
739               name[2] == 'e' &&
740               name[3] == 'n')
741           {                                       /* open             */
742             return -KEY_open;
743           }
744
745           goto unknown;
746
747         case 'p':
748           switch (name[1])
749           {
750             case 'a':
751               if (name[2] == 'c' &&
752                   name[3] == 'k')
753               {                                   /* pack             */
754                 return -KEY_pack;
755               }
756
757               goto unknown;
758
759             case 'i':
760               if (name[2] == 'p' &&
761                   name[3] == 'e')
762               {                                   /* pipe             */
763                 return -KEY_pipe;
764               }
765
766               goto unknown;
767
768             case 'u':
769               if (name[2] == 's' &&
770                   name[3] == 'h')
771               {                                   /* push             */
772                 return -KEY_push;
773               }
774
775               goto unknown;
776
777             default:
778               goto unknown;
779           }
780
781         case 'r':
782           switch (name[1])
783           {
784             case 'a':
785               if (name[2] == 'n' &&
786                   name[3] == 'd')
787               {                                   /* rand             */
788                 return -KEY_rand;
789               }
790
791               goto unknown;
792
793             case 'e':
794               switch (name[2])
795               {
796                 case 'a':
797                   if (name[3] == 'd')
798                   {                               /* read             */
799                     return -KEY_read;
800                   }
801
802                   goto unknown;
803
804                 case 'c':
805                   if (name[3] == 'v')
806                   {                               /* recv             */
807                     return -KEY_recv;
808                   }
809
810                   goto unknown;
811
812                 case 'd':
813                   if (name[3] == 'o')
814                   {                               /* redo             */
815                     return KEY_redo;
816                   }
817
818                   goto unknown;
819
820                 default:
821                   goto unknown;
822               }
823
824             default:
825               goto unknown;
826           }
827
828         case 's':
829           switch (name[1])
830           {
831             case 'e':
832               switch (name[2])
833               {
834                 case 'e':
835                   if (name[3] == 'k')
836                   {                               /* seek             */
837                     return -KEY_seek;
838                   }
839
840                   goto unknown;
841
842                 case 'n':
843                   if (name[3] == 'd')
844                   {                               /* send             */
845                     return -KEY_send;
846                   }
847
848                   goto unknown;
849
850                 default:
851                   goto unknown;
852               }
853
854             case 'o':
855               if (name[2] == 'r' &&
856                   name[3] == 't')
857               {                                   /* sort             */
858                 return KEY_sort;
859               }
860
861               goto unknown;
862
863             case 'q':
864               if (name[2] == 'r' &&
865                   name[3] == 't')
866               {                                   /* sqrt             */
867                 return -KEY_sqrt;
868               }
869
870               goto unknown;
871
872             case 't':
873               if (name[2] == 'a' &&
874                   name[3] == 't')
875               {                                   /* stat             */
876                 return -KEY_stat;
877               }
878
879               goto unknown;
880
881             default:
882               goto unknown;
883           }
884
885         case 't':
886           switch (name[1])
887           {
888             case 'e':
889               if (name[2] == 'l' &&
890                   name[3] == 'l')
891               {                                   /* tell             */
892                 return -KEY_tell;
893               }
894
895               goto unknown;
896
897             case 'i':
898               switch (name[2])
899               {
900                 case 'e':
901                   if (name[3] == 'd')
902                   {                               /* tied             */
903                     return -KEY_tied;
904                   }
905
906                   goto unknown;
907
908                 case 'm':
909                   if (name[3] == 'e')
910                   {                               /* time             */
911                     return -KEY_time;
912                   }
913
914                   goto unknown;
915
916                 default:
917                   goto unknown;
918               }
919
920             default:
921               goto unknown;
922           }
923
924         case 'w':
925           switch (name[1])
926           {
927             case 'a':
928               switch (name[2])
929               {
930                 case 'i':
931                   if (name[3] == 't')
932                   {                               /* wait             */
933                     return -KEY_wait;
934                   }
935
936                   goto unknown;
937
938                 case 'r':
939                   if (name[3] == 'n')
940                   {                               /* warn             */
941                     return -KEY_warn;
942                   }
943
944                   goto unknown;
945
946                 default:
947                   goto unknown;
948               }
949
950             case 'h':
951               if (name[2] == 'e' &&
952                   name[3] == 'n')
953               {                                   /* when             */
954                 return (all_keywords || FEATURE_SWITCH_IS_ENABLED ? KEY_when : 0);
955               }
956
957               goto unknown;
958
959             default:
960               goto unknown;
961           }
962
963         default:
964           goto unknown;
965       }
966
967     case 5: /* 39 tokens of length 5 */
968       switch (name[0])
969       {
970         case 'B':
971           if (name[1] == 'E' &&
972               name[2] == 'G' &&
973               name[3] == 'I' &&
974               name[4] == 'N')
975           {                                       /* BEGIN            */
976             return KEY_BEGIN;
977           }
978
979           goto unknown;
980
981         case 'C':
982           if (name[1] == 'H' &&
983               name[2] == 'E' &&
984               name[3] == 'C' &&
985               name[4] == 'K')
986           {                                       /* CHECK            */
987             return KEY_CHECK;
988           }
989
990           goto unknown;
991
992         case 'a':
993           switch (name[1])
994           {
995             case 'l':
996               if (name[2] == 'a' &&
997                   name[3] == 'r' &&
998                   name[4] == 'm')
999               {                                   /* alarm            */
1000                 return -KEY_alarm;
1001               }
1002
1003               goto unknown;
1004
1005             case 't':
1006               if (name[2] == 'a' &&
1007                   name[3] == 'n' &&
1008                   name[4] == '2')
1009               {                                   /* atan2            */
1010                 return -KEY_atan2;
1011               }
1012
1013               goto unknown;
1014
1015             default:
1016               goto unknown;
1017           }
1018
1019         case 'b':
1020           switch (name[1])
1021           {
1022             case 'l':
1023               if (name[2] == 'e' &&
1024                   name[3] == 's' &&
1025                   name[4] == 's')
1026               {                                   /* bless            */
1027                 return -KEY_bless;
1028               }
1029
1030               goto unknown;
1031
1032             case 'r':
1033               if (name[2] == 'e' &&
1034                   name[3] == 'a' &&
1035                   name[4] == 'k')
1036               {                                   /* break            */
1037                 return (all_keywords || FEATURE_SWITCH_IS_ENABLED ? -KEY_break : 0);
1038               }
1039
1040               goto unknown;
1041
1042             default:
1043               goto unknown;
1044           }
1045
1046         case 'c':
1047           switch (name[1])
1048           {
1049             case 'h':
1050               switch (name[2])
1051               {
1052                 case 'd':
1053                   if (name[3] == 'i' &&
1054                       name[4] == 'r')
1055                   {                               /* chdir            */
1056                     return -KEY_chdir;
1057                   }
1058
1059                   goto unknown;
1060
1061                 case 'm':
1062                   if (name[3] == 'o' &&
1063                       name[4] == 'd')
1064                   {                               /* chmod            */
1065                     return -KEY_chmod;
1066                   }
1067
1068                   goto unknown;
1069
1070                 case 'o':
1071                   switch (name[3])
1072                   {
1073                     case 'm':
1074                       if (name[4] == 'p')
1075                       {                           /* chomp            */
1076                         return -KEY_chomp;
1077                       }
1078
1079                       goto unknown;
1080
1081                     case 'w':
1082                       if (name[4] == 'n')
1083                       {                           /* chown            */
1084                         return -KEY_chown;
1085                       }
1086
1087                       goto unknown;
1088
1089                     default:
1090                       goto unknown;
1091                   }
1092
1093                 default:
1094                   goto unknown;
1095               }
1096
1097             case 'l':
1098               if (name[2] == 'o' &&
1099                   name[3] == 's' &&
1100                   name[4] == 'e')
1101               {                                   /* close            */
1102                 return -KEY_close;
1103               }
1104
1105               goto unknown;
1106
1107             case 'r':
1108               if (name[2] == 'y' &&
1109                   name[3] == 'p' &&
1110                   name[4] == 't')
1111               {                                   /* crypt            */
1112                 return -KEY_crypt;
1113               }
1114
1115               goto unknown;
1116
1117             default:
1118               goto unknown;
1119           }
1120
1121         case 'e':
1122           if (name[1] == 'l' &&
1123               name[2] == 's' &&
1124               name[3] == 'i' &&
1125               name[4] == 'f')
1126           {                                       /* elsif            */
1127             return KEY_elsif;
1128           }
1129
1130           goto unknown;
1131
1132         case 'f':
1133           switch (name[1])
1134           {
1135             case 'c':
1136               if (name[2] == 'n' &&
1137                   name[3] == 't' &&
1138                   name[4] == 'l')
1139               {                                   /* fcntl            */
1140                 return -KEY_fcntl;
1141               }
1142
1143               goto unknown;
1144
1145             case 'l':
1146               if (name[2] == 'o' &&
1147                   name[3] == 'c' &&
1148                   name[4] == 'k')
1149               {                                   /* flock            */
1150                 return -KEY_flock;
1151               }
1152
1153               goto unknown;
1154
1155             default:
1156               goto unknown;
1157           }
1158
1159         case 'g':
1160           if (name[1] == 'i' &&
1161               name[2] == 'v' &&
1162               name[3] == 'e' &&
1163               name[4] == 'n')
1164           {                                       /* given            */
1165             return (all_keywords || FEATURE_SWITCH_IS_ENABLED ? KEY_given : 0);
1166           }
1167
1168           goto unknown;
1169
1170         case 'i':
1171           switch (name[1])
1172           {
1173             case 'n':
1174               if (name[2] == 'd' &&
1175                   name[3] == 'e' &&
1176                   name[4] == 'x')
1177               {                                   /* index            */
1178                 return -KEY_index;
1179               }
1180
1181               goto unknown;
1182
1183             case 'o':
1184               if (name[2] == 'c' &&
1185                   name[3] == 't' &&
1186                   name[4] == 'l')
1187               {                                   /* ioctl            */
1188                 return -KEY_ioctl;
1189               }
1190
1191               goto unknown;
1192
1193             default:
1194               goto unknown;
1195           }
1196
1197         case 'l':
1198           switch (name[1])
1199           {
1200             case 'o':
1201               if (name[2] == 'c' &&
1202                   name[3] == 'a' &&
1203                   name[4] == 'l')
1204               {                                   /* local            */
1205                 return KEY_local;
1206               }
1207
1208               goto unknown;
1209
1210             case 's':
1211               if (name[2] == 't' &&
1212                   name[3] == 'a' &&
1213                   name[4] == 't')
1214               {                                   /* lstat            */
1215                 return -KEY_lstat;
1216               }
1217
1218               goto unknown;
1219
1220             default:
1221               goto unknown;
1222           }
1223
1224         case 'm':
1225           if (name[1] == 'k' &&
1226               name[2] == 'd' &&
1227               name[3] == 'i' &&
1228               name[4] == 'r')
1229           {                                       /* mkdir            */
1230             return -KEY_mkdir;
1231           }
1232
1233           goto unknown;
1234
1235         case 'p':
1236           if (name[1] == 'r' &&
1237               name[2] == 'i' &&
1238               name[3] == 'n' &&
1239               name[4] == 't')
1240           {                                       /* print            */
1241             return KEY_print;
1242           }
1243
1244           goto unknown;
1245
1246         case 'r':
1247           switch (name[1])
1248           {
1249             case 'e':
1250               if (name[2] == 's' &&
1251                   name[3] == 'e' &&
1252                   name[4] == 't')
1253               {                                   /* reset            */
1254                 return -KEY_reset;
1255               }
1256
1257               goto unknown;
1258
1259             case 'm':
1260               if (name[2] == 'd' &&
1261                   name[3] == 'i' &&
1262                   name[4] == 'r')
1263               {                                   /* rmdir            */
1264                 return -KEY_rmdir;
1265               }
1266
1267               goto unknown;
1268
1269             default:
1270               goto unknown;
1271           }
1272
1273         case 's':
1274           switch (name[1])
1275           {
1276             case 'e':
1277               if (name[2] == 'm' &&
1278                   name[3] == 'o' &&
1279                   name[4] == 'p')
1280               {                                   /* semop            */
1281                 return -KEY_semop;
1282               }
1283
1284               goto unknown;
1285
1286             case 'h':
1287               if (name[2] == 'i' &&
1288                   name[3] == 'f' &&
1289                   name[4] == 't')
1290               {                                   /* shift            */
1291                 return -KEY_shift;
1292               }
1293
1294               goto unknown;
1295
1296             case 'l':
1297               if (name[2] == 'e' &&
1298                   name[3] == 'e' &&
1299                   name[4] == 'p')
1300               {                                   /* sleep            */
1301                 return -KEY_sleep;
1302               }
1303
1304               goto unknown;
1305
1306             case 'p':
1307               if (name[2] == 'l' &&
1308                   name[3] == 'i' &&
1309                   name[4] == 't')
1310               {                                   /* split            */
1311                 return KEY_split;
1312               }
1313
1314               goto unknown;
1315
1316             case 'r':
1317               if (name[2] == 'a' &&
1318                   name[3] == 'n' &&
1319                   name[4] == 'd')
1320               {                                   /* srand            */
1321                 return -KEY_srand;
1322               }
1323
1324               goto unknown;
1325
1326             case 't':
1327               switch (name[2])
1328               {
1329                 case 'a':
1330                   if (name[3] == 't' &&
1331                       name[4] == 'e')
1332                   {                               /* state            */
1333                     return (all_keywords || FEATURE_STATE_IS_ENABLED ? KEY_state : 0);
1334                   }
1335
1336                   goto unknown;
1337
1338                 case 'u':
1339                   if (name[3] == 'd' &&
1340                       name[4] == 'y')
1341                   {                               /* study            */
1342                     return KEY_study;
1343                   }
1344
1345                   goto unknown;
1346
1347                 default:
1348                   goto unknown;
1349               }
1350
1351             default:
1352               goto unknown;
1353           }
1354
1355         case 't':
1356           if (name[1] == 'i' &&
1357               name[2] == 'm' &&
1358               name[3] == 'e' &&
1359               name[4] == 's')
1360           {                                       /* times            */
1361             return -KEY_times;
1362           }
1363
1364           goto unknown;
1365
1366         case 'u':
1367           switch (name[1])
1368           {
1369             case 'm':
1370               if (name[2] == 'a' &&
1371                   name[3] == 's' &&
1372                   name[4] == 'k')
1373               {                                   /* umask            */
1374                 return -KEY_umask;
1375               }
1376
1377               goto unknown;
1378
1379             case 'n':
1380               switch (name[2])
1381               {
1382                 case 'd':
1383                   if (name[3] == 'e' &&
1384                       name[4] == 'f')
1385                   {                               /* undef            */
1386                     return KEY_undef;
1387                   }
1388
1389                   goto unknown;
1390
1391                 case 't':
1392                   if (name[3] == 'i')
1393                   {
1394                     switch (name[4])
1395                     {
1396                       case 'e':
1397                         {                         /* untie            */
1398                           return -KEY_untie;
1399                         }
1400
1401                       case 'l':
1402                         {                         /* until            */
1403                           return KEY_until;
1404                         }
1405
1406                       default:
1407                         goto unknown;
1408                     }
1409                   }
1410
1411                   goto unknown;
1412
1413                 default:
1414                   goto unknown;
1415               }
1416
1417             case 't':
1418               if (name[2] == 'i' &&
1419                   name[3] == 'm' &&
1420                   name[4] == 'e')
1421               {                                   /* utime            */
1422                 return -KEY_utime;
1423               }
1424
1425               goto unknown;
1426
1427             default:
1428               goto unknown;
1429           }
1430
1431         case 'w':
1432           switch (name[1])
1433           {
1434             case 'h':
1435               if (name[2] == 'i' &&
1436                   name[3] == 'l' &&
1437                   name[4] == 'e')
1438               {                                   /* while            */
1439                 return KEY_while;
1440               }
1441
1442               goto unknown;
1443
1444             case 'r':
1445               if (name[2] == 'i' &&
1446                   name[3] == 't' &&
1447                   name[4] == 'e')
1448               {                                   /* write            */
1449                 return -KEY_write;
1450               }
1451
1452               goto unknown;
1453
1454             default:
1455               goto unknown;
1456           }
1457
1458         default:
1459           goto unknown;
1460       }
1461
1462     case 6: /* 33 tokens of length 6 */
1463       switch (name[0])
1464       {
1465         case 'a':
1466           if (name[1] == 'c' &&
1467               name[2] == 'c' &&
1468               name[3] == 'e' &&
1469               name[4] == 'p' &&
1470               name[5] == 't')
1471           {                                       /* accept           */
1472             return -KEY_accept;
1473           }
1474
1475           goto unknown;
1476
1477         case 'c':
1478           switch (name[1])
1479           {
1480             case 'a':
1481               if (name[2] == 'l' &&
1482                   name[3] == 'l' &&
1483                   name[4] == 'e' &&
1484                   name[5] == 'r')
1485               {                                   /* caller           */
1486                 return -KEY_caller;
1487               }
1488
1489               goto unknown;
1490
1491             case 'h':
1492               if (name[2] == 'r' &&
1493                   name[3] == 'o' &&
1494                   name[4] == 'o' &&
1495                   name[5] == 't')
1496               {                                   /* chroot           */
1497                 return -KEY_chroot;
1498               }
1499
1500               goto unknown;
1501
1502             default:
1503               goto unknown;
1504           }
1505
1506         case 'd':
1507           if (name[1] == 'e' &&
1508               name[2] == 'l' &&
1509               name[3] == 'e' &&
1510               name[4] == 't' &&
1511               name[5] == 'e')
1512           {                                       /* delete           */
1513             return KEY_delete;
1514           }
1515
1516           goto unknown;
1517
1518         case 'e':
1519           switch (name[1])
1520           {
1521             case 'l':
1522               if (name[2] == 's' &&
1523                   name[3] == 'e' &&
1524                   name[4] == 'i' &&
1525                   name[5] == 'f')
1526               {                                   /* elseif           */
1527                 Perl_ck_warner_d(aTHX_ packWARN(WARN_SYNTAX), "elseif should be elsif");
1528               }
1529
1530               goto unknown;
1531
1532             case 'x':
1533               if (name[2] == 'i' &&
1534                   name[3] == 's' &&
1535                   name[4] == 't' &&
1536                   name[5] == 's')
1537               {                                   /* exists           */
1538                 return KEY_exists;
1539               }
1540
1541               goto unknown;
1542
1543             default:
1544               goto unknown;
1545           }
1546
1547         case 'f':
1548           switch (name[1])
1549           {
1550             case 'i':
1551               if (name[2] == 'l' &&
1552                   name[3] == 'e' &&
1553                   name[4] == 'n' &&
1554                   name[5] == 'o')
1555               {                                   /* fileno           */
1556                 return -KEY_fileno;
1557               }
1558
1559               goto unknown;
1560
1561             case 'o':
1562               if (name[2] == 'r' &&
1563                   name[3] == 'm' &&
1564                   name[4] == 'a' &&
1565                   name[5] == 't')
1566               {                                   /* format           */
1567                 return KEY_format;
1568               }
1569
1570               goto unknown;
1571
1572             default:
1573               goto unknown;
1574           }
1575
1576         case 'g':
1577           if (name[1] == 'm' &&
1578               name[2] == 't' &&
1579               name[3] == 'i' &&
1580               name[4] == 'm' &&
1581               name[5] == 'e')
1582           {                                       /* gmtime           */
1583             return -KEY_gmtime;
1584           }
1585
1586           goto unknown;
1587
1588         case 'l':
1589           switch (name[1])
1590           {
1591             case 'e':
1592               if (name[2] == 'n' &&
1593                   name[3] == 'g' &&
1594                   name[4] == 't' &&
1595                   name[5] == 'h')
1596               {                                   /* length           */
1597                 return -KEY_length;
1598               }
1599
1600               goto unknown;
1601
1602             case 'i':
1603               if (name[2] == 's' &&
1604                   name[3] == 't' &&
1605                   name[4] == 'e' &&
1606                   name[5] == 'n')
1607               {                                   /* listen           */
1608                 return -KEY_listen;
1609               }
1610
1611               goto unknown;
1612
1613             default:
1614               goto unknown;
1615           }
1616
1617         case 'm':
1618           if (name[1] == 's' &&
1619               name[2] == 'g')
1620           {
1621             switch (name[3])
1622             {
1623               case 'c':
1624                 if (name[4] == 't' &&
1625                     name[5] == 'l')
1626                 {                                 /* msgctl           */
1627                   return -KEY_msgctl;
1628                 }
1629
1630                 goto unknown;
1631
1632               case 'g':
1633                 if (name[4] == 'e' &&
1634                     name[5] == 't')
1635                 {                                 /* msgget           */
1636                   return -KEY_msgget;
1637                 }
1638
1639                 goto unknown;
1640
1641               case 'r':
1642                 if (name[4] == 'c' &&
1643                     name[5] == 'v')
1644                 {                                 /* msgrcv           */
1645                   return -KEY_msgrcv;
1646                 }
1647
1648                 goto unknown;
1649
1650               case 's':
1651                 if (name[4] == 'n' &&
1652                     name[5] == 'd')
1653                 {                                 /* msgsnd           */
1654                   return -KEY_msgsnd;
1655                 }
1656
1657                 goto unknown;
1658
1659               default:
1660                 goto unknown;
1661             }
1662           }
1663
1664           goto unknown;
1665
1666         case 'p':
1667           if (name[1] == 'r' &&
1668               name[2] == 'i' &&
1669               name[3] == 'n' &&
1670               name[4] == 't' &&
1671               name[5] == 'f')
1672           {                                       /* printf           */
1673             return KEY_printf;
1674           }
1675
1676           goto unknown;
1677
1678         case 'r':
1679           switch (name[1])
1680           {
1681             case 'e':
1682               switch (name[2])
1683               {
1684                 case 'n':
1685                   if (name[3] == 'a' &&
1686                       name[4] == 'm' &&
1687                       name[5] == 'e')
1688                   {                               /* rename           */
1689                     return -KEY_rename;
1690                   }
1691
1692                   goto unknown;
1693
1694                 case 't':
1695                   if (name[3] == 'u' &&
1696                       name[4] == 'r' &&
1697                       name[5] == 'n')
1698                   {                               /* return           */
1699                     return KEY_return;
1700                   }
1701
1702                   goto unknown;
1703
1704                 default:
1705                   goto unknown;
1706               }
1707
1708             case 'i':
1709               if (name[2] == 'n' &&
1710                   name[3] == 'd' &&
1711                   name[4] == 'e' &&
1712                   name[5] == 'x')
1713               {                                   /* rindex           */
1714                 return -KEY_rindex;
1715               }
1716
1717               goto unknown;
1718
1719             default:
1720               goto unknown;
1721           }
1722
1723         case 's':
1724           switch (name[1])
1725           {
1726             case 'c':
1727               if (name[2] == 'a' &&
1728                   name[3] == 'l' &&
1729                   name[4] == 'a' &&
1730                   name[5] == 'r')
1731               {                                   /* scalar           */
1732                 return KEY_scalar;
1733               }
1734
1735               goto unknown;
1736
1737             case 'e':
1738               switch (name[2])
1739               {
1740                 case 'l':
1741                   if (name[3] == 'e' &&
1742                       name[4] == 'c' &&
1743                       name[5] == 't')
1744                   {                               /* select           */
1745                     return -KEY_select;
1746                   }
1747
1748                   goto unknown;
1749
1750                 case 'm':
1751                   switch (name[3])
1752                   {
1753                     case 'c':
1754                       if (name[4] == 't' &&
1755                           name[5] == 'l')
1756                       {                           /* semctl           */
1757                         return -KEY_semctl;
1758                       }
1759
1760                       goto unknown;
1761
1762                     case 'g':
1763                       if (name[4] == 'e' &&
1764                           name[5] == 't')
1765                       {                           /* semget           */
1766                         return -KEY_semget;
1767                       }
1768
1769                       goto unknown;
1770
1771                     default:
1772                       goto unknown;
1773                   }
1774
1775                 default:
1776                   goto unknown;
1777               }
1778
1779             case 'h':
1780               if (name[2] == 'm')
1781               {
1782                 switch (name[3])
1783                 {
1784                   case 'c':
1785                     if (name[4] == 't' &&
1786                         name[5] == 'l')
1787                     {                             /* shmctl           */
1788                       return -KEY_shmctl;
1789                     }
1790
1791                     goto unknown;
1792
1793                   case 'g':
1794                     if (name[4] == 'e' &&
1795                         name[5] == 't')
1796                     {                             /* shmget           */
1797                       return -KEY_shmget;
1798                     }
1799
1800                     goto unknown;
1801
1802                   default:
1803                     goto unknown;
1804                 }
1805               }
1806
1807               goto unknown;
1808
1809             case 'o':
1810               if (name[2] == 'c' &&
1811                   name[3] == 'k' &&
1812                   name[4] == 'e' &&
1813                   name[5] == 't')
1814               {                                   /* socket           */
1815                 return -KEY_socket;
1816               }
1817
1818               goto unknown;
1819
1820             case 'p':
1821               if (name[2] == 'l' &&
1822                   name[3] == 'i' &&
1823                   name[4] == 'c' &&
1824                   name[5] == 'e')
1825               {                                   /* splice           */
1826                 return -KEY_splice;
1827               }
1828
1829               goto unknown;
1830
1831             case 'u':
1832               if (name[2] == 'b' &&
1833                   name[3] == 's' &&
1834                   name[4] == 't' &&
1835                   name[5] == 'r')
1836               {                                   /* substr           */
1837                 return -KEY_substr;
1838               }
1839
1840               goto unknown;
1841
1842             case 'y':
1843               if (name[2] == 's' &&
1844                   name[3] == 't' &&
1845                   name[4] == 'e' &&
1846                   name[5] == 'm')
1847               {                                   /* system           */
1848                 return -KEY_system;
1849               }
1850
1851               goto unknown;
1852
1853             default:
1854               goto unknown;
1855           }
1856
1857         case 'u':
1858           if (name[1] == 'n')
1859           {
1860             switch (name[2])
1861             {
1862               case 'l':
1863                 switch (name[3])
1864                 {
1865                   case 'e':
1866                     if (name[4] == 's' &&
1867                         name[5] == 's')
1868                     {                             /* unless           */
1869                       return KEY_unless;
1870                     }
1871
1872                     goto unknown;
1873
1874                   case 'i':
1875                     if (name[4] == 'n' &&
1876                         name[5] == 'k')
1877                     {                             /* unlink           */
1878                       return -KEY_unlink;
1879                     }
1880
1881                     goto unknown;
1882
1883                   default:
1884                     goto unknown;
1885                 }
1886
1887               case 'p':
1888                 if (name[3] == 'a' &&
1889                     name[4] == 'c' &&
1890                     name[5] == 'k')
1891                 {                                 /* unpack           */
1892                   return -KEY_unpack;
1893                 }
1894
1895                 goto unknown;
1896
1897               default:
1898                 goto unknown;
1899             }
1900           }
1901
1902           goto unknown;
1903
1904         case 'v':
1905           if (name[1] == 'a' &&
1906               name[2] == 'l' &&
1907               name[3] == 'u' &&
1908               name[4] == 'e' &&
1909               name[5] == 's')
1910           {                                       /* values           */
1911             return -KEY_values;
1912           }
1913
1914           goto unknown;
1915
1916         default:
1917           goto unknown;
1918       }
1919
1920     case 7: /* 30 tokens of length 7 */
1921       switch (name[0])
1922       {
1923         case 'D':
1924           if (name[1] == 'E' &&
1925               name[2] == 'S' &&
1926               name[3] == 'T' &&
1927               name[4] == 'R' &&
1928               name[5] == 'O' &&
1929               name[6] == 'Y')
1930           {                                       /* DESTROY          */
1931             return KEY_DESTROY;
1932           }
1933
1934           goto unknown;
1935
1936         case '_':
1937           if (name[1] == '_')
1938           {
1939             switch (name[2])
1940             {
1941               case 'E':
1942                 if (name[3] == 'N' &&
1943                     name[4] == 'D' &&
1944                     name[5] == '_' &&
1945                     name[6] == '_')
1946                 {                                 /* __END__          */
1947                   return KEY___END__;
1948                 }
1949
1950                 goto unknown;
1951
1952               case 'S':
1953                 if (name[3] == 'U' &&
1954                     name[4] == 'B' &&
1955                     name[5] == '_' &&
1956                     name[6] == '_')
1957                 {                                 /* __SUB__          */
1958                   return (all_keywords || FEATURE___SUB___IS_ENABLED ? -KEY___SUB__ : 0);
1959                 }
1960
1961                 goto unknown;
1962
1963               default:
1964                 goto unknown;
1965             }
1966           }
1967
1968           goto unknown;
1969
1970         case 'b':
1971           if (name[1] == 'i' &&
1972               name[2] == 'n' &&
1973               name[3] == 'm' &&
1974               name[4] == 'o' &&
1975               name[5] == 'd' &&
1976               name[6] == 'e')
1977           {                                       /* binmode          */
1978             return -KEY_binmode;
1979           }
1980
1981           goto unknown;
1982
1983         case 'c':
1984           if (name[1] == 'o' &&
1985               name[2] == 'n' &&
1986               name[3] == 'n' &&
1987               name[4] == 'e' &&
1988               name[5] == 'c' &&
1989               name[6] == 't')
1990           {                                       /* connect          */
1991             return -KEY_connect;
1992           }
1993
1994           goto unknown;
1995
1996         case 'd':
1997           switch (name[1])
1998           {
1999             case 'b':
2000               if (name[2] == 'm' &&
2001                   name[3] == 'o' &&
2002                   name[4] == 'p' &&
2003                   name[5] == 'e' &&
2004                   name[6] == 'n')
2005               {                                   /* dbmopen          */
2006                 return -KEY_dbmopen;
2007               }
2008
2009               goto unknown;
2010
2011             case 'e':
2012               if (name[2] == 'f')
2013               {
2014                 switch (name[3])
2015                 {
2016                   case 'a':
2017                     if (name[4] == 'u' &&
2018                         name[5] == 'l' &&
2019                         name[6] == 't')
2020                     {                             /* default          */
2021                       return (all_keywords || FEATURE_SWITCH_IS_ENABLED ? KEY_default : 0);
2022                     }
2023
2024                     goto unknown;
2025
2026                   case 'i':
2027                     if (name[4] == 'n' &&
2028                         name[5] == 'e' &&
2029                         name[6] == 'd')
2030                     {                             /* defined          */
2031                       return KEY_defined;
2032                     }
2033
2034                     goto unknown;
2035
2036                   default:
2037                     goto unknown;
2038                 }
2039               }
2040
2041               goto unknown;
2042
2043             default:
2044               goto unknown;
2045           }
2046
2047         case 'f':
2048           if (name[1] == 'o' &&
2049               name[2] == 'r' &&
2050               name[3] == 'e' &&
2051               name[4] == 'a' &&
2052               name[5] == 'c' &&
2053               name[6] == 'h')
2054           {                                       /* foreach          */
2055             return KEY_foreach;
2056           }
2057
2058           goto unknown;
2059
2060         case 'g':
2061           if (name[1] == 'e' &&
2062               name[2] == 't' &&
2063               name[3] == 'p')
2064           {
2065             switch (name[4])
2066             {
2067               case 'g':
2068                 if (name[5] == 'r' &&
2069                     name[6] == 'p')
2070                 {                                 /* getpgrp          */
2071                   return -KEY_getpgrp;
2072                 }
2073
2074                 goto unknown;
2075
2076               case 'p':
2077                 if (name[5] == 'i' &&
2078                     name[6] == 'd')
2079                 {                                 /* getppid          */
2080                   return -KEY_getppid;
2081                 }
2082
2083                 goto unknown;
2084
2085               default:
2086                 goto unknown;
2087             }
2088           }
2089
2090           goto unknown;
2091
2092         case 'l':
2093           if (name[1] == 'c' &&
2094               name[2] == 'f' &&
2095               name[3] == 'i' &&
2096               name[4] == 'r' &&
2097               name[5] == 's' &&
2098               name[6] == 't')
2099           {                                       /* lcfirst          */
2100             return -KEY_lcfirst;
2101           }
2102
2103           goto unknown;
2104
2105         case 'o':
2106           if (name[1] == 'p' &&
2107               name[2] == 'e' &&
2108               name[3] == 'n' &&
2109               name[4] == 'd' &&
2110               name[5] == 'i' &&
2111               name[6] == 'r')
2112           {                                       /* opendir          */
2113             return -KEY_opendir;
2114           }
2115
2116           goto unknown;
2117
2118         case 'p':
2119           if (name[1] == 'a' &&
2120               name[2] == 'c' &&
2121               name[3] == 'k' &&
2122               name[4] == 'a' &&
2123               name[5] == 'g' &&
2124               name[6] == 'e')
2125           {                                       /* package          */
2126             return KEY_package;
2127           }
2128
2129           goto unknown;
2130
2131         case 'r':
2132           if (name[1] == 'e')
2133           {
2134             switch (name[2])
2135             {
2136               case 'a':
2137                 if (name[3] == 'd' &&
2138                     name[4] == 'd' &&
2139                     name[5] == 'i' &&
2140                     name[6] == 'r')
2141                 {                                 /* readdir          */
2142                   return -KEY_readdir;
2143                 }
2144
2145                 goto unknown;
2146
2147               case 'q':
2148                 if (name[3] == 'u' &&
2149                     name[4] == 'i' &&
2150                     name[5] == 'r' &&
2151                     name[6] == 'e')
2152                 {                                 /* require          */
2153                   return KEY_require;
2154                 }
2155
2156                 goto unknown;
2157
2158               case 'v':
2159                 if (name[3] == 'e' &&
2160                     name[4] == 'r' &&
2161                     name[5] == 's' &&
2162                     name[6] == 'e')
2163                 {                                 /* reverse          */
2164                   return -KEY_reverse;
2165                 }
2166
2167                 goto unknown;
2168
2169               default:
2170                 goto unknown;
2171             }
2172           }
2173
2174           goto unknown;
2175
2176         case 's':
2177           switch (name[1])
2178           {
2179             case 'e':
2180               switch (name[2])
2181               {
2182                 case 'e':
2183                   if (name[3] == 'k' &&
2184                       name[4] == 'd' &&
2185                       name[5] == 'i' &&
2186                       name[6] == 'r')
2187                   {                               /* seekdir          */
2188                     return -KEY_seekdir;
2189                   }
2190
2191                   goto unknown;
2192
2193                 case 't':
2194                   if (name[3] == 'p' &&
2195                       name[4] == 'g' &&
2196                       name[5] == 'r' &&
2197                       name[6] == 'p')
2198                   {                               /* setpgrp          */
2199                     return -KEY_setpgrp;
2200                   }
2201
2202                   goto unknown;
2203
2204                 default:
2205                   goto unknown;
2206               }
2207
2208             case 'h':
2209               if (name[2] == 'm' &&
2210                   name[3] == 'r' &&
2211                   name[4] == 'e' &&
2212                   name[5] == 'a' &&
2213                   name[6] == 'd')
2214               {                                   /* shmread          */
2215                 return -KEY_shmread;
2216               }
2217
2218               goto unknown;
2219
2220             case 'p':
2221               if (name[2] == 'r' &&
2222                   name[3] == 'i' &&
2223                   name[4] == 'n' &&
2224                   name[5] == 't' &&
2225                   name[6] == 'f')
2226               {                                   /* sprintf          */
2227                 return -KEY_sprintf;
2228               }
2229
2230               goto unknown;
2231
2232             case 'y':
2233               switch (name[2])
2234               {
2235                 case 'm':
2236                   if (name[3] == 'l' &&
2237                       name[4] == 'i' &&
2238                       name[5] == 'n' &&
2239                       name[6] == 'k')
2240                   {                               /* symlink          */
2241                     return -KEY_symlink;
2242                   }
2243
2244                   goto unknown;
2245
2246                 case 's':
2247                   switch (name[3])
2248                   {
2249                     case 'c':
2250                       if (name[4] == 'a' &&
2251                           name[5] == 'l' &&
2252                           name[6] == 'l')
2253                       {                           /* syscall          */
2254                         return -KEY_syscall;
2255                       }
2256
2257                       goto unknown;
2258
2259                     case 'o':
2260                       if (name[4] == 'p' &&
2261                           name[5] == 'e' &&
2262                           name[6] == 'n')
2263                       {                           /* sysopen          */
2264                         return -KEY_sysopen;
2265                       }
2266
2267                       goto unknown;
2268
2269                     case 'r':
2270                       if (name[4] == 'e' &&
2271                           name[5] == 'a' &&
2272                           name[6] == 'd')
2273                       {                           /* sysread          */
2274                         return -KEY_sysread;
2275                       }
2276
2277                       goto unknown;
2278
2279                     case 's':
2280                       if (name[4] == 'e' &&
2281                           name[5] == 'e' &&
2282                           name[6] == 'k')
2283                       {                           /* sysseek          */
2284                         return -KEY_sysseek;
2285                       }
2286
2287                       goto unknown;
2288
2289                     default:
2290                       goto unknown;
2291                   }
2292
2293                 default:
2294                   goto unknown;
2295               }
2296
2297             default:
2298               goto unknown;
2299           }
2300
2301         case 't':
2302           if (name[1] == 'e' &&
2303               name[2] == 'l' &&
2304               name[3] == 'l' &&
2305               name[4] == 'd' &&
2306               name[5] == 'i' &&
2307               name[6] == 'r')
2308           {                                       /* telldir          */
2309             return -KEY_telldir;
2310           }
2311
2312           goto unknown;
2313
2314         case 'u':
2315           switch (name[1])
2316           {
2317             case 'c':
2318               if (name[2] == 'f' &&
2319                   name[3] == 'i' &&
2320                   name[4] == 'r' &&
2321                   name[5] == 's' &&
2322                   name[6] == 't')
2323               {                                   /* ucfirst          */
2324                 return -KEY_ucfirst;
2325               }
2326
2327               goto unknown;
2328
2329             case 'n':
2330               if (name[2] == 's' &&
2331                   name[3] == 'h' &&
2332                   name[4] == 'i' &&
2333                   name[5] == 'f' &&
2334                   name[6] == 't')
2335               {                                   /* unshift          */
2336                 return -KEY_unshift;
2337               }
2338
2339               goto unknown;
2340
2341             default:
2342               goto unknown;
2343           }
2344
2345         case 'w':
2346           if (name[1] == 'a' &&
2347               name[2] == 'i' &&
2348               name[3] == 't' &&
2349               name[4] == 'p' &&
2350               name[5] == 'i' &&
2351               name[6] == 'd')
2352           {                                       /* waitpid          */
2353             return -KEY_waitpid;
2354           }
2355
2356           goto unknown;
2357
2358         default:
2359           goto unknown;
2360       }
2361
2362     case 8: /* 26 tokens of length 8 */
2363       switch (name[0])
2364       {
2365         case 'A':
2366           if (name[1] == 'U' &&
2367               name[2] == 'T' &&
2368               name[3] == 'O' &&
2369               name[4] == 'L' &&
2370               name[5] == 'O' &&
2371               name[6] == 'A' &&
2372               name[7] == 'D')
2373           {                                       /* AUTOLOAD         */
2374             return KEY_AUTOLOAD;
2375           }
2376
2377           goto unknown;
2378
2379         case '_':
2380           if (name[1] == '_')
2381           {
2382             switch (name[2])
2383             {
2384               case 'D':
2385                 if (name[3] == 'A' &&
2386                     name[4] == 'T' &&
2387                     name[5] == 'A' &&
2388                     name[6] == '_' &&
2389                     name[7] == '_')
2390                 {                                 /* __DATA__         */
2391                   return KEY___DATA__;
2392                 }
2393
2394                 goto unknown;
2395
2396               case 'F':
2397                 if (name[3] == 'I' &&
2398                     name[4] == 'L' &&
2399                     name[5] == 'E' &&
2400                     name[6] == '_' &&
2401                     name[7] == '_')
2402                 {                                 /* __FILE__         */
2403                   return -KEY___FILE__;
2404                 }
2405
2406                 goto unknown;
2407
2408               case 'L':
2409                 if (name[3] == 'I' &&
2410                     name[4] == 'N' &&
2411                     name[5] == 'E' &&
2412                     name[6] == '_' &&
2413                     name[7] == '_')
2414                 {                                 /* __LINE__         */
2415                   return -KEY___LINE__;
2416                 }
2417
2418                 goto unknown;
2419
2420               default:
2421                 goto unknown;
2422             }
2423           }
2424
2425           goto unknown;
2426
2427         case 'c':
2428           switch (name[1])
2429           {
2430             case 'l':
2431               if (name[2] == 'o' &&
2432                   name[3] == 's' &&
2433                   name[4] == 'e' &&
2434                   name[5] == 'd' &&
2435                   name[6] == 'i' &&
2436                   name[7] == 'r')
2437               {                                   /* closedir         */
2438                 return -KEY_closedir;
2439               }
2440
2441               goto unknown;
2442
2443             case 'o':
2444               if (name[2] == 'n' &&
2445                   name[3] == 't' &&
2446                   name[4] == 'i' &&
2447                   name[5] == 'n' &&
2448                   name[6] == 'u' &&
2449                   name[7] == 'e')
2450               {                                   /* continue         */
2451                 return -KEY_continue;
2452               }
2453
2454               goto unknown;
2455
2456             default:
2457               goto unknown;
2458           }
2459
2460         case 'd':
2461           if (name[1] == 'b' &&
2462               name[2] == 'm' &&
2463               name[3] == 'c' &&
2464               name[4] == 'l' &&
2465               name[5] == 'o' &&
2466               name[6] == 's' &&
2467               name[7] == 'e')
2468           {                                       /* dbmclose         */
2469             return -KEY_dbmclose;
2470           }
2471
2472           goto unknown;
2473
2474         case 'e':
2475           if (name[1] == 'n' &&
2476               name[2] == 'd')
2477           {
2478             switch (name[3])
2479             {
2480               case 'g':
2481                 if (name[4] == 'r' &&
2482                     name[5] == 'e' &&
2483                     name[6] == 'n' &&
2484                     name[7] == 't')
2485                 {                                 /* endgrent         */
2486                   return -KEY_endgrent;
2487                 }
2488
2489                 goto unknown;
2490
2491               case 'p':
2492                 if (name[4] == 'w' &&
2493                     name[5] == 'e' &&
2494                     name[6] == 'n' &&
2495                     name[7] == 't')
2496                 {                                 /* endpwent         */
2497                   return -KEY_endpwent;
2498                 }
2499
2500                 goto unknown;
2501
2502               default:
2503                 goto unknown;
2504             }
2505           }
2506
2507           goto unknown;
2508
2509         case 'f':
2510           if (name[1] == 'o' &&
2511               name[2] == 'r' &&
2512               name[3] == 'm' &&
2513               name[4] == 'l' &&
2514               name[5] == 'i' &&
2515               name[6] == 'n' &&
2516               name[7] == 'e')
2517           {                                       /* formline         */
2518             return -KEY_formline;
2519           }
2520
2521           goto unknown;
2522
2523         case 'g':
2524           if (name[1] == 'e' &&
2525               name[2] == 't')
2526           {
2527             switch (name[3])
2528             {
2529               case 'g':
2530                 if (name[4] == 'r')
2531                 {
2532                   switch (name[5])
2533                   {
2534                     case 'e':
2535                       if (name[6] == 'n' &&
2536                           name[7] == 't')
2537                       {                           /* getgrent         */
2538                         return -KEY_getgrent;
2539                       }
2540
2541                       goto unknown;
2542
2543                     case 'g':
2544                       if (name[6] == 'i' &&
2545                           name[7] == 'd')
2546                       {                           /* getgrgid         */
2547                         return -KEY_getgrgid;
2548                       }
2549
2550                       goto unknown;
2551
2552                     case 'n':
2553                       if (name[6] == 'a' &&
2554                           name[7] == 'm')
2555                       {                           /* getgrnam         */
2556                         return -KEY_getgrnam;
2557                       }
2558
2559                       goto unknown;
2560
2561                     default:
2562                       goto unknown;
2563                   }
2564                 }
2565
2566                 goto unknown;
2567
2568               case 'l':
2569                 if (name[4] == 'o' &&
2570                     name[5] == 'g' &&
2571                     name[6] == 'i' &&
2572                     name[7] == 'n')
2573                 {                                 /* getlogin         */
2574                   return -KEY_getlogin;
2575                 }
2576
2577                 goto unknown;
2578
2579               case 'p':
2580                 if (name[4] == 'w')
2581                 {
2582                   switch (name[5])
2583                   {
2584                     case 'e':
2585                       if (name[6] == 'n' &&
2586                           name[7] == 't')
2587                       {                           /* getpwent         */
2588                         return -KEY_getpwent;
2589                       }
2590
2591                       goto unknown;
2592
2593                     case 'n':
2594                       if (name[6] == 'a' &&
2595                           name[7] == 'm')
2596                       {                           /* getpwnam         */
2597                         return -KEY_getpwnam;
2598                       }
2599
2600                       goto unknown;
2601
2602                     case 'u':
2603                       if (name[6] == 'i' &&
2604                           name[7] == 'd')
2605                       {                           /* getpwuid         */
2606                         return -KEY_getpwuid;
2607                       }
2608
2609                       goto unknown;
2610
2611                     default:
2612                       goto unknown;
2613                   }
2614                 }
2615
2616                 goto unknown;
2617
2618               default:
2619                 goto unknown;
2620             }
2621           }
2622
2623           goto unknown;
2624
2625         case 'r':
2626           if (name[1] == 'e' &&
2627               name[2] == 'a' &&
2628               name[3] == 'd')
2629           {
2630             switch (name[4])
2631             {
2632               case 'l':
2633                 if (name[5] == 'i' &&
2634                     name[6] == 'n')
2635                 {
2636                   switch (name[7])
2637                   {
2638                     case 'e':
2639                       {                           /* readline         */
2640                         return -KEY_readline;
2641                       }
2642
2643                     case 'k':
2644                       {                           /* readlink         */
2645                         return -KEY_readlink;
2646                       }
2647
2648                     default:
2649                       goto unknown;
2650                   }
2651                 }
2652
2653                 goto unknown;
2654
2655               case 'p':
2656                 if (name[5] == 'i' &&
2657                     name[6] == 'p' &&
2658                     name[7] == 'e')
2659                 {                                 /* readpipe         */
2660                   return -KEY_readpipe;
2661                 }
2662
2663                 goto unknown;
2664
2665               default:
2666                 goto unknown;
2667             }
2668           }
2669
2670           goto unknown;
2671
2672         case 's':
2673           switch (name[1])
2674           {
2675             case 'e':
2676               if (name[2] == 't')
2677               {
2678                 switch (name[3])
2679                 {
2680                   case 'g':
2681                     if (name[4] == 'r' &&
2682                         name[5] == 'e' &&
2683                         name[6] == 'n' &&
2684                         name[7] == 't')
2685                     {                             /* setgrent         */
2686                       return -KEY_setgrent;
2687                     }
2688
2689                     goto unknown;
2690
2691                   case 'p':
2692                     if (name[4] == 'w' &&
2693                         name[5] == 'e' &&
2694                         name[6] == 'n' &&
2695                         name[7] == 't')
2696                     {                             /* setpwent         */
2697                       return -KEY_setpwent;
2698                     }
2699
2700                     goto unknown;
2701
2702                   default:
2703                     goto unknown;
2704                 }
2705               }
2706
2707               goto unknown;
2708
2709             case 'h':
2710               switch (name[2])
2711               {
2712                 case 'm':
2713                   if (name[3] == 'w' &&
2714                       name[4] == 'r' &&
2715                       name[5] == 'i' &&
2716                       name[6] == 't' &&
2717                       name[7] == 'e')
2718                   {                               /* shmwrite         */
2719                     return -KEY_shmwrite;
2720                   }
2721
2722                   goto unknown;
2723
2724                 case 'u':
2725                   if (name[3] == 't' &&
2726                       name[4] == 'd' &&
2727                       name[5] == 'o' &&
2728                       name[6] == 'w' &&
2729                       name[7] == 'n')
2730                   {                               /* shutdown         */
2731                     return -KEY_shutdown;
2732                   }
2733
2734                   goto unknown;
2735
2736                 default:
2737                   goto unknown;
2738               }
2739
2740             case 'y':
2741               if (name[2] == 's' &&
2742                   name[3] == 'w' &&
2743                   name[4] == 'r' &&
2744                   name[5] == 'i' &&
2745                   name[6] == 't' &&
2746                   name[7] == 'e')
2747               {                                   /* syswrite         */
2748                 return -KEY_syswrite;
2749               }
2750
2751               goto unknown;
2752
2753             default:
2754               goto unknown;
2755           }
2756
2757         case 't':
2758           if (name[1] == 'r' &&
2759               name[2] == 'u' &&
2760               name[3] == 'n' &&
2761               name[4] == 'c' &&
2762               name[5] == 'a' &&
2763               name[6] == 't' &&
2764               name[7] == 'e')
2765           {                                       /* truncate         */
2766             return -KEY_truncate;
2767           }
2768
2769           goto unknown;
2770
2771         default:
2772           goto unknown;
2773       }
2774
2775     case 9: /* 10 tokens of length 9 */
2776       switch (name[0])
2777       {
2778         case 'U':
2779           if (name[1] == 'N' &&
2780               name[2] == 'I' &&
2781               name[3] == 'T' &&
2782               name[4] == 'C' &&
2783               name[5] == 'H' &&
2784               name[6] == 'E' &&
2785               name[7] == 'C' &&
2786               name[8] == 'K')
2787           {                                       /* UNITCHECK        */
2788             return KEY_UNITCHECK;
2789           }
2790
2791           goto unknown;
2792
2793         case 'e':
2794           switch (name[1])
2795           {
2796             case 'n':
2797               if (name[2] == 'd' &&
2798                   name[3] == 'n' &&
2799                   name[4] == 'e' &&
2800                   name[5] == 't' &&
2801                   name[6] == 'e' &&
2802                   name[7] == 'n' &&
2803                   name[8] == 't')
2804               {                                   /* endnetent        */
2805                 return -KEY_endnetent;
2806               }
2807
2808               goto unknown;
2809
2810             case 'v':
2811               if (name[2] == 'a' &&
2812                   name[3] == 'l' &&
2813                   name[4] == 'b' &&
2814                   name[5] == 'y' &&
2815                   name[6] == 't' &&
2816                   name[7] == 'e' &&
2817                   name[8] == 's')
2818               {                                   /* evalbytes        */
2819                 return (all_keywords || FEATURE_EVALBYTES_IS_ENABLED ? -KEY_evalbytes : 0);
2820               }
2821
2822               goto unknown;
2823
2824             default:
2825               goto unknown;
2826           }
2827
2828         case 'g':
2829           if (name[1] == 'e' &&
2830               name[2] == 't' &&
2831               name[3] == 'n' &&
2832               name[4] == 'e' &&
2833               name[5] == 't' &&
2834               name[6] == 'e' &&
2835               name[7] == 'n' &&
2836               name[8] == 't')
2837           {                                       /* getnetent        */
2838             return -KEY_getnetent;
2839           }
2840
2841           goto unknown;
2842
2843         case 'l':
2844           if (name[1] == 'o' &&
2845               name[2] == 'c' &&
2846               name[3] == 'a' &&
2847               name[4] == 'l' &&
2848               name[5] == 't' &&
2849               name[6] == 'i' &&
2850               name[7] == 'm' &&
2851               name[8] == 'e')
2852           {                                       /* localtime        */
2853             return -KEY_localtime;
2854           }
2855
2856           goto unknown;
2857
2858         case 'p':
2859           if (name[1] == 'r' &&
2860               name[2] == 'o' &&
2861               name[3] == 't' &&
2862               name[4] == 'o' &&
2863               name[5] == 't' &&
2864               name[6] == 'y' &&
2865               name[7] == 'p' &&
2866               name[8] == 'e')
2867           {                                       /* prototype        */
2868             return KEY_prototype;
2869           }
2870
2871           goto unknown;
2872
2873         case 'q':
2874           if (name[1] == 'u' &&
2875               name[2] == 'o' &&
2876               name[3] == 't' &&
2877               name[4] == 'e' &&
2878               name[5] == 'm' &&
2879               name[6] == 'e' &&
2880               name[7] == 't' &&
2881               name[8] == 'a')
2882           {                                       /* quotemeta        */
2883             return -KEY_quotemeta;
2884           }
2885
2886           goto unknown;
2887
2888         case 'r':
2889           if (name[1] == 'e' &&
2890               name[2] == 'w' &&
2891               name[3] == 'i' &&
2892               name[4] == 'n' &&
2893               name[5] == 'd' &&
2894               name[6] == 'd' &&
2895               name[7] == 'i' &&
2896               name[8] == 'r')
2897           {                                       /* rewinddir        */
2898             return -KEY_rewinddir;
2899           }
2900
2901           goto unknown;
2902
2903         case 's':
2904           if (name[1] == 'e' &&
2905               name[2] == 't' &&
2906               name[3] == 'n' &&
2907               name[4] == 'e' &&
2908               name[5] == 't' &&
2909               name[6] == 'e' &&
2910               name[7] == 'n' &&
2911               name[8] == 't')
2912           {                                       /* setnetent        */
2913             return -KEY_setnetent;
2914           }
2915
2916           goto unknown;
2917
2918         case 'w':
2919           if (name[1] == 'a' &&
2920               name[2] == 'n' &&
2921               name[3] == 't' &&
2922               name[4] == 'a' &&
2923               name[5] == 'r' &&
2924               name[6] == 'r' &&
2925               name[7] == 'a' &&
2926               name[8] == 'y')
2927           {                                       /* wantarray        */
2928             return -KEY_wantarray;
2929           }
2930
2931           goto unknown;
2932
2933         default:
2934           goto unknown;
2935       }
2936
2937     case 10: /* 9 tokens of length 10 */
2938       switch (name[0])
2939       {
2940         case 'e':
2941           if (name[1] == 'n' &&
2942               name[2] == 'd')
2943           {
2944             switch (name[3])
2945             {
2946               case 'h':
2947                 if (name[4] == 'o' &&
2948                     name[5] == 's' &&
2949                     name[6] == 't' &&
2950                     name[7] == 'e' &&
2951                     name[8] == 'n' &&
2952                     name[9] == 't')
2953                 {                                 /* endhostent       */
2954                   return -KEY_endhostent;
2955                 }
2956
2957                 goto unknown;
2958
2959               case 's':
2960                 if (name[4] == 'e' &&
2961                     name[5] == 'r' &&
2962                     name[6] == 'v' &&
2963                     name[7] == 'e' &&
2964                     name[8] == 'n' &&
2965                     name[9] == 't')
2966                 {                                 /* endservent       */
2967                   return -KEY_endservent;
2968                 }
2969
2970                 goto unknown;
2971
2972               default:
2973                 goto unknown;
2974             }
2975           }
2976
2977           goto unknown;
2978
2979         case 'g':
2980           if (name[1] == 'e' &&
2981               name[2] == 't')
2982           {
2983             switch (name[3])
2984             {
2985               case 'h':
2986                 if (name[4] == 'o' &&
2987                     name[5] == 's' &&
2988                     name[6] == 't' &&
2989                     name[7] == 'e' &&
2990                     name[8] == 'n' &&
2991                     name[9] == 't')
2992                 {                                 /* gethostent       */
2993                   return -KEY_gethostent;
2994                 }
2995
2996                 goto unknown;
2997
2998               case 's':
2999                 switch (name[4])
3000                 {
3001                   case 'e':
3002                     if (name[5] == 'r' &&
3003                         name[6] == 'v' &&
3004                         name[7] == 'e' &&
3005                         name[8] == 'n' &&
3006                         name[9] == 't')
3007                     {                             /* getservent       */
3008                       return -KEY_getservent;
3009                     }
3010
3011                     goto unknown;
3012
3013                   case 'o':
3014                     if (name[5] == 'c' &&
3015                         name[6] == 'k' &&
3016                         name[7] == 'o' &&
3017                         name[8] == 'p' &&
3018                         name[9] == 't')
3019                     {                             /* getsockopt       */
3020                       return -KEY_getsockopt;
3021                     }
3022
3023                     goto unknown;
3024
3025                   default:
3026                     goto unknown;
3027                 }
3028
3029               default:
3030                 goto unknown;
3031             }
3032           }
3033
3034           goto unknown;
3035
3036         case 's':
3037           switch (name[1])
3038           {
3039             case 'e':
3040               if (name[2] == 't')
3041               {
3042                 switch (name[3])
3043                 {
3044                   case 'h':
3045                     if (name[4] == 'o' &&
3046                         name[5] == 's' &&
3047                         name[6] == 't' &&
3048                         name[7] == 'e' &&
3049                         name[8] == 'n' &&
3050                         name[9] == 't')
3051                     {                             /* sethostent       */
3052                       return -KEY_sethostent;
3053                     }
3054
3055                     goto unknown;
3056
3057                   case 's':
3058                     switch (name[4])
3059                     {
3060                       case 'e':
3061                         if (name[5] == 'r' &&
3062                             name[6] == 'v' &&
3063                             name[7] == 'e' &&
3064                             name[8] == 'n' &&
3065                             name[9] == 't')
3066                         {                         /* setservent       */
3067                           return -KEY_setservent;
3068                         }
3069
3070                         goto unknown;
3071
3072                       case 'o':
3073                         if (name[5] == 'c' &&
3074                             name[6] == 'k' &&
3075                             name[7] == 'o' &&
3076                             name[8] == 'p' &&
3077                             name[9] == 't')
3078                         {                         /* setsockopt       */
3079                           return -KEY_setsockopt;
3080                         }
3081
3082                         goto unknown;
3083
3084                       default:
3085                         goto unknown;
3086                     }
3087
3088                   default:
3089                     goto unknown;
3090                 }
3091               }
3092
3093               goto unknown;
3094
3095             case 'o':
3096               if (name[2] == 'c' &&
3097                   name[3] == 'k' &&
3098                   name[4] == 'e' &&
3099                   name[5] == 't' &&
3100                   name[6] == 'p' &&
3101                   name[7] == 'a' &&
3102                   name[8] == 'i' &&
3103                   name[9] == 'r')
3104               {                                   /* socketpair       */
3105                 return -KEY_socketpair;
3106               }
3107
3108               goto unknown;
3109
3110             default:
3111               goto unknown;
3112           }
3113
3114         default:
3115           goto unknown;
3116       }
3117
3118     case 11: /* 8 tokens of length 11 */
3119       switch (name[0])
3120       {
3121         case '_':
3122           if (name[1] == '_' &&
3123               name[2] == 'P' &&
3124               name[3] == 'A' &&
3125               name[4] == 'C' &&
3126               name[5] == 'K' &&
3127               name[6] == 'A' &&
3128               name[7] == 'G' &&
3129               name[8] == 'E' &&
3130               name[9] == '_' &&
3131               name[10] == '_')
3132           {                                       /* __PACKAGE__      */
3133             return -KEY___PACKAGE__;
3134           }
3135
3136           goto unknown;
3137
3138         case 'e':
3139           if (name[1] == 'n' &&
3140               name[2] == 'd' &&
3141               name[3] == 'p' &&
3142               name[4] == 'r' &&
3143               name[5] == 'o' &&
3144               name[6] == 't' &&
3145               name[7] == 'o' &&
3146               name[8] == 'e' &&
3147               name[9] == 'n' &&
3148               name[10] == 't')
3149           {                                       /* endprotoent      */
3150             return -KEY_endprotoent;
3151           }
3152
3153           goto unknown;
3154
3155         case 'g':
3156           if (name[1] == 'e' &&
3157               name[2] == 't')
3158           {
3159             switch (name[3])
3160             {
3161               case 'p':
3162                 switch (name[4])
3163                 {
3164                   case 'e':
3165                     if (name[5] == 'e' &&
3166                         name[6] == 'r' &&
3167                         name[7] == 'n' &&
3168                         name[8] == 'a' &&
3169                         name[9] == 'm' &&
3170                         name[10] == 'e')
3171                     {                             /* getpeername      */
3172                       return -KEY_getpeername;
3173                     }
3174
3175                     goto unknown;
3176
3177                   case 'r':
3178                     switch (name[5])
3179                     {
3180                       case 'i':
3181                         if (name[6] == 'o' &&
3182                             name[7] == 'r' &&
3183                             name[8] == 'i' &&
3184                             name[9] == 't' &&
3185                             name[10] == 'y')
3186                         {                         /* getpriority      */
3187                           return -KEY_getpriority;
3188                         }
3189
3190                         goto unknown;
3191
3192                       case 'o':
3193                         if (name[6] == 't' &&
3194                             name[7] == 'o' &&
3195                             name[8] == 'e' &&
3196                             name[9] == 'n' &&
3197                             name[10] == 't')
3198                         {                         /* getprotoent      */
3199                           return -KEY_getprotoent;
3200                         }
3201
3202                         goto unknown;
3203
3204                       default:
3205                         goto unknown;
3206                     }
3207
3208                   default:
3209                     goto unknown;
3210                 }
3211
3212               case 's':
3213                 if (name[4] == 'o' &&
3214                     name[5] == 'c' &&
3215                     name[6] == 'k' &&
3216                     name[7] == 'n' &&
3217                     name[8] == 'a' &&
3218                     name[9] == 'm' &&
3219                     name[10] == 'e')
3220                 {                                 /* getsockname      */
3221                   return -KEY_getsockname;
3222                 }
3223
3224                 goto unknown;
3225
3226               default:
3227                 goto unknown;
3228             }
3229           }
3230
3231           goto unknown;
3232
3233         case 's':
3234           if (name[1] == 'e' &&
3235               name[2] == 't' &&
3236               name[3] == 'p' &&
3237               name[4] == 'r')
3238           {
3239             switch (name[5])
3240             {
3241               case 'i':
3242                 if (name[6] == 'o' &&
3243                     name[7] == 'r' &&
3244                     name[8] == 'i' &&
3245                     name[9] == 't' &&
3246                     name[10] == 'y')
3247                 {                                 /* setpriority      */
3248                   return -KEY_setpriority;
3249                 }
3250
3251                 goto unknown;
3252
3253               case 'o':
3254                 if (name[6] == 't' &&
3255                     name[7] == 'o' &&
3256                     name[8] == 'e' &&
3257                     name[9] == 'n' &&
3258                     name[10] == 't')
3259                 {                                 /* setprotoent      */
3260                   return -KEY_setprotoent;
3261                 }
3262
3263                 goto unknown;
3264
3265               default:
3266                 goto unknown;
3267             }
3268           }
3269
3270           goto unknown;
3271
3272         default:
3273           goto unknown;
3274       }
3275
3276     case 12: /* 2 tokens of length 12 */
3277       if (name[0] == 'g' &&
3278           name[1] == 'e' &&
3279           name[2] == 't' &&
3280           name[3] == 'n' &&
3281           name[4] == 'e' &&
3282           name[5] == 't' &&
3283           name[6] == 'b' &&
3284           name[7] == 'y')
3285       {
3286         switch (name[8])
3287         {
3288           case 'a':
3289             if (name[9] == 'd' &&
3290                 name[10] == 'd' &&
3291                 name[11] == 'r')
3292             {                                     /* getnetbyaddr     */
3293               return -KEY_getnetbyaddr;
3294             }
3295
3296             goto unknown;
3297
3298           case 'n':
3299             if (name[9] == 'a' &&
3300                 name[10] == 'm' &&
3301                 name[11] == 'e')
3302             {                                     /* getnetbyname     */
3303               return -KEY_getnetbyname;
3304             }
3305
3306             goto unknown;
3307
3308           default:
3309             goto unknown;
3310         }
3311       }
3312
3313       goto unknown;
3314
3315     case 13: /* 4 tokens of length 13 */
3316       if (name[0] == 'g' &&
3317           name[1] == 'e' &&
3318           name[2] == 't')
3319       {
3320         switch (name[3])
3321         {
3322           case 'h':
3323             if (name[4] == 'o' &&
3324                 name[5] == 's' &&
3325                 name[6] == 't' &&
3326                 name[7] == 'b' &&
3327                 name[8] == 'y')
3328             {
3329               switch (name[9])
3330               {
3331                 case 'a':
3332                   if (name[10] == 'd' &&
3333                       name[11] == 'd' &&
3334                       name[12] == 'r')
3335                   {                               /* gethostbyaddr    */
3336                     return -KEY_gethostbyaddr;
3337                   }
3338
3339                   goto unknown;
3340
3341                 case 'n':
3342                   if (name[10] == 'a' &&
3343                       name[11] == 'm' &&
3344                       name[12] == 'e')
3345                   {                               /* gethostbyname    */
3346                     return -KEY_gethostbyname;
3347                   }
3348
3349                   goto unknown;
3350
3351                 default:
3352                   goto unknown;
3353               }
3354             }
3355
3356             goto unknown;
3357
3358           case 's':
3359             if (name[4] == 'e' &&
3360                 name[5] == 'r' &&
3361                 name[6] == 'v' &&
3362                 name[7] == 'b' &&
3363                 name[8] == 'y')
3364             {
3365               switch (name[9])
3366               {
3367                 case 'n':
3368                   if (name[10] == 'a' &&
3369                       name[11] == 'm' &&
3370                       name[12] == 'e')
3371                   {                               /* getservbyname    */
3372                     return -KEY_getservbyname;
3373                   }
3374
3375                   goto unknown;
3376
3377                 case 'p':
3378                   if (name[10] == 'o' &&
3379                       name[11] == 'r' &&
3380                       name[12] == 't')
3381                   {                               /* getservbyport    */
3382                     return -KEY_getservbyport;
3383                   }
3384
3385                   goto unknown;
3386
3387                 default:
3388                   goto unknown;
3389               }
3390             }
3391
3392             goto unknown;
3393
3394           default:
3395             goto unknown;
3396         }
3397       }
3398
3399       goto unknown;
3400
3401     case 14: /* 1 tokens of length 14 */
3402       if (name[0] == 'g' &&
3403           name[1] == 'e' &&
3404           name[2] == 't' &&
3405           name[3] == 'p' &&
3406           name[4] == 'r' &&
3407           name[5] == 'o' &&
3408           name[6] == 't' &&
3409           name[7] == 'o' &&
3410           name[8] == 'b' &&
3411           name[9] == 'y' &&
3412           name[10] == 'n' &&
3413           name[11] == 'a' &&
3414           name[12] == 'm' &&
3415           name[13] == 'e')
3416       {                                           /* getprotobyname   */
3417         return -KEY_getprotobyname;
3418       }
3419
3420       goto unknown;
3421
3422     case 16: /* 1 tokens of length 16 */
3423       if (name[0] == 'g' &&
3424           name[1] == 'e' &&
3425           name[2] == 't' &&
3426           name[3] == 'p' &&
3427           name[4] == 'r' &&
3428           name[5] == 'o' &&
3429           name[6] == 't' &&
3430           name[7] == 'o' &&
3431           name[8] == 'b' &&
3432           name[9] == 'y' &&
3433           name[10] == 'n' &&
3434           name[11] == 'u' &&
3435           name[12] == 'm' &&
3436           name[13] == 'b' &&
3437           name[14] == 'e' &&
3438           name[15] == 'r')
3439       {                                           /* getprotobynumber */
3440         return -KEY_getprotobynumber;
3441       }
3442
3443       goto unknown;
3444
3445     default:
3446       goto unknown;
3447   }
3448
3449 unknown:
3450   return 0;
3451 }
3452
3453 /* Generated from:
3454  * f77998a5bc995c1b42d3d080de227ef5f11638bcd329367431d8f193aef2d3cc regen/keywords.pl
3455  * ex: set ro: */