Áîëüøàÿ êîëëåêöèÿ ðåôåðàòîâ

No Image
No Image

Ðåêëàìà

Ñ÷åò÷èêè

Îïðîñû

Îöåíèòå íàø ñàéò?

No Image

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

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

Ïîñòðîåíèå ôîðìàëüíîãî ÿçûêà 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)

               

        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)

                                mistake_number[12]=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)

               

        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.



No Image
No Image No Image No Image


No Image
Âñå ïðàâà çàùèùåíû © 2010
No Image