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