From 4beee73fd38818a287c00087d3d1e3cf2a3ccfa5 Mon Sep 17 00:00:00 2001 From: Quentin Carbonneaux Date: Sun, 4 Oct 2015 15:17:58 -0400 Subject: update miniyacc --- minic/yacc.c | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/minic/yacc.c b/minic/yacc.c index 52fd891..91c0be7 100644 --- a/minic/yacc.c +++ b/minic/yacc.c @@ -851,7 +851,7 @@ nexttk() char * cpycode() { - int c, nest, len, pos; + int c, nest, in, len, pos; char *s; len = 64; @@ -859,17 +859,26 @@ cpycode() s[0] = '{'; pos = 1; nest = 1; + in = 0; while (nest) { c = fgetc(fin); - if (c == '{') - nest++; - if (c == '}') - nest--; - if (c == EOF) - die("syntax error, unclosed code block"); - if (c == '\n') - lineno++; + if (in) { + if (c == in) + if (s[pos-1] != '\\') + in = 0; + } else { + if (c == '"' || c == '\'') + in = c; + if (c == '{') + nest++; + if (c == '}') + nest--; + if (c == EOF) + die("syntax error, unclosed code block"); + if (c == '\n') + lineno++; + } if (pos>=len) if (!(s=realloc(s, len=2*len+1))) die("out of memory"); -- cgit 1.4.1