lex.l revision 32316
12088Ssos/*- 25994Ssos * Copyright (c) 1994-1995 S�ren Schmidt 32088Ssos * All rights reserved. 42088Ssos * 52088Ssos * Redistribution and use in source and binary forms, with or without 62088Ssos * modification, are permitted provided that the following conditions 72088Ssos * are met: 82088Ssos * 1. Redistributions of source code must retain the above copyright 95994Ssos * notice, this list of conditions and the following disclaimer, 105994Ssos * in this position and unchanged. 112088Ssos * 2. Redistributions in binary form must reproduce the above copyright 122088Ssos * notice, this list of conditions and the following disclaimer in the 132088Ssos * documentation and/or other materials provided with the distribution. 142088Ssos * 3. The name of the author may not be used to endorse or promote products 152088Ssos * derived from this software withough specific prior written permission 162088Ssos * 172088Ssos * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 182088Ssos * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 192088Ssos * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 202088Ssos * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 212088Ssos * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 222088Ssos * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 232088Ssos * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 242088Ssos * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 252088Ssos * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 262088Ssos * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 272088Ssos * 2832316Syokota * $Id: lex.l,v 1.5 1997/02/22 16:05:58 peter Exp $ 292088Ssos */ 302088Ssos 312088Ssos%{ 322088Ssos 332088Ssos#include "lex.h" 342088Ssos 352088Ssos%} 362088Ssos 372088SsosD [0-9] 382088SsosX [0-9a-fA-F] 392088SsosA . 406046SsosL [OCNB] 412088Ssos 422088Ssos%% 432088Ssos 442088Ssosnop { return TNOP; } 452088Ssoslshift { return TLSH; } 462088Ssosrshift { return TRSH; } 472088Ssosclock { return TCLK; } 482088Ssosnlock { return TNLK; } 492088Ssosslock { return TSLK; } 502088Ssoslalt|alt { return TLALT; } 512088Ssosbtab { return TBTAB; } 522088Ssoslctrl|ctrl { return TLCTR; } 532088Ssosnscr { return TNEXT; } 542088Ssosrctrl { return TRCTR; } 552088Ssosralt { return TRALT; } 562088Ssosalock { return TALK; } 572088Ssosashift { return TASH; } 582088Ssosmeta { return TMETA; } 592088Ssosboot { return TRBT; } 602088Ssosdebug { return TDBG; } 615994Ssossusp { return TSUSP; } 622088Ssos 632088SsosNUL|nul { number = 0; return TNUM; } 642088SsosSOH|soh { number = 1; return TNUM; } 652088SsosSTX|stx { number = 2; return TNUM; } 662088SsosETX|etx { number = 3; return TNUM; } 672088SsosEOT|eot { number = 4; return TNUM; } 682088SsosENQ|enq { number = 5; return TNUM; } 692088SsosACK|ack { number = 6; return TNUM; } 702088SsosBEL|bel { number = 7; return TNUM; } 712088SsosBS|bs { number = 8; return TNUM; } 722088SsosHT|ht { number = 9; return TNUM; } 732088SsosLF|lf|NL|nl { number = 10; return TNUM; } 742088SsosVT|vt { number = 11; return TNUM; } 752088SsosFF|ff|NP|np { number = 12; return TNUM; } 762088SsosCR|cr { number = 13; return TNUM; } 772088SsosSO|so { number = 14; return TNUM; } 782088SsosSI|si { number = 15; return TNUM; } 792088SsosDLE|dle { number = 16; return TNUM; } 802088SsosDC1|dc1 { number = 17; return TNUM; } 812088SsosDC2|dc2 { number = 18; return TNUM; } 822088SsosDC3|dc3 { number = 19; return TNUM; } 832088SsosDC4|dc4 { number = 20; return TNUM; } 842088SsosNAK|nak { number = 21; return TNUM; } 852088SsosSYN|syn { number = 22; return TNUM; } 862088SsosETB|etb { number = 23; return TNUM; } 872088SsosCAN|can { number = 24; return TNUM; } 882088SsosEM|em { number = 25; return TNUM; } 892088SsosSUB|sub { number = 26; return TNUM; } 902088SsosESC|esc { number = 27; return TNUM; } 912088SsosFS|fs { number = 28; return TNUM; } 922088SsosGS|gs { number = 29; return TNUM; } 932088SsosRS|rs { number = 30; return TNUM; } 942088SsosNS|ns { number = 31; return TNUM; } 952088SsosSP|sp { number = 32; return TNUM; } 962088SsosDEL|del { number = 127; return TNUM; } 972088Ssos 9832316Syokotadgra|DGRA { number = 0; return TACC; } 9932316Syokotadacu|DACU { number = 1; return TACC; } 10032316Syokotadcir|DCIR { number = 2; return TACC; } 10132316Syokotadtil|DTIL { number = 3; return TACC; } 10232316Syokotadmac|DMAC { number = 4; return TACC; } 10332316Syokotadbre|DBRE { number = 5; return TACC; } 10432316Syokotaddot|DDOT { number = 6; return TACC; } 10532316Syokotaduml|DUML { number = 7; return TACC; } 10632316Syokotaddia|DDIA { number = 7; return TACC; } 10732316Syokotadsla|DSLA { number = 8; return TACC; } 10832316Syokotadrin|DRIN { number = 9; return TACC; } 10932316Syokotadced|DCED { number = 10; return TACC; } 11032316Syokotadapo|DAPO { number = 11; return TACC; } 11132316Syokotaddac|DDAC { number = 12; return TACC; } 11232316Syokotadogo|DOGO { number = 13; return TACC; } 11332316Syokotadcar|DCAR { number = 14; return TACC; } 11432316Syokota 1152088Ssosfkey{D}({D}*) { 1162088Ssos sscanf(yytext+4, "%d", &number); 1172088Ssos return TFUNC; 1182088Ssos } 1192088Ssosscr{D}({D}*) { 1202088Ssos sscanf(yytext+3, "%d", &number); 1212088Ssos return TSCRN; 1222088Ssos } 1232088Ssos'{A}' { letter = *(yytext+1); return TLET; } 1242088Ssos#({A}*) { /* ignore */ } 1252088Ssos0x{X}({X}*) { sscanf(yytext, "%x", &number); return TNUM; } 1262088Ssos{D}({D}*) { sscanf(yytext, "%d", &number); return TNUM; } 1272088Ssos{L} { 1282088Ssos if (*yytext == 'O') number = 0; 1292088Ssos if (*yytext == 'C') number = 1; 1302088Ssos if (*yytext == 'N') number = 2; 1316046Ssos if (*yytext == 'B') number = 3; 1322088Ssos return TFLAG; 1332088Ssos } 1342088Ssos[ \t\n] { /* ignore */ } 13532316Syokota. { return *yytext; } 136