Re[5]: Граматика С++
От: Nick_ Россия  
Дата: 23.08.04 07:14
Оценка:
LVV>А он и не порождается! В том то и дело, что грамматика используется только для распознавания синтаксически правильных конструкций. А контекстные зависимости, о которых тут все время говорили (единственность объявления, "сначала объяви — потом используй), обрабатываются НЕФОРМАЛЬНЫМИ способами (таблица имен).

У вас какая-то каша в голове.
В приведенном мною выше примере на языке Си, как раз и есть синтаксическая контекстная зависимость!
вы не можете написать:

while(free(ptr));


Если перед этим был typedef int free;

Возникнет СИНТАКСИЧЕСКАЯ ошибка.

А то что вы говорите про "сначала объяви — потом используй" — это уже семантическая ошибка, которая обнаруживается не во время синтаксического анализа, а уже после того как дерево разбора будет построено.
Re[6]: Граматика С++
От: Шахтер Интернет  
Дата: 23.08.04 17:49
Оценка: 12 (1)
Здравствуйте, Nick_, Вы писали:

LVV>>А он и не порождается! В том то и дело, что грамматика используется только для распознавания синтаксически правильных конструкций. А контекстные зависимости, о которых тут все время говорили (единственность объявления, "сначала объяви — потом используй), обрабатываются НЕФОРМАЛЬНЫМИ способами (таблица имен).


N_>У вас какая-то каша в голове.

N_>В приведенном мною выше примере на языке Си, как раз и есть синтаксическая контекстная зависимость!
N_>вы не можете написать:

N_>
N_>while(free(ptr));
N_>


N_>Если перед этим был typedef int free;


N_>Возникнет СИНТАКСИЧЕСКАЯ ошибка.


N_>А то что вы говорите про "сначала объяви — потом используй" — это уже семантическая ошибка, которая обнаруживается не во время синтаксического анализа, а уже после того как дерево разбора будет построено.


Подобные сорта деления на синтаксические (лучше было бы сказать -- грамматические, поскольку они возникают из-за несоответствия грамматике) и семантические ошибки имеют смысл только в контексте какого-то определённого способа компиляции языка. К самому языку это прямого отношения не имеет.
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[7]: Граматика С++
От: mefrill Россия  
Дата: 23.08.04 17:59
Оценка:
Здравствуйте, Шахтер, Вы писали:

Ш>Здравствуйте, Nick_, Вы писали:


LVV>>>А он и не порождается! В том то и дело, что грамматика используется только для распознавания синтаксически правильных конструкций. А контекстные зависимости, о которых тут все время говорили (единственность объявления, "сначала объяви — потом используй), обрабатываются НЕФОРМАЛЬНЫМИ способами (таблица имен).


N_>>У вас какая-то каша в голове.

N_>>В приведенном мною выше примере на языке Си, как раз и есть синтаксическая контекстная зависимость!
N_>>вы не можете написать:

N_>>
N_>>while(free(ptr));
N_>>


N_>>Если перед этим был typedef int free;


N_>>Возникнет СИНТАКСИЧЕСКАЯ ошибка.


N_>>А то что вы говорите про "сначала объяви — потом используй" — это уже семантическая ошибка, которая обнаруживается не во время синтаксического анализа, а уже после того как дерево разбора будет построено.


Ш>Подобные сорта деления на синтаксические (лучше было бы сказать -- грамматические, поскольку они возникают из-за несоответствия грамматике) и семантические ошибки имеют смысл только в контексте какого-то определённого способа компиляции языка. К самому языку это прямого отношения не имеет.


Совершенно верно указано. Это характеристика метода компиляции, а не языка.
Re[8]: Граматика С++
От: Nick_ Россия  
Дата: 24.08.04 09:01
Оценка:
Ш>>Подобные сорта деления на синтаксические (лучше было бы сказать -- грамматические, поскольку они возникают из-за несоответствия грамматике) и семантические ошибки имеют смысл только в контексте какого-то определённого способа компиляции языка. К самому языку это прямого отношения не имеет.

M>Совершенно верно указано. Это характеристика метода компиляции, а не языка.


Ошибаетесь.
Приведу другой пример: синтаксически неверная программа с точки зрения языка


int main()
{
    int x;
    free(ptr);
    int y;
    return 0;
}


Тем не менее это может быть верно, если в начале есть typedef int free;
Re[9]: Граматика С++
От: mefrill Россия  
Дата: 24.08.04 09:47
Оценка:
Здравствуйте, Nick_, Вы писали:


Ш>>>Подобные сорта деления на синтаксические (лучше было бы сказать -- грамматические, поскольку они возникают из-за несоответствия грамматике) и семантические ошибки имеют смысл только в контексте какого-то определённого способа компиляции языка. К самому языку это прямого отношения не имеет.


M>>Совершенно верно указано. Это характеристика метода компиляции, а не языка.


N_>Ошибаетесь.

N_>Приведу другой пример: синтаксически неверная программа с точки зрения языка


N_>
N_>int main()
N_>{
N_>    int x;
N_>    free(ptr);
N_>    int y;
N_>    return 0;
N_>}
N_>


N_>Тем не менее это может быть верно, если в начале есть typedef int free;


Ну, если впереди, в тексте программы, есть typedef int free;, то программа будет синтаксически верной. В чем проблема?
Re[10]: Граматика С++
От: Nick_ Россия  
Дата: 24.08.04 10:48
Оценка:
M>Ну, если впереди, в тексте программы, есть typedef int free;, то программа будет синтаксически верной. В чем проблема?

Это я к тому, что метод компиляции тут не при чем.
Кусок программы является либо синтаксически верным, либо нет, в зависимости от контекста. А это и есть контекстная зависимость.
Re[11]: Граматика С++
От: mefrill Россия  
Дата: 24.08.04 10:54
Оценка:
Здравствуйте, Nick_, Вы писали:

M>>Ну, если впереди, в тексте программы, есть typedef int free;, то программа будет синтаксически верной. В чем проблема?


N_>Это я к тому, что метод компиляции тут не при чем.

N_>Кусок программы является либо синтаксически верным, либо нет, в зависимости от контекста. А это и есть контекстная зависимость.

Ну что еще за "кусок программы"? И что за "контекст" такой? Определение контекстной зависимости языка было дано выше, поищи.
Re[12]: Граматика С++
От: Nick_ Россия  
Дата: 24.08.04 11:07
Оценка:
Здравствуйте, mefrill, Вы писали:

M>Здравствуйте, Nick_, Вы писали:


M>>>Ну, если впереди, в тексте программы, есть typedef int free;, то программа будет синтаксически верной. В чем проблема?


N_>>Это я к тому, что метод компиляции тут не при чем.

N_>>Кусок программы является либо синтаксически верным, либо нет, в зависимости от контекста. А это и есть контекстная зависимость.

M>Ну что еще за "кусок программы"? И что за "контекст" такой? Определение контекстной зависимости языка было дано выше, поищи.


Кусок:

int main()
{
    int x;
    free(ptr);
    int y;
    return 0;
}


Контекст — это то что выше и то что ниже.

Определение контекстной зависимости дано выше, подумай головой.
Re[13]: Граматика С++
От: mefrill Россия  
Дата: 24.08.04 11:14
Оценка:
Здравствуйте, Nick_, Вы писали:

N_>Здравствуйте, mefrill, Вы писали:


M>>Здравствуйте, Nick_, Вы писали:


M>>>>Ну, если впереди, в тексте программы, есть typedef int free;, то программа будет синтаксически верной. В чем проблема?


N_>>>Это я к тому, что метод компиляции тут не при чем.

N_>>>Кусок программы является либо синтаксически верным, либо нет, в зависимости от контекста. А это и есть контекстная зависимость.

M>>Ну что еще за "кусок программы"? И что за "контекст" такой? Определение контекстной зависимости языка было дано выше, поищи.


N_>Кусок:


N_>
N_>int main()
N_>{
N_>    int x;
N_>    free(ptr);
N_>    int y;
N_>    return 0;
N_>}
N_>


N_>Контекст — это то что выше и то что ниже.


N_>Определение контекстной зависимости дано выше, подумай головой.


вот этот самый кусок не является синтаксически верным. Что такое free? С таким же успехом я пишу:



a + b = c


Является этот кусок синтаксически верным? Высказывание типа Контекст — это то что выше и то что ниже это цитата? Где такое определение можно прочитать, не мог бы подсказать?
Re[14]: Граматика С++
От: Nick_ Россия  
Дата: 24.08.04 11:52
Оценка:
Я не понимаю, что ты хочешь мне доказать?
То что я не прав? Или то что грамматика Си — контекстно свободна?
Re[14]: Граматика С++
От: Александр Россия  
Дата: 24.08.04 11:55
Оценка:
Здравствуйте, mefrill, Вы писали:

M>С таким же успехом я пишу:



M>

M>a + b = c

M>


M>Является этот кусок синтаксически верным?

Как это не странно, но твой пример синтаксически верен
... << RSDN@Home 1.1.4 @@subversion >>
Re[15]: Граматика С++
От: mefrill Россия  
Дата: 24.08.04 12:01
Оценка:
Здравствуйте, Nick_, Вы писали:

N_>Я не понимаю, что ты хочешь мне доказать?

N_>То что я не прав? Или то что грамматика Си — контекстно свободна?

Да ничего не хочу... Только показал, что пример немного некорректен и понятие контекста неверно определено.
Re[15]: Граматика С++
От: mefrill Россия  
Дата: 24.08.04 12:06
Оценка:
Здравствуйте, Александр, Вы писали:

А>Здравствуйте, mefrill, Вы писали:


M>>С таким же успехом я пишу:



M>>

M>>a + b = c

M>>


M>>Является этот кусок синтаксически верным?

А>Как это не странно, но твой пример синтаксически верен

Ну да, тогда и вот этот кусок верен:


+


Что еще раз показывает непродуктивнось разговоров о "кусках" программы.
Re[16]: Граматика С++
От: Nick_ Россия  
Дата: 24.08.04 12:12
Оценка:
Здравствуйте, mefrill, Вы писали:

M>Здравствуйте, Nick_, Вы писали:


N_>>Я не понимаю, что ты хочешь мне доказать?

N_>>То что я не прав? Или то что грамматика Си — контекстно свободна?

M>Да ничего не хочу... Только показал, что пример немного некорректен и понятие контекста неверно определено.


Зачем разводить бессмысленную дискуссию?
Если ты понял о чем я, но заметил неточность — привел бы более точный пример.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.