Форум программистов, компьютерный форум CyberForum.ru

Функция грамматики (объяснить) - C++

Восстановить пароль Регистрация
 
yuliyayuliya28
3 / 3 / 0
Регистрация: 06.03.2011
Сообщений: 319
03.12.2012, 03:56     Функция грамматики (объяснить) #1
здравствуйте помогите разобрать функцию,


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
char    *Grammar[]={
    "Z:E",
    "E:E+T",
    "E:E-T",
    "E:T",
    "T:T*F",
    "T:T/F",
    "T:F",
    "F:i",
    "F:c",
    "F:(E)",
    NULL
    };
 
 
int TestOnGrammar()
{
        char *ss,*q;
        int n,j;
        for (n=0; Grammar[n] !=NULL; n++){//
                for(q=ss=Grammar[n]+2; *ss !='\0'; ss++);
                ss--;
                for(j=sp; (ss>=q) && (Stack[j]==*ss); j--,ss--);
                if (q== ss+1){
                        j++;
                        sp=j;
                        Stack[sp]=*Grammar[n];
                        Stack[sp+1]='\0';
                        return(1);
                }
        }
Проходим по всему массиву грамматика, for (n=0; Grammar[n] !=NULL; n++)
в этой строке проходим по одному элементу массива?т.е. например "Z:E" мы пропускаем Z: и находимся на E так? for(q=ss=Grammar[n]+2; *ss !='\0'; ss++);
дальнейшее не очень понятно(

Добавлено через 48 минут
Цитата Сообщение от yuliyayuliya28 Посмотреть сообщение
здравствуйте помогите разобрать функцию,


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
char    *Grammar[]={
    "Z:E",
    "E:E+T",
    "E:E-T",
    "E:T",
    "T:T*F",
    "T:T/F",
    "T:F",
    "F:i",
    "F:c",
    "F:(E)",
    NULL
    };
 
 
int TestOnGrammar()
{
        char *ss,*q;
        int n,j;
        for (n=0; Grammar[n] !=NULL; n++){//
                for(q=ss=Grammar[n]+2; *ss !='\0'; ss++);
                ss--;
                for(j=sp; (ss>=q) && (Stack[j]==*ss); j--,ss--);
                if (q== ss+1){
                        j++;
                        sp=j;
                        Stack[sp]=*Grammar[n];
                        Stack[sp+1]='\0';
                        return(1);
                }
        }
Проходим по всему массиву грамматика, for (n=0; Grammar[n] !=NULL; n++)
в этой строке проходим по одному элементу массива?т.е. например "Z:E" мы пропускаем Z: и находимся на E так? for(q=ss=Grammar[n]+2; *ss !='\0'; ss++);
дальнейшее не очень понятно(
Grammar[n] - элемент массива
Grammar[n]+2 - правая часть элемента после :

Добавлено через 3 часа 6 минут
Цитата Сообщение от yuliyayuliya28 Посмотреть сообщение
здравствуйте помогите разобрать функцию,


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
char    *Grammar[]={
    "Z:E",
    "E:E+T",
    "E:E-T",
    "E:T",
    "T:T*F",
    "T:T/F",
    "T:F",
    "F:i",
    "F:c",
    "F:(E)",
    NULL
    };
 
 
int TestOnGrammar()
{
        char *ss,*q;
        int n,j;
        for (n=0; Grammar[n] !=NULL; n++){//
                for(q=ss=Grammar[n]+2; *ss !='\0'; ss++);
                ss--;
                for(j=sp; (ss>=q) && (Stack[j]==*ss); j--,ss--);
                if (q== ss+1){
                        j++;
                        sp=j;
                        Stack[sp]=*Grammar[n];
                        Stack[sp+1]='\0';
                        return(1);
                }
        }
Проходим по всему массиву грамматика, for (n=0; Grammar[n] !=NULL; n++)
в этой строке проходим по одному элементу массива?т.е. например "Z:E" мы пропускаем Z: и находимся на E так? for(q=ss=Grammar[n]+2; *ss !='\0'; ss++);
дальнейшее не очень понятно(

Добавлено через 48 минут


Grammar[n] - элемент массива
Grammar[n]+2 - правая часть элемента после :
Не пойму что происходит в третьем цикле помогите пожалуйста(
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2012, 03:56     Функция грамматики (объяснить)
Посмотрите здесь:

C++ По поводу грамматики
Объяснить код (рекурсивная функция). C++
Функция (объяснить) C++
C++ Составление грамматики
C++ Объяснить, что делает функция, подробно
Функция strncpy_s - объяснить аргументы функции C++
C++ Сделать вывод КС-грамматики
C++ Не могли бы объяснить, как работает эта функция для удаления цифр?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 05:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru