diff --git a/src/asm/lexer.c b/src/asm/lexer.c index 5e82352a..ee391b43 100644 --- a/src/asm/lexer.c +++ b/src/asm/lexer.c @@ -666,6 +666,11 @@ size_t yylex_ReadBracketedSymbol(char *dest, size_t index) i += length; else fatalerror("Illegal character escape '%c'", ch); + } else if (ch == '{') { + /* Handle nested symbols */ + ++pLexBuffer; + i += yylex_ReadBracketedSymbol(sym, i); + --pLexBuffer; } else if (ch == ':' && !mode) { /* Only grab 1st colon */ /* Use a whitelist of modes, which does prevent the * use of some features such as precision, diff --git a/test/asm/nested-brackets.asm b/test/asm/nested-brackets.asm new file mode 100644 index 00000000..0823286a --- /dev/null +++ b/test/asm/nested-brackets.asm @@ -0,0 +1,5 @@ +STRING equs "OK" +WRAPPER equs "TRIN" + PRINTT "{S{WRAPPER}G}\n" + + PRINTT "{S{WRAPPER}G" diff --git a/test/asm/nested-brackets.out b/test/asm/nested-brackets.out new file mode 100644 index 00000000..feea079a --- /dev/null +++ b/test/asm/nested-brackets.out @@ -0,0 +1,3 @@ +ERROR: nested-brackets.asm(5): + Missing } +OK