2012-03-30 78 views
0

我在vb.net写了一个超级小解释器,因为我需要执行一个简单的(发明的)语言,以便应用程序理解它并做它需要做的事情。使用正则表达式在vb.net中做循环

一切都很顺利,直到我到达控制结构和循环。

所以我的问题是,它的代码,它的每行执行使用一个简单的每个我怎么能匹配“WHILE;”和“结束”;并执行其中的代码?

我首先想到的是,它标记读者的行并读取该行的内容,直到找到“ENDWHILE;”以及延迟执行的存储区,因此请始终将代码分离出来,直到完成所有部分并执行它为止。

但我不太确定如何编码或如果我的推理其正确。

PD:我正在使用正则表达式。

回答

1

我不知道我100%明白你在做什么,所以如果这是关闭的,我很抱歉:)。

,如果你做这样的事情:

Dim m as Match 
m=Regex.Match(strYourCode,"(WHILE;)((?!ENDWHILE;)*)(ENDWHILE;)") 

然后在m.Groups代码(2)应该只是内部WHILE代码。在解释方面,正则表达式查找WHILE,后面跟着任何不是ENDWHILE零次或多次的字符,接下来是ENDWHILE。

再一次,对不起,如果这种方式关闭,我没有测试正则表达式,所以它可能需要一些调整。

祝你好运!