Regex 如何设计代码验证工具?

Regex 如何设计代码验证工具?,regex,parsing,compiler-construction,antlr,cocor,Regex,Parsing,Compiler Construction,Antlr,Cocor,对于一个大学项目,我必须创建一个工具来检查c代码的有效性。有效性意味着检查所有变量是否遵循驼峰大小写,或者检查类名是否以大写字母开头,等等。必须遵循的规则可以是多种多样的。我遇到的最大问题是从源代码中检索详细信息,如类名、方法名、它们的属性和行号。所以我想出了以下的解决办法 使用语言解析器(如COCO/R或ANTLR) 使用正则表达式 根据C#grammar文件编码。。。如果还有别的什么 反射API-希望这不会起作用 做这件事最好的方法是什么。。或者有其他选择吗 谢谢。我个人会选择ANTLR,原

对于一个大学项目,我必须创建一个工具来检查c代码的有效性。有效性意味着检查所有变量是否遵循驼峰大小写,或者检查类名是否以大写字母开头,等等。必须遵循的规则可以是多种多样的。我遇到的最大问题是从源代码中检索详细信息,如类名、方法名、它们的属性和行号。所以我想出了以下的解决办法

  • 使用语言解析器(如COCO/R或ANTLR)
  • 使用正则表达式
  • 根据C#grammar文件编码。。。如果还有别的什么
  • 反射API-希望这不会起作用
  • 做这件事最好的方法是什么。。或者有其他选择吗


    谢谢。

    我个人会选择ANTLR,原因如下:

  • 它比regexs更简单,而且功能更强大
  • 使用ANTLR根据您的规则实现复杂逻辑更容易
  • 结果代码将更容易更改
  • 您可以跟踪当前的行号
  • 因为不需要编译C代码,所以不需要在ANTL中实现整个语法。您可以假设代码是有效的,并跳过其中的某些部分,如变量初始化、条件、LINQ等,而只保留真正需要验证的语法部分

  • 当然,ANTLR需要一些学习,您可能需要花一两天的时间来使用它。如果您不了解ANTLR,并且没有太多时间,可以尝试使用一些正则表达式和C#/Java/等代码来破解任务

    你能欺骗并使用反射吗?我不这么认为。不幸的是,我也想记下行号。希望使用反射是不可能的。@doctorlove如何检查使用反射的方法中的变量名?Nemerle中提供了一个完整且符合标准的C#解析器。