Added missing 'simple escape sequences'

git-svn-id: svn://svn.cc65.org/cc65/trunk@2891 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
cuz
2004-03-02 19:27:59 +00:00
parent 9bf337a37b
commit 98e3d2815e

View File

@@ -52,7 +52,7 @@
static char ParseChar (StrBuf* B) static int ParseChar (StrBuf* B)
/* Parse a character. Converts \n into EOL, etc. */ /* Parse a character. Converts \n into EOL, etc. */
{ {
unsigned I; unsigned I;
@@ -61,6 +61,9 @@ static char ParseChar (StrBuf* B)
/* Check for escape chars */ /* Check for escape chars */
if ((C = SB_Get (B)) == '\\') { if ((C = SB_Get (B)) == '\\') {
switch (SB_Get (B)) { switch (SB_Get (B)) {
case 'a':
C = '\a';
break;
case 'b': case 'b':
C = '\b'; C = '\b';
break; break;
@@ -76,6 +79,9 @@ static char ParseChar (StrBuf* B)
case 't': case 't':
C = '\t'; C = '\t';
break; break;
case 'v':
C = '\v';
break;
case '\"': case '\"':
C = '\"'; C = '\"';
break; break;
@@ -85,14 +91,17 @@ static char ParseChar (StrBuf* B)
case '\\': case '\\':
C = '\\'; C = '\\';
break; break;
case '\?':
C = '\?';
break;
case 'x': case 'x':
case 'X': case 'X':
/* Hex character constant */ /* Hex character constant */
C = HexVal (SB_Get (B)) << 4; C = HexVal (SB_Get (B)) << 4;
C |= HexVal (SB_Get (B)); C |= HexVal (SB_Get (B));
break; break;
case '0': case '0':
/* Octal constant */ /* Octal constant */
C = 0; C = 0;
goto Octal; goto Octal;
case '1': case '1':
@@ -101,12 +110,12 @@ static char ParseChar (StrBuf* B)
Octal: I = 0; Octal: I = 0;
while (SB_Peek (B) >= '0' && SB_Peek (B) <= '7' && I++ < 4) { while (SB_Peek (B) >= '0' && SB_Peek (B) <= '7' && I++ < 4) {
C = (C << 3) | (SB_Get (B) - '0'); C = (C << 3) | (SB_Get (B) - '0');
} }
break; break;
default: default:
Error ("Illegal character constant"); Error ("Illegal character constant");
C = ' '; C = ' ';
break; break;
} }
} }
@@ -116,10 +125,6 @@ Octal: I = 0;
/*****************************************************************************/ /*****************************************************************************/
/* Code */ /* Code */
/*****************************************************************************/ /*****************************************************************************/