2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 формы Бекуса и КС-грамматики
Сообщение22.10.2014, 20:54 
Добрый вечер, форумчане, у меня задание "Сделать описание при помощи норм. форм Бекуса и КС-грамматики всех циклов на Си"

Пару часов в гугле и вот что получилось для "for":
< оператор for >::= for (<переменная>; <булевое выражение>; <арифметическая операция над переменной> ) {}
<булевое выражение> ::= < булевое выражение> <булевое выражение >| <выражение> <логический оператор> <выражение>
<логический оператор> ::= <|> |==| >=| <=
< выражение > ::= <переменная> | <строка> | <символ>
<арифметическая операция над переменной> ::= <переменная> ++|<переменная> --|<переменная> < арифметическая операция> <переменная>|<переменная> < арифметическая операция> < константа>|
<арифметическая операция>::= +|-|*|/

Прошу у форумчан указать на ошибки и подсказать как сделать описание при помощи КС-грамматики? Пример бы очень помог

 
 
 
 Re: формы Бекуса и КС-грамматики
Сообщение22.10.2014, 21:09 
Аватара пользователя
Для цикла for три части в скобках могут быть произвольными выражениями, а не обязательно только теми, которые Вы написали. Кроме того, каждое из трех выражений может быть опущено. Например, могут быть циклы типа for(out = dst, in = src; *out++ = *in++; ); Про тело цикла У Вас вообще ничего не написано.

-- Ср окт 22, 2014 22:12:01 --

Вообще задание, конечно, трудоемкое. Возьмите стандарт C и выдерите оттуда релевантные куски грамматики.

 
 
 
 Re: формы Бекуса и КС-грамматики
Сообщение22.10.2014, 21:43 
Первую часть замечания я поняла. Что указывать как тело? Оно ведь может быть абсолютно любым.
Тут ещё такой вопрос возник: если брать не циклы Си, а любого другого языка, можно ли так облегчить себе задачу? Хотелось бы сделать сегодня и ночью поспать=)

Вопрос о КС-грамматике остается открытым

 
 
 
 Re: формы Бекуса и КС-грамматики
Сообщение22.10.2014, 22:04 
Аватара пользователя
AlinkoMalinko в сообщении #922092 писал(а):
Что указывать как тело? Оно ведь может быть абсолютно любым.
Грубо говоря, что телом цикла может быть всё, что может быть телом функции. Что именно? Предложения, циклы, ветвление, декларации и т.п.
AlinkoMalinko в сообщении #922092 писал(а):
Тут ещё такой вопрос возник: если брать не циклы Си, а любого другого языка, можно ли так облегчить себе задачу? Хотелось бы сделать сегодня и ночью поспать=)
В Паскале циклы по-проще:
while <condition> do <statement>
for <variable> := <number> to <number> do <statement>
for <variable> := <number> downto <number> do <statement>
repeat <statements> until <condition>

где <condition> означает булево выражение, <variable> - идентификатор переменной, <statement> - действие, <statements> - список действий, разделённых точкой с запятой.

 
 
 
 Re: формы Бекуса и КС-грамматики
Сообщение22.10.2014, 22:34 
спасибо большое, вы очень помогли. Не могли бы вы ещё написать что-то при помощи КС-грамматики (для примера от которого я буду отталкиваться)? Если я правильно понимаю, до этого мы обсуждали формы Бекуса.

 
 
 
 Posted automatically
Сообщение22.10.2014, 22:57 
Аватара пользователя
 i  Тема перемещена из форума «Помогите решить / разобраться (М)» в форум «Computer Science»

 
 
 [ Сообщений: 6 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group