|
|
1.1 ! root 1: %{ ! 2: ! 3: /************************************************************************ ! 4: * * ! 5: * Copyright (c) 1986 by * ! 6: * Digital Equipment Corporation, Maynard, MA * ! 7: * All Rights Reserved. * ! 8: * * ! 9: * Permission to use, copy, modify, and distribute this software * ! 10: * and its documentation is hereby granted only to licensees of * ! 11: * The Regents of the University of California pursuant to their * ! 12: * license agreement for the Berkeley Software Distribution * ! 13: * provided that the following appears on all copies. * ! 14: * * ! 15: * "LICENSED FROM DIGITAL EQUIPMENT CORPORATION * ! 16: * COPYRIGHT (C) 1986 * ! 17: * DIGITAL EQUIPMENT CORPORATION * ! 18: * MAYNARD, MA * ! 19: * ALL RIGHTS RESERVED. * ! 20: * * ! 21: * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT * ! 22: * NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL * ! 23: * EQUIPMENT CORPORATION. DIGITAL MAKES NO REPRESENTATIONS * ! 24: * ABOUT SUITABILITY OF THIS SOFTWARE FOR ANY PURPOSE. IT IS * ! 25: * SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY. * ! 26: * * ! 27: * IF THE UNIVERSITY OF CALIFORNIA OR ITS LICENSEES MODIFY * ! 28: * THE SOFTWARE IN A MANNER CREATING DERIVATIVE COPYRIGHT * ! 29: * RIGHTS APPROPRIATE COPYRIGHT LEGENDS MAY BE PLACED ON THE * ! 30: * DERIVATIVE WORK IN ADDITION TO THAT SET FORTH ABOVE." * ! 31: * * ! 32: ************************************************************************/ ! 33: ! 34: ! 35: ! 36: /* ! 37: * MODIFICATION HISTORY ! 38: * ! 39: * 000 -- M. Gancarz, DEC Ultrix Engineering Group ! 40: */ ! 41: ! 42: #ifndef lint ! 43: static char *sccsid = "@(#)lex.l 3.8 1/24/86"; ! 44: #endif ! 45: ! 46: #include "y.tab.h" ! 47: #include "uwm.h" ! 48: ! 49: char *dequote(); ! 50: char *stash(); ! 51: ! 52: %} ! 53: W [ \t]+ ! 54: %% ! 55: ! 56: #.*\n { return(COMMENT); } /* Comments. */ ! 57: {W} { ; } /* Whitespace. */ ! 58: [^ \"\t\n#=\^\!\|\(\)\{\}:;]+ { yylval.sval=stash(yytext);return(STRING); } ! 59: \"[^\"\n]*\" { yylval.sval=stash(dequote(yytext)); ! 60: return(STRING); } ! 61: \n { return(NL); } ! 62: . { return(*yytext); } ! 63: ! 64: %% ! 65: ! 66: /* ! 67: * Remove the quotes enclosing a quoted string. ! 68: */ ! 69: char * ! 70: dequote(s) ! 71: char *s; ! 72: { ! 73: char *p; ! 74: ! 75: ++s; ! 76: p = rindex(s, '"'); ! 77: *p = '\0'; ! 78: return(s); ! 79: } ! 80: ! 81: /* ! 82: * Save string away in memory and return a pointer to it. If ! 83: * no space could be found, quit with a fatal error. ! 84: */ ! 85: char *stash(s) ! 86: char *s; ! 87: { ! 88: char *ptr; ! 89: char *malloc(); ! 90: ! 91: ptr = malloc(strlen(s) + 1); ! 92: if (ptr == NULL) { ! 93: Error("out of space"); ! 94: } ! 95: return(strcpy(ptr, s)); ! 96: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.