home *** CD-ROM | disk | FTP | other *** search
- /*
- * yymapc -- handle escapes within strings
- *
- * Copyright (C) 1988, 1989, 1990, 1991 by Rob Duff
- * All rights reserved
- */
-
- #include <stdio.h>
-
- extern int yynext(void);
- extern void yyback(char);
- extern void yyerror(char*);
-
- yymapc(delim, esc)
- {
- register c, octv, n;
-
- mapch:
- if (delim != EOF) {
- c = yynext();
- if (c == EOF) {
- yyerror("Unterminated string");
- return(EOF);
- }
- if (c == delim)
- return(EOF);
- if (c == '\n')
- yyerror("Newline in string");
- if (c != esc)
- return(c);
- }
- c = yynext();
- switch (c) {
- case '\n':
- if (delim == EOF)
- return(EOF);
- goto mapch;
- case 'e':
- return('\e');
- case 'f':
- return('\f');
- case 'n':
- return('\n');
- case 'p':
- return(033);
- case 'r':
- return('\r');
- case 't':
- return('\t');
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- octv = c - '0';
- for (n = 1; (c = yynext()) >= '0' && c<='7' && n <= 3; n++)
- octv = octv * 010 + c - '0';
- yyback(c);
- return(octv);
- case '\"':
- case '\'':
- default:
- return(c);
- }
- }
-
-
-