From 3f07f7d0137a757f1908805f809ddcba8ba4c21e Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Sun, 19 Jul 1998 06:48:50 +0000 Subject: * mig: Subdirectory removed, now in separate dist. --- mig/lexxer.l | 269 ----------------------------------------------------------- 1 file changed, 269 deletions(-) delete mode 100644 mig/lexxer.l (limited to 'mig/lexxer.l') diff --git a/mig/lexxer.l b/mig/lexxer.l deleted file mode 100644 index 179e770..0000000 --- a/mig/lexxer.l +++ /dev/null @@ -1,269 +0,0 @@ -%k 10000 -%n 5000 -%a 20000 -%e 10000 -%p 25000 - -Ident ([A-Za-z_][A-Za-z_0-9]*) -Number ([0-9]+) -String ([-/._$A-Za-z0-9]+) -QString (\"[^"\n]*\") -AString (\<[^>\n]*\>) -FileName ({QString}|{AString}) - -%{ -/* - * Mach Operating System - * Copyright (c) 1991,1990 Carnegie Mellon University - * All Rights Reserved. - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie Mellon - * the rights to redistribute these changes. - */ - -#include - -#include "mig_string.h" -#include "type.h" -#include "statement.h" -#include "global.h" -#include "parser.h" -#include "lexxer.h" -#include "cpu.h" - -#define stringize(x) #x - -#ifdef LDEBUG -#define RETURN(sym) \ -{ \ - printf("yylex: returning '%s' (%d)\n", #sym, (sym)); \ - return (sym); \ -} -#else LDEBUG -#define RETURN(sym) return (sym) -#endif LDEBUG - -#define TPRETURN(intype, outtype, tsize) \ -{ \ - yylval.symtype.innumber = (intype); \ - yylval.symtype.instr = stringize(intype); \ - yylval.symtype.outnumber = (outtype); \ - yylval.symtype.outstr = stringize(outtype); \ - yylval.symtype.size = (tsize); \ - RETURN(sySymbolicType); \ -} - -#define TRETURN(type, tsize) TPRETURN(type,type,tsize) - -#define FRETURN(val) \ -{ \ - yylval.flag = (val); \ - RETURN(syIPCFlag); \ -} - -extern YYSTYPE yylval; /* added by rm */ - -int lineno; -char *inname; - -#ifdef YY_START -static int oldYYBegin; -#define SAVE_BEGIN oldYYBegin = YY_START -#define RSTR_BEGIN BEGIN oldYYBegin -#else -static struct yysvf *oldYYBegin; -#define SAVE_BEGIN oldYYBegin = yybgin -#define RSTR_BEGIN yybgin = oldYYBegin; -#endif - -static void doSharp(const char *body); /* process body of # directives */ -%} - -%Start Normal String FileName QString SkipToEOL - -%% - -[Rr][Oo][Uu][Tt][Ii][Nn][Ee] RETURN(syRoutine); -[Ff][Uu][Nn][Cc][Tt][Ii][Oo][Nn] RETURN(syFunction); -[Pp][Rr][Oo][Cc][Ee][Dd][Uu][Rr][Ee] RETURN(syProcedure); -[Ss][Ii][Mm][Pp][Ll][Ee][Pp][Rr][Oo][Cc][Ee][Dd][Uu][Rr][Ee] RETURN(sySimpleProcedure); -[Ss][Ii][Mm][Pp][Ll][Ee][Rr][Oo][Uu][Tt][Ii][Nn][Ee] RETURN(sySimpleRoutine); -[Ss][Uu][Bb][Ss][Yy][Ss][Tt][Ee][Mm] RETURN(sySubsystem); -[Mm][Ss][Gg][Oo][Pp][Tt][Ii][Oo][Nn] RETURN(syMsgOption); -[Mm][Ss][Gg][Ss][Ee][Qq][Nn][Oo] RETURN(syMsgSeqno); -[Ww][Aa][Ii][Tt][Tt][Ii][Mm][Ee] RETURN(syWaitTime); -[Nn][Oo][Ww][Aa][Ii][Tt][Tt][Ii][Mm][Ee] RETURN(syNoWaitTime); -[Ii][Nn] RETURN(syIn); -[Oo][Uu][Tt] RETURN(syOut); -[Ii][Nn][Oo][Uu][Tt] RETURN(syInOut); -[Rr][Ee][Qq][Uu][Ee][Ss][Tt][Pp][Oo][Rr][Tt] RETURN(syRequestPort); -[Rr][Ee][Pp][Ll][Yy][Pp][Oo][Rr][Tt] RETURN(syReplyPort); -[Uu][Rr][Ee][Pp][Ll][Yy][Pp][Oo][Rr][Tt] RETURN(syUReplyPort); -[Ss][Rr][Ee][Pp][Ll][Yy][Pp][Oo][Rr][Tt] RETURN(sySReplyPort); -[Aa][Rr][Rr][Aa][Yy] RETURN(syArray); -[Oo][Ff] RETURN(syOf); -[Ee][Rr][Rr][Oo][Rr] RETURN(syErrorProc); -[Ss][Ee][Rr][Vv][Ee][Rr][Pp][Rr][Ee][Ff][Ii][Xx] RETURN(syServerPrefix); -[Uu][Ss][Ee][Rr][Pp][Rr][Ee][Ff][Ii][Xx] RETURN(syUserPrefix); -[Ss][Ee][Rr][Vv][Ee][Rr][Dd][Ee][Mm][Uu][Xx] RETURN(syServerDemux); -[Rr][Cc][Ss][Ii][Dd] RETURN(syRCSId); -[Ii][Mm][Pp][Oo][Rr][Tt] RETURN(syImport); -[Uu][Ii][Mm][Pp][Oo][Rr][Tt] RETURN(syUImport); -[Ss][Ii][Mm][Pp][Oo][Rr][Tt] RETURN(sySImport); -[Tt][Yy][Pp][Ee] RETURN(syType); -[Kk][Ee][Rr][Nn][Ee][Ll][Ss][Ee][Rr][Vv][Ee][Rr] RETURN(syKernelServer); -[Kk][Ee][Rr][Nn][Ee][Ll][Uu][Ss][Ee][Rr] RETURN(syKernelUser); -[Ss][Kk][Ii][Pp] RETURN(sySkip); -[Ss][Tt][Rr][Uu][Cc][Tt] RETURN(syStruct); -[Ii][Nn][Tt][Rr][Aa][Nn] RETURN(syInTran); -[Oo][Uu][Tt][Tt][Rr][Aa][Nn] RETURN(syOutTran); -[Dd][Ee][Ss][Tt][Rr][Uu][Cc][Tt][Oo][Rr] RETURN(syDestructor); -[Cc][Tt][Yy][Pp][Ee] RETURN(syCType); -[Cc][Uu][Ss][Ee][Rr][Tt][Yy][Pp][Ee] RETURN(syCUserType); -[Cc][Ss][Ee][Rr][Vv][Ee][Rr][Tt][Yy][Pp][Ee] RETURN(syCServerType); -[Cc]_[Ss][Tt][Rr][Ii][Nn][Gg] RETURN(syCString); - -[Ii][Ss][Ll][Oo][Nn][Gg] FRETURN(flLong); -[Ii][Ss][Nn][Oo][Tt][Ll][Oo][Nn][Gg] FRETURN(flNotLong); -[Dd][Ee][Aa][Ll][Ll][Oo][Cc] FRETURN(flDealloc); -[Nn][Oo][Tt][Dd][Ee][Aa][Ll][Ll][Oo][Cc] FRETURN(flNotDealloc); -[Ss][Ee][Rr][Vv][Ee][Rr][Cc][Oo][Pp][Yy] FRETURN(flServerCopy); -[Cc][Oo][Uu][Nn][Tt][Ii][Nn][Oo][Uu][Tt] FRETURN(flCountInOut); - -[Pp][Oo][Ll][Yy][Mm][Oo][Rr][Pp][Hh][Ii][Cc] TRETURN(MACH_MSG_TYPE_POLYMORPHIC,word_size_in_bits); - -"MACH_MSG_TYPE_UNSTRUCTURED" TRETURN(MACH_MSG_TYPE_UNSTRUCTURED,0); -"MACH_MSG_TYPE_BIT" TRETURN(MACH_MSG_TYPE_BIT,1); -"MACH_MSG_TYPE_BOOLEAN" TRETURN(MACH_MSG_TYPE_BOOLEAN,32); -"MACH_MSG_TYPE_INTEGER_16" TRETURN(MACH_MSG_TYPE_INTEGER_16,16); -"MACH_MSG_TYPE_INTEGER_32" TRETURN(MACH_MSG_TYPE_INTEGER_32,32); -"MACH_MSG_TYPE_INTEGER_64" TRETURN(MACH_MSG_TYPE_INTEGER_64,64); -"MACH_MSG_TYPE_CHAR" TRETURN(MACH_MSG_TYPE_CHAR,8); -"MACH_MSG_TYPE_BYTE" TRETURN(MACH_MSG_TYPE_BYTE,8); -"MACH_MSG_TYPE_INTEGER_8" TRETURN(MACH_MSG_TYPE_INTEGER_8,8); -"MACH_MSG_TYPE_REAL" TRETURN(MACH_MSG_TYPE_REAL,0); -"MACH_MSG_TYPE_STRING" TRETURN(MACH_MSG_TYPE_STRING,0); -"MACH_MSG_TYPE_STRING_C" TRETURN(MACH_MSG_TYPE_STRING_C,0); - -"MACH_MSG_TYPE_MOVE_RECEIVE" TPRETURN(MACH_MSG_TYPE_MOVE_RECEIVE,MACH_MSG_TYPE_PORT_RECEIVE,word_size_in_bits); -"MACH_MSG_TYPE_COPY_SEND" TPRETURN(MACH_MSG_TYPE_COPY_SEND,MACH_MSG_TYPE_PORT_SEND,word_size_in_bits); -"MACH_MSG_TYPE_MAKE_SEND" TPRETURN(MACH_MSG_TYPE_MAKE_SEND,MACH_MSG_TYPE_PORT_SEND,word_size_in_bits); -"MACH_MSG_TYPE_MOVE_SEND" TPRETURN(MACH_MSG_TYPE_MOVE_SEND,MACH_MSG_TYPE_PORT_SEND,word_size_in_bits); -"MACH_MSG_TYPE_MAKE_SEND_ONCE" TPRETURN(MACH_MSG_TYPE_MAKE_SEND_ONCE,MACH_MSG_TYPE_PORT_SEND_ONCE,word_size_in_bits); -"MACH_MSG_TYPE_MOVE_SEND_ONCE" TPRETURN(MACH_MSG_TYPE_MOVE_SEND_ONCE,MACH_MSG_TYPE_PORT_SEND_ONCE,word_size_in_bits); - -"MACH_MSG_TYPE_PORT_NAME" TRETURN(MACH_MSG_TYPE_PORT_NAME,word_size_in_bits); -"MACH_MSG_TYPE_PORT_RECEIVE" TPRETURN(MACH_MSG_TYPE_POLYMORPHIC,MACH_MSG_TYPE_PORT_RECEIVE,word_size_in_bits); -"MACH_MSG_TYPE_PORT_SEND" TPRETURN(MACH_MSG_TYPE_POLYMORPHIC,MACH_MSG_TYPE_PORT_SEND,word_size_in_bits); -"MACH_MSG_TYPE_PORT_SEND_ONCE" TPRETURN(MACH_MSG_TYPE_POLYMORPHIC,MACH_MSG_TYPE_PORT_SEND_ONCE,word_size_in_bits); -"MACH_MSG_TYPE_POLYMORPHIC" TRETURN(MACH_MSG_TYPE_POLYMORPHIC,0); - -":" RETURN(syColon); -";" RETURN(sySemi); -"," RETURN(syComma); -"+" RETURN(syPlus); -"-" RETURN(syMinus); -"*" RETURN(syStar); -"/" RETURN(syDiv); -"(" RETURN(syLParen); -")" RETURN(syRParen); -"=" RETURN(syEqual); -"^" RETURN(syCaret); -"~" RETURN(syTilde); -"<" RETURN(syLAngle); -">" RETURN(syRAngle); -"[" RETURN(syLBrack); -"]" RETURN(syRBrack); -"|" RETURN(syBar); - -{Ident} { yylval.identifier = strmake(yytext); - RETURN(syIdentifier); } -{Number} { yylval.number = atoi(yytext); RETURN(syNumber); } - -{String} { yylval.string = strmake(yytext); - BEGIN Normal; RETURN(syString); } -{FileName} { yylval.string = strmake(yytext); - BEGIN Normal; RETURN(syFileName); } -{QString} { yylval.string = strmake(yytext); - BEGIN Normal; RETURN(syQString); } - -^\#[ \t]*{Number}[ \t]*\"[^"]*\" { doSharp(yytext+1); - SAVE_BEGIN; - BEGIN SkipToEOL; } -^\#\ *{Number} { doSharp(yytext+1); - SAVE_BEGIN; - BEGIN SkipToEOL; } -^\# { yyerror("illegal # directive"); - SAVE_BEGIN; - BEGIN SkipToEOL; } - -\n RSTR_BEGIN; -. ; - -[ \t] ; -\n { lineno++; } -. { BEGIN Normal; RETURN(syError); } - -%% - -extern void -LookNormal(void) -{ - if (inname == 0) - { - inname = strmake("(unknown)"); - lineno = 0; - } - - BEGIN Normal; -} - -extern void -LookString(void) -{ - BEGIN String; -} - -extern void -LookQString(void) -{ - BEGIN QString; -} - -extern void -LookFileName(void) -{ - BEGIN FileName; -} - -static void -doSharp(const char *body) -{ - register const char *startName; - - lineno = atoi(body); - startName = strchr(body, '"'); - if (startName != NULL) - { - *strrchr(body, '"') = '\0'; - strfree(inname); - inname = strmake(startName+1); - } -} -- cgit v1.2.3