diff options
Diffstat (limited to 'mig/lexxer.l')
-rw-r--r-- | mig/lexxer.l | 269 |
1 files changed, 0 insertions, 269 deletions
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 <string.h> - -#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 - -%% - -<Normal>[Rr][Oo][Uu][Tt][Ii][Nn][Ee] RETURN(syRoutine); -<Normal>[Ff][Uu][Nn][Cc][Tt][Ii][Oo][Nn] RETURN(syFunction); -<Normal>[Pp][Rr][Oo][Cc][Ee][Dd][Uu][Rr][Ee] RETURN(syProcedure); -<Normal>[Ss][Ii][Mm][Pp][Ll][Ee][Pp][Rr][Oo][Cc][Ee][Dd][Uu][Rr][Ee] RETURN(sySimpleProcedure); -<Normal>[Ss][Ii][Mm][Pp][Ll][Ee][Rr][Oo][Uu][Tt][Ii][Nn][Ee] RETURN(sySimpleRoutine); -<Normal>[Ss][Uu][Bb][Ss][Yy][Ss][Tt][Ee][Mm] RETURN(sySubsystem); -<Normal>[Mm][Ss][Gg][Oo][Pp][Tt][Ii][Oo][Nn] RETURN(syMsgOption); -<Normal>[Mm][Ss][Gg][Ss][Ee][Qq][Nn][Oo] RETURN(syMsgSeqno); -<Normal>[Ww][Aa][Ii][Tt][Tt][Ii][Mm][Ee] RETURN(syWaitTime); -<Normal>[Nn][Oo][Ww][Aa][Ii][Tt][Tt][Ii][Mm][Ee] RETURN(syNoWaitTime); -<Normal>[Ii][Nn] RETURN(syIn); -<Normal>[Oo][Uu][Tt] RETURN(syOut); -<Normal>[Ii][Nn][Oo][Uu][Tt] RETURN(syInOut); -<Normal>[Rr][Ee][Qq][Uu][Ee][Ss][Tt][Pp][Oo][Rr][Tt] RETURN(syRequestPort); -<Normal>[Rr][Ee][Pp][Ll][Yy][Pp][Oo][Rr][Tt] RETURN(syReplyPort); -<Normal>[Uu][Rr][Ee][Pp][Ll][Yy][Pp][Oo][Rr][Tt] RETURN(syUReplyPort); -<Normal>[Ss][Rr][Ee][Pp][Ll][Yy][Pp][Oo][Rr][Tt] RETURN(sySReplyPort); -<Normal>[Aa][Rr][Rr][Aa][Yy] RETURN(syArray); -<Normal>[Oo][Ff] RETURN(syOf); -<Normal>[Ee][Rr][Rr][Oo][Rr] RETURN(syErrorProc); -<Normal>[Ss][Ee][Rr][Vv][Ee][Rr][Pp][Rr][Ee][Ff][Ii][Xx] RETURN(syServerPrefix); -<Normal>[Uu][Ss][Ee][Rr][Pp][Rr][Ee][Ff][Ii][Xx] RETURN(syUserPrefix); -<Normal>[Ss][Ee][Rr][Vv][Ee][Rr][Dd][Ee][Mm][Uu][Xx] RETURN(syServerDemux); -<Normal>[Rr][Cc][Ss][Ii][Dd] RETURN(syRCSId); -<Normal>[Ii][Mm][Pp][Oo][Rr][Tt] RETURN(syImport); -<Normal>[Uu][Ii][Mm][Pp][Oo][Rr][Tt] RETURN(syUImport); -<Normal>[Ss][Ii][Mm][Pp][Oo][Rr][Tt] RETURN(sySImport); -<Normal>[Tt][Yy][Pp][Ee] RETURN(syType); -<Normal>[Kk][Ee][Rr][Nn][Ee][Ll][Ss][Ee][Rr][Vv][Ee][Rr] RETURN(syKernelServer); -<Normal>[Kk][Ee][Rr][Nn][Ee][Ll][Uu][Ss][Ee][Rr] RETURN(syKernelUser); -<Normal>[Ss][Kk][Ii][Pp] RETURN(sySkip); -<Normal>[Ss][Tt][Rr][Uu][Cc][Tt] RETURN(syStruct); -<Normal>[Ii][Nn][Tt][Rr][Aa][Nn] RETURN(syInTran); -<Normal>[Oo][Uu][Tt][Tt][Rr][Aa][Nn] RETURN(syOutTran); -<Normal>[Dd][Ee][Ss][Tt][Rr][Uu][Cc][Tt][Oo][Rr] RETURN(syDestructor); -<Normal>[Cc][Tt][Yy][Pp][Ee] RETURN(syCType); -<Normal>[Cc][Uu][Ss][Ee][Rr][Tt][Yy][Pp][Ee] RETURN(syCUserType); -<Normal>[Cc][Ss][Ee][Rr][Vv][Ee][Rr][Tt][Yy][Pp][Ee] RETURN(syCServerType); -<Normal>[Cc]_[Ss][Tt][Rr][Ii][Nn][Gg] RETURN(syCString); - -<Normal>[Ii][Ss][Ll][Oo][Nn][Gg] FRETURN(flLong); -<Normal>[Ii][Ss][Nn][Oo][Tt][Ll][Oo][Nn][Gg] FRETURN(flNotLong); -<Normal>[Dd][Ee][Aa][Ll][Ll][Oo][Cc] FRETURN(flDealloc); -<Normal>[Nn][Oo][Tt][Dd][Ee][Aa][Ll][Ll][Oo][Cc] FRETURN(flNotDealloc); -<Normal>[Ss][Ee][Rr][Vv][Ee][Rr][Cc][Oo][Pp][Yy] FRETURN(flServerCopy); -<Normal>[Cc][Oo][Uu][Nn][Tt][Ii][Nn][Oo][Uu][Tt] FRETURN(flCountInOut); - -<Normal>[Pp][Oo][Ll][Yy][Mm][Oo][Rr][Pp][Hh][Ii][Cc] TRETURN(MACH_MSG_TYPE_POLYMORPHIC,word_size_in_bits); - -<Normal>"MACH_MSG_TYPE_UNSTRUCTURED" TRETURN(MACH_MSG_TYPE_UNSTRUCTURED,0); -<Normal>"MACH_MSG_TYPE_BIT" TRETURN(MACH_MSG_TYPE_BIT,1); -<Normal>"MACH_MSG_TYPE_BOOLEAN" TRETURN(MACH_MSG_TYPE_BOOLEAN,32); -<Normal>"MACH_MSG_TYPE_INTEGER_16" TRETURN(MACH_MSG_TYPE_INTEGER_16,16); -<Normal>"MACH_MSG_TYPE_INTEGER_32" TRETURN(MACH_MSG_TYPE_INTEGER_32,32); -<Normal>"MACH_MSG_TYPE_INTEGER_64" TRETURN(MACH_MSG_TYPE_INTEGER_64,64); -<Normal>"MACH_MSG_TYPE_CHAR" TRETURN(MACH_MSG_TYPE_CHAR,8); -<Normal>"MACH_MSG_TYPE_BYTE" TRETURN(MACH_MSG_TYPE_BYTE,8); -<Normal>"MACH_MSG_TYPE_INTEGER_8" TRETURN(MACH_MSG_TYPE_INTEGER_8,8); -<Normal>"MACH_MSG_TYPE_REAL" TRETURN(MACH_MSG_TYPE_REAL,0); -<Normal>"MACH_MSG_TYPE_STRING" TRETURN(MACH_MSG_TYPE_STRING,0); -<Normal>"MACH_MSG_TYPE_STRING_C" TRETURN(MACH_MSG_TYPE_STRING_C,0); - -<Normal>"MACH_MSG_TYPE_MOVE_RECEIVE" TPRETURN(MACH_MSG_TYPE_MOVE_RECEIVE,MACH_MSG_TYPE_PORT_RECEIVE,word_size_in_bits); -<Normal>"MACH_MSG_TYPE_COPY_SEND" TPRETURN(MACH_MSG_TYPE_COPY_SEND,MACH_MSG_TYPE_PORT_SEND,word_size_in_bits); -<Normal>"MACH_MSG_TYPE_MAKE_SEND" TPRETURN(MACH_MSG_TYPE_MAKE_SEND,MACH_MSG_TYPE_PORT_SEND,word_size_in_bits); -<Normal>"MACH_MSG_TYPE_MOVE_SEND" TPRETURN(MACH_MSG_TYPE_MOVE_SEND,MACH_MSG_TYPE_PORT_SEND,word_size_in_bits); -<Normal>"MACH_MSG_TYPE_MAKE_SEND_ONCE" TPRETURN(MACH_MSG_TYPE_MAKE_SEND_ONCE,MACH_MSG_TYPE_PORT_SEND_ONCE,word_size_in_bits); -<Normal>"MACH_MSG_TYPE_MOVE_SEND_ONCE" TPRETURN(MACH_MSG_TYPE_MOVE_SEND_ONCE,MACH_MSG_TYPE_PORT_SEND_ONCE,word_size_in_bits); - -<Normal>"MACH_MSG_TYPE_PORT_NAME" TRETURN(MACH_MSG_TYPE_PORT_NAME,word_size_in_bits); -<Normal>"MACH_MSG_TYPE_PORT_RECEIVE" TPRETURN(MACH_MSG_TYPE_POLYMORPHIC,MACH_MSG_TYPE_PORT_RECEIVE,word_size_in_bits); -<Normal>"MACH_MSG_TYPE_PORT_SEND" TPRETURN(MACH_MSG_TYPE_POLYMORPHIC,MACH_MSG_TYPE_PORT_SEND,word_size_in_bits); -<Normal>"MACH_MSG_TYPE_PORT_SEND_ONCE" TPRETURN(MACH_MSG_TYPE_POLYMORPHIC,MACH_MSG_TYPE_PORT_SEND_ONCE,word_size_in_bits); -<Normal>"MACH_MSG_TYPE_POLYMORPHIC" TRETURN(MACH_MSG_TYPE_POLYMORPHIC,0); - -<Normal>":" RETURN(syColon); -<Normal>";" RETURN(sySemi); -<Normal>"," RETURN(syComma); -<Normal>"+" RETURN(syPlus); -<Normal>"-" RETURN(syMinus); -<Normal>"*" RETURN(syStar); -<Normal>"/" RETURN(syDiv); -<Normal>"(" RETURN(syLParen); -<Normal>")" RETURN(syRParen); -<Normal>"=" RETURN(syEqual); -<Normal>"^" RETURN(syCaret); -<Normal>"~" RETURN(syTilde); -<Normal>"<" RETURN(syLAngle); -<Normal>">" RETURN(syRAngle); -<Normal>"[" RETURN(syLBrack); -<Normal>"]" RETURN(syRBrack); -<Normal>"|" RETURN(syBar); - -<Normal>{Ident} { yylval.identifier = strmake(yytext); - RETURN(syIdentifier); } -<Normal>{Number} { yylval.number = atoi(yytext); RETURN(syNumber); } - -<String>{String} { yylval.string = strmake(yytext); - BEGIN Normal; RETURN(syString); } -<FileName>{FileName} { yylval.string = strmake(yytext); - BEGIN Normal; RETURN(syFileName); } -<QString>{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; } - -<SkipToEOL>\n RSTR_BEGIN; -<SkipToEOL>. ; - -[ \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); - } -} |