diff options
author | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2022-01-22 17:35:48 +0000 |
---|---|---|
committer | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2022-01-22 17:35:48 +0000 |
commit | f91a5f5c9a5426ced951c373ad5613db0b55013d (patch) | |
tree | f576d7661fc12eeac05a0e303c93f7d36b61338f | |
parent | 9edf00b19d92e2c78e7fea7fd9bfc48234037adc (diff) |
Fix lexing of nested dfn's
-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++; |