Является ли грамматика С++ контекстнозависимой ? Если да, то можно простенький пример ?
Мне кажется, что да, и пример — x(); неясно вызов это функции x или создание объекта типа x. Но я не уверен...
Здравствуйте, Sergey J. A., Вы писали:
SJA>Является ли грамматика С++ контекстнозависимой ? Если да, то можно простенький пример ? SJA>Мне кажется, что да, и пример — x(); неясно вызов это функции x или создание объекта типа x. Но я не уверен...
правильно не уверены%) потому что это может быть экземпляр класса с перегруженным оператором ()
Здравствуйте, Sergey J. A., Вы писали:
SJA>Является ли грамматика С++ контекстнозависимой ? Если да, то можно простенький пример ? SJA>Мне кажется, что да, и пример — x(); неясно вызов это функции x или создание объекта типа x. Но я не уверен...
Я думаю, что нет... вот сходу еще придумалось.
void f1()
{
int a,b,c;
a < b > c;
}
template <class> struct a {};
void f2()
{
typedef int b;
a< b > c;
}
struct X { X() {} };
int main()
{
X x(); <- декларация фунции или переменная x ?
}
Правильно работающая программа — просто частный случай Undefined Behavior
Здравствуйте, dimitry_dimitry, Вы писали:
_>Здравствуйте, Sergey J. A., Вы писали:
SJA>>Является ли грамматика С++ контекстнозависимой ? Если да, то можно простенький пример ? SJA>>Мне кажется, что да, и пример — x(); неясно вызов это функции x или создание объекта типа x. Но я не уверен... _>правильно не уверены%) потому что это может быть экземпляр класса с перегруженным оператором ()
Так что правильно-то ? Я не уверен, что грамматика С++ контекстнозависима. Она контекстно независима ?
Или мой пример не верен ?
Здравствуйте, _Winnie, Вы писали:
_W>Здравствуйте, Sergey J. A., Вы писали:
SJA>>Является ли грамматика С++ контекстнозависимой ? Если да, то можно простенький пример ? SJA>>Мне кажется, что да, и пример — x(); неясно вызов это функции x или создание объекта типа x. Но я не уверен...
_W>Я думаю, что нет... вот сходу еще придумалось.
"Нет" — то есть граматика С++ контекстно не зависима ?
_W>int main()
_W>{
_W> X x(); <- декларация фунции или переменная x ?
_W>}
Может я неправильно понимаю термин контекстнозависимый, но мне казалось, что данный пример как раз и говорит о контекстной зависимости:
в зависимости от контекста строка может быть декларацией фунции или переменной.
Здравствуйте, Sergey J. A., Вы писали:
SJA>Здравствуйте, _Winnie, Вы писали:
_W>>Здравствуйте, Sergey J. A., Вы писали:
SJA>>>Является ли грамматика С++ контекстнозависимой ? Если да, то можно простенький пример ? SJA>>>Мне кажется, что да, и пример — x(); неясно вызов это функции x или создание объекта типа x. Но я не уверен...
_W>>Я думаю, что нет... вот сходу еще придумалось. SJA>"Нет" — то есть граматика С++ контекстно не зависима ?
SJA>
_W>>int main()
_W>>{
_W>> X x(); <- декларация фунции или переменная x ?
_W>>}
SJA>
SJA>Может я неправильно понимаю термин контекстнозависимый, но мне казалось, что данный пример как раз и говорит о контекстной зависимости: SJA>в зависимости от контекста строка может быть декларацией фунции или переменной.
Здравствуйте, Sergey J. A., Вы писали:
SJA>Здравствуйте, dimitry_dimitry, Вы писали:
_>>Здравствуйте, Sergey J. A., Вы писали:
SJA>>>Является ли грамматика С++ контекстнозависимой ? Если да, то можно простенький пример ? SJA>>>Мне кажется, что да, и пример — x(); неясно вызов это функции x или создание объекта типа x. Но я не уверен... _>>правильно не уверены%) потому что это может быть экземпляр класса с перегруженным оператором ()
SJA>Так что правильно-то ? Я не уверен, что грамматика С++ контекстнозависима. Она контекстно независима ?
нет. поэтому этот замечательный язык иногда является объектом нападок%) SJA>Или мой пример не верен ?
Здравствуйте, Sergey J. A., Вы писали:
SJA>Так что правильно-то ? Я не уверен, что грамматика С++ контекстнозависима. Она контекстно независима ? SJA>Или мой пример не верен ?
Определение понятия "контекстная зависимость" в студию.
Здравствуйте, dimitry_dimitry, Вы писали:
SJA>>>>Является ли грамматика С++ контекстнозависимой ? Если да, то можно простенький пример ? SJA>>>>Мне кажется, что да, и пример — x(); неясно вызов это функции x или создание объекта типа x. Но я не уверен... _>>>правильно не уверены%) потому что это может быть экземпляр класса с перегруженным оператором ()
SJA>>Так что правильно-то ? Я не уверен, что грамматика С++ контекстнозависима. Она контекстно независима ? _>нет. поэтому этот замечательный язык иногда является объектом нападок%)
То есть в таком случае я был "правильно уверен" ?
Здравствуйте, dimitry_dimitry, Вы писали:
SJA>>>>Является ли грамматика С++ контекстнозависимой ? Если да, то можно простенький пример ? SJA>>>>Мне кажется, что да, и пример — x(); неясно вызов это функции x или создание объекта типа x. Но я не уверен... _>>>правильно не уверены%) потому что это может быть экземпляр класса с перегруженным оператором ()
SJA>>Так что правильно-то ? Я не уверен, что грамматика С++ контекстнозависима. Она контекстно независима ? _>нет. поэтому этот замечательный язык иногда является объектом нападок%) SJA>>Или мой пример не верен ?
Тогда как это стыкуется с примером:
x();
Что тут x ? Тип или переменная (с переопределённым оператором () ) ? Вроде есть зависимость от контекста... ?
Здравствуйте, Sir Wiz, Вы писали:
SJA>>Так что правильно-то ? Я не уверен, что грамматика С++ контекстнозависима. Она контекстно независима ? SJA>>Или мой пример не верен ? SW>Определение понятия "контекстная зависимость" в студию.
SW>А то я его в стандарте C++ не нашел
Сам бы хотел услышать формальное определение контекстнозависимой грамматики.
Предполагаю, что это такая граматика в которой для разбора нужны некоторые дополнительные данные, собранные раньше в процессе разбора....
Яснее выразить не могу...
Здравствуйте, Sergey J. A., Вы писали:
SJA>Здравствуйте, dimitry_dimitry, Вы писали:
SJA>>>>>Является ли грамматика С++ контекстнозависимой ? Если да, то можно простенький пример ? SJA>>>>>Мне кажется, что да, и пример — x(); неясно вызов это функции x или создание объекта типа x. Но я не уверен... _>>>>правильно не уверены%) потому что это может быть экземпляр класса с перегруженным оператором ()
SJA>>>Так что правильно-то ? Я не уверен, что грамматика С++ контекстнозависима. Она контекстно независима ? _>>нет. поэтому этот замечательный язык иногда является объектом нападок%) SJA>То есть в таком случае я был "правильно уверен" ?
рискуя повториться в третий раз, скажу ДА.
Здравствуйте, davenger, Вы писали:
D>Здравствуйте, Sergey J. A., Вы писали:
SJA>>Здравствуйте, _Winnie, Вы писали:
_W>>>Здравствуйте, Sergey J. A., Вы писали:
SJA>>>>Является ли грамматика С++ контекстнозависимой ? Если да, то можно простенький пример ? SJA>>>>Мне кажется, что да, и пример — x(); неясно вызов это функции x или создание объекта типа x. Но я не уверен...
_W>>>Я думаю, что нет... вот сходу еще придумалось. SJA>>"Нет" — то есть граматика С++ контекстно не зависима ?
SJA>>
_W>>>int main()
_W>>>{
_W>>> X x(); <- декларация фунции или переменная x ?
_W>>>}
SJA>>
SJA>>Может я неправильно понимаю термин контекстнозависимый, но мне казалось, что данный пример как раз и говорит о контекстной зависимости: SJA>>в зависимости от контекста строка может быть декларацией фунции или переменной.
D>Нет, это всегда декларация функции.
Эта строка является объявлением функции только тогда, когда она появляется в Global Scope, иначе это — вызов конструктора по умолчанию для объекта класса.
... << Rsdn@Home 1.1.4 beta 1 >>
HgLab: Mercurial Server and Repository Management for Windows
SJA>>Является ли грамматика С++ контекстнозависимой ? Если да, то можно простенький пример ? SJA>>Мне кажется, что да, и пример — x(); неясно вызов это функции x или создание объекта типа x. SJA>>Но я не уверен...
W> Я думаю, что нет... вот сходу еще придумалось.
W>
W> void f1()
W> {
W> int a,b,c;
W> a < b > c;
W> }
W> template <class> struct a {};
W> void f2()
W> {
W> typedef int b;
W> a< b > c;
W> }
W>
Этот пример как раз иллюстрирует зависимость от контекста.
Здравствуйте, Sergey J. A., Вы писали:
SJA>Сам бы хотел услышать формальное определение контекстнозависимой грамматики. SJA>Предполагаю, что это такая граматика в которой для разбора нужны некоторые дополнительные данные, собранные раньше в процессе разбора.... SJA>Яснее выразить не могу...
Тогда да, конечно да. Я просто уверен, что да.
Простейшее: корректность выражения x = 1; зависит от того, был ли ранее и как продекларирован x.
Можно открыть стандарт и ввести поиск слова context. Найдется много замечаний насчет context-dependent и context-independent выражениях.
Здравствуйте, dimitry_dimitry, Вы писали:
SJA>>>>>>Является ли грамматика С++ контекстнозависимой ? Если да, то можно простенький пример ? SJA>>>>>>Мне кажется, что да, и пример — x(); неясно вызов это функции x или создание объекта типа x. Но я не уверен... _>>>>>правильно не уверены%) потому что это может быть экземпляр класса с перегруженным оператором ()
SJA>>>>Так что правильно-то ? Я не уверен, что грамматика С++ контекстнозависима. Она контекстно независима ? _>>>нет. поэтому этот замечательный язык иногда является объектом нападок%) SJA>>То есть в таком случае я был "правильно уверен" ? _>рискуя повториться в третий раз, скажу ДА.
Здравствуйте, Sergey J. A., Вы писали:
SJA>Здравствуйте, dimitry_dimitry, Вы писали:
SJA>>>>>>>Является ли грамматика С++ контекстнозависимой ? Если да, то можно простенький пример ? SJA>>>>>>>Мне кажется, что да, и пример — x(); неясно вызов это функции x или создание объекта типа x. Но я не уверен... _>>>>>>правильно не уверены%) потому что это может быть экземпляр класса с перегруженным оператором ()
SJA>>>>>Так что правильно-то ? Я не уверен, что грамматика С++ контекстнозависима. Она контекстно независима ? _>>>>нет. поэтому этот замечательный язык иногда является объектом нападок%) SJA>>>То есть в таком случае я был "правильно уверен" ? _>>рискуя повториться в третий раз, скажу ДА.
SJA>Первых два раза было больше похоже на "нет"
вы уж простите. я от Re[2]: char, потоки
Здравствуйте, Sir Wiz, Вы писали:
SJA>>Сам бы хотел услышать формальное определение контекстнозависимой грамматики. SJA>>Предполагаю, что это такая граматика в которой для разбора нужны некоторые дополнительные данные, собранные раньше в процессе разбора.... SJA>>Яснее выразить не могу... SW>Тогда да, конечно да. Я просто уверен, что да.
SW>Простейшее: корректность выражения x = 1; зависит от того, был ли ранее и как продекларирован x.
Вроде не совсем так. При разборе данного выражения нет неоднозначности — x должно быть переменной. А определена она или нет — это уже мне кажется ошибка другого рода... То есть если будет граматика типа :
expr: var operator const | var operator var | const operator const;
variable : IDENTIFIER;
const : NUMBER;
NUMBER : [0..9];
IDENTIFIER : [a..z_][a..z0-9_]*;
То можно однозначно построить дерево разбора.
А вот для x(); и граматики:
tmp_obj : type "(' ')';
par_operator : variable "(' ')';
type : IDENTIFIER; (1)
variable : IDENTIFIER; (2)
IDENTIFIER : [a..z_][a..z0-9_]*;
Нельзя точно сказать что такое x — type или variable. Поэтому при "подъёме" из IDENTIFIER в type или variable нужны контекстные данные для выбора. Вот.
Всё это только предположения... зря я не прочитал Ахо до конца...
SW>Можно открыть стандарт и ввести поиск слова context. Найдется много замечаний насчет context-dependent и context-independent выражениях.
отойти не могу.
Всё просто. Когда я вижу априоритивное, бездоказательное и нетерпящее возражений утверждение относительно весьма неоднозначных вещей, я становлюсь очень зол, у меня встаёт дыбом шерсть, из носа бьет пар, отрастают и немедленно начинают взбивать землю копыта, а шёлкаюшему хвосту позавидует кнут Барлога. Зверь дикий вобщем, наверное у меня детство тяжёлое было.