字符串搜索

时间:2011-10-11 14:25:45

标签: c# string cil

好的,我正在用C#编写一个语言编译器,将我的语言转换为MSIL,然后调用MSIL编译器。但这不是重点。我创建了一些代码来表明你希望我将要使用:

module myApplication

  [EntryPoint]
  function void start
    write("Hello World!\n")
    wait(5) // wait 5 seconds
    ret()
  endfunction
endModule   

好的,我正在尝试扫描该代码并找到“[EntryPoint]”的位置,然后在其后找到所有“函数void start”。所以我可以找到函数类型(“void”)和名称(“start”)。 [EntryPoint]标记将始终位于将被定义为应用程序入口点的函数之上。我将不得不削减空白和东西。这也是使用'\ n'扫描,所以函数必须在标签下。

我还有另一个问题,如何将函数内的代码与“function void start”和“endfunction”分开?

1 个答案:

答案 0 :(得分:3)

编写编译器比编写简单的字符串操作更多很多 - 例如,如果您的源代码如下所示:

module myApplication
  string myString = "[EntryPoint]
  function void start
    write("Hello World!\n")
    wait(5) // wait 5 seconds
    ret()
  endfunction"
endModule

即。你的源代码定义了一个包含程序源代码的字符串 - 你不能只查看看起来像入口点的东西,你需要实际解析你的源代码。

有关入门的良好资源,请参阅Learning to write a compiler