Выполнение циклов в vb.net с использованием регулярных выражений - PullRequest
0 голосов
/ 30 марта 2012

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

Все шло хорошо, покая достиг управляющих структур и циклов.

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

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

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

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

1 Ответ

1 голос
/ 05 апреля 2012

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

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

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

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

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

Удачи!

...