summaryrefslogtreecommitdiff
path: root/lexer.c
diff options
context:
space:
mode:
authorPeter Mikkelsen <petermikkelsen10@gmail.com>2022-01-22 17:35:48 +0000
committerPeter Mikkelsen <petermikkelsen10@gmail.com>2022-01-22 17:35:48 +0000
commitf91a5f5c9a5426ced951c373ad5613db0b55013d (patch)
treef576d7661fc12eeac05a0e303c93f7d36b61338f /lexer.c
parent9edf00b19d92e2c78e7fea7fd9bfc48234037adc (diff)
Fix lexing of nested dfn's
Diffstat (limited to 'lexer.c')
-rw-r--r--lexer.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/lexer.c b/lexer.c
index 303951d..3be2359 100644
--- a/lexer.c
+++ b/lexer.c
@@ -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++;