Annotation of Gnu-Mach/mig/lexxer.l, revision 1.1

1.1     ! root        1: %k 10000
        !             2: %n 5000
        !             3: %a 20000
        !             4: %e 10000
        !             5: %p 25000
        !             6: 
        !             7: Ident          ([A-Za-z_][A-Za-z_0-9]*)
        !             8: Number         ([0-9]+)
        !             9: String         ([-/._$A-Za-z0-9]+)
        !            10: QString                (\"[^"\n]*\")
        !            11: AString                (\<[^>\n]*\>)
        !            12: FileName       ({QString}|{AString})
        !            13: 
        !            14: %{
        !            15: /* 
        !            16:  * Mach Operating System
        !            17:  * Copyright (c) 1991,1990 Carnegie Mellon University
        !            18:  * All Rights Reserved.
        !            19:  * 
        !            20:  * Permission to use, copy, modify and distribute this software and its
        !            21:  * documentation is hereby granted, provided that both the copyright
        !            22:  * notice and this permission notice appear in all copies of the
        !            23:  * software, derivative works or modified versions, and any portions
        !            24:  * thereof, and that both notices appear in supporting documentation.
        !            25:  * 
        !            26:  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
        !            27:  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
        !            28:  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
        !            29:  * 
        !            30:  * Carnegie Mellon requests users of this software to return to
        !            31:  * 
        !            32:  *  Software Distribution Coordinator  or  [email protected]
        !            33:  *  School of Computer Science
        !            34:  *  Carnegie Mellon University
        !            35:  *  Pittsburgh PA 15213-3890
        !            36:  * 
        !            37:  * any improvements or extensions that they make and grant Carnegie Mellon
        !            38:  * the rights to redistribute these changes.
        !            39:  */
        !            40: 
        !            41: #include <string.h>
        !            42: 
        !            43: #include "mig_string.h"
        !            44: #include "type.h"
        !            45: #include "statement.h"
        !            46: #include "global.h"
        !            47: #include "parser.h"
        !            48: #include "lexxer.h"
        !            49: #include "cpu.h"
        !            50: 
        !            51: #define        stringize(x)    #x
        !            52: 
        !            53: #ifdef LDEBUG
        !            54: #define RETURN(sym)                                                    \
        !            55: {                                                                      \
        !            56:     printf("yylex: returning '%s' (%d)\n", #sym, (sym));               \
        !            57:     return (sym);                                                      \
        !            58: }
        !            59: #else  LDEBUG
        !            60: #define RETURN(sym)    return (sym)
        !            61: #endif LDEBUG
        !            62: 
        !            63: #define        TPRETURN(intype, outtype, tsize)                                \
        !            64: {                                                                      \
        !            65:     yylval.symtype.innumber = (intype);                                        \
        !            66:     yylval.symtype.instr = stringize(intype);                          \
        !            67:     yylval.symtype.outnumber = (outtype);                              \
        !            68:     yylval.symtype.outstr = stringize(outtype);                                \
        !            69:     yylval.symtype.size = (tsize);                                     \
        !            70:     RETURN(sySymbolicType);                                            \
        !            71: }
        !            72: 
        !            73: #define        TRETURN(type, tsize)    TPRETURN(type,type,tsize)
        !            74: 
        !            75: #define        FRETURN(val)                                                    \
        !            76: {                                                                      \
        !            77:     yylval.flag = (val);                                               \
        !            78:     RETURN(syIPCFlag);                                                 \
        !            79: }
        !            80: 
        !            81: extern YYSTYPE yylval;         /* added by rm */
        !            82: 
        !            83: int lineno;
        !            84: char *inname;
        !            85: 
        !            86: #ifdef YY_START
        !            87: static int oldYYBegin;
        !            88: #define SAVE_BEGIN oldYYBegin = YY_START
        !            89: #define RSTR_BEGIN BEGIN oldYYBegin
        !            90: #else
        !            91: static struct yysvf *oldYYBegin;
        !            92: #define SAVE_BEGIN oldYYBegin = yybgin
        !            93: #define RSTR_BEGIN yybgin = oldYYBegin;
        !            94: #endif
        !            95: 
        !            96: static void doSharp(const char *body); /* process body of # directives */
        !            97: %}
        !            98: 
        !            99: %Start Normal String FileName QString SkipToEOL
        !           100: 
        !           101: %%
        !           102: 
        !           103: <Normal>[Rr][Oo][Uu][Tt][Ii][Nn][Ee]           RETURN(syRoutine);
        !           104: <Normal>[Ff][Uu][Nn][Cc][Tt][Ii][Oo][Nn]       RETURN(syFunction);
        !           105: <Normal>[Pp][Rr][Oo][Cc][Ee][Dd][Uu][Rr][Ee]   RETURN(syProcedure);
        !           106: <Normal>[Ss][Ii][Mm][Pp][Ll][Ee][Pp][Rr][Oo][Cc][Ee][Dd][Uu][Rr][Ee] RETURN(sySimpleProcedure);
        !           107: <Normal>[Ss][Ii][Mm][Pp][Ll][Ee][Rr][Oo][Uu][Tt][Ii][Nn][Ee] RETURN(sySimpleRoutine);
        !           108: <Normal>[Ss][Uu][Bb][Ss][Yy][Ss][Tt][Ee][Mm]   RETURN(sySubsystem);
        !           109: <Normal>[Mm][Ss][Gg][Oo][Pp][Tt][Ii][Oo][Nn]   RETURN(syMsgOption);
        !           110: <Normal>[Mm][Ss][Gg][Ss][Ee][Qq][Nn][Oo]       RETURN(syMsgSeqno);
        !           111: <Normal>[Ww][Aa][Ii][Tt][Tt][Ii][Mm][Ee]       RETURN(syWaitTime);
        !           112: <Normal>[Nn][Oo][Ww][Aa][Ii][Tt][Tt][Ii][Mm][Ee]       RETURN(syNoWaitTime);
        !           113: <Normal>[Ii][Nn]                               RETURN(syIn);
        !           114: <Normal>[Oo][Uu][Tt]                           RETURN(syOut);
        !           115: <Normal>[Ii][Nn][Oo][Uu][Tt]                   RETURN(syInOut);
        !           116: <Normal>[Rr][Ee][Qq][Uu][Ee][Ss][Tt][Pp][Oo][Rr][Tt]   RETURN(syRequestPort);
        !           117: <Normal>[Rr][Ee][Pp][Ll][Yy][Pp][Oo][Rr][Tt]           RETURN(syReplyPort);
        !           118: <Normal>[Uu][Rr][Ee][Pp][Ll][Yy][Pp][Oo][Rr][Tt]       RETURN(syUReplyPort);
        !           119: <Normal>[Ss][Rr][Ee][Pp][Ll][Yy][Pp][Oo][Rr][Tt]       RETURN(sySReplyPort);
        !           120: <Normal>[Aa][Rr][Rr][Aa][Yy]                   RETURN(syArray);
        !           121: <Normal>[Oo][Ff]                               RETURN(syOf);
        !           122: <Normal>[Ee][Rr][Rr][Oo][Rr]                   RETURN(syErrorProc);
        !           123: <Normal>[Ss][Ee][Rr][Vv][Ee][Rr][Pp][Rr][Ee][Ff][Ii][Xx] RETURN(syServerPrefix);
        !           124: <Normal>[Uu][Ss][Ee][Rr][Pp][Rr][Ee][Ff][Ii][Xx]       RETURN(syUserPrefix);
        !           125: <Normal>[Ss][Ee][Rr][Vv][Ee][Rr][Dd][Ee][Mm][Uu][Xx]   RETURN(syServerDemux);
        !           126: <Normal>[Rr][Cc][Ss][Ii][Dd]                   RETURN(syRCSId);
        !           127: <Normal>[Ii][Mm][Pp][Oo][Rr][Tt]               RETURN(syImport);
        !           128: <Normal>[Uu][Ii][Mm][Pp][Oo][Rr][Tt]           RETURN(syUImport);
        !           129: <Normal>[Ss][Ii][Mm][Pp][Oo][Rr][Tt]           RETURN(sySImport);
        !           130: <Normal>[Tt][Yy][Pp][Ee]                       RETURN(syType);
        !           131: <Normal>[Kk][Ee][Rr][Nn][Ee][Ll][Ss][Ee][Rr][Vv][Ee][Rr] RETURN(syKernelServer);
        !           132: <Normal>[Kk][Ee][Rr][Nn][Ee][Ll][Uu][Ss][Ee][Rr]       RETURN(syKernelUser);
        !           133: <Normal>[Ss][Kk][Ii][Pp]                       RETURN(sySkip);
        !           134: <Normal>[Ss][Tt][Rr][Uu][Cc][Tt]               RETURN(syStruct);
        !           135: <Normal>[Ii][Nn][Tt][Rr][Aa][Nn]               RETURN(syInTran);
        !           136: <Normal>[Oo][Uu][Tt][Tt][Rr][Aa][Nn]           RETURN(syOutTran);
        !           137: <Normal>[Dd][Ee][Ss][Tt][Rr][Uu][Cc][Tt][Oo][Rr]       RETURN(syDestructor);
        !           138: <Normal>[Cc][Tt][Yy][Pp][Ee]                           RETURN(syCType);
        !           139: <Normal>[Cc][Uu][Ss][Ee][Rr][Tt][Yy][Pp][Ee]           RETURN(syCUserType);
        !           140: <Normal>[Cc][Ss][Ee][Rr][Vv][Ee][Rr][Tt][Yy][Pp][Ee]   RETURN(syCServerType);
        !           141: <Normal>[Cc]_[Ss][Tt][Rr][Ii][Nn][Gg]                  RETURN(syCString);
        !           142: 
        !           143: <Normal>[Ii][Ss][Ll][Oo][Nn][Gg]               FRETURN(flLong);
        !           144: <Normal>[Ii][Ss][Nn][Oo][Tt][Ll][Oo][Nn][Gg]   FRETURN(flNotLong);
        !           145: <Normal>[Dd][Ee][Aa][Ll][Ll][Oo][Cc]           FRETURN(flDealloc);
        !           146: <Normal>[Nn][Oo][Tt][Dd][Ee][Aa][Ll][Ll][Oo][Cc] FRETURN(flNotDealloc);
        !           147: <Normal>[Ss][Ee][Rr][Vv][Ee][Rr][Cc][Oo][Pp][Yy] FRETURN(flServerCopy);
        !           148: <Normal>[Cc][Oo][Uu][Nn][Tt][Ii][Nn][Oo][Uu][Tt] FRETURN(flCountInOut);
        !           149: 
        !           150: <Normal>[Pp][Oo][Ll][Yy][Mm][Oo][Rr][Pp][Hh][Ii][Cc]   TRETURN(MACH_MSG_TYPE_POLYMORPHIC,word_size_in_bits);
        !           151: 
        !           152: <Normal>"MACH_MSG_TYPE_UNSTRUCTURED"   TRETURN(MACH_MSG_TYPE_UNSTRUCTURED,0);
        !           153: <Normal>"MACH_MSG_TYPE_BIT"            TRETURN(MACH_MSG_TYPE_BIT,1);
        !           154: <Normal>"MACH_MSG_TYPE_BOOLEAN"                TRETURN(MACH_MSG_TYPE_BOOLEAN,32);
        !           155: <Normal>"MACH_MSG_TYPE_INTEGER_16"     TRETURN(MACH_MSG_TYPE_INTEGER_16,16);
        !           156: <Normal>"MACH_MSG_TYPE_INTEGER_32"     TRETURN(MACH_MSG_TYPE_INTEGER_32,32);
        !           157: <Normal>"MACH_MSG_TYPE_INTEGER_64"     TRETURN(MACH_MSG_TYPE_INTEGER_64,64);
        !           158: <Normal>"MACH_MSG_TYPE_CHAR"           TRETURN(MACH_MSG_TYPE_CHAR,8);
        !           159: <Normal>"MACH_MSG_TYPE_BYTE"           TRETURN(MACH_MSG_TYPE_BYTE,8);
        !           160: <Normal>"MACH_MSG_TYPE_INTEGER_8"      TRETURN(MACH_MSG_TYPE_INTEGER_8,8);
        !           161: <Normal>"MACH_MSG_TYPE_REAL"           TRETURN(MACH_MSG_TYPE_REAL,0);
        !           162: <Normal>"MACH_MSG_TYPE_STRING"         TRETURN(MACH_MSG_TYPE_STRING,0);
        !           163: <Normal>"MACH_MSG_TYPE_STRING_C"       TRETURN(MACH_MSG_TYPE_STRING_C,0);
        !           164: 
        !           165: <Normal>"MACH_MSG_TYPE_MOVE_RECEIVE"   TPRETURN(MACH_MSG_TYPE_MOVE_RECEIVE,MACH_MSG_TYPE_PORT_RECEIVE,word_size_in_bits);
        !           166: <Normal>"MACH_MSG_TYPE_COPY_SEND"      TPRETURN(MACH_MSG_TYPE_COPY_SEND,MACH_MSG_TYPE_PORT_SEND,word_size_in_bits);
        !           167: <Normal>"MACH_MSG_TYPE_MAKE_SEND"      TPRETURN(MACH_MSG_TYPE_MAKE_SEND,MACH_MSG_TYPE_PORT_SEND,word_size_in_bits);
        !           168: <Normal>"MACH_MSG_TYPE_MOVE_SEND"      TPRETURN(MACH_MSG_TYPE_MOVE_SEND,MACH_MSG_TYPE_PORT_SEND,word_size_in_bits);
        !           169: <Normal>"MACH_MSG_TYPE_MAKE_SEND_ONCE" TPRETURN(MACH_MSG_TYPE_MAKE_SEND_ONCE,MACH_MSG_TYPE_PORT_SEND_ONCE,word_size_in_bits);
        !           170: <Normal>"MACH_MSG_TYPE_MOVE_SEND_ONCE" TPRETURN(MACH_MSG_TYPE_MOVE_SEND_ONCE,MACH_MSG_TYPE_PORT_SEND_ONCE,word_size_in_bits);
        !           171: 
        !           172: <Normal>"MACH_MSG_TYPE_PORT_NAME"      TRETURN(MACH_MSG_TYPE_PORT_NAME,word_size_in_bits);
        !           173: <Normal>"MACH_MSG_TYPE_PORT_RECEIVE"   TPRETURN(MACH_MSG_TYPE_POLYMORPHIC,MACH_MSG_TYPE_PORT_RECEIVE,word_size_in_bits);
        !           174: <Normal>"MACH_MSG_TYPE_PORT_SEND"      TPRETURN(MACH_MSG_TYPE_POLYMORPHIC,MACH_MSG_TYPE_PORT_SEND,word_size_in_bits);
        !           175: <Normal>"MACH_MSG_TYPE_PORT_SEND_ONCE" TPRETURN(MACH_MSG_TYPE_POLYMORPHIC,MACH_MSG_TYPE_PORT_SEND_ONCE,word_size_in_bits);
        !           176: <Normal>"MACH_MSG_TYPE_POLYMORPHIC"    TRETURN(MACH_MSG_TYPE_POLYMORPHIC,0);
        !           177: 
        !           178: <Normal>":"            RETURN(syColon);
        !           179: <Normal>";"            RETURN(sySemi);
        !           180: <Normal>","            RETURN(syComma);
        !           181: <Normal>"+"            RETURN(syPlus);
        !           182: <Normal>"-"            RETURN(syMinus);
        !           183: <Normal>"*"            RETURN(syStar);
        !           184: <Normal>"/"            RETURN(syDiv);
        !           185: <Normal>"("            RETURN(syLParen);
        !           186: <Normal>")"            RETURN(syRParen);
        !           187: <Normal>"="            RETURN(syEqual);
        !           188: <Normal>"^"            RETURN(syCaret);
        !           189: <Normal>"~"            RETURN(syTilde);
        !           190: <Normal>"<"            RETURN(syLAngle);
        !           191: <Normal>">"            RETURN(syRAngle);
        !           192: <Normal>"["            RETURN(syLBrack);
        !           193: <Normal>"]"            RETURN(syRBrack);
        !           194: <Normal>"|"            RETURN(syBar);
        !           195: 
        !           196: <Normal>{Ident}                { yylval.identifier = strmake(yytext);
        !           197:                          RETURN(syIdentifier); }
        !           198: <Normal>{Number}       { yylval.number = atoi(yytext); RETURN(syNumber); }
        !           199: 
        !           200: <String>{String}       { yylval.string = strmake(yytext);
        !           201:                          BEGIN Normal; RETURN(syString); }
        !           202: <FileName>{FileName}   { yylval.string = strmake(yytext);
        !           203:                          BEGIN Normal; RETURN(syFileName); }
        !           204: <QString>{QString}     { yylval.string = strmake(yytext);
        !           205:                          BEGIN Normal; RETURN(syQString); }
        !           206: 
        !           207: ^\#[ \t]*{Number}[ \t]*\"[^"]*\"       { doSharp(yytext+1);
        !           208:                                          SAVE_BEGIN;
        !           209:                                          BEGIN SkipToEOL; }
        !           210: ^\#\ *{Number}                         { doSharp(yytext+1);
        !           211:                                          SAVE_BEGIN;
        !           212:                                          BEGIN SkipToEOL; }
        !           213: ^\#                                    { yyerror("illegal # directive");
        !           214:                                          SAVE_BEGIN;
        !           215:                                          BEGIN SkipToEOL; }
        !           216: 
        !           217: <SkipToEOL>\n          RSTR_BEGIN;
        !           218: <SkipToEOL>.           ;
        !           219: 
        !           220: [ \t]                  ;
        !           221: \n                     { lineno++; }
        !           222: .                      { BEGIN Normal; RETURN(syError); }
        !           223: 
        !           224: %%
        !           225: 
        !           226: extern void
        !           227: LookNormal(void)
        !           228: {
        !           229:     if (inname == 0)
        !           230:     {
        !           231:        inname = strmake("(unknown)");
        !           232:        lineno = 0;
        !           233:     }
        !           234: 
        !           235:     BEGIN Normal;
        !           236: }
        !           237: 
        !           238: extern void
        !           239: LookString(void)
        !           240: {
        !           241:     BEGIN String;
        !           242: }
        !           243: 
        !           244: extern void
        !           245: LookQString(void)
        !           246: {
        !           247:     BEGIN QString;
        !           248: }
        !           249: 
        !           250: extern void
        !           251: LookFileName(void)
        !           252: {
        !           253:     BEGIN FileName;
        !           254: }
        !           255: 
        !           256: static void
        !           257: doSharp(const char *body)
        !           258: {
        !           259:     register const char *startName;
        !           260: 
        !           261:     lineno = atoi(body);
        !           262:     startName = strchr(body, '"');
        !           263:     if (startName != NULL)
        !           264:     {
        !           265:        *strrchr(body, '"') = '\0';
        !           266:        strfree(inname);
        !           267:        inname = strmake(startName+1);
        !           268:     }
        !           269: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.