单声道,正则表达式和堆栈大小

时间:2013-01-10 16:55:43

标签: c# regex mono stack-size dmcs

我正在移植一个使用System.Text.RegularExpressions.Regex来解析C / C ++包含源文件的C#软件。它们作为字符串完全加载到内存中,然后使用正则表达式进行处理。

它在Windows上完美运行,但在尝试解析较大的文件时,在Linux上运行的Mono失败,并且从System.Text.RegularExpressions.Interpreter深处抛出了堆栈溢出异常。

代码完全正确 - 它适用于Windows。

有没有办法增加堆栈大小?或者我真的需要将较大的文件拆分成较小的块吗?

编辑:有问题的正则表达式如下所示:

    /** Regex that matches #include statements. */
    static Regex CPPHeaderRegex = new Regex(    "(([ \t]*#[ \t]*include[ \t]*[<\"](?<HeaderFile>[^\">]*)[\">][^\n]*\n)|([^\n]*\n))*", 
                                                RegexOptions.Compiled | RegexOptions.Singleline | RegexOptions.ExplicitCapture );

导致问题的来源是300kB(~8k SLOC)和更大。

请注意,这不是我的代码,我继承了它。

0 个答案:

没有答案