]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - lexer.c
Lexer: [[ and ]] are now TOKEN_ATTRIBUTE_{OPEN,CLOSE}
[xonotic/gmqcc.git] / lexer.c
diff --git a/lexer.c b/lexer.c
index 7fc606c22d56962882702f7303568c5713c250ba..be984a77695f1c57a1411513e501bb606aa547cd 100644 (file)
--- a/lexer.c
+++ b/lexer.c
@@ -1117,6 +1117,14 @@ int lex_do(lex_file *lex)
     switch (ch)
     {
         case '[':
+            nextch = lex_getch(lex);
+            if (nextch == '[') {
+                lex_tokench(lex, nextch);
+                lex_endtoken(lex);
+                return (lex->tok.ttype = TOKEN_ATTRIBUTE_OPEN);
+            }
+            lex_ungetch(lex, nextch);
+            /* FALL THROUGH */
         case '(':
         case ':':
         case '?':
@@ -1126,11 +1134,20 @@ int lex_do(lex_file *lex)
                 return (lex->tok.ttype = ch);
             else
                 return (lex->tok.ttype = TOKEN_OPERATOR);
+
+        case ']':
+            nextch = lex_getch(lex);
+            if (nextch == ']') {
+                lex_tokench(lex, nextch);
+                lex_endtoken(lex);
+                return (lex->tok.ttype = TOKEN_ATTRIBUTE_CLOSE);
+            }
+            lex_ungetch(lex, nextch);
+            /* FALL THROUGH */
         case ')':
         case ';':
         case '{':
         case '}':
-        case ']':
 
         case '#':
             lex_tokench(lex, ch);