我希望创建一个方法,该方法将在 c# .cs 源文件上启动阅读器(可能是 StreamReader),并且它将能够解析并找到“if”语句的所有实例,通过独立的 if 对它们进行排序,或者如果有一个else。然后它会将其添加到各自的列表中(一个用于独立 if,一个用于 if-else),并以行号作为唯一标识符。
简单地解析出“if(”、“if (”)的所有实例,然后将行号添加到列表中是非常容易的,但是区分 if 与 else 以及独立被证明是非常困难的.
我能想到的就是使用前导大括号作为参考点。当找到“if”语句时,尝试找到尾随的“}”,那么如果后面的 reader.nextLine 包含 else,则可以将其添加到 else 列表中。然而,让这变得困难的是嵌套 if 需要某种递归或单独的后台工作者,以及根本没有“{}”的可能性,因为它在 C# 中在语法上不是必需的。
您是否考虑过使用 Roslyn IfStatement 而不是经历解析文本的所有痛苦? – 榛树
这是正确答案。