ðåôåðàòû ðåôåðàòû
 

Ãëàâíàÿ

Ðàçäåëû

Íîâîñòè

Πñàéòå

Êîíòàêòû

 
ðåôåðàòû

Àâèàöèÿ è êîñìîíàâòèêà
Àäìèíèñòðàòèâíîå ïðàâî
Àðáèòðàæíûé ïðîöåññ
Àðõèòåêòóðà
Àñòðîëîãèÿ
Àñòðîíîìèÿ
Áàíêîâñêîå äåëî
Áåçîïàñíîñòü æèçíåäåÿòåëüíîñòè
Áèçíåñ-ïëàí
Áèîëîãèÿ
Áóõó÷åò óïðàâëåí÷ó÷åò
Âîäîñíàáæåíèå âîäîîòâåäåíèå
Âîåííàÿ êàôåäðà
Ãåîãðàôèÿ è ãåîëîãèÿ
Ãåîäåçèÿ
Ãîñóäàðñòâåííîå ðåãóëèðîâàíèå è íàëîãîîáëîæåíèå
Ãðàæäàíñêîå ïðàâî
Ãðàæäàíñêîå ïðîöåññóàëüíîå ïðàâî
Æèâîòíûå
Æèëèùíîå ïðàâî
Èíîñòðàííûå ÿçûêè è ÿçûêîçíàíèå
Èñòîðèÿ è èñòîðè÷åñêèå ëè÷íîñòè
Êîììóíèêàöèè ñâÿçü öèôðîâûå ïðèáîðû è ðàäèîýëåêòðîíèêà
Êðàåâåäåíèå è ýòíîãðàôèÿ
Êóëèíàðèÿ è ïðîäóêòû ïèòàíèÿ
Êóëüòóðà è èñêóññòâî
Ëèòåðàòóðà
Ëîãèêà
Ëîãèñòèêà
Ìàðêåòèíã
Ìàññ-ìåäèà è ðåêëàìà
Ìàòåìàòèêà
Ìåäèöèíà
Ìåæäóíàðîäíîå è Ðèìñêîå ïðàâî
Óãîëîâíîå ïðàâî óãîëîâíûé ïðîöåññ
Òðóäîâîå ïðàâî
Æóðíàëèñòèêà
Õèìèÿ
Ãåîãðàôèÿ
Èíîñòðàííûå ÿçûêè
Áåç êàòåãîðèè
Ôèçêóëüòóðà è ñïîðò
Ôèëîñîôèÿ
Ôèíàíñû
Ôîòîãðàôèÿ
Õèìèÿ
Õîçÿéñòâåííîå ïðàâî
Öèôðîâûå óñòðîéñòâà
Òàìîæåííàÿ ñèñòåìà
Òåîðèÿ ãîñóäàðñòâà è ïðàâà
Òåîðèÿ îðãàíèçàöèè
Òåïëîòåõíèêà
Òåõíîëîãèÿ
Òîâàðîâåäåíèå
Òðàíñïîðò
Òðóäîâîå ïðàâî
Òóðèçì
Óãîëîâíîå ïðàâî è ïðîöåññ
Óïðàâëåíèå
Ðàäèîýëåêòðîíèêà
Ðåëèãèÿ è ìèôîëîãèÿ
Ðèòîðèêà
Ñîöèîëîãèÿ
Ñòàòèñòèêà
Ñòðàõîâàíèå
Ñòðîèòåëüñòâî
Ñõåìîòåõíèêà
Èñòîðèÿ
Êîìïüþòåðû ÝÂÌ
Êóëüòóðîëîãèÿ
Ñåëüñêîå ëåñíîå õîçÿéñòâî è çåìëåïîëüçîâàíèå
Ñîöèàëüíàÿ ðàáîòà
Ñîöèîëîãèÿ è îáùåñòâîçíàíèå

ðåôåðàòû
ðåôåðàòû

ÍÀÓ×ÍÀß ÁÈÁËÈÎÒÅÊÀ - ÐÅÔÅÐÀÒÛ - Ïîñòðîåíèå ôîðìàëüíîãî ÿçûêà

Ïîñòðîåíèå ôîðìàëüíîãî ÿçûêà


Ïîñòðîåíèå ôîðìàëüíîãî ÿçûêà
L
WHILE( <AB> )  [<FUNCTION([<PAR>, <PAR>, ...])>];
WHILE -  âõîäíîé òåðìèíàëüíûé ñèìâîë
<AB > - óñëîâíîå âûðàæåíèå
<FUNCTION> - íåêîòîðàÿ ôóíêöèÿ,
êîòîðàÿ ìîæåò îòñóòñòâîâàòü
<PAR> - ïàðàìåòðû ôóíêöèè, êîòîðûå
òîæå ìîãóò îòñóòñòâîâàòü
Ïðèìåð
ïðàâèëüíîãî ñèíòàêñèñà:
WHILE(A>44<b=56+67)
clrscr();
A>44<b=56+67
- óñëîâíîå
âûðàæåíèå
clrscr() - ôóíêöèÿ, áåç ïàðàìåòðîâ
Ïîäáîð ãðàììàòèêè  G[Z]  ïî
ÿçûêó  L
          Ëþáàÿ ãðàììàòèêà, ê ïðèìåðó G[Z], ñîäåðæèò ñëåäóþùèå áàçèñíûå
