pycparser 仅访问 else if-else 语句
pycparser visit else only of an if-else statement
我正在使用 pycparser 来解析一些 C 代码。具体来说,我需要代码的某些部分,pycparser 中包含一些访问者,例如 visit_If 来访问 "If" 部分的代码。但是,我在访问 if-else 语句的 'else' 部分时遇到问题。
示例 1:
if (x == 0)
{
// some statements
}
else
{
// some statements -> I only need all codes under else
}
示例 2:
if (x == 0)
// a statement
else
// a statement -> I only need all codes under else
在 pycparser 中这怎么可能?
If
节点有一个 iffalse
子节点,它是原始代码中的 else
子句。例如,see the C code generator(pycparser
的一部分):
def visit_If(self, n):
s = 'if ('
if n.cond: s += self.visit(n.cond)
s += ')\n'
s += self._generate_stmt(n.iftrue, add_indent=True)
if n.iffalse:
s += self._make_indent() + 'else\n'
s += self._generate_stmt(n.iffalse, add_indent=True)
return s
这是访问 If
节点并访问其所有子节点的一个很好的例子。
我正在使用 pycparser 来解析一些 C 代码。具体来说,我需要代码的某些部分,pycparser 中包含一些访问者,例如 visit_If 来访问 "If" 部分的代码。但是,我在访问 if-else 语句的 'else' 部分时遇到问题。
示例 1:
if (x == 0)
{
// some statements
}
else
{
// some statements -> I only need all codes under else
}
示例 2:
if (x == 0)
// a statement
else
// a statement -> I only need all codes under else
在 pycparser 中这怎么可能?
If
节点有一个 iffalse
子节点,它是原始代码中的 else
子句。例如,see the C code generator(pycparser
的一部分):
def visit_If(self, n):
s = 'if ('
if n.cond: s += self.visit(n.cond)
s += ')\n'
s += self._generate_stmt(n.iftrue, add_indent=True)
if n.iffalse:
s += self._make_indent() + 'else\n'
s += self._generate_stmt(n.iffalse, add_indent=True)
return s
这是访问 If
节点并访问其所有子节点的一个很好的例子。