1.antlr 但用起来比较麻烦,如果没有找到别人写的语法规则自己来写的话估计够呛
2.用roslyn的api来加载整个代码块,然后从语法树的context中加以判断。
感谢大神回答,关于方法2的介绍实在好少,找到一篇http://stackoverflow.com/questions/18295837/c-sharp-roslyn-api-reading-a-cs-file-updating-a-class-writing-back-to-cs-fi
https://www.codeproject.com/articles/408663/using-nrefactory-for-analyzing-csharp-code
大神是否有更多关于方法2的链接?
稍后结贴 谢谢
@Coder007:
https://msdn.microsoft.com/en-us/magazine/dn904670.aspx?f=255&MSPPError=-2147217396 (这一篇写的比较全面点,可以有个比较全面的认识)
https://roslyn.codeplex.com/
还有彪悍点的
http://roslynquoter.azurewebsites.net/
对应antlr的有个4.0的语法 https://antlrcsharp.codeplex.com/
搜索基本关键字比如roslyn expresstion tree
ps下,走语法树来分析会是相当蛋疼的事,roslyn可能版本上差异比较大,可能会出现某些代码你没办法在不同版本下执行,所以你要确认好。
@Daniel Cai: 感谢分享.
不用正则式就是用string.IndexOf string.SubString string.Length 等等来扣喽
先找到变量list 使用IndexOf
在找到那一行的分号 使用IndexOf
在找的<的位置 和>的位置
然后就抠出string来了
感谢回答,可能问题没描述清楚.已修改问题