home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS 1992 December
/
simtel1292_SIMTEL_1292_Walnut_Creek.iso
/
msdos
/
c
/
lex.arc
/
MAPCH.C
< prev
next >
Wrap
Text File
|
1986-03-03
|
2KB
|
58 lines
/*
* Bob Denny 28-Aug-82 Move stdio dependencies to lexerr(), lexget(),
* lexech() and mapch(). This is one of 4 modules in
* lexlib which depend upon the standard I/O package.
* Scott Guthery 20-Nov-83 Adapt for IBM PC & DeSmet C
*/
/*
* mapch -- handle escapes within strings
*/
#include <stdio.h>
#include <lex.h>
extern int yyline;
mapch(delim, esc)
{
register c, octv, n;
if ((c = lexchar())==delim)
return(EOF);
if (c==EOF || c=='\n') {
lexerror("Unterminated string");
ungetc(c, lexin);
return(EOF);
}
if (c!=esc)
return(c);
switch (c=lexchar()) {
case 't':
return('\t');
case 'n':
return('\n');
case 'f':
return('\f');
case '\"': case '\'':
return(c);
case 'e':
return('\e');
case 'p':
return(033);
case 'r':
return('\r');
case '0': case '1': case '2': case '3':
case '4': case '5': case '6': case '7':
octv = c-'0';
for (n = 1; (c = lexchar())>='0' && c<='7' && n<=3; n++)
octv = octv*010 + (c-'0');
ungetc(c, lexin);
return(octv);
case '\n':
yyline++;
return(mapch(delim, esc));
}
return(c);
}