正则表达式:C#方法声明解析
有人可以帮我解析C#方法声明:scope,isStatic,name,返回类型和参数列表及其类型.所以给出这样的方法声明
public static SomeReturnType GetSomething(string param1,int param2) 我需要能够解析它并获得上面的信息.所以在这种情况下 > name =“GetSomething” 然后是参数类型和名称对的数组. 哦差点忘了最重要的部分.它必须考虑所有其他范围(受保护,私有,内部,受保护的内部),缺少“静态”,无效返回类型等. 请注意,REFLECTION不是解决方案.我需要REGEX. 到目前为止,我有这两个: (?:(?:public)|(?:private)|(?:protected)|(?:internal)|(?:protected internal)s+)* (?:(?:static)s+)* 我猜其余的问题我可以在没有正则表达式的情况下使用字符串操作. 解决方法
关于你的问题的一些想法:
一组可以由特定正则表达式匹配的字符串称为常规语言.在任何C#版本中,作为合法方法声明的字符串集不是常规语言.如果您试图找到一个匹配每个合法C#方法声明的正则表达式并拒绝每个非法的C#方法声明,那么您就不走运了. 更一般地说,除了最简单的匹配问题之外,正则表达式几乎总是一个坏主意. (对不起杰夫.)更好的方法是先写一个词法分析器,将字符串分解为一系列标记.然后分析令牌序列. (使用正则表达式作为词法分析器的一部分并不是一个可怕的想法,尽管没有它们可以顺利完成.) 我还注意到,您在解析方法声明时遇到了很多复杂问题.你没有提到: > generic / array / pointer / nullable return和formal参数类型 我还注意到,你没有说过你是否保证方法签名已经很好,或者你是否需要识别不良方法并产生诊断,说明它们为什么不好.这是一个更难的问题. 你为什么要首先这样做?正确地做这件事是相当多的工作.也许有一种更简单的方法来获得你想要的东西? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ruby-on-rails – 设置默认数据库连接Rails
- 一台Mac上的多个iPhone开发者帐户?
- [OpenWrt] Flash 由4M改8M(或者16M), openwrt源码的修改
- ruby-on-rails – Foreman立即终止
- 存储过程参数的默认值
- objective-c – 如何在iphone中的一个String中添加连接多个
- 如何在Oracle SQL Developer中使用变量?
- [转]PostgreSQL分区表(Table Partitioning)应用
- Extjs使用Ext.ajax时报错:too much recursion
- 什么是neko_vm_custom()和neko_vm_set_custom()?