Скажите спасибо НАсте за скан и OCR
Задание по праку
Сообщений 1 страница 30 из 47
Поделиться22007-04-13 00:59:07
не скачивается... Уже давно известно, что эитот форум бесполезно использовать как файлообменник. Можешь выложить куда-нить в нормальное место, а сюда ссылку кинуть?
Поделиться32007-04-13 01:02:20
Серег, открывшуюся херь просто сохрани с расширением .doc, все там нормально
Поделиться42007-04-13 01:15:17
ок, спасибо. Левый способ, конечно, ну да ладно.
Меня просили сразу отредактировать то, что НАДО сделать из этого задания. Всё, что вспомнил, я отредактировал.
Поделиться52007-04-13 23:23:34
О, спасибо, ребята.
Поделиться62007-04-18 22:05:50
не скачивается... Уже давно известно, что эитот форум бесполезно использовать как файлообменник. Можешь выложить куда-нить в нормальное место, а сюда ссылку кинуть?
Форум бесполезно использовать как файлообменник, (как бы это парадоксально не звучало), потому что это форум, а не файлообменник.
В качестве файлообменника можно использовать мой фтп, например.
Поделиться72007-04-18 22:26:28
Форум бесполезно использовать как файлообменник, (как бы это парадоксально не звучало), потому что это форум, а не файлообменник.
+1!
Поделиться82007-04-20 23:23:18
Я хочу публично сказать: Ворд - дерьмо, проприетарные форматы - дерьмо.
Ребята, вот скажите, в чем можно НАПЕЧАТАТЬ это задание по практикуму? А ни в чем его нельзя напечатать. OpenOffice не отображает вторую таблицу, а ворд отображает то все нормально, но печатает только отдельные куски. Проглатывая и сбиваясь. Ну и нахрен такие форматы?
Поделиться92007-04-21 00:07:16
Да, для таких тормозящих товарищей, как мы, сообщаю, что мы все-таки учимся на ВМиК и все-таки электронный документооборот существует:
http://cmcmsu.no-ip.info/download/model.la...ctical.task.pdf
Это та самая бумажка, которую нам раздавали, и не надо было ничего распознавать. Да и формат нормальный.
ЗЫ Настя говорит, что кривость с doc связанна с ландшафтной ориентаций 1го и 5го листов. Вот только отображаются они как портретные.
Поделиться102007-04-22 12:04:06
Вопрос по синтаксическому анализатору, вернее, по грамматике для нетерминала <выражение>:
Должен ли слева от присваивания (=) стоять обязательно идентификатор, или там может также стоять выражение (а за подобными ошибками будет уже семантический следить)?
АПД: вообще буду благодарен, если кто выложит сюда уже готовую грамматику для выражения обещаю не списывать, а подумать сам, просто я в грамматиках (как оказалось) не силен, боюсь наошибаться, а потом переделывать прогу влом будет
Отредактировано z-off (2007-04-22 12:08:48)
Поделиться112007-04-23 18:16:35
Знатоки грамматик! Проверьте пожалуйста такой вариант:
E -> I { = E1 } | E1 E1 -> E2 { or E2 } E2 -> E3 { and E3 } E3 -> T { [<|>|<=|>=|==|!=] T } T -> T1 { [+|-] T1 } T1 -> F { [*|/|%] F } F -> I | N | STR | L | not F | (E)
(делал вариант с операцией %)
Начинаю его прогать, так что если есть ошибки, поправьте скорее!
Отредактировано z-off (2007-04-25 18:32:46)
Поделиться122007-04-24 11:24:20
не знаю, можно ли меня считать знатоком, но я ошибок не увидел.
Но у меня тоже вопрос. в языке есть такая строчка: <оператор> -> ...| <выражение>.
Но всякое ли выражение может быть опрератором? В прошлом посте есть строчка, что выражение может быть и без знака = . И это верно. Так может надо бы проконтролировать, что <оператор> -> <идентификатор> = <выражение>?
Мне кажется, что это логично, хоть формально и изменение задания. Я пока буду делать так. Кто что думает, пусть скажет.
Поделиться132007-04-24 14:00:44
Серег, насколько я понял, наш язык это сильно упрощенное подобие Cи. В Си же следующий код правилен:
int main() { int n = 0; n+2; (n-1)*3; return 0; }
(можешь проверить - VS 2005 выдает только ворнинги о том, что операторы не имеют никакого эффекта, но ошибкой это не считается)
Поэтому лучше видимо все же делать, как написано
Поделиться142007-04-24 14:25:49
Блин, не знаю, как разбирать выражение! (E -> I { = E1 } | E1)
Ну сначала понятно:
if (! id()) E1();
А что если первый идентификатор? Допустим так:
getlex(); while (eq("=")) { getlex(); E1(); } // ???
Ведь после идентификатора в принципе может много чего стоять, любые арифметические и логические операции...
Вот если бы слева от '=' тоже стояло E1...
Отредактировано z-off (2007-04-25 18:38:08)
Поделиться152007-04-25 12:01:01
кое что заметил! Серёг, как ты в своей грамматике напишешь выражение a+b+c? Ведь это выражение) Надо во всех местах писать не просто там... E1 or E1, а E1 {or E1}. Вот так мне кажется...
Поделиться162007-04-25 12:58:40
Я это и имел в виду, просто ошибся, когда раскрывал фигурные скобки {} через варианты | ... Ибо такая запись в большинстве случаев удобней для непосредственного проганья...
Щас исправлять буду
Короче исправил сначала неправильно, в итоге пришлось сделать с {}
Все равно остался вопрос относительно разбора самой первой строчки, а еще появился вопрос вот про это:
E3 -> T { [<|>|<=|>=|==|!=] T }
Может быть в одном выражении подряд много логических операций? Кажется, что да, но до конца пока не уверен
Отредактировано z-off (2007-04-25 18:36:14)
Поделиться172007-04-30 18:37:40
Сейчас хотел зайти на cmcmsu.no-ip.info, а он не грузится ни в какую. Карпов говорил, что выкладывал там наработки по своему модельному языку; было бы очень интересно посмотреть...
Если не сложно, выложите, пожалуйста, если у кого-то сохранилось.
Поделиться182007-04-30 22:38:01
Кстати, унарный минус, по идее, имеет самый высокий приоритет?
Отредактировано DiMan (2007-04-30 22:42:28)
Поделиться192007-04-30 23:01:42
E3 -> T { [<|>|<=|>=|==|!=] T }
По-моему, несколько операций сравнения подряд невозможны. Я бы упростил:
E3 -> T [<|>|<=|>=|==|!=] T
Поделиться202007-04-30 23:13:22
Вот если бы слева от '=' тоже стояло E1...
Так оно там вроде и должно стоять; во всяком случае, в Руденко именно с E1. А зачем тебе там нужен I?
Поделиться212007-04-30 23:22:02
а ты попробуй в С написать Е1 = Е1. Полюбак ошибку скажет. Да и чему ты будешь присваивать? а+1 = 5. Как это понимать? Так что ошибка полюбак. Мне кажется, что I = E | E1 - вот правильный вариант
Поделиться222007-05-01 10:04:15
+1.
Действительно, что-то я торможу.
Поделиться232007-05-02 08:16:56
Мне кажется, что I = E | E1 - вот правильный вариант
Одно могу сказать - прога с таким вариантом написана, работает пока правильно
Кто найдет баги, просьба сообщить как можно быстрее (самому-то тестить влом )
Апд: ссылка обновлена, но изменения в проге незначительные и непринципиальные, касаются только улучшения диагностики
Отредактировано z-off (2007-05-06 01:20:00)
Поделиться242007-05-02 23:16:04
да, я только что доделал-таки свою прогу. Вот она: анализатор
на самом деле я опупел, какая глупая была ошибка! До чего же доводят опечатки!!!
...
else if(eq("false") || (true)) - забыл две буковки... сломалось ВСЁ. А искал я эту ошибку... долго.
{...}
else if...
АПД: Кто скачивает, проверяйте, плз. А то, на самом деле, сложно тестить прогу...
Отредактировано S-Strange (2007-05-02 23:17:00)
Поделиться252007-05-05 14:56:33
У меня возник такой вопрос. По идее, можно написать вот так:
a+(-5) . По-моему, по грамматике, которую выкладывал z-off, такое не выведешь. Кроме того, в строчке F-> ... вроде бы надо писать не (Е), а (E1) (где 'or', в общем). У меня пока получается так:
E -> I = E | E_OR E_OR -> E_AND '{ or E_AND }' E_AND -> E_L '{ and E_L }' E_L -> E_SS [ < | > | <= | >= | == | != ] E_SS | E_SS E_SS -> E_MD '{ [ + | - ] E_MD }' E_MD -> F '{ [ * | / | % ] F }' F -> I | NUM | ( [ + | - ] NUM ) | true | false | STR | ( E_OR )
Поправьте, пожалуйста, если где-нибудь ошибся...
:idol: :idol: :idol:
Отредактировано DiMan (2007-05-05 15:04:51)
Поделиться262007-05-05 15:28:05
Ну во-первых, я делал вариант без унарного минуса (а может его обязательно было делать??? скажите тогда мне прямо щас!!!!), а с операцией %, поэтому выражение a+(-5) в моей грамматике и не должно быть верным.
АПД: хотя да, в этом примере минус - не унарная операция, а часть константы, щас загляну в свою прогу....
В-вторых,.... ну мы же пишем часто в Си типа
if ((n = k) != 5)
,
поэтому мне кажется, присваивание в скобках должно допускаться, т.е. все-таки F -> ...| (E)
еще подумаю внимательно на эту тему
Отредактировано z-off (2007-05-05 15:31:50)
Поделиться272007-05-05 15:34:19
А '-5' здесь - не операция. У нас по спецификации:
<целочисл. константа> -> [<знак>] <цифра> '{<цифра>}'.
По поводу (Е) ты, пожалуй, прав...
Поделиться282007-05-05 22:06:35
прога еще раз перезалита, ссылка выше изменена, но пока не компилится под FreeBSD, хотя в VS2005 ни одной ошибки...
Поделиться292007-05-06 00:28:41
ну... не знаю, не знаю...
Вы уверены, что в "а+(-5) " -5 - это одна константа? Мне почему-то кажется, что запись константы дана для поля объявлений. А то иначе у нас получается неверно. Мы же пишем F+F, где F -> STR | NUM | LOG | not F | (E) , ну или что-то такое. Значит, можно писать "-12+-2" ??? Это ведь не так!!! а писать что, если нет знака, то пишем без скобок, а если есть - то со скобками - наругение грамматики! Так что я за то, что а+(-5) - это вариант для унарного минуса, а не для %
Поделиться302007-05-06 01:23:03
Блин, совсем съели мой бедный моск.
Все я принял решение запретить константы со знаком в выражениях.
Решение окончательное и обжалованию не подлежит.
Программистам, пишущим на МОЕМ М-языке, придется поонанировать с выражениями типа (0-2)