正则表达式获取pascal函数

0 regex parsing

我有一个pascal代码文件,需要解析它(使用c#)并显示所有公共函数,我的文件看起来像那样(不是实际的代码):

public
  function Test(str: string):bool;
  function Test1(str: string):bool;
  function Test2(str,str1,str2,str3
                 str4: string):bool;
  function Test3(str: string):bool;
published
Run Code Online (Sandbox Code Playgroud)

注意那里的Test2,以及它在多行中的表现.我可以做一些基本的(非常基本的)正则表达式,但不能做任何与此有关的事情.基本上我需要的是:获取字符串"public"和"published"之间的所有函数并将其返回到一行...

Tam*_*ege 5

如果不是不可能的话,这将很难做到.只需考虑字符串,注释和转义序列的所有问题.如果我是你,我会使用Pascal解析器.

这是一个用于Pascal的lexx/yacc语法的页面:

http://www.moorecad.com/standardpascal/yacclex.html

以下是yacc和lexx的一些信息:

http://dinosaur.compilertools.net/

使用这些预先制作的工具,您可以立即生成一个解析器,它可以比任何正则表达式做得更好.