home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 3 / 3997 / area.l < prev    next >
Encoding:
Text File  |  1991-09-09  |  12.6 KB  |  768 lines

  1. WS             [ \t]*
  2. N              [0-9]*
  3. N3             [0-9][0-9][0-9]
  4. N4             [0-9][0-9][0-9][0-9]
  5. N5             [0-9][0-9][0-9][0-9][0-9]
  6.  
  7.     #undef yywrap()
  8.  
  9. %%
  10.  
  11. \({N3}\){WS}{N3}{WS}-{WS}{N4}    {
  12.                 /* (800) 555-1234 */
  13.                 ECHO;
  14.                 }
  15.  
  16. {N}{N3}{WS}-{WS}{N5}{N}        {
  17.                 /* 123-12345 */
  18.                 ECHO;
  19.                 }
  20. {N}{N4}{WS}-{WS}{N4}{N}        {
  21.                 /* 1234-5678 */
  22.                 ECHO;
  23.                 }
  24.  
  25. {N3}{WS}-{WS}{N4}        {
  26.                 /* Add area code */
  27.                 dooneprefix(yytext);
  28.                 }
  29. %%
  30. #ifndef lint
  31. static char rcsid[] =
  32.     "@(#) $Header: area.l,v 1.1 91/09/05 22:52:01 leres Exp $ (LBL)";
  33. #endif
  34.  
  35. /*
  36.  * area - add area code to 415/510 prefixes
  37.  *
  38.  * Craig Leres, Lawrence Berkeley Laboratory
  39.  */
  40.  
  41. #include <stdio.h>
  42. #include <strings.h>
  43.  
  44. int targc;
  45. char **targv;
  46.  
  47. static int map[1000];
  48. static int ignore = 0;
  49.  
  50. void areainit();
  51.  
  52. extern char *optarg;
  53. extern int optind, opterr;
  54.  
  55. main(argc, argv)
  56.     int argc;
  57.     char **argv;
  58. {
  59.     register char *cp;
  60.     register int op;
  61.     char *argv0;
  62.  
  63.     if (cp = rindex(argv[0], '/'))
  64.         argv0 = cp + 1;
  65.     else
  66.         argv0 = argv[0];
  67.  
  68.     opterr = 0;
  69.     while ((op = getopt(argc, argv, "i:")) != EOF)
  70.         switch (op) {
  71.  
  72.         case 'i':
  73.             ignore = atoi(optarg);
  74.             break;
  75.  
  76.         default:
  77.             (void)fprintf(stderr,
  78.                 "usage: %s [-i <prefix>] [file ...]\n", argv0);
  79.             exit(1);
  80.             /* NOTREACHED */
  81.         }
  82.  
  83.     /* Let yywrap() figure out if there are any arguments to open */
  84.     targc = argc - optind;
  85.     targv = &argv[optind];
  86.     yyin = 0;
  87.     areainit();
  88.     (void)yywrap();
  89.  
  90.     /* Process file opened by yywrap() or stdin if no arguments */
  91.     if (yyin)
  92.         yylex();
  93.  
  94.     exit(0);
  95. }
  96.  
  97. yywrap()
  98. {
  99.     register char *file;
  100.     static int didany = 0;
  101.  
  102.     /* Close file, if necessary */
  103.     if (yyin && yyin != stdin) {
  104.         (void)fclose(yyin);
  105.         yyin = 0;
  106.     }
  107.  
  108.     /* Spin through arguments until we run out or successfully open one */
  109.     while (targc > 0) {
  110.         file = targv[0];
  111.         --targc;
  112.         ++targv;
  113.         ++didany;
  114.         if (yyin = fopen(file, "r"))
  115.             return(0);
  116.         else
  117.             perror(file);
  118.     }
  119.     if (!didany)
  120.         yyin = stdin;
  121.     return(1);
  122. }
  123.  
  124. dooneprefix(p)
  125.     register char *p;
  126. {
  127.     register char *cp;
  128.     register int prefix, area;
  129.  
  130.     prefix = atoi(p);
  131.     area = map[prefix];
  132.     if (area == 0)
  133.         fputs("(?) ", stdout);
  134.     else if (area != ignore)
  135.         printf("(%d) ", area);
  136.     fputs(p, stdout);
  137. }
  138.  
  139. void
  140. areainit()
  141. {
  142.     bzero((char *)map, sizeof(map));
  143.     map[204] = 510;
  144.     map[206] = 415;
  145.     map[208] = 510;
  146.     map[210] = 510;
  147.     map[215] = 510;
  148.     map[219] = 415;
  149.     map[221] = 415;
  150.     map[222] = 510;
  151.     map[223] = 510;
  152.     map[224] = 510;
  153.     map[226] = 510;
  154.     map[227] = 415;
  155.     map[228] = 510;
  156.     map[229] = 510;
  157.     map[231] = 510;
  158.     map[232] = 510;
  159.     map[233] = 510;
  160.     map[234] = 510;
  161.     map[235] = 510;
  162.     map[236] = 510;
  163.     map[237] = 510;
  164.     map[238] = 510;
  165.     map[239] = 415;
  166.     map[241] = 415;
  167.     map[243] = 415;
  168.     map[244] = 415;
  169.     map[245] = 510;
  170.     map[246] = 510;
  171.     map[248] = 510;
  172.     map[251] = 510;
  173.     map[252] = 415;
  174.     map[253] = 510;
  175.     map[254] = 510;
  176.     map[255] = 415;
  177.     map[256] = 510;
  178.     map[257] = 415;
  179.     map[258] = 415;
  180.     map[259] = 415;
  181.     map[261] = 510;
  182.     map[262] = 510;
  183.     map[263] = 510;
  184.     map[266] = 415;
  185.     map[267] = 415;
  186.     map[268] = 510;
  187.     map[271] = 510;
  188.     map[272] = 510;
  189.     map[273] = 510;
  190.     map[275] = 510;
  191.     map[276] = 510;
  192.     map[277] = 510;
  193.     map[278] = 510;
  194.     map[282] = 415;
  195.     map[283] = 510;
  196.     map[284] = 510;
  197.     map[285] = 415;
  198.     map[287] = 510;
  199.     map[289] = 415;
  200.     map[291] = 415;
  201.     map[292] = 415;
  202.     map[293] = 510;
  203.     map[294] = 510;
  204.     map[295] = 510;
  205.     map[296] = 415;
  206.     map[297] = 510;
  207.     map[302] = 510;
  208.     map[306] = 415;
  209.     map[307] = 415;
  210.     map[308] = 510;
  211.     map[312] = 415;
  212.     map[313] = 510;
  213.     map[317] = 510;
  214.     map[321] = 415;
  215.     map[322] = 415;
  216.     map[323] = 415;
  217.     map[324] = 415;
  218.     map[325] = 415;
  219.     map[326] = 415;
  220.     map[327] = 415;
  221.     map[328] = 415;
  222.     map[329] = 415;
  223.     map[330] = 415;
  224.     map[331] = 415;
  225.     map[332] = 415;
  226.     map[333] = 415;
  227.     map[334] = 415;
  228.     map[335] = 415;
  229.     map[336] = 415;
  230.     map[337] = 415;
  231.     map[338] = 415;
  232.     map[339] = 510;
  233.     map[340] = 415;
  234.     map[341] = 415;
  235.     map[342] = 415;
  236.     map[343] = 415;
  237.     map[344] = 415;
  238.     map[345] = 415;
  239.     map[346] = 415;
  240.     map[347] = 415;
  241.     map[348] = 415;
  242.     map[349] = 415;
  243.     map[351] = 510;
  244.     map[352] = 510;
  245.     map[354] = 415;
  246.     map[355] = 415;
  247.     map[356] = 510;
  248.     map[357] = 510;
  249.     map[358] = 415;
  250.     map[359] = 415;
  251.     map[361] = 415;
  252.     map[362] = 415;
  253.     map[363] = 415;
  254.     map[364] = 415;
  255.     map[365] = 415;
  256.     map[366] = 415;
  257.     map[367] = 415;
  258.     map[368] = 415;
  259.     map[369] = 415;
  260.     map[370] = 510;
  261.     map[371] = 415;
  262.     map[372] = 510;
  263.     map[373] = 510;
  264.     map[374] = 510;
  265.     map[375] = 415;
  266.     map[376] = 510;
  267.     map[377] = 415;
  268.     map[378] = 415;
  269.     map[381] = 415;
  270.     map[382] = 415;
  271.     map[383] = 415;
  272.     map[386] = 415;
  273.     map[387] = 415;
  274.     map[388] = 415;
  275.     map[389] = 415;
  276.     map[391] = 415;
  277.     map[392] = 415;
  278.     map[393] = 415;
  279.     map[394] = 415;
  280.     map[395] = 415;
  281.     map[396] = 415;
  282.     map[397] = 415;
  283.     map[398] = 415;
  284.     map[399] = 415;
  285.     map[403] = 415;
  286.     map[404] = 415;
  287.     map[406] = 415;
  288.     map[420] = 510;
  289.     map[421] = 415;
  290.     map[422] = 510;
  291.     map[423] = 510;
  292.     map[424] = 415;
  293.     map[425] = 510;
  294.     map[426] = 510;
  295.     map[427] = 510;
  296.     map[428] = 510;
  297.     map[429] = 510;
  298.     map[430] = 510;
  299.     map[431] = 415;
  300.     map[432] = 415;
  301.     map[433] = 415;
  302.     map[434] = 415;
  303.     map[435] = 415;
  304.     map[436] = 510;
  305.     map[437] = 510;
  306.     map[438] = 510;
  307.     map[439] = 510;
  308.     map[441] = 415;
  309.     map[442] = 415;
  310.     map[443] = 510;
  311.     map[444] = 510;
  312.     map[445] = 415;
  313.     map[446] = 510;
  314.     map[447] = 510;
  315.     map[448] = 510;
  316.     map[449] = 415;
  317.     map[451] = 510;
  318.     map[452] = 510;
  319.     map[453] = 415;
  320.     map[454] = 415;
  321.     map[455] = 510;
  322.     map[456] = 415;
  323.     map[457] = 415;
  324.     map[458] = 510;
  325.     map[459] = 415;
  326.     map[460] = 510;
  327.     map[461] = 415;
  328.     map[462] = 510;
  329.     map[463] = 510;
  330.     map[464] = 415;
  331.     map[465] = 415;
  332.     map[466] = 415;
  333.     map[467] = 415;
  334.     map[468] = 415;
  335.     map[469] = 415;
  336.     map[471] = 510;
  337.     map[472] = 415;
  338.     map[473] = 415;
  339.     map[474] = 415;
  340.     map[475] = 510;
  341.     map[476] = 415;
  342.     map[477] = 415;
  343.     map[478] = 415;
  344.     map[479] = 415;
  345.     map[481] = 510;
  346.     map[482] = 510;
  347.     map[483] = 510;
  348.     map[484] = 510;
  349.     map[485] = 415;
  350.     map[486] = 510;
  351.     map[487] = 510;
  352.     map[488] = 415;
  353.     map[489] = 510;
  354.     map[490] = 510;
  355.     map[491] = 415;
  356.     map[492] = 415;
  357.     map[493] = 415;
  358.     map[494] = 415;
  359.     map[495] = 415;
  360.     map[496] = 415;
  361.     map[497] = 415;
  362.     map[498] = 510;
  363.     map[499] = 415;
  364.     map[502] = 415;
  365.     map[506] = 415;
  366.     map[507] = 415;
  367.     map[508] = 415;
  368.     map[512] = 415;
  369.     map[513] = 415;
  370.     map[515] = 510;
  371.     map[516] = 510;
  372.     map[521] = 510;
  373.     map[522] = 510;
  374.     map[523] = 510;
  375.     map[524] = 510;
  376.     map[525] = 510;
  377.     map[526] = 510;
  378.     map[527] = 510;
  379.     map[528] = 510;
  380.     map[529] = 510;
  381.     map[530] = 510;
  382.     map[531] = 510;
  383.     map[532] = 510;
  384.     map[533] = 510;
  385.     map[534] = 510;
  386.     map[535] = 510;
  387.     map[536] = 510;
  388.     map[537] = 510;
  389.     map[538] = 510;
  390.     map[539] = 510;
  391.     map[540] = 510;
  392.     map[541] = 415;
  393.     map[542] = 415;
  394.     map[543] = 415;
  395.     map[544] = 415;
  396.     map[545] = 415;
  397.     map[546] = 415;
  398.     map[547] = 510;
  399.     map[548] = 510;
  400.     map[549] = 510;
  401.     map[550] = 415;
  402.     map[551] = 510;
  403.     map[552] = 415;
  404.     map[553] = 415;
  405.     map[554] = 415;
  406.     map[556] = 415;
  407.     map[557] = 415;
  408.     map[558] = 415;
  409.     map[559] = 510;
  410.     map[561] = 415;
  411.     map[562] = 510;
  412.     map[563] = 415;
  413.     map[564] = 415;
  414.     map[565] = 415;
  415.     map[566] = 415;
  416.     map[567] = 415;
  417.     map[568] = 510;
  418.     map[569] = 510;
  419.     map[570] = 415;
  420.     map[571] = 415;
  421.     map[572] = 415;
  422.     map[573] = 415;
  423.     map[574] = 415;
  424.     map[576] = 415;
  425.     map[577] = 510;
  426.     map[578] = 415;
  427.     map[579] = 415;
  428.     map[581] = 510;
  429.     map[582] = 510;
  430.     map[583] = 415;
  431.     map[584] = 415;
  432.     map[585] = 415;
  433.     map[586] = 415;
  434.     map[587] = 415;
  435.     map[588] = 415;
  436.     map[589] = 415;
  437.     map[591] = 415;
  438.     map[592] = 415;
  439.     map[593] = 415;
  440.     map[594] = 415;
  441.     map[595] = 415;
  442.     map[596] = 510;
  443.     map[597] = 415;
  444.     map[598] = 510;
  445.     map[599] = 415;
  446.     map[601] = 510;
  447.     map[602] = 510;
  448.     map[603] = 510;
  449.     map[604] = 415;
  450.     map[606] = 510;
  451.     map[609] = 510;
  452.     map[610] = 415;
  453.     map[613] = 510;
  454.     map[614] = 510;
  455.     map[616] = 415;
  456.     map[617] = 415;
  457.     map[618] = 510;
  458.     map[620] = 510;
  459.     map[621] = 415;
  460.     map[622] = 415;
  461.     map[623] = 510;
  462.     map[624] = 510;
  463.     map[625] = 510;
  464.     map[626] = 415;
  465.     map[627] = 415;
  466.     map[631] = 510;
  467.     map[632] = 510;
  468.     map[633] = 510;
  469.     map[634] = 510;
  470.     map[635] = 510;
  471.     map[636] = 510;
  472.     map[637] = 415;
  473.     map[638] = 510;
  474.     map[639] = 510;
  475.     map[641] = 415;
  476.     map[642] = 510;
  477.     map[643] = 510;
  478.     map[644] = 510;
  479.     map[645] = 510;
  480.     map[646] = 510;
  481.     map[647] = 415;
  482.     map[648] = 415;
  483.     map[649] = 510;
  484.     map[651] = 510;
  485.     map[652] = 510;
  486.     map[653] = 510;
  487.     map[654] = 510;
  488.     map[655] = 510;
  489.     map[656] = 510;
  490.     map[657] = 510;
  491.     map[658] = 510;
  492.     map[659] = 510;
  493.     map[661] = 415;
  494.     map[662] = 415;
  495.     map[663] = 415;
  496.     map[664] = 415;
  497.     map[665] = 415;
  498.     map[666] = 415;
  499.     map[667] = 510;
  500.     map[668] = 415;
  501.     map[669] = 415;
  502.     map[670] = 510;
  503.     map[671] = 510;
  504.     map[672] = 510;
  505.     map[673] = 415;
  506.     map[674] = 510;
  507.     map[675] = 510;
  508.     map[676] = 510;
  509.     map[677] = 415;
  510.     map[678] = 510;
  511.     map[680] = 510;
  512.     map[681] = 415;
  513.     map[682] = 510;
  514.     map[683] = 510;
  515.     map[684] = 510;
  516.     map[685] = 510;
  517.     map[686] = 510;
  518.     map[687] = 510;
  519.     map[688] = 415;
  520.     map[689] = 510;
  521.     map[691] = 415;
  522.     map[692] = 415;
  523.     map[694] = 415;
  524.     map[695] = 415;
  525.     map[696] = 415;
  526.     map[697] = 415;
  527.     map[701] = 415;
  528.     map[703] = 415;
  529.     map[704] = 510;
  530.     map[705] = 415;
  531.     map[706] = 510;
  532.     map[708] = 510;
  533.     map[709] = 510;
  534.     map[713] = 510;
  535.     map[715] = 415;
  536.     map[716] = 510;
  537.     map[717] = 510;
  538.     map[718] = 510;
  539.     map[721] = 415;
  540.     map[723] = 415;
  541.     map[724] = 510;
  542.     map[725] = 415;
  543.     map[726] = 415;
  544.     map[727] = 510;
  545.     map[728] = 415;
  546.     map[729] = 510;
  547.     map[731] = 415;
  548.     map[732] = 510;
  549.     map[733] = 510;
  550.     map[734] = 510;
  551.     map[735] = 510;
  552.     map[736] = 510;
  553.     map[737] = 415;
  554.     map[738] = 415;
  555.     map[739] = 415;
  556.     map[741] = 510;
  557.     map[742] = 415;
  558.     map[743] = 510;
  559.     map[744] = 415;
  560.     map[745] = 510;
  561.     map[746] = 510;
  562.     map[747] = 415;
  563.     map[748] = 510;
  564.     map[749] = 415;
  565.     map[750] = 415;
  566.     map[751] = 415;
  567.     map[752] = 415;
  568.     map[753] = 415;
  569.     map[754] = 510;
  570.     map[755] = 415;
  571.     map[756] = 415;
  572.     map[757] = 510;
  573.     map[758] = 510;
  574.     map[759] = 415;
  575.     map[761] = 415;
  576.     map[762] = 510;
  577.     map[763] = 510;
  578.     map[764] = 415;
  579.     map[765] = 415;
  580.     map[768] = 415;
  581.     map[769] = 510;
  582.     map[771] = 415;
  583.     map[772] = 415;
  584.     map[773] = 415;
  585.     map[774] = 415;
  586.     map[775] = 415;
  587.     map[776] = 415;
  588.     map[777] = 415;
  589.     map[778] = 510;
  590.     map[779] = 510;
  591.     map[780] = 415;
  592.     map[781] = 415;
  593.     map[782] = 510;
  594.     map[783] = 510;
  595.     map[784] = 510;
  596.     map[785] = 510;
  597.     map[786] = 510;
  598.     map[787] = 510;
  599.     map[788] = 415;
  600.     map[789] = 415;
  601.     map[790] = 510;
  602.     map[791] = 510;
  603.     map[792] = 510;
  604.     map[793] = 510;
  605.     map[794] = 510;
  606.     map[795] = 510;
  607.     map[796] = 510;
  608.     map[797] = 510;
  609.     map[798] = 510;
  610.     map[799] = 510;
  611.     map[801] = 510;
  612.     map[803] = 510;
  613.     map[804] = 415;
  614.     map[806] = 415;
  615.     map[807] = 415;
  616.     map[810] = 510;
  617.     map[813] = 415;
  618.     map[814] = 510;
  619.     map[815] = 510;
  620.     map[819] = 510;
  621.     map[820] = 510;
  622.     map[821] = 415;
  623.     map[822] = 415;
  624.     map[823] = 510;
  625.     map[824] = 415;
  626.     map[825] = 510;
  627.     map[826] = 415;
  628.     map[827] = 510;
  629.     map[828] = 510;
  630.     map[829] = 510;
  631.     map[830] = 510;
  632.     map[831] = 510;
  633.     map[832] = 510;
  634.     map[833] = 510;
  635.     map[834] = 510;
  636.     map[835] = 510;
  637.     map[836] = 510;
  638.     map[837] = 510;
  639.     map[838] = 510;
  640.     map[839] = 510;
  641.     map[840] = 510;
  642.     map[841] = 510;
  643.     map[842] = 510;
  644.     map[843] = 510;
  645.     map[845] = 510;
  646.     map[846] = 510;
  647.     map[847] = 510;
  648.     map[848] = 510;
  649.     map[849] = 510;
  650.     map[851] = 415;
  651.     map[852] = 415;
  652.     map[853] = 415;
  653.     map[854] = 415;
  654.     map[855] = 415;
  655.     map[856] = 415;
  656.     map[857] = 415;
  657.     map[858] = 415;
  658.     map[859] = 415;
  659.     map[861] = 415;
  660.     map[862] = 510;
  661.     map[863] = 415;
  662.     map[864] = 415;
  663.     map[865] = 510;
  664.     map[866] = 510;
  665.     map[867] = 510;
  666.     map[868] = 415;
  667.     map[869] = 510;
  668.     map[871] = 415;
  669.     map[872] = 415;
  670.     map[873] = 415;
  671.     map[874] = 510;
  672.     map[875] = 415;
  673.     map[876] = 415;
  674.     map[877] = 415;
  675.     map[878] = 415;
  676.     map[879] = 415;
  677.     map[881] = 510;
  678.     map[882] = 415;
  679.     map[883] = 415;
  680.     map[884] = 510;
  681.     map[885] = 415;
  682.     map[886] = 510;
  683.     map[887] = 510;
  684.     map[888] = 510;
  685.     map[889] = 510;
  686.     map[891] = 510;
  687.     map[892] = 415;
  688.     map[893] = 510;
  689.     map[894] = 415;
  690.     map[895] = 510;
  691.     map[896] = 415;
  692.     map[897] = 415;
  693.     map[898] = 415;
  694.     map[901] = 510;
  695.     map[903] = 415;
  696.     map[904] = 415;
  697.     map[905] = 415;
  698.     map[910] = 510;
  699.     map[912] = 415;
  700.     map[917] = 415;
  701.     map[921] = 415;
  702.     map[922] = 415;
  703.     map[923] = 415;
  704.     map[924] = 415;
  705.     map[925] = 415;
  706.     map[926] = 415;
  707.     map[927] = 415;
  708.     map[928] = 415;
  709.     map[929] = 415;
  710.     map[930] = 510;
  711.     map[931] = 415;
  712.     map[932] = 510;
  713.     map[933] = 510;
  714.     map[934] = 510;
  715.     map[935] = 510;
  716.     map[937] = 510;
  717.     map[938] = 510;
  718.     map[939] = 510;
  719.     map[940] = 415;
  720.     map[941] = 415;
  721.     map[942] = 510;
  722.     map[943] = 510;
  723.     map[944] = 510;
  724.     map[945] = 510;
  725.     map[946] = 510;
  726.     map[947] = 510;
  727.     map[948] = 415;
  728.     map[949] = 415;
  729.     map[951] = 415;
  730.     map[952] = 415;
  731.     map[953] = 415;
  732.     map[954] = 415;
  733.     map[955] = 415;
  734.     map[956] = 415;
  735.     map[957] = 415;
  736.     map[960] = 415;
  737.     map[961] = 415;
  738.     map[962] = 415;
  739.     map[964] = 415;
  740.     map[965] = 415;
  741.     map[966] = 415;
  742.     map[967] = 415;
  743.     map[968] = 415;
  744.     map[969] = 415;
  745.     map[972] = 415;
  746.     map[973] = 415;
  747.     map[974] = 415;
  748.     map[975] = 510;
  749.     map[977] = 510;
  750.     map[978] = 415;
  751.     map[979] = 415;
  752.     map[981] = 415;
  753.     map[982] = 415;
  754.     map[983] = 415;
  755.     map[984] = 415;
  756.     map[985] = 415;
  757.     map[986] = 415;
  758.     map[987] = 510;
  759.     map[989] = 415;
  760.     map[991] = 415;
  761.     map[992] = 415;
  762.     map[993] = 415;
  763.     map[994] = 415;
  764.     map[995] = 415;
  765.     map[997] = 415;
  766.     map[998] = 415;
  767. }
  768.