summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2003-07-30 19:39:36 +0000
committerChris Lattner <sabre@nondot.org>2003-07-30 19:39:36 +0000
commitd33b8db415f2f6a8aa0a830a3f5186c1826d66cc (patch)
treeb8f67812238a914e2ea67f63f81aa991cb16a082 /utils
parent61972242f3983263c6f715ad31d80cdb06031837 (diff)
downloadllvm-d33b8db415f2f6a8aa0a830a3f5186c1826d66cc.tar.gz
llvm-d33b8db415f2f6a8aa0a830a3f5186c1826d66cc.tar.bz2
llvm-d33b8db415f2f6a8aa0a830a3f5186c1826d66cc.tar.xz
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
Diffstat (limited to 'utils')
-rw-r--r--utils/TableGen/FileLexer.l13
1 files changed, 13 insertions, 0 deletions
diff --git a/utils/TableGen/FileLexer.l b/utils/TableGen/FileLexer.l
index c7e4346c0f..7289ca0bbb 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(); }
+
%%