Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

tmp, tmp_:string;

dl_tmp:integer;

s:string;

t:array[1..20] of string;

tt:array[1..20] of string;

e:array[1..20] of string;

a_:array[1..20] of string;

term:array[1..30] of char;

term_:array[1..30] of char;

nn:array[1..20] of integer;

begin

{ TODO - oUser - cConsole Main : Insert code here }

a:=0;writeln('‡ ¤ ­ЁҐ:');writeln;

writeln('Vipolnit leksicheskii analiz vxodnogo teksta, postroyit tablitsy

leksem');

writeln('I vipolnit sintaksicheskii razbor teksta po zadannoi grammatike s

postroeniem dereva ');

writeln('а §Ў®а.');

writeln('');

writeln('Zadannaya grammatika);writeln('');

writeln('S->T<T|T>T|T<=T|T>=T');

writeln('T->T+E|T-E|E');

writeln;

writeln('Vypolnili studenty VM-31 Petrov, Sorokin');

writeln('');

writeln('!!!!!!!!!!!!!!!!!!!!!WARNING!!!!!!!!!!!!!!!!!!!!!!!!!!!!!');

writeln('Vhodnoi fail dolzhen nahoditsya na diske C:\spo3_in. txt');

writeln('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!');

writeln;readln;

assign(fin,'C:\spo3_in. txt');reset(fin);

for i:=1 to 30 do

slovo[i]:='';

j:=0;

i:=1;

c:=1;

a:=1;

ii:=1;

count:=0;

s:='';n:=0;

while not eof(fin) do

begin read(fin, ch);

s:=s+ch;n:=n+1;

Y: if(((ch>='a')and(ch<='z'))or((ch>='A')and(ch<='Z')))

then begin if(a=0)then i:=i+1;slovo[i]:=slovo[i]+ch;a:=1;tip[i]:=1;end

else if(ch='+')

then begin i:=i+1;slovo[i]:=slovo[i]+ch;a:=0;tip[i]:=3;end

else if(ch='-')

then begin i:=i+1;slovo[i]:=slovo[i]+ch;a:=0;tip[i]:=4;end

else if(ch='*')

then begin i:=i+1;slovo[i]:=slovo[i]+ch;a:=0;tip[i]:=5;end

НЕ нашли? Не то? Что вы ищете?

else if(ch='/')

then begin i:=i+1;slovo[i]:=slovo[i]+ch;a:=0;tip[i]:=6;end

else if((ch='<')or(ch='>'))

then begin i:=i+1;slovo[i]:=slovo[i]+ch;a:=0;tip[i]:=7;end

else if(ch='=')

then begin slovo[i]:=slovo[i]+ch;a:=0;end

else if(ch='(')

then begin

i:=i+1;tip[i]:=2;

read(fin, ch);s:=s+ch;n:=n+1;a:=0;

slovo[i]:=slovo[i]+ch;

X:read(fin, ch);s:=s+ch;n:=n+1;

if((ch>='0')and(ch<='9'))

then begin slovo[i]:=slovo[i]+ch;goto X;end

else goto Y;

end

else if(ch=')')

then begin end

else begin j:=1;goto Z;end;

end;

close(fin);

for j:=1 to i do

begin

if(tip[j]=1)then tip_[j]:='identificator';

if(tip[j]=2)then tip_[j]:='celoe 10_noe chislo so znakom';

if(tip[j]=3)then tip_[j]:='znak slozheniya';

if(tip[j]=4)then tip_[j]:='znak vichitaniya';

if(tip[j]=5)then tip_[j]:='znak ymnozheniya';

if(tip[j]=6)then tip_[j]:='znak deleniya';

if(tip[j]=7)then tip_[j]:='znak neravenstva';

end;

c:=0;

assign(fout,'C:\spo3_out. txt');rewrite(fout);

writeln(fout,'');writeln(fout,'Tablica lecsem');

writeln(fout,'N Lecsema Tip lecsemi');

for j:=1 to i do

writeln(fout, j,' ',slovo[j],' ',tip_[j]);

writeln(fout,'');writeln(fout,'Derevo vivoda:');

tmp:='';

for j:=1 to 20 do

begin a_[j]:='';t[j]:='';tt[j]:='';e[j]:='';end;

aa:=1;

for j:=1 to n do

begin

if((s[j]='<')or(s[j]='>'))

then begin

for i:=1 to j-1 do

t:=t+s[i];

term:=s[j];

for i:=j+1 to n do

tt:=tt+s[i];

c:=1;

end

else if(s[j]='=')

then begin term:='=';delete(t,1,1);end;

end;

if(c=0)then begin j:=2;goto Z;end;

tmp:='T'+term+term+'T -> ';

write(fout,'S -> ',tmp);

b:=1;a:=1;bb:=0;aa:=3;

TX:

nn[b]:=length(t[b]);

if(nn[b]>0)then

begin

for i:=nn[b] downto 1 do

begin

if((t[b][i]='+')or(t[b][i]='-'))

then begin

if(t[b][i-1]<>'(')then

begin

for g:=i+1 to nn[b] do

e[a]:=e[a]+t[b][g];

term[aa]:=t[b][i];

for g:=1 to i-1 do

t[b+1]:=t[b+1]+t[b][g];

bb:=1;break;

end;end;

end;

if(bb=0)then begin e[a]:=t[b];delete(tmp,1,1);tmp:='E'+tmp;bb:=0;end

else begin delete(tmp,1,1);tmp:='T'+term[aa]+'E'+tmp;bb:=0;end;

a:=a+1;

end;

nn[b]:=length(tt[b]);

if(nn[b]>0)then

begin

for i:=nn[b] downto 1 do

begin

if((tt[b][i]='+')or(tt[b][i]='-'))

then begin

if(tt[b][i-1]<>'(')then

begin

for g:=i+1 to nn[b] do

e[a]:=e[a]+tt[b][g];

aa:=aa+1;

term[aa]:=tt[b][i];

for g:=1 to i-1 do

tt[b+1]:=tt[b+1]+tt[b][g];

bb:=1;break;

end;end;

end;

dl_tmp:=length(tmp);

for g:=dl_tmp downto 1 do

if(tmp[g]='T')then

begin k:=g;break;end;

delete(tmp, k,1);

if(bb=0)then begin insert('E',tmp, k);e[a]:=tt[b];write(fout, tmp);bb:=0;end

else begin

tmp_:='T'+term[aa]+'E';insert(tmp_,tmp, k);write(fout, tmp);bb:=0;end;

a:=a+1;

end;

begin

for g:=1 to length(e[ii]) do

begin

if((e[ii][g]='*')or(e[ii][g]='/'))

then begin

for i:=1 to g-1 do

a_:=a_+e[ii][i];

term_:=e[ii][g];

for i:=g+1 to length(e[ii]) do

a_:=a_+e[ii][i];

bb:=1;break;

end;

end;

for g:=1 to length(tmp) do

if(tmp[g]='E') then

begin delete(tmp, g,1);break;end;

if(bb=0)then begin

insert('a',tmp, g);bb:=0;

end

else begin

tmp_:='a'+term_+'a';

insert(tmp_,tmp, g);bb:=0;

end;

ii:=ii+1;

for g:=1 to length(e[ii]) do

begin

if((e[ii][g]='*')or(e[ii][g]='/'))

then begin

for i:=1 to g-1 do

a_:=a_+e[ii][i];

term_:=e[ii][g];

for i:=g+1 to length(e[ii]) do

a_:=a_+e[ii][i];

bb:=1;break;

end;

end;

for g:=1 to length(tmp) do

if(tmp[g]='E') then

begin delete(tmp, g,1);break;end;

if(bb=0)then begin

insert('a',tmp, g);bb:=0;

end

else begin

tmp_:='a'+term_+'a';

insert(tmp_,tmp, g);bb:=0;

end;

c:=0;ii:=ii+1;

end;

if((length(t[b])>0)or(length(tt[b])>0))

then

begin b:=b+1;goto TX;end;

for g:=length(tmp) downto 1 do

begin

if(tmp[g]='>')then begin delete(tmp, g-1,10);break;end;

end;

write(fout, tmp,'-> ',s);

close(fout);

Z:if(j=1)

then writeln('Leksicheskaya oshibka!');

if(j=2)

then readln;

end.

end.

ЗАКЛЮЧЕНИЕ


Так, в ходе рассмотрения курсовой работы мы пришли к выводу, что регулярные выражения представляют удобный способ задания регулярных множеств. Аналогично множествам, они определяются рекурсивно:

-регулярные базисные выражения задаются символами и определяют соответствующие регулярные базисные множества, например, выражение f задает одноэлементное множество {f} при условии, что f - символ алфавита T;

-если p и q - регулярные выражения, то операции объединения, конкатенации и итерации - p+q, pq, p*, q* - являются регулярными выражениями, определяющими соответствующие регулярные множества.

По сути, регулярные выражения - это более простой и удобный способ записи регулярных множеств в виде обычной строки. Каждое регулярное множество, а, следовательно, и каждое регулярное выражение задает некоторый язык L(T) в алфавите T.

Этот класс языков - достаточно мощный, с его помощью можно описать интересные языки, но устроены они довольно просто - их можно определить также с помощью простых грамматик, например, правосторонних грамматик.

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

С точки зрения практика регулярное выражение задает образец поиска. После чего можно проверить, удовлетворяет ли заданная строка или ее подстрока данному образцу. В языках программирования синтаксис регулярного выражения существенно обогащается, что дает возможность более просто задавать сложные образцы поиска.

Такие синтаксические надстройки, хотя и не меняют сути регулярных выражений, крайне полезны для практиков, избавляя программиста от ненужных сложностей. (В Net Framework эти усложнения, на наш взгляд, чрезмерны. Выигрывая в мощности языка, проигрываем в простоте записи его выражений.)

СПИСОК ЛИТЕРАТУРЫ


Perl для профессиональных программистов. Регулярные выражения. - М.: «Бином», 2007. Смит, Билл. Методы и алгоритмы вычислений на строках (regexp) = Computing Patterns in Strings. - М.: «Вильямс», 2006. Форта, Бен. Освой самостоятельно регулярные выражения. 10 минут на урок = Sams Teach Yourself Regular Expressions in 10 Minutes. - М.: «Вильямс», 2005. Фридл, Дж. Регулярные выражения. - СПб.: «Питер», 2001. Ян Гойвертс, Стивен Левитан Регулярные выражения. Сборник рецептов. - СПб.: «Символ-Плюс», 2010.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4