tool/parse_cxx: const var decl, initializers

This patch handles a few corner cases that appear in the headers of
Genode 19.05, in particular the new client-side block API in
'block_session/connection.h'.
This commit is contained in:
Norman Feske
2019-05-23 15:19:44 +02:00
committed by Christian Helmuth
parent b359ec14a8
commit 34a711b439

View File

@@ -592,7 +592,7 @@ extract argname {
extract argtype {^(<28>(argmodifier|keyunsigned)\d+<2B>\s*)*(<28>(identifier|keytypename|varargs|keyunsigned)\d+<2B>)(\s*|(<28>(amper|and|argmodifier)\d+<2B>)|(<28>star\d+<2B>))*(<28>argmodifier\d+<2B>\s*)*(<28>varargs\d+<2B>)?} argdecl
# extract typedefs
extract typedef {(<28>mlcomment\d+<2B> *\n[ \t]*)?<3F>keytypedef\d+<2B>(\s*<2A>(identifier|keyunsigned)\d+<2B>)+\s*;} {content classblock block}
extract typedef {(<28>mlcomment\d+<2B> *\n[ \t]*)?<3F>keytypedef\d+<2B>(\s*<2A>(identifier|keyunsigned|keytypename)\d+<2B>)+\s*;} {content classblock block}
extract typename {<7B>identifier\d+<2B>(?=;)} typedef
extract identifier {(\s*<2A>(identifier|keyunsigned)\d+<2B>){2,}} typedef
extract identifier {\s*<2A>keyunsigned\d+<2B>} typedef
@@ -601,7 +601,7 @@ extract identifier {\s*
extract vardecl {(<28>(modifier|keyunsigned)\d+<2B>\s*)*(<28>(identifier|keyunsigned)\d+<2B>)((\s|(<28>amper\d+<2B>)|(<28>star\d+<2B>))*(<28>modifier\d+<2B>\s*)*(<28>funcptr\d+<2B>)\s*(:\s*<2A>identifier\d+<2B>)?\s*(<28>assign\d+<2B>[^;]*?)?\s*(<28>comma\d+<2B>)?\s*)+;} {content classblock block}
# extract variable declarations (type + any number of comma-separated variables + optional tailing comment)
extract vardecl {(<28>(modifier|keyunsigned)\d+<2B>\s*)*(<28>(identifier|keyunsigned)\d+<2B>)((\s|(<28>amper\d+<2B>)|(<28>star\d+<2B>))*(<28>modifier\d+<2B>\s*)*(<28>(identifier|array)\d+<2B>)\s*(:\s*<2A>identifier\d+<2B>)?\s*(<28>assign\d+<2B>[^;]*?)?\s*(<28>comma\d+<2B>)?\s*)+;} {content classblock block}
extract vardecl {(<28>(modifier|keyunsigned)\d+<2B>\s*)*(<28>(identifier|keyunsigned)\d+<2B>)((\s|(<28>amper\d+<2B>)|(<28>star\d+<2B>))*(<28>(modifier|keyconst)\d+<2B>\s*)*(<28>(identifier|array)\d+<2B>)\s*(:\s*<2A>identifier\d+<2B>)?\s*(<28>assign\d+<2B>[^;]*?)?(<28>block\d+<2B>)?\s*(<28>comma\d+<2B>)?\s*)+;} {content classblock block}
# extract commented variable declaration
extract commentedvardecl {<7B>vardecl\d+<2B>\s*<2A>m?lcomment\d+<2B>(\s*<2A>lcomment\d<>)*} {content classblock block}