From: Wolfgang Bumiller Date: Sat, 22 Dec 2012 17:00:51 +0000 (+0100) Subject: Lexer: [[ and ]] are now TOKEN_ATTRIBUTE_{OPEN,CLOSE} X-Git-Tag: 0.2~12^2~9 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=26a80e08682a1d8d855cbb0222755bb7f36ada16;p=xonotic%2Fgmqcc.git Lexer: [[ and ]] are now TOKEN_ATTRIBUTE_{OPEN,CLOSE} --- diff --git a/lexer.c b/lexer.c index 7fc606c..be984a7 100644 --- 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); diff --git a/lexer.h b/lexer.h index e419794..e549373 100644 --- a/lexer.h +++ b/lexer.h @@ -73,6 +73,9 @@ enum { TOKEN_DOTS, /* 3 dots, ... */ + TOKEN_ATTRIBUTE_OPEN, /* [[ */ + TOKEN_ATTRIBUTE_CLOSE, /* ]] */ + TOKEN_STRINGCONST, /* not the typename but an actual "string" */ TOKEN_CHARCONST, TOKEN_VECTORCONST,