2012-03-30 1 views
0

Я пишу супер маленький интерпретатор в vb.net, потому что мне нужно выполнить простой (изобретенный) язык, чтобы приложение понимало его и выполняло все, что ему нужно.Выполнение циклов в vb.net с использованием регулярных выражений

Все прошло хорошо, пока я не достиг контрольных структур и петель.

Итак, мой вопрос заключается в том, что он выполняется по строкам, используя простой для каждого, как я могу сопоставить «WHILE;» И "ENDWHILE;" и выполнить код внутри него?

Первое, что пришло мне в голову, это своего рода флаг линии читателя и прочитать содержимое этой строки, пока не найдете «ENDWHILE»; и хранилище, которое должно выполняться поздно, поэтому продолжайте изолировать код по частям, пока у меня не будет всех частей, а затем выполните его.

Но я не уверен, как его кодировать, или если мои рассуждения правильны.

PD: Я использую регулярные выражения.

ответ

1

Я не уверен, что на 100% понимаю, что вы делаете, поэтому, если это не так, я извиняюсь заранее.

если вы делаете что-то вроде этого:

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

Тогда код в m.Groups (2) должен быть только внутренний код ПОКА. С точки зрения объяснения, регулярное выражение ищет WHILE, за которым следуют любые символы, которые не являются ENDWHILE нолем или более, а затем ENDWHILE.

Опять же, извините, если этот путь выключен, и я не тестировал регулярное выражение, поэтому может потребоваться некоторая настройка.

Удачи вам!

Смежные вопросы