我正在寻找一个C代码的声明,给出文件名和亚麻在哪里开始。
我当然不能接受这条线,因为我可能会有这样的话:
foo(i,
j, "this is ); \
", k);
如示例所示,我也无法查找下一个);
,这会使其变得相当简单。
那里有什么东西,大概是CPAN,它会自动执行此操作吗?
如果我可以先通过缩进运行代码,我会让它允许无限长行,然后只取这一行,但如果我这样做,我会丢失行号!
答案 0 :(得分:5)
要做得非常好,你需要在Perl中使用完整的C语法分析器。但是,您可以使用更简单的算法覆盖99%以上的所有案例:
“行尾的分号”对于“语句结束”来说是一个相当不错的启发式算法。相对简单的引用解析可能会保护您免受上述情况的影响。
如果您需要更复杂的内容,可以查看C::Scan及其子类,或Inline::C::ParseRecDescent。