首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据文件名+行号使用perl提取一行C代码

问根据文件名+行号使用perl提取一行C代码
EN

Stack Overflow用户
提问于 2010-08-08 22:18:17
回答 1查看 158关注 0票数 2

我希望提取一条C代码语句,给定其开头的文件名和行号。

当然,我不能只接受这一行,因为我可以这样做:

代码语言:javascript
复制
foo(i,
   j, "this is ); \
   ", k);

正如示例所示,我也找不到下一个);,这将使它变得相当简单。

有没有什么东西,大概在CPAN上,会自动完成这项工作?

如果我可以先通过缩进运行代码,我会让它允许无限的行长,然后只取这一行,但如果我这样做,我就会丢失行号!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-08 22:25:40

要很好地做到这一点,您需要在Perl中使用一个成熟的C解析器。但是,您可以使用一个简单得多的算法覆盖所有情况的99%以上:

  1. 打开文件
  2. 跳过行,直到到达有问题的行
  3. Slurp行,直到到达行末尾的分号

“行尾的分号”是一个相当不错的启发式“语句结尾”。相对简单的引号解析可能会保护您免受上述情况的影响。

如果你需要更复杂的东西,你可以看看C::Scan及其子类,或者Inline::C::ParseRecDescent。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3434639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档