From 7f3a6e222e9edaab9539920d5dc201de9f473180 Mon Sep 17 00:00:00 2001 From: Graham Date: Mon, 24 Apr 2017 06:18:03 -0400 Subject: [PATCH] Token: Improve string parsing --- lithos_c/src/token.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/lithos_c/src/token.c b/lithos_c/src/token.c index c1b1a96..600a820 100644 --- a/lithos_c/src/token.c +++ b/lithos_c/src/token.c @@ -84,15 +84,17 @@ void Lth_TokenGet(FILE *fp, Lth_Token *out) while((ch = fgetc(fp)) != beg && ch != EOF) { - if(ch != '\\') - ACS_PrintChar(ch); - else if((ch = fgetc(fp)) == beg) - ACS_PrintChar(ch); - else + if(ch == '\\') { - ungetc(ch, fp); - ACS_PrintChar('\\'); + switch((ch = fgetc(fp))) + { + case '\\': ACS_PrintChar(ch); break; + case 'C': ACS_PrintChar('\C'); break; + default: if(ch == beg) ACS_PrintChar(beg); break; + } } + else + ACS_PrintChar(ch); } out->str = Lth_strdup_str(ACS_EndStrParam());