From 5fd83771641d15c418f747bd343ba6738d3875f7 Mon Sep 17 00:00:00 2001 From: Cameron Katri Date: Sun, 9 May 2021 14:20:58 -0400 Subject: Import macOS userland adv_cmds-176 basic_cmds-55 bootstrap_cmds-116.100.1 developer_cmds-66 diskdev_cmds-667.40.1 doc_cmds-53.60.1 file_cmds-321.40.3 mail_cmds-35 misc_cmds-34 network_cmds-606.40.1 patch_cmds-17 remote_cmds-63 shell_cmds-216.60.1 system_cmds-880.60.2 text_cmds-106 --- bootstrap_cmds/migcom.tproj/lexxer.l | 314 +++++++++++++++++++++++++++++++++++ 1 file changed, 314 insertions(+) create mode 100644 bootstrap_cmds/migcom.tproj/lexxer.l (limited to 'bootstrap_cmds/migcom.tproj/lexxer.l') diff --git a/bootstrap_cmds/migcom.tproj/lexxer.l b/bootstrap_cmds/migcom.tproj/lexxer.l new file mode 100644 index 0000000..82b32e5 --- /dev/null +++ b/bootstrap_cmds/migcom.tproj/lexxer.l @@ -0,0 +1,314 @@ +%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}) + +/* new flex syntax to accomplish the same thing as #define YY_NO_UNPUT */ +%option nounput + +%{ +/* + * Copyright (c) 1999-2018 Apple, Inc. All rights reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * "Portions Copyright (c) 1999, 2008 Apple Inc. All Rights + * Reserved. This file contains Original Code and/or Modifications of + * Original Code as defined in and that are subject to the Apple Public + * Source License Version 1.0 (the 'License'). You may not use this file + * except in compliance with the License. Please obtain a copy of the + * License at http://www.apple.com/publicsource and read it before using + * this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the + * License for the specific language governing rights and limitations + * under the License." + * + * @APPLE_LICENSE_HEADER_END@ + */ +/* + * 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 "strdefs.h" +#include "type.h" +#include +#include +#include +#include "statement.h" +#include "global.h" +#include "y.tab.h" // was parser.h +#include "lexxer.h" +#include "mig_machine.h" + +#define PortSize (sizeof (mach_port_t) * NBBY) +#ifdef __STDC__ +#define stringize(x) #x +#else /* __STDC__ */ +#define stringize(x) "x" +#endif /* __STDC__ */ + +#ifdef LDEBUG +#define RETURN(sym) \ +{ \ + printf("yylex: returning '%s' (%d)\n", stringize(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 SAVE(s) do {oldYYBegin = s; BEGIN s; } while (0) + +#define RESTORE BEGIN oldYYBegin + +#define FRETURN(val) \ +{ \ + yylval.flag = (val); \ + RETURN(syIPCFlag); \ +} + +#define YY_NO_UNPUT /* suppress yyunput generation */ + +static int oldYYBegin = 0; + +int lineno = 0; /* Replaces lex yylineno */ + +static void doSharp(char *); /* process body of # directives */ +extern void yyerror(char *); +%} + +%Start Normal String FileName QString SkipToEOL + +%% + +[Rr][Oo][Uu][Tt][Ii][Nn][Ee] RETURN(syRoutine); +[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); +[Uu][Ss][Ee][Ss][Pp][Ee][Cc][Ii][Aa][Ll][Rr][Ee][Pp][Ll][Yy][Pp][Oo][Rr][Tt] RETURN(syUseSpecialReplyPort); +[Cc][Oo][Nn][Ss][Uu][Mm][Ee][Oo][Nn][Ss][Ee][Nn][Dd][Ee][Rr][Rr][Oo][Rr] RETURN(syConsumeOnSendError); +[Mm][Ss][Gg][Ss][Ee][Qq][Nn][Oo] RETURN(syMsgSeqno); +[Ww][Aa][Ii][Tt][Tt][Ii][Mm][Ee] RETURN(syWaitTime); +[Ss][Ee][Nn][Dd][Tt][Ii][Mm][Ee] RETURN(sySendTime); +[Nn][Oo][Ww][Aa][Ii][Tt][Tt][Ii][Mm][Ee] RETURN(syNoWaitTime); +[Nn][Oo][Ss][Ee][Nn][Dd][Tt][Ii][Mm][Ee] RETURN(syNoSendTime); +[Ii][Nn] RETURN(syIn); +[Oo][Uu][Tt] RETURN(syOut); +[Uu][Ss][Ee][Rr][Ii][Mm][Pp][Ll] RETURN(syUserImpl); +[Ss][Ee][Rr][Vv][Ee][Rr][Ii][Mm][Pp][Ll] RETURN(syServerImpl); +[Ss][Ee][Cc][Tt][Oo][Kk][Ee][Nn] RETURN(sySecToken); +[Ss][Ee][Rr][Vv][Ee][Rr][Ss][Ee][Cc][Tt][Oo][Kk][Ee][Nn] RETURN(syServerSecToken); +[Uu][Ss][Ee][Rr][Ss][Ee][Cc][Tt][Oo][Kk][Ee][Nn] RETURN(syUserSecToken); +[Aa][Uu][Dd][Ii][Tt][Tt][Oo][Kk][Ee][Nn] RETURN(syAuditToken); +[Ss][Ee][Rr][Vv][Ee][Rr][Aa][Uu][Dd][Ii][Tt][Tt][Oo][Kk][Ee][Nn] RETURN(syServerAuditToken); +[Uu][Ss][Ee][Rr][Aa][Uu][Dd][Ii][Tt][Tt][Oo][Kk][Ee][Nn] RETURN(syUserAuditToken); +[Ss][Ee][Rr][Vv][Ee][Rr][Cc][Oo][Nn][Tt][Ee][Xx][Tt][Tt][Oo][Kk][Ee][Nn] RETURN(syServerContextToken); +[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); +[Dd][Ii][Mm][Pp][Oo][Rr][Tt] RETURN(syDImport); +[Ii][Ii][Mm][Pp][Oo][Rr][Tt] RETURN(syIImport); +[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); + +[Ss][Aa][Mm][Ee][Cc][Oo][Uu][Nn][Tt] FRETURN(flSameCount); +[Rr][Ee][Tt][Cc][Oo][Dd][Ee] FRETURN(flRetCode); +[Pp][Hh][Yy][Ss][Ii][Cc][Aa][Ll][Cc][Oo][Pp][Yy] FRETURN(flPhysicalCopy); +[Oo][Vv][Ee][Rr][Ww][Rr][Ii][Tt][Ee] FRETURN(flOverwrite); +[Dd][Ee][Aa][Ll][Ll][Oo][Cc] FRETURN(flDealloc); +[Nn][Oo][Tt][Dd][Ee][Aa][Ll][Ll][Oo][Cc] FRETURN(flNotDealloc); +[Cc][Oo][Uu][Nn][Tt][Ii][Nn][Oo][Uu][Tt] FRETURN(flCountInOut); +[Pp][Oo][Ll][Yy][Mm][Oo][Rr][Pp][Hh][Ii][Cc] TPRETURN(MACH_MSG_TYPE_POLYMORPHIC, MACH_MSG_TYPE_POLYMORPHIC, PortSize); +[Aa][Uu][Tt][Oo] FRETURN(flAuto); +[Cc][Oo][Nn][Ss][Tt] FRETURN(flConst); +"PointerTo" RETURN(syPointerTo); +"PointerToIfNot" RETURN(syPointerToIfNot); +"ValueOf" RETURN(syValueOf); +"UserTypeLimit" RETURN(syUserTypeLimit); +"OnStackLimit" RETURN(syOnStackLimit); + + +"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_8" TRETURN(MACH_MSG_TYPE_INTEGER_8,8); +"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_REAL_32" TRETURN(MACH_MSG_TYPE_REAL_32,32); +"MACH_MSG_TYPE_REAL_64" TRETURN(MACH_MSG_TYPE_REAL_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_MOVE_RECEIVE" TPRETURN(MACH_MSG_TYPE_MOVE_RECEIVE,MACH_MSG_TYPE_PORT_RECEIVE,PortSize); +"MACH_MSG_TYPE_COPY_SEND" TPRETURN(MACH_MSG_TYPE_COPY_SEND,MACH_MSG_TYPE_PORT_SEND,PortSize); +"MACH_MSG_TYPE_MAKE_SEND" TPRETURN(MACH_MSG_TYPE_MAKE_SEND,MACH_MSG_TYPE_PORT_SEND,PortSize); +"MACH_MSG_TYPE_MOVE_SEND" TPRETURN(MACH_MSG_TYPE_MOVE_SEND,MACH_MSG_TYPE_PORT_SEND,PortSize); +"MACH_MSG_TYPE_MAKE_SEND_ONCE" TPRETURN(MACH_MSG_TYPE_MAKE_SEND_ONCE,MACH_MSG_TYPE_PORT_SEND_ONCE,PortSize); +"MACH_MSG_TYPE_MOVE_SEND_ONCE" TPRETURN(MACH_MSG_TYPE_MOVE_SEND_ONCE,MACH_MSG_TYPE_PORT_SEND_ONCE,PortSize); + +"MACH_MSG_TYPE_PORT_NAME" TRETURN(MACH_MSG_TYPE_PORT_NAME,PortSize); +"MACH_MSG_TYPE_PORT_RECEIVE" TPRETURN(MACH_MSG_TYPE_POLYMORPHIC,MACH_MSG_TYPE_PORT_RECEIVE,PortSize); +"MACH_MSG_TYPE_PORT_SEND" TPRETURN(MACH_MSG_TYPE_POLYMORPHIC,MACH_MSG_TYPE_PORT_SEND,PortSize); +"MACH_MSG_TYPE_PORT_SEND_ONCE" TPRETURN(MACH_MSG_TYPE_POLYMORPHIC,MACH_MSG_TYPE_PORT_SEND_ONCE,PortSize); +"MACH_MSG_TYPE_POLYMORPHIC" TPRETURN(MACH_MSG_TYPE_POLYMORPHIC, MACH_MSG_TYPE_POLYMORPHIC, PortSize); + +":" 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); + SAVE(Normal); RETURN(syString); } +{FileName} { yylval.string = strmake(yytext); + SAVE(Normal); RETURN(syFileName); } +{QString} { yylval.string = strmake(yytext); + SAVE(Normal); RETURN(syQString); } + +^\#[ \t]*{Number}[ \t]*\"[^"]*\" { doSharp(yytext+1); + BEGIN SkipToEOL; } +^\#\ *{Number} { doSharp(yytext+1); + BEGIN SkipToEOL; } +^\#pragma { BEGIN SkipToEOL; } +^\# { yyerror("illegal # directive"); + BEGIN SkipToEOL; } + +\n { RESTORE; lineno++; } +. ; + +[ \t] ; +\n lineno++; +. { SAVE(Normal); RETURN(syError); } + +%% + +extern void +LookNormal() +{ + SAVE(Normal); +} + +extern void +LookString() +{ + SAVE(String); +} + +extern void +LookQString() +{ + SAVE(QString); +} + +extern void +LookFileName() +{ + SAVE(FileName); +} + +static void +doSharp(char *body) +{ + char *startName, *endName; + + lineno = atoi(body); + startName = strchr(body, '"'); + if (startName != NULL) { + endName = strrchr(body, '"'); + *endName = '\0'; + strfree(yyinname); + yyinname = strmake(startName+1); + } +} + +int +yywrap() +{ + return 1; +} -- cgit v1.2.3-56-ge451