Учебное пособие C#. Алгоритмы и структуры данных н. А. Тюкачев, В. Г. Хлебостроев издание третье, стереотипное 1 / 23


Листинг 4.28. Извлечение из строки n символов


Download 1.85 Mb.
Pdf ko'rish
bet65/111
Sana19.11.2023
Hajmi1.85 Mb.
#1786905
TuriУчебное пособие
1   ...   61   62   63   64   65   66   67   68   ...   111
Bog'liq
C# Алгоритмы и структуры данных 2018 Тюкачев, Хлебостроев

Листинг 4.28. Извлечение из строки n символов 
string Pop(ref string s, byte n) 

string result = s.Substring(0,n); 
s = s.Substring(n);
s = s.Trim(); 
return result; 
} // 
взять n символов 
Рис. 4.20. Синтаксическая диаграмма для операторов 
При разборе строки мы будем придерживаться следующего порядка. 
При помощи рекурсивной функции SetOperator() (листинг 4.29), которая 
возвращает код ошибки, определим тип оператора и построим узел операто-
ра. Рассмотрим работу этой функции более подробно: 
6 / 23


122 
1.
В строку st с помощью функции TestCh() собираем сим-
волы множества chars. Если st = «if», то мы имеем де-
ло с оператором if, иначе — с выражением. 
2.
Если st = «if», то в строку sExpres собираются симво-
лы логического выражения, стоящие за if, а для этого собира-
ем символы от первой скобки (до последней закрывающей 
скобки). 
3.
Вызываем процедуру PFormula(sExpres, Op.Node) (лис-
тинг 4.30) для создания дерева логического выражения. 
4.
В строку sThen собираются символы оператора от начала 
строки до else (если else в операторе присутствует). Этот 
оператор выполняется, если выражение — истинно. 
5.
Создается узел оператора op1 типа typeOpera-
tor
 = ifthen
6.
Рекурсивно 
вызывается 
функция 
SetOperator
(ref 
sThen
, out op1). 
7.
Если sElse = «», то op.operElse = null, иначе ре-
курсивно вызывается функция SetOperator(ref sThen, 
out
 op2)
8.
Если st != «if», то определяем номер переменной, соот-
ветствующий этой строке. 
9.
Создается узел оператора op типа typeOperator = ex-
pression

10. Вызываем процедуру PFormula(ref s, out D) для соз-
дания дерева, соответствующего выражению в правой части 
оператора присваивания. 
Листинг 4.29 содержит полный текст функции SetOperator(). 

Download 1.85 Mb.

Do'stlaringiz bilan baham:
1   ...   61   62   63   64   65   66   67   68   ...   111




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling