Реферат: Построение формального языка L
Построение формального языка<span Times New Roman",«serif»; mso-ansi-language:EN-US">L<span Times New Roman",«serif»;mso-ansi-language:EN-US">
WHILE(<AB> ) [<FUNCTION([,, ...])>];
WHILE - входной терминальный символ
<AB> — условное выражение
— некоторая функция, которая можетотсутствовать
— параметры функции, которые тоже могутотсутствовать
Примерправильного синтаксиса:
WHILE(A>44<b=56+67) clrscr();
A>44<b=56+67 — условное выражение
clrscr() — функция, без параметров
Подбор грамматики <span Times New Roman",«serif»;mso-ansi-language:EN-US">G[Z] поязыку<span Times New Roman",«serif»; mso-ansi-language:EN-US"> L<span Times New Roman",«serif»; mso-ansi-language:EN-US">
Любая грамматика, к примеру G[Z],содержит следующие базисныеэлементы Vt, Vn, Z, P, где:
Vt -словарь терминальных символов
Vn -словарь нетерминальных символов
Z -начальный нетерминальныйсимвол
P — множество правил вывода
G[<оператор>]:
1.<Оператор> <span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Wingdings;mso-no-proof:yes">à
while(<AB> ) [<Функция>];2. <span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-char-type:symbol;mso-symbol-font-family:Wingdings; mso-no-proof:yes">àT|<T|> T| <= T |>= T | != T
3. <span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-char-type:symbol;mso-symbol-font-family:Wingdings; mso-no-proof:yes">à O | T*O | T**O | T+O | T-O | T/O
4. <span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-char-type:symbol;mso-symbol-font-family:Wingdings; mso-no-proof:yes">à () | | <ЦБЗ>
5. <span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Wingdings;mso-no-proof:yes">àБ{Б|Ц}
6. <ЦБЗ> <span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-char-type:symbol;mso-symbol-font-family:Wingdings; mso-no-proof:yes">à
Ц{Ц}7. <Функция><span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-char-type:symbol;mso-symbol-font-family:Wingdings; mso-no-proof:yes">à
([{,}])8. <span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Wingdings;mso-no-proof:yes">à| <ЦБЗ>| <span Courier New";mso-ascii-font-family:«Times New Roman»; mso-hansi-font-family:«Times New Roman»;mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:«Courier New»"><span Courier New"">Ω
<span Times New Roman",«serif»">Классификация<span Times New Roman",«serif»; mso-ansi-language:EN-US">G[Z]<span Times New Roman",«serif»; mso-ansi-language:EN-US">
G[<оператор>]:
1.<Оператор> <span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Wingdings;mso-no-proof:yes">à
while(<AB> ) [<Функция>];2. <span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-char-type:symbol;mso-symbol-font-family:Wingdings; mso-no-proof:yes">àT|<T|> T| <= T |>= T | != T
3. <span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-char-type:symbol;mso-symbol-font-family:Wingdings; mso-no-proof:yes">à O | T*O | T**O | T+O | T-O | T/O
4. <span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-char-type:symbol;mso-symbol-font-family:Wingdings; mso-no-proof:yes">à () | | <ЦБЗ>
5. <span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Wingdings;mso-no-proof:yes">àБ{Б|Ц}
6. <ЦБЗ> <span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-char-type:symbol;mso-symbol-font-family:Wingdings; mso-no-proof:yes">à
Ц{Ц}7. <Функция><span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-char-type:symbol;mso-symbol-font-family:Wingdings; mso-no-proof:yes">à
([{,}])8. <span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Wingdings;mso-no-proof:yes">à| <ЦБЗ>| <span Courier New";mso-ascii-font-family:«Times New Roman»; mso-hansi-font-family:«Times New Roman»;mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:«Courier New»"><span Courier New"">Ω
Сделаемзаменунетерминальных символов:
<Оператор> <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:yes">à
Z<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Wingdings;mso-no-proof:yes">à A
<span Times New Roman";mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol; mso-symbol-font-family:Wingdings;mso-no-proof:yes">àB
<span Times New Roman";mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol; mso-symbol-font-family:Wingdings;mso-no-proof:yes">à C
<Функция > <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:yes">à
D<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Wingdings;mso-no-proof:yes">àE
<ЦБЗ> <span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Wingdings;mso-no-proof:yes">à
F<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Wingdings;mso-no-proof:yes">àG
Сделаемзаменутерминальных символов:
WHILE <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:yes">à
a( <span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Wingdings;mso-no-proof:yes">à
b) <span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Wingdings;mso-no-proof:yes">à
c; <span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Wingdings;mso-no-proof:yes">à
dЦ <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:yes">à
fБ <span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Wingdings;mso-no-proof:yes">à
g, <span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Wingdings;mso-no-proof:yes">à
hG[Z]:
1. Z <span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Wingdings;mso-no-proof:yes">à
abAc[D]d2. A<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:yes">à
B|A<B|A> B|A <= B |A >= B |A != B3. B <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:yes">à
C | B*C | B**C | B+C | B-C | B/C4. C <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:yes">à
bAc | E | F5. E <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:yes">à
g{g|f}6. F <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:yes">à
f{f}7. D <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:yes">à
Eb[G{hG}]c8. G <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:yes">à
E | F | <span Courier New"; mso-ascii-font-family:«Times New Roman»;mso-hansi-font-family:«Times New Roman»; mso-bidi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: «Courier New»;mso-no-proof:yes"><span Courier New"">ΩВывод: G[Z] -контекстно-свободная грамматика.
<span Times New Roman",«serif»">Выборметода анализа
Хотя однозначность в общем случае дляконтекстно-зависимых грамматик не доказана, ее использование возможно дляграмматик в которых однозначность очевидна. Наиболее хорошо разработаннымметодом анализа, для данного типа грамматик является, метод рекурсивногоспуска.
<span Times New Roman",«serif»">Диагностикаи нейтрализация ошибок<span Times New Roman",«serif»">
Разработанный алгоритм относится к общеизвестномуметоду синтаксического разбора, предложенный Айронсом.
Основная идея метода состоит в том, что по контекстубез возврата отбрасываются те символы, которые привели в тупиковую ситуацию иразбор продолжается.
Приведем пример синтаксического разбора:
While (A > ) cls();
1. Z <span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Wingdings;mso-no-proof:yes">à
abAc[D]d2. A<span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:yes">à
B|A<B|A> B|A <= B |A >= B |A != B3. B <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:yes">à
C | B*C | B**C | B+C | B-C | B/C4. C <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:yes">à
bAc | E | F5. E <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:yes">à
g{g|f}6. F <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:yes">à
f{f}7. D <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:yes">à
Eb[G{hG}]c8. G <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:yes">à
E | F | <span Courier New"; mso-ascii-font-family:«Times New Roman»;mso-hansi-font-family:«Times New Roman»; mso-bidi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: «Courier New»;mso-no-proof:yes"><span Courier New"">Ω<img src="/cache/referats/1181/image001.gif" v:shapes="_x0000_s1054"><img src="/cache/referats/1181/image002.gif" v:shapes="_x0000_s1044"><img src="/cache/referats/1181/image003.gif" v:shapes="_x0000_s1041"><img src="/cache/referats/1181/image004.gif" v:shapes="_x0000_s1028"><img src="/cache/referats/1181/image005.gif" v:shapes="_x0000_s1026"> Z
<img src="/cache/referats/1181/image006.gif" " v:shapes="_x0000_s1030"> <img src="/cache/referats/1181/image007.gif" v:shapes="_x0000_s1042">
<img src="/cache/referats/1181/image008.gif" v:shapes="_x0000_s1052"><img src="/cache/referats/1181/image009.gif" v:shapes="_x0000_s1050"><img src="/cache/referats/1181/image010.gif" v:shapes="_x0000_s1045"><img src="/cache/referats/1181/image011.gif" v:shapes="_x0000_s1043"><img src="/cache/referats/1181/image012.gif" v:shapes="_x0000_s1031">a b A c D
<img src="/cache/referats/1181/image013.gif" v:shapes="_x0000_s1055"><img src="/cache/referats/1181/image014.gif" v:shapes="_x0000_s1048"><img src="/cache/referats/1181/image015.gif" v:shapes="_x0000_s1034"><img src="/cache/referats/1181/image016.gif" v:shapes="_x0000_s1029"><img src="/cache/referats/1181/image017.gif" v:shapes="_x0000_s1027"> B A E
<img src="/cache/referats/1181/image018.gif" v:shapes="_x0000_s1046"><img src="/cache/referats/1181/image019.gif" v:shapes="_x0000_s1037"><img src="/cache/referats/1181/image020.gif" v:shapes="_x0000_s1032">
C B g{g} b G c
<img src="/cache/referats/1181/image021.gif" v:shapes="_x0000_s1057"><img src="/cache/referats/1181/image021.gif" v:shapes="_x0000_s1056"><img src="/cache/referats/1181/image022.gif" v:shapes="_x0000_s1053"><img src="/cache/referats/1181/image023.gif" v:shapes="_x0000_s1051"><img src="/cache/referats/1181/image024.gif" v:shapes="_x0000_s1049"><img src="/cache/referats/1181/image025.gif" v:shapes="_x0000_s1047"><img src="/cache/referats/1181/image019.gif" v:shapes="_x0000_s1038"><img src="/cache/referats/1181/image020.gif" v:shapes="_x0000_s1033">
E C <span Courier New";mso-ascii-font-family:«Times New Roman»; mso-hansi-font-family:«Times New Roman»;mso-bidi-font-family:«Times New Roman»; mso-char-type:symbol;mso-symbol-font-family:«Courier New»;mso-no-proof:yes"><span Courier New"">Ω
<img src="/cache/referats/1181/image019.gif" v:shapes="_x0000_s1039"><img src="/cache/referats/1181/image020.gif" v:shapes="_x0000_s1036">
g E
<img src="/cache/referats/1181/image019.gif" v:shapes="_x0000_s1040"><img src="/cache/referats/1181/image026.gif" v:shapes="_x0000_s1035">
g
<img src="/cache/referats/1181/image027.gif" v:shapes="_x0000_s1058">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 4whilei>>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 4whilei>>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;