diff options
author | Chris Lattner <sabre@nondot.org> | 2003-07-30 19:39:36 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-07-30 19:39:36 +0000 |
commit | d33b8db415f2f6a8aa0a830a3f5186c1826d66cc (patch) | |
tree | b8f67812238a914e2ea67f63f81aa991cb16a082 | |
parent | 61972242f3983263c6f715ad31d80cdb06031837 (diff) | |
download | external_llvm-d33b8db415f2f6a8aa0a830a3f5186c1826d66cc.zip external_llvm-d33b8db415f2f6a8aa0a830a3f5186c1826d66cc.tar.gz external_llvm-d33b8db415f2f6a8aa0a830a3f5186c1826d66cc.tar.bz2 |
Directly support C style comments in tblgen, but allow them to actually nest
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7429 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | support/tools/TableGen/FileLexer.l | 13 | ||||
-rw-r--r-- | utils/TableGen/FileLexer.l | 13 |
2 files changed, 26 insertions, 0 deletions
diff --git a/support/tools/TableGen/FileLexer.l b/support/tools/TableGen/FileLexer.l index c7e4346..7289ca0 100644 --- a/support/tools/TableGen/FileLexer.l +++ b/support/tools/TableGen/FileLexer.l @@ -16,6 +16,7 @@ %option noreject %option noyymore +%x comment %{ #include "Record.h" @@ -29,6 +30,8 @@ static int ParseInt(const char *Str) { return strtol(Str, 0, 0); } +static int CommentDepth = 0; + %} Comment \/\/.* @@ -63,4 +66,14 @@ in { return IN; } [ \t\n]+ { /* Ignore whitespace */ } . { return Filetext[0]; } + + +"/*" { BEGIN(comment); CommentDepth++; } +<comment>[^*/]* /* eat anything that's not a '*' or '/' */ +<comment>"*"+[^*/]* /* eat up '*'s not followed by '/'s */ +<comment>"/*" { ++CommentDepth; } +<comment>"/"+[^*]* /* eat up /'s not followed by *'s */ +<comment>"*"+"/" { if (!--CommentDepth) { BEGIN(INITIAL); } } +<comment><<EOF>> { fprintf(stderr, "Unterminated comment!\n"); abort(); } + %% diff --git a/utils/TableGen/FileLexer.l b/utils/TableGen/FileLexer.l index c7e4346..7289ca0 100644 --- a/utils/TableGen/FileLexer.l +++ b/utils/TableGen/FileLexer.l @@ -16,6 +16,7 @@ %option noreject %option noyymore +%x comment %{ #include "Record.h" @@ -29,6 +30,8 @@ static int ParseInt(const char *Str) { return strtol(Str, 0, 0); } +static int CommentDepth = 0; + %} Comment \/\/.* @@ -63,4 +66,14 @@ in { return IN; } [ \t\n]+ { /* Ignore whitespace */ } . { return Filetext[0]; } + + +"/*" { BEGIN(comment); CommentDepth++; } +<comment>[^*/]* /* eat anything that's not a '*' or '/' */ +<comment>"*"+[^*/]* /* eat up '*'s not followed by '/'s */ +<comment>"/*" { ++CommentDepth; } +<comment>"/"+[^*]* /* eat up /'s not followed by *'s */ +<comment>"*"+"/" { if (!--CommentDepth) { BEGIN(INITIAL); } } +<comment><<EOF>> { fprintf(stderr, "Unterminated comment!\n"); abort(); } + %% |