我正在使用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中怎么可能?
答案 0 :(得分:0)
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
节点并访问其所有子节点的一个很好的例子。