From 26a80e08682a1d8d855cbb0222755bb7f36ada16 Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Sat, 22 Dec 2012 18:00:51 +0100 Subject: [PATCH] Lexer: [[ and ]] are now TOKEN_ATTRIBUTE_{OPEN,CLOSE} --- lexer.c | 19 ++++++++++++++++++- lexer.h | 3 +++ 2 files changed, 21 insertions(+), 1 deletion(-) 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, -- 2.39.2