diff options
-rw-r--r-- | lexer.c | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -45,10 +45,15 @@ lexline(Rune *line, int toplevel) stmt->guard = lexline(buf, toplevel); stmt->ntoks--; }else if(line[offset] == '{'){ + int unclosed = 1; Rune buf[MAX_LINE_LENGTH]; Rune *p = buf; offset++; - while(line[offset] != '}' && offset < len){ + while((line[offset] != '}' || unclosed > 1) && offset < len){ + if(line[offset] == '{') + unclosed++; + else if(line[offset] == '}') + unclosed--; *p = line[offset]; p++; offset++; |