ýëåìåíòû Vt, Vn,
Z, P,  ãäå:
Vt - ñëîâàðü òåðìèíàëüíûõ
ñèìâîëîâ
Vn - ñëîâàðü íåòåðìèíàëüíûõ
ñèìâîëîâ
Z  - íà÷àëüíûé íåòåðìèíàëüíûé ñèìâîë
P - ìíîæåñòâî ïðàâèë âûâîäà
G[<îïåðàòîð>]:
1.
<Îïåðàòîð>  à  while(<AB> ) [<Ôóíêöèÿ>];
2. <AB>à
T|<AB> <
T|<AB> > T|<AB>  <= T
| <AB> >= T | <AB> != T
3. <T> à  O | T*O |
T**O | T+O | T-O | T/O
4. <O> à  (<AB>)
| <IDENT> | <ÖÁÇ> 
5. <IDENT> à ÁÖ
6. <ÖÁÇ> à  Ö{Ö}
7. <Ôóíêöèÿ> à <IDENT>([<PAR>{,<PAR>}])
8. <PAR> à <IDENT> | <ÖÁÇ> | Ω
Êëàññèôèêàöèÿ
G[Z]
G[<îïåðàòîð>]:
1.
<Îïåðàòîð>  à  while(<AB> ) [<Ôóíêöèÿ>];
2. <AB>à
T|<AB> <
T|<AB> > T|<AB>  <= T
| <AB> >= T | <AB> != T
3. <T> à  O | T*O |
T**O | T+O | T-O | T/O
4. <O> à  (<AB>)
| <IDENT> | <ÖÁÇ> 
5. <IDENT> à ÁÁ
6. <ÖÁÇ> à  Ö{Ö}
7. <Ôóíêöèÿ> à <IDENT>([<PAR>{,<PAR>}])
8. <PAR> à <IDENT> | <ÖÁÇ> | Ω
Ñäåëàåì
çàìåíó íåòåðìèíàëüíûõ ñèìâîëîâ:
<Îïåðàòîð> à  Z
<AB>           à  A
<T>               à
B
<O>              à  C
<Ôóíêöèÿ > à D
<IDENT>      à E
<ÖÁÇ>           à
F
<PAR>           à G
Ñäåëàåì
çàìåíó òåðìèíàëüíûõ ñèìâîëîâ:
 WHILE à  a
  (           à  b
  )           à  c
  ;          
 à  d
 Ö           à   f
 Á            à  g
  ,           
à  h
G[Z]:
1. Z  à  abAc[D]d
2. Aà
B|A<B|A > B|A <= B |A >= B |A != B
3. B
à  C | B*C | B**C | B+C | B-C | B/C
4. C
à  bAc | E | F 
5. E
à
gg
6. F
à
 f{f}
7. D à
Eb[G{hG}]c
8. G
à
E | F |
Ω
Âûâîä
: G[Z] - êîíòåêñòíî-ñâîáîäíàÿ
ãðàììàòèêà.
Âûáîð
ìåòîäà àíàëèçà
Õîòÿ îäíîçíà÷íîñòü â îáùåì ñëó÷àå äëÿ
êîíòåêñòíî-çàâèñèìûõ ãðàììàòèê íå äîêàçàíà, åå èñïîëüçîâàíèå âîçìîæíî äëÿ
ãðàììàòèê â êîòîðûõ îäíîçíà÷íîñòü î÷åâèäíà. Íàèáîëåå õîðîøî ðàçðàáîòàííûì
ìåòîäîì àíàëèçà, äëÿ äàííîãî òèïà ãðàììàòèê ÿâëÿåòñÿ, ìåòîä ðåêóðñèâíîãî
ñïóñêà.
Äèàãíîñòèêà
è íåéòðàëèçàöèÿ îøèáîê
Ðàçðàáîòàííûé àëãîðèòì îòíîñèòñÿ ê îáùåèçâåñòíîìó
ìåòîäó ñèíòàêñè÷åñêîãî ðàçáîðà, ïðåäëîæåííûé Àéðîíñîì.
Îñíîâíàÿ èäåÿ ìåòîäà ñîñòîèò â òîì, ÷òî ïî êîíòåêñòó
áåç âîçâðàòà îòáðàñûâàþòñÿ òå ñèìâîëû, êîòîðûå ïðèâåëè â òóïèêîâóþ ñèòóàöèþ è
ðàçáîð ïðîäîëæàåòñÿ.
Ïðèâåäåì ïðèìåð ñèíòàêñè÷åñêîãî ðàçáîðà:
While (A > )
cls();    
1. Z  à  abAc[D]d
2. Aà
B|A<B|A > B|A <= B |A >= B |A != B
3. B
à  C | B*C | B**C | B+C | B-C | B/C
4. C
à  bAc | E | F 
5. E
à
gg
6. F
à
 f{f}
7. D à
Eb[G{hG}]c
8. G
à
E | F |
Ω
                             Z
a        b     
            A              c         D
                   B                 A         E              
                  
                   C                 B         g{g} b       G       c
                  
                   E                 C                          Ω
                  
                   g                 E
                                     
                                      g
While
(       A          >               
)   cls   (                 )            ;
                   òóïèêîâàÿ ñèòóàöèÿ
Òåñòèðîâàíèå íà öåïî÷êàõ
Ïðîòîêîë ðàáîòû ñèíòàêñè÷åñêîãî ðàñïîçíàâàòåëÿ
îïåðàòîðà öèêëà while ÿçûêà Ñ.
  
_____________________________________________________________________
Îáðàáàòûâàåì ñòðî÷êó - While(a>)cls();
Íàéäåí While ïðîâåðêà íà÷àëàñü ñ ñèìâîëà - (
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - a
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - )
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - )
Ïðîâåðêà íà FUNC, 
òåêóùèé ñèìâîë - c
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - c
 Íàéäåííûå îøèáêè â
ñòðîêå While(a>)cls();
  Ïðåäóïðåæäåíèå:
Îòñóòñòâóåò óñëîâèå ()
  Íå íàéäåí
