计算if和else的数量,不包括嵌套的if-else

计算if和else的数量,不包括嵌套的if-else,第1张

计算if和else的数量,不包括嵌套的if-else

通常,以计数方式指定if-else语句是错误的,因为在编程语言中,if-else语句不仅是包含

if
或的行
else
(请考虑注释中的“ if”或“
else”词,依此类推)。这完全是由一组特定规则(语法)定义的语言的语句。而且,您的代码甚至不会从C程序成功返回,这可能是不正确的…

因此,解决此问题的最终方法是为输入程序构建AST树,并仅对顶级if-
else语句进行遍历。

有几种工具可以帮助您。

  1. ANTLR
  2. JavaCC

它们都可以从指定的语法生成语言解析器。您可以使用这些解析器来确定输入程序所包含的内容。

这种方法的主要问题是找到(创建?)正确的语法。例如,ANTLR(https://github.com/antlr/grammars-v4)和JavaCC(https://java.net/projects/javacc/downloads/directory/contrib/grammars)都有很多语法;但它们都不能用于生成AST-
仅会产生纯解析。另一方面,由于您只需要计算if-else语句,因此仅解析(不带AST树)可能会比较好…

因此,目前有两种可能的解决方案:

  1. 由ANTLR / JavaCC解析器手动生成更新以计数if-else语句。
  2. 查找/创建ANTLR / JavaCC的C语法,以生成输入程序的AST并遍历它,以搜索顶级if-else语句。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5430708.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存