èäåíòèôèêàòîð èëè ÖÁÇ
_____________________________________________________________________
Îáðàáàòûâàåì ñòðî÷êó -
while(1<(3*(43+5*(3-4-(4<454)))) ;
Íàéäåí While ïðîâåðêà íà÷àëàñü ñ ñèìâîëà - (
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 1
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 1
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 3
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 3
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 4
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 4
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 5
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 5
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 3
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 3
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 4
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 4
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 4
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 4
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 4
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 4
Ïðîâåðêà íà FUNC, 
òåêóùèé ñèìâîë - ;
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - ;
 Íàéäåííûå îøèáêè â
ñòðîêå while(1<(3*(43+5*(3-4-(4<454)))) ;
  Îòñóòñòâóåò )
  Ïðåäóïðåæäåíèå:
îòñóòñòâóåò èìÿ ôóíêöèè
_____________________________________________________________________
Îáðàáàòûâàåì ñòðî÷êó - 435 4 whilei>>3t*(ewqw++()*we)
rscr(456,345,rtgrt,345444rtr,,,)
Íàéäåí While ïðîâåðêà íà÷àëàñü ñ ñèìâîëà - i
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - i
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 3
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 3
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - e
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - +
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - +
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - w
Ïðîâåðêà íà FUNC, 
òåêóùèé ñèìâîë - r
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - r
Ïðîâåðêà íà PAR,  
òåêóùèé ñèìâîë - 4
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 4
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 4
Ïðîâåðêà íà PAR,  
òåêóùèé ñèìâîë - 3
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 3
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 3
Ïðîâåðêà íà PAR,  
òåêóùèé ñèìâîë - r
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - r
Ïðîâåðêà íà PAR,  
òåêóùèé ñèìâîë - 3
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 3
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 3
Ïðîâåðêà íà PAR,  
òåêóùèé ñèìâîë - ,
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - ,
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - ,
 Íàéäåííûå îøèáêè â
ñòðîêå 435 4 whilei>>3t*(ewqw++()*we) rscr(456,345,rtgrt,345444rtr,,,)
  Îòñóòñòâóåò (
  Îòñóòñòâóåò )
  Ïðåäóïðåæäåíèå:
Îòñóòñòâóåò óñëîâèå ()
  Îòñóòñòâóåò ; ïîñëå
ôóíêöèè
  Ïàðàìåòð ôóíêöèè íå
ìîæåò íà÷èíàòñÿ ñ öèôðû
  Íåèçâåñòíûé
èäåíòèôèêàòîð(û) -
                   
435, 4,
  Íå íàéäåí
èäåíòèôèêàòîð èëè ÖÁÇ
  Èäåíòèôèêàòîð íå
ìîæåò íà÷èíàòüñÿ ñ öèôðû
  Íå íàéäåí èëè íå
âåðíûé ïàðàìåòð
  Íåèçâåñòíàÿ
çíàêîâàÿ êîíñòðóêöèÿ
_____________________________________________________________________
Îáðàáàòûâàåì ñòðî÷êó - whiLE(43-(sss<233)fewfew) sd(we)
Íàéäåí While ïðîâåðêà íà÷àëàñü ñ ñèìâîëà - (
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 4
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 4
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - s
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 2
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 2
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - f
Ïðîâåðêà íà FUNC, 
òåêóùèé ñèìâîë - 
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - s
Ïðîâåðêà íà PAR,  
òåêóùèé ñèìâîë - w
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - w
 Íàéäåííûå îøèáêè â
ñòðîêå whiLE(43-(sss<233)fewfew) sd(we)
  Îòñóòñòâóåò ; ïîñëå
ôóíêöèè
  Ïðîïóùåíî / èëè *
èëè ** èëè + èëè -
_____________________________________________________________________
Îáðàáàòûâàåì ñòðî÷êó -
while(i>344>(5445<<2323*343243+2343*(w))>23*232) clrscr(,)
Íàéäåí While ïðîâåðêà íà÷àëàñü ñ ñèìâîëà - (
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - i
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 3
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 3
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 5
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 5
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 2
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 2
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 3
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 3
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 2
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 2
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - w
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 2
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 2
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 2
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 2
Ïðîâåðêà íà FUNC, 
òåêóùèé ñèìâîë - 
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - c
Ïðîâåðêà íà PAR,  
òåêóùèé ñèìâîë - ,
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - ,
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - ,
 Íàéäåííûå îøèáêè â
ñòðîêå while(i>344>(5445<<2323*343243+2343*(w))>23*232)
clrscr(,)
  Îòñóòñòâóåò ; ïîñëå
ôóíêöèè
  Íå íàéäåí èëè íå
âåðíûé ïàðàìåòð
  Íåèçâåñòíàÿ
çíàêîâàÿ êîíñòðóêöèÿ
_____________________________________________________________________
Îáðàáàòûâàåì ñòðî÷êó -
while(u>r+erhgeerg(e>=rwe+++r+788erwe++)) scr(eee,qee<)
Íàéäåí While ïðîâåðêà íà÷àëàñü ñ ñèìâîëà - (
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - u
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - r
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - e
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - e
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - r
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - r
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 7
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 7
Ïðîâåðêà íà FUNC, 
òåêóùèé ñèìâîë - 
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - s
Ïðîâåðêà íà PAR,  
òåêóùèé ñèìâîë - e
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - e
Ïðîâåðêà íà PAR,  
òåêóùèé ñèìâîë - q
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - q
Ïðîâåðêà íà PAR,  
òåêóùèé ñèìâîë - <
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - <
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - <
 Íàéäåííûå îøèáêè â
ñòðîêå while(u>r+erhgeerg(e>=rwe+++r+788erwe++)) scr(eee,qee<)
  Îòñóòñòâóåò ; ïîñëå
ôóíêöèè
  Ïðîïóùåíî / èëè *
èëè ** èëè + èëè -
  Èäåíòèôèêàòîð íå
ìîæåò íà÷èíàòüñÿ ñ öèôðû
  Íå íàéäåí èëè íå
âåðíûé ïàðàìåòð
_____________________________________________________________________
Îáðàáàòûâàåì ñòðî÷êó - while(i>77777u777) clrscr(,...,)
Íàéäåí While ïðîâåðêà íà÷àëàñü ñ ñèìâîëà - (
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - i
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 7
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 7
Ïðîâåðêà íà FUNC, 
òåêóùèé ñèìâîë - 
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - c
Ïðîâåðêà íà PAR,  
òåêóùèé ñèìâîë - ,
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - ,
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - ,
 Íàéäåííûå îøèáêè â
ñòðîêå while(i>77777u777) clrscr(,...,)
  Îòñóòñòâóåò ; ïîñëå
ôóíêöèè
  Èäåíòèôèêàòîð íå
ìîæåò íà÷èíàòüñÿ ñ öèôðû
  Íå íàéäåí èëè íå
âåðíûé ïàðàìåòð
_____________________________________________________________________Îáðàáàòûâàåì
ñòðî÷êó - while(4545>>445--- ;
Íàéäåí While ïðîâåðêà íà÷àëàñü ñ ñèìâîëà - (
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 4
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 4
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 4
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 4
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 
Ïðîâåðêà íà FUNC, 
òåêóùèé ñèìâîë - ;
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - ;
 Íàéäåííûå îøèáêè â
ñòðîêå while(4545>>445--- ;
  Îòñóòñòâóåò )
  Ïðåäóïðåæäåíèå:
îòñóòñòâóåò èìÿ ôóíêöèè
  Íå íàéäåí
èäåíòèôèêàòîð èëè ÖÁÇ
  Íåèçâåñòíàÿ
çíàêîâàÿ êîíñòðóêöèÿ
_____________________________________________________________________
Îáðàáàòûâàåì ñòðî÷êó - while(i>=0);
Íàéäåí While ïðîâåðêà íà÷àëàñü ñ ñèìâîëà - (
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - i
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 0
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 0
Ïðîâåðêà íà FUNC, 
òåêóùèé ñèìâîë - ;
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - ;
 Íàéäåííûå îøèáêè â
ñòðîêå while(i>=0);
  Ïðåäóïðåæäåíèå:
îòñóòñòâóåò èìÿ ôóíêöèè
_____________________________________________________________________
Îáðàáàòûâàåì ñòðî÷êó - while(i>=0) 544();
Íàéäåí While ïðîâåðêà íà÷àëàñü ñ ñèìâîëà - (
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - i
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 0
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 0
Ïðîâåðêà íà FUNC, 
òåêóùèé ñèìâîë - 
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 5
 Íàéäåííûå îøèáêè â
ñòðîêå while(i>=0) 544();
  Îòñóòñòâóåò ; ïîñëå
ôóíêöèè
  Ïðåäóïðåæäåíèå:
îòñóòñòâóåò èìÿ ôóíêöèè
_____________________________________________________________________
Îáðàáàòûâàåì ñòðî÷êó - whilei>=0) clrscr();13
Íàéäåí While ïðîâåðêà íà÷àëàñü ñ ñèìâîëà - i
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - i
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 0
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 0
Ïðîâåðêà íà FUNC, 
òåêóùèé ñèìâîë - 
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - c
 Íàéäåííûå îøèáêè â
ñòðîêå whilei>=0) clrscr();13
  Îòñóòñòâóåò (
  Ïðåäóïðåæäåíèå:
Îòñóòñòâóåò óñëîâèå ()
_____________________________________________________________________
Îáðàáàòûâàåì ñòðî÷êó - whilertt<=243+++344-23!=345 wwqwq;
Íàéäåí While ïðîâåðêà íà÷àëàñü ñ ñèìâîëà - r
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - r
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 2
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 2
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 3
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 3
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 2
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 2
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - =
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - =
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 3
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 3
Ïðîâåðêà íà FUNC, 
òåêóùèé ñèìâîë - w
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - w
 Íàéäåííûå îøèáêè â
ñòðîêå whilertt<=243+++344-23!=345 wwqwq;
  Îòñóòñòâóåò (
  Îòñóòñòâóåò )
  Íå íàéäåí
èäåíòèôèêàòîð èëè ÖÁÇ
  Íå íàéäåí èëè íå
âåðíûé ïàðàìåòð
_____________________________________________________________________
Îáðàáàòûâàåì ñòðî÷êó - while(dd>>3432*23432)
Íàéäåí While ïðîâåðêà íà÷àëàñü ñ ñèìâîëà - (
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - d
Ïðîâåðêà íà AB
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 3
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 3
Ïðîâåðêà íà TERM
Ïðîâåðêà íà O
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë - 2
Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - 2
Ïðîâåðêà íà FUNC, 
òåêóùèé ñèìâîë -
Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë -
 Íàéäåííûå îøèáêè â
ñòðîêå while(dd>>3432*23432)
  Îòñóòñòâóåò ; ïîñëå
ôóíêöèè
  Ïðåäóïðåæäåíèå:
îòñóòñòâóåò èìÿ ôóíêöèè
  Íåèçâåñòíàÿ
çíàêîâàÿ êîíñòðóêöèÿ
Ëèñòèíã ïðîãðàììû
ÂÀÐÈÀHÒ # 10                                  
Ñèíòàêñè÷åñêèé ðàñïîçíîâàòåëü îïåðàòîðà öèêëà While               
                  
Ôàéë ïðîãðàììû                  
- À513.cpp           
                 ñ
òåêñòîì äëÿ ðàñïîçíîâàíèÿ - test.513           
                     
ñ ïðîòîêîëîì ðàáîòû         -
error.513          
 Êàôåäpà       : ÀÑÓ                                                      
 Ãpóïïà        : À-513                                                   
 Ñòóäåíò       : Ñòàðèêîâ Äìèòðèé Àëåêñàíäðîâè÷                          
 Ïpåïîäàâàòåëè :
êàíäèäàò òåõíè÷åñêèõ íàóê, äîöåíò                       
                                  Øîpíèêîâ Þpèé Âëàäèìèpîâè÷,            
                  
àññèñòåíò      Ïàíîâà   Âåpà Áîpèñîâíà                
 Äàòà          : 30 ìàÿ 1997ã.                                           
//----------------------------------------------------------------------------
// Çàãîëîâî÷íûå ôàéëû.
//----------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>
#include <dos.h>
#define UP     
72      // ñòðåëêà ââåðõ
#define DOWN   
80      // ñòðåëêà âíèç
#define ALTX   
45      // âûõîä
#define F1   59
#define F2   60
#define F3   61
#define ESC  27
#define FL_NAME "test.513"
#define FL_TEST "error.513"
void open_fl(void);              // îòêpûòü ôàéë
void work_space(void);           // óïpàâëÿåò pàáî÷åé îáëàñòüþ
void print_page(void);           // ïå÷àòàåò òåêñò íà ýêpàí
void help_line(void);            // òåêñò ñ ïîìîùüþ íèæíÿÿ ñòpî÷êà
void help(int);
int scan();                      // Äåëàåò ðàçáîð ñòðîêè
int my_while();                  // îïåpàòîp
int AB();                        // àðèôìåòè÷åñêîå âûðàæåíèå
int TERM();                      // Òåðì
int O();                         // Îïåðàíä
int IDENT();                     // Èäåíòèôèêàòîð
int ZBZ();                       // Öåëîå áåç çíàêà
int FUNC();                      // Ôóíêöèÿ
int PAR();                       // Ïàðàìåòð
char TEXT[22][80];
int  position;                   // Íîìåð òåêóùåé ñòðàíèöû
int  cur_y=3;                    // ïîëîæåíèå êópñîpà íà
ýêpàíå
int  x,y;                        // Òåêóùàÿ ïîçèöèÿ ïðè
êîìïèëÿöèè â ñòðî÷êå
int  f=0;                        // Ïðè f=1 îøèáêè äëÿ
ôóíêöèè
char screen[4096];               // Ñîõpàíÿåò ïîëíóþ êîïèþ ýêpàíà
char screen1[4096];              // Ñîõpàíÿåò ÷àñòü ýêpàíà
char *mistake[]={"Îøèáîê íåò!!!",                                //0
                
"Îïåpàòîp while íå íàéäåí",                     //1
                
"Îòñóòñòâóåò (",                                //2
                
"Îòñóòñòâóåò )",                                //3
                
"Ïðåäóïðåæäåíèå: Îòñóòñòâóåò óñëîâèå ()",       //4
                
"Îòñóòñòâóåò ; ïîñëå ôóíêöèè",                  //5
                
"Ïðåäóïðåæäåíèå: îòñóòñòâóåò èìÿ ôóíêöèè",      //6
                
"Ïðîïóùåíî / èëè * èëè ** èëè + èëè - ",        //7
                
"",                                             //8
                
"Ïàðàìåòð ôóíêöèè íå ìîæåò íà÷èíàòñÿ ñ öèôðû",  //9
                
"Íåèçâåñòíûé èäåíòèôèêàòîð(û) - ",              //10
                
"Íå íàéäåí èäåíòèôèêàòîð èëè ÖÁÇ",              //11
                
"Èäåíòèôèêàòîð íå ìîæåò íà÷èíàòüñÿ ñ öèôðû",    //12
                
"Íå íàéäåí èëè íå âåðíûé ïàðàìåòð",             //13
                
"Íåèçâåñòíàÿ çíàêîâàÿ êîíñòðóêöèÿ",             //14
                
""};                                            //15
FILE *fl_t;
int mistake_number[15]; //ìàññèâ õðàíÿùèé êîäû îøèáîê (0 èëè
1)
                       
//ãäå 1-îøèáêà ïðèñóòñâóåò, 0 â ïðîòèâíîì ñëó÷àå
                       
//mistake_number[i], ãäå i íîìåð îøèáêè èç mistake
char strange[100];      
//ïåðå÷åíü íåèçâåñòíûõ èäåíòèôèêàòîðîâ
                       
//íàéäåíûõ â ñòðîêå âî âðåìÿ ðàçáîðà
int s=0;               
//òåêóùàÿ ïîçèöèÿ â strange
void    main()
        {
        open_fl();
        help_line();
        print_page();
        work_space();
        }
//----------------------------------------------------------------------------
// Îòêðûòèå ôàéëà
//----------------------------------------------------------------------------
void open_fl(void)
        {
        FILE *fl;
        int i;
       
window(1,1,80,25);
       
textbackground(BLACK);
       
textcolor(WHITE);
        clrscr();
        _setcursortype(_NOCURSOR);
        if((fl_t=
fopen(FL_TEST,"w"))== NULL) exit(1);
        if ((fl =
fopen(FL_NAME,"r"))==NULL)
                {
               
window(18,10,60,16);
               
textbackground(GREEN);
               
textcolor(BLACK);
               
clrscr();
               
gotoxy(5,2);cprintf(" Íåìîãó íàéòè ôàéë test.513");
               
gotoxy(5,3);cprintf("Ïðîâåðòå åãî íàëè÷èå íà äèñêå");
               
gotoxy(5,4);cprintf("    
èëè ñîçäàéòå íîâûé");
               
gotoxy(3,6);cprintf("Äëÿ ïðîäîëæåíèÿ íàæìèòå ëþáóþ êëàâèøó");
               
getch();
               
exit(0);
                }
       
for(i=0;i<25;i++)
                {
               
window(40-i,12-i/5,40+i,12+i/5);
               
textbackground(GREEN);
               
textcolor(BLACK);
               
clrscr();
               
delay(7);
                }
       
textcolor(WHITE);
       
gotoxy(12,2);cprintf("×òåíèå ñòðîê äëÿ ðàçáîðà");
       
gotoxy(12,3);cprintf("   
ïðîèçâåäåíîå èç");
        gotoxy(12,4);cprintf("        ôàéëà ");
       
gotoxy(12,5);cprintf("     
test.513 ");
       
gotoxy(7,8);cprintf(" Äëÿ ïðîäîëæåíèÿ íàæìèòå ëþáóþ êëàâèøó");
        getch();
        for (i=0;
i<20; i++)
                {
                if
(fgets(TEXT[i],78,fl)==NULL) break;  //
÷èòàòü ñòðîêó ôàéëà
                }
       
TEXT[i][0]=NULL;
       
position=0;                   
//îáíóëåíèå ïîçèöèè ñäâèãà ñòpàíèö
        fclose(fl);
        }
//----------------------------------------------------------------------------
// Ðàáî÷àÿ îáëàñòü
//----------------------------------------------------------------------------
void work_space(void)
        {
        char c;
        while(1)
                {
               
gotoxy(1,cur_y);
               
c=getch();
               
switch(c)
                       
{
                       
case UP:
                                if(cur_y!=3)
                                        {
                                        cur_y--;
                                        print_page();
                                        }
                                else
                                        {
                                        if(position!=0)
                                                {
                                                position--;
                                                print_page();
                                                cur_y=3;
                                                }
                                        }
                                break;
                       
case DOWN:
                                if(cur_y!=7)
                                        {
                                        cur_y++;
                                       
if(TEXT[cur_y+position-3][0]==NULL) cur_y--;
                                        print_page();
                                        }
                                else
                                        {
                                        cur_y=7;
                                       
if(TEXT[cur_y+position-2][0]!=NULL)
                                                {
                                                position++;
                                                print_page();
                                                }
                                        }
                                break;
                       
case F1:
                                help(1);
                                break;
                        case F2:
                                help(2);
                                break;
                       
case F3:
                                help(3);
                                break;
                       
case ALTX:
                                window(1,1,80,25);
                                textbackground(BLACK);
                                textcolor(WHITE);
                                fclose(fl_t);
                                clrscr();
                                exit(1);
                       
case ESC:
                                window(1,1,80,25);
                                textbackground(BLACK);
                                textcolor(WHITE);
                                clrscr();
                                fclose(fl_t);
                                exit(1);
                       
}
                }
        }
//----------------------------------------------------------------------------
// Ðàñïå÷àòûâàåò òåêñò, âûâîäèò íà ýêðàí îøèáêè, íàéäåííûå â
îáðàáàòûâàåìîé
// (òåêóùåé) ñòðîêå
//----------------------------------------------------------------------------
void print_page()
        {
        int i,xx=10;
       
puttext(1,1,80,25,screen);
       
for(i=0;i<=15;i++)           
//î÷èñòêà ìàññèâà îøèáîê
               
mistake_number[i] = 0;
       
strange[0]=NULL;
        s=0;
       
x=cur_y+position-3;
        y=0;
        f=0;
       
fprintf(fl_t,"______________________________________________________________________________\n");
       
fprintf(fl_t,"Îáðàáàòûâàåì ñòðî÷êó - %s\n",TEXT[x]);
        scan();                    //âûçûâàåò ñêàíåð äëÿ
ðàçáîðà ñòðîêè
       
fprintf(fl_t,"\n Íàéäåííûå îøèáêè â ñòðîêå %s\n",TEXT[x]);
       
for(i=0;i<=15;i++)
       
if(mistake_number[i] == 1)
                {
               
gotoxy(4,xx++);
               
printf("%s ",mistake[i]);
               
fprintf(fl_t," 
%s\n",mistake[i]);
               
if(i==10 && mistake_number[i] == 1)
                       
{
                        printf(" %s",strange);
                       
fprintf(fl_t,"                   
%s\n",strange);
                       
}
                }
        if(xx ==
10)               //îøèáîê íåò, ò.ê.
êîîðäèíàòû ñòðîêè
               
{                  //íåèçìåíèëèñü
(xx)
               
gotoxy(4,xx++);
               
printf("%s ",mistake[0]);
                }
       
textbackground(BLACK);
       
textcolor(WHITE);
       
if(TEXT[0][0]!=NULL)
                {
                for
(i=1;i<6;i++)
                        {
                       
if(TEXT[i-1+position][0]==NULL) break;
                       
gotoxy(1,i+2);
                       
puts(TEXT[i-1+position]);
                       
}
                }
       
gotoxy(1,cur_y);
       
textbackground(RED);
        clreol();
       
puts(TEXT[cur_y+position-3]);
        }
//----------------------------------------------------------------------------
// Âûâîäèò íà ýêðàí òåêñò ñ ïîìîùüþ
//----------------------------------------------------------------------------
void help_line(void)
        {
       
window(1,1,80,25);
       
textbackground(BLACK);
        clrscr();
       
textbackground(GREEN);
       
textcolor(BLACK);
        gotoxy(1,1);
        clreol();
       
printf("          Borland
C++      Âåpñèÿ òîëüêî äëÿ îïåpàòîpà
WHILE");
        gotoxy(1,25);
       
textbackground(LIGHTCYAN);
        clreol();
       
cprintf(" F1 - Ïîìîùü   F2 -
Ãðàììàòèêà  F3 - ßçûê îïåðàòîðà                 ALT+X-Âûõîä");
        gotoxy(1,2);
        textbackground(LIGHTCYAN);
        clreol();
       
printf("------------------------------- CÎÄÅÐÆÈÌÎÅ ÔÀÉËÀ
-------------------------------");
        gotoxy(1,8);
       
textbackground(LIGHTCYAN);
        clreol();
       
printf("------------------------------ ÑÎÎÁÙÅÍÈß ÎÁ ÎØÈÁÊÀÕ
----------------------------");
        gotoxy(1,9);
       
gettext(1,1,80,25,screen);
       
gettext(1,9,80,24,screen1);
        }
//----------------------------------------------------------------------------
// Âûâîäèò íà ýêðàí òåêñò, â çàâèñèìîñòè îò çíà÷åíèÿ n
//----------------------------------------------------------------------------
void help(int n)
        {
        char
string[4096];
       
gettext(1,8,80,22,string);
       
window(1,8,80,22);
       
textbackground(CYAN);
       
textcolor(BLACK);
        clrscr();
        gotoxy(1,1);
        if(n ==1)
                {
               
cprintf("\n        
HÎÂÎÑÈÁÈÐÑÊÈÉ ÃÎÑÓÄÀÐÑÒÂÅHHÛÉ ÒÅÕHÈ×ÅÑÊÈÉ ÓHÈÂÅÐÑÈÒÅÒ\n\r\r");
               
cprintf("         Êópñîâàÿ
pàáîòà ïî äèñöèïëèíå ÑÈÑÒÅÌHÎÅ ÏÐÎÃÐÀÌÌÈÐÎÂÀHÈÅ\n\r\r");
               
cprintf("              
Ñèíòàêñè÷åñêèé pàñïîçíàâàòåëü\n\n\r\r\r");
               
cprintf("                
Èñïîëüçóåìûå êëàâèøè:\r\n");
               
cprintf("   F1     - äàííûé HELP.\r\n");
               
cprintf("   F2     - ãpàììàòèêà ÿçûêà.\r\n");
               
cprintf("   F3     - ÿçûê îïåðàòîðà.\r\n");
               
cprintf("   Esc    - âûõîä èç ïðîãðàììû.\r\n");
               
cprintf("   Alt-X  - âûõîä èç ïðîãðàììû.\r\n\n\n");
               
cprintf("   (c) 1997
Ñòàðèêîâ Äìèòðèé Àëåêñàíäðîâè÷");
                }
        if(n == 2)
                {
               
cprintf("\n                
ÃÐÀÌÌÀÒÈÊÀ ßÇÛÊÀ\n\n\r\r");
               
cprintf(" 1. <îïåðàòîð> -> WHILE
(<AB>)[<FUNCTION>];\n\r\r");
               
cprintf(" 2. <AB> -> T|<AB> >T |<AB> <T
|<AB> <=T |<AB> >=T |<AB> !=T\n\r\r\r");
               
cprintf(" 3. T -> O | T+O | T-O | T*O | T/O |
T**O\n\r\r\r");
               
cprintf(" 4. O ->(<AB>) | <IDENT> | <ÖÁÇ>\n\r\r\r");
               
cprintf(" 5. <IDENT> -> ÁÁ\r\r\r\r\n");
               
cprintf(" 6. <ÖÁÇ> -> Ö{Ö}\r\n");
               
cprintf(" 7. <FUNCTION> ->
<IDENT>([<PAR>{,<PAR>}])\r\n");
               
cprintf(" 8. <PAR> -> <IDENT> | <ÖÁÇ>
\r\n");
                }
        if(n == 3)
                {
               
cprintf("\n         ßÇÛÊ
ÎÏÅÐÀÒÎÐÀ\n\n\n\r\r");
               
cprintf("   WHILE(AB)
[FUNCTION([PAR,PAR,...])];\r\n\n");
               
cprintf("   AB       - Âûðàæåíèå \r\n");
                cprintf("   FUNCTION - ôóíêöèÿ\r\n");
               
cprintf("   PAR      - ïàðàìåòðû ôóíêöèè, ìîãóò áûòü öèôðû
èëè òåêñò \r\n");
               
cprintf("             
êîëè÷åñòâî èõ íå îãðàíè÷åíî\r\n\n");
               
cprintf("   Ïðîáåëû ìåæäó
ñèìâîëàìè íåäîïóñòèìû\r\n\n\n");
                }
        getch();
       
puttext(1,8,80,22,string);
       
window(1,1,80,25);
        }
//----------------------------------------------------------------------------
// Ñêàíèðóåò äî ïîÿâëåíèÿ While
//----------------------------------------------------------------------------
int scan()
        {
        int
k,j,w;      //ñ÷åò÷èêè
       
mistake_number[1]=1;
        for(j=0;;j++)
                {
               
if(TEXT[x][j] == NULL) break;
               
if(TEXT[x][j] == 'W')
                       
{
                       
y=j;                    //åñëè
íàøëè W èëè w
                       
if(my_while() == 1) break; //òî âûçûâàåì
                       
}                       
//my_while
                if(TEXT[x][j] == 'w')
                       
{
                       
y=j;
                       
if(my_while() == 1) break;
                       
}
               
if(TEXT[x][j] != ' ')
                       
{
                       
strange[s++]=TEXT[x][j];
                       
mistake_number[10]=1;
                       
}
                
if(TEXT[x][j] == ' ')
                       
{
                       
strange[s++]=',';
                       
strange[s++]=' ';
                        }
                }
       
strange[s]=NULL;
        return(1);
        }
//----------------------------------------------------------------------------
// Îáðàáàòûâàåò While è âûçûâàåò îáðàáîòêó ôóíêöèé
//----------------------------------------------------------------------------
int my_while()
        {
        char str[10];
        int
k,j,w;                            
//ñ÷åò÷èêè
       
for(w=0;w<5;w++)
                {
               
if(TEXT[x][y] == NULL) break;
               
str[w]=toupper(TEXT[x][y++]); //Toupper - ïåðåâîäèò
               
}                           
//âñå áóêâû â çàãëàâíûå
        str[w]=NULL;
       
if(strcmp(str,"WHILE") == 0)     //Åñëè While íàéäåí òî ïðîèçâîäèì
               
{                        //
äàëüíåéøèé ðàçáîð
               
fprintf(fl_t,"Íàéäåí While ïðîâåðêà íà÷àëàñü ñ ñèìâîëà -
%c\n",TEXT[x][y]);
               
if(TEXT[x][y] != '(') mistake_number[2]=1;
                       
else y++;
                AB();
               
if(TEXT[x][y] != ')') mistake_number[3]=1;
                y++;
               
mistake_number[1]=0;
               
FUNC();
               
return(1);
                }
        else
return(0);
        }
//----------------------------------------------------------------------------
// Îáðàáîòêà âûðàæåíèÿ
//----------------------------------------------------------------------------
int AB()
        {
        char
signal[4]="><!=";
        int z;
       
fprintf(fl_t,"Ïðîâåðêà íà AB\n");
        TERM();
        if(TEXT[x][y]
== '<')
                {
                y++;
               
if(TEXT[x][y] == '=') y++;
               
for(z=0;z<4;z++)
                       
if(TEXT[x][y] == signal[z])  
//Åñëè ñëèøêîì
                                {                     //ñëîæíàÿ çíàêîâàÿ
                                mistake_number[14]=1; //êîíñòðóêöèÿ
                                y++;                  //òî îøèáêà
                                z=0;
                                }
                AB();
                return(1);
                }
        if(TEXT[x][y]
== '>')
                {
                y++;
               
if(TEXT[x][y] == '=') y++;
               
for(z=0;z<4;z++)
                       
if(TEXT[x][y] == signal[z])
                                {
                                mistake_number[14]=1;
                                y++;
                                z=0;
                                }
                AB();
               
return(1);
                }
        if(TEXT[x][y]
== '=')
                {
                y++;
               
if(TEXT[x][y] == '=')
                       
{
                       
y++;
                       
}
               
for(z=0;z<4;z++)
                       
if(TEXT[x][y] == signal[z])
                                {
                                mistake_number[14]=1;
                                y++;
                                z=0;
                                }
                AB();
               
return(1);
                }
        if(TEXT[x][y] == '!')
                {
                y++;
               
for(z=0;z<3;z++)
                       
if(TEXT[x][y] == signal[z])
                                {
                                mistake_number[14]=1;
                                y++;
                                z=0;
                                }
               
if(TEXT[x][y+1] == '=')
                       
{
                       
y++;
                       
}
                AB();
                return(1);
                }
        if(TEXT[x][y]
== NULL) return(1);
        return(1);
        }
//----------------------------------------------------------------------------
// Îáðàáîòêà òåðìà
//----------------------------------------------------------------------------
int TERM()
        {
       
fprintf(fl_t,"Ïðîâåðêà íà TERM\n");
        O();
        if(TEXT[x][y]
== '/')
                {
                y++;
               
TERM();
                }
        else
if(TEXT[x][y] == '*')
                {
                y++;
               
if(TEXT[x][y] == '*') y++;
               
TERM();
                }
        else
if(TEXT[x][y] =='+')
                {
                y++;
               
if(TEXT[x][y] == '+' && TEXT[x][y+1] == ')' )
                       
{                  //âîçìîæíà
îáðàáîòêà âûðàæåíèÿ
                       
y++;               //òèïà y++
                       
return(0);         //èëè y+++e
                       
}
               
if(TEXT[x][y] == '+'&& TEXT[x][y+1] == '+') y+=2;
               
TERM();
                }
        else
if(TEXT[x][y] =='-')
                {
                y++;
               
if(TEXT[x][y] == '-' && TEXT[x][y+1] == ')' )
                       
{                  //äëÿ y--
                       
y++;
                       
return(0);
                       
}
               
if(TEXT[x][y] == '-'&& TEXT[x][y+1] == '-') y+=2;
               
TERM();
                }
        else
if(TEXT[x][y] ==NULL ) return(1);
        else
if(TEXT[x][y] != '+' && TEXT[x][y]!='*' && TEXT[x][y]!=')'
&& TEXT[x][y] != '/' && TEXT[x][y]!='-' && TEXT[x][y]
!= '<' && TEXT[x][y]!='>' && TEXT[x][y]!='!' &&
TEXT[x][y]!=' '&& TEXT[x][y]!='=')
                {
               
mistake_number[7]=1;
                AB();
                }
        return(1);
        }
//----------------------------------------------------------------------------
// Îáðàáîòêà îïåðàíäà
//----------------------------------------------------------------------------
int O()
        {
        fprintf(fl_t,"Ïðîâåðêà
íà O\n");
        if(TEXT[x][y]
== '(')
                {
                y++;
               
if(TEXT[x][y] == ')')
                       
{
                       
mistake_number[4]=1;
                       
y++;
                       
}
                else
                       
{
                       
AB();
                       
if(TEXT[x][y] == '(')
                                {
                                AB();
                                }
                        if(TEXT[x][y] != ')')
                                {
                                mistake_number[3]=1;
                                y++;
                                }
                       
else y++;
                       
}
                }
        else
                {
               
if(IDENT() == 0)
                       
if(ZBZ() == 0)
                                if(f==0) mistake_number[11]=1;
               
return(0);
                }
        return(0);
        }
//----------------------------------------------------------------------------
// Îáðàáîòêà èäåíòèôèêàòîðà
//----------------------------------------------------------------------------
int IDENT()
        {
       
fprintf(fl_t,"Ïðîâåðêà íà IDENT, òåêóùèé ñèìâîë -
%c\n",TEXT[x][y]);
       
if((isalpha(TEXT[x][y])) != NULL)
                isdigit(TEXT[x][y]))

        else
return(0);
        }
//----------------------------------------------------------------------------
// Öåëîå áåç çíàêà
//----------------------------------------------------------------------------
int ZBZ()
        {
       
fprintf(fl_t,"Ïðîâåðêà íà ÖÁÇ,  
òåêóùèé ñèìâîë - %c\n",TEXT[x][y]);
       
if((isdigit(TEXT[x][y])) != NULL)
                {
                y++;
               
while(1)
                       
{
                       
if((isalpha(TEXT[x][y])) != NULL)
                                /*åñëè f=1 òî â ïàðàìåòðå */     return(1);

                       
if((isdigit(TEXT[x][y]))  ==
NULL) break;
                       
y++;
                       
}
               
return(1);
                }
        else
return(0);
        }
//----------------------------------------------------------------------------
// Îáðàáîòêà ôóíêöèè
//----------------------------------------------------------------------------
int FUNC()
        {
        f=1;
       
fprintf(fl_t,"Ïðîâåðêà íà FUNC, 
òåêóùèé ñèìâîë - %c\n",TEXT[x][y]);
        for(;;y++)
               
if(TEXT[x][y] != ' ') break;
       
if(IDENT()==0)
                mistake_number[6]=1;

       
if(mistake_number[6] ==0)
        if(TEXT[x][y]
=='(')
                {
                y++;
               
if(TEXT[x][y] == ')')
                       
{
                       
mistake_number[4]=1;
                       
y++;
                       
}
                else
while(6)
                       
{
                       
if(PAR() != 0)
                                {
                                if(TEXT[x][y] == ')')
                                        {
                                        y++;
                                        break;
                                        }
                                if(TEXT[x][y] == ';')  break;
                                if(TEXT[x][y] == ',')  y++;
                                }
                       
else
                                {
                                mistake_number[13]=1;
                                break;
                                }
                        }
                }
        else
                {
               
mistake_number[2]=1;
               
mistake_number[13]=1;
                }
       
if(mistake_number[13]==1)
                {
               
for(;;y++)
                       
{
                       
if(TEXT[x][y] == NULL)
                                {
                                mistake_number[5]=1;
                                mistake_number[3]=1;
                                break;
                                }
                       
if(TEXT[x][y] == ';')
                                {
                                mistake_number[3]=1;
                                break;
                                }
                       
if(TEXT[x][y] == ')')
                                {
                                y++;
                                break;
                                }
                       
}
                }
        if(TEXT[x][y]
!= ';') mistake_number[5]=1;
        return(1);
        }
//----------------------------------------------------------------------------
// Îáðàáîòêà ïàðàìåòðîâ ôóíêöèè
//----------------------------------------------------------------------------
int PAR()
        {
       
fprintf(fl_t,"Ïðîâåðêà íà PAR,  
òåêóùèé ñèìâîë - %c\n",TEXT[x][y]);
        if(IDENT() ==
0)
               
if(ZBZ() == 0)
                       
{
                       
mistake_number[13]=1;
                       
return(0);
                       
}
        return(1);
        }
Ñïèñîê ëèòåðàòóðû:
1. Ä. Ãðèñ Êîíñòðóèðîâàíèå êîìïèëÿòîðîâ äëÿ öèôðîâûõ âû÷èñëèòåëüíûõ ìàøèí.
Ì., Ìèð, 1975.
2. Ëåáåäåâ Â.Í. Ââåäåíèå â ñèñòåìû ïðîãðàììèðîâàíèÿ. Ì., «Ñòàòèñòèêà»,
1975.
3. Øîðíèêîâ Þ.Â., Øåãàë Á.Ð. Ìåòîäè÷åñêîå ïîñîáèå äëÿ âûïîëíåíèÿ êóðñîâîé
ðàáîòû ïî ñèñòåìíîìó ïðîãðàììèðîâàíèþ. Íîâîñèáèðñê, 1992.
ðåôåðàòû
© ÐÅÔÅÐÀÒÛ, 2012

ðåôåðàòû