philosoff's.community.forum

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » philosoff's.community.forum » Учеба и ВМК. » Задание по праку


Задание по праку

Сообщений 1 страница 30 из 47

1

Скажите спасибо НАсте за скан и OCR

0

2

:no:  :no:  :no:
не скачивается... Уже давно известно, что эитот форум бесполезно использовать как файлообменник. Можешь выложить куда-нить в нормальное место, а сюда ссылку кинуть?

0

3

Серег, открывшуюся херь просто сохрани с расширением .doc, все там нормально

0

4

ок, спасибо. Левый способ, конечно, ну да ладно.

Меня просили сразу отредактировать то, что НАДО сделать из этого задания. Всё, что вспомнил, я отредактировал.

отредактированное задание

0

5

О, спасибо, ребята.

0

6

:no:  :no:  :no:
не скачивается... Уже давно известно, что эитот форум бесполезно использовать как файлообменник. Можешь выложить куда-нить в нормальное место, а сюда ссылку кинуть?

Форум бесполезно использовать как файлообменник, (как бы это парадоксально не звучало), потому что это форум, а не файлообменник.

В качестве файлообменника можно использовать мой фтп, например.

0

7

Форум бесполезно использовать как файлообменник, (как бы это парадоксально не звучало), потому что это форум, а не файлообменник.

:lol:  +1!

0

8

Я хочу публично сказать: Ворд - дерьмо, проприетарные форматы - дерьмо.
Ребята, вот скажите, в чем можно НАПЕЧАТАТЬ это задание по практикуму? А ни в чем его нельзя напечатать. OpenOffice не отображает вторую таблицу, а ворд отображает то все нормально, но печатает только отдельные куски. Проглатывая и сбиваясь. Ну и нахрен такие форматы?

0

9

Да, для таких тормозящих товарищей, как мы, сообщаю, что мы все-таки учимся на ВМиК и все-таки электронный документооборот существует:
http://cmcmsu.no-ip.info/download/model.la...ctical.task.pdf
Это та самая бумажка, которую нам раздавали, и не надо было ничего распознавать. Да и формат нормальный.

ЗЫ Настя говорит, что кривость с doc связанна с ландшафтной ориентаций 1го и 5го листов. Вот только отображаются они как портретные.

0

10

Вопрос по синтаксическому анализатору, вернее, по грамматике для нетерминала <выражение>:

Должен ли слева от присваивания (=) стоять обязательно идентификатор, или там может также стоять выражение (а за подобными ошибками будет уже семантический следить)?

АПД: вообще буду благодарен, если кто выложит сюда уже готовую грамматику для выражения  :unsure: обещаю не списывать, а подумать сам, просто я в грамматиках (как оказалось) не силен, боюсь наошибаться, а потом переделывать прогу влом будет  :rolleyes:

Отредактировано z-off (2007-04-22 12:08:48)

0

11

Знатоки грамматик! Проверьте пожалуйста такой вариант:

Код:
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)

0

12

не знаю, можно ли меня считать знатоком, но я ошибок не увидел.

Но у меня тоже вопрос. в языке есть такая строчка: <оператор> -> ...| <выражение>.

Но всякое ли выражение может быть опрератором? В прошлом посте есть строчка, что выражение может быть и без знака = . И это верно. Так может надо бы проконтролировать, что <оператор> -> <идентификатор> = <выражение>?

Мне кажется, что это логично, хоть формально и изменение задания. Я пока буду делать так. Кто что думает, пусть скажет.

0

13

Серег, насколько я понял, наш язык это сильно упрощенное подобие Cи. В Си же следующий код правилен:

Код:
int main() {
	int n = 0;
	n+2;
	(n-1)*3;
	return 0;
}

(можешь проверить - VS 2005 выдает только ворнинги о том, что операторы не имеют никакого эффекта, но ошибкой это не считается)

Поэтому лучше видимо все же делать, как написано

0

14

Блин, не знаю, как разбирать выражение! (E -> I { = E1 } | E1)

Ну сначала понятно:

Код:
if (! id()) E1();

А что если первый идентификатор? Допустим так:

Код:
getlex();
while (eq("=")) { getlex(); E1(); }
// ???

Ведь после идентификатора в принципе может много чего стоять, любые арифметические и логические операции...

Вот если бы слева от '=' тоже стояло E1...

Отредактировано z-off (2007-04-25 18:38:08)

0

15

кое что заметил! Серёг, как ты в своей грамматике напишешь выражение a+b+c? Ведь это выражение) Надо во всех местах писать не просто там... E1 or E1, а E1 {or E1}. Вот так мне кажется...

0

16

Я это и имел в виду, просто ошибся, когда раскрывал фигурные скобки {} через варианты | ... Ибо такая запись в большинстве случаев удобней для непосредственного проганья...

Щас исправлять буду :)

Короче исправил сначала неправильно, в итоге пришлось сделать с {}
Все равно остался вопрос относительно разбора самой первой строчки, а еще появился вопрос вот про это:

Код:
E3 -> T { [<|>|<=|>=|==|!=] T }

Может быть в одном выражении подряд много логических операций? Кажется, что да, но до конца пока не уверен  :unsure:

Отредактировано z-off (2007-04-25 18:36:14)

0

17

Сейчас хотел зайти на cmcmsu.no-ip.info, а он не грузится ни в какую. Карпов говорил, что выкладывал там наработки по своему модельному языку; было бы очень интересно посмотреть...

Если не сложно, выложите, пожалуйста, если у кого-то сохранилось.

0

18

Кстати, унарный минус, по идее, имеет самый высокий приоритет?

Отредактировано DiMan (2007-04-30 22:42:28)

0

19

Код:
E3 -> T { [<|>|<=|>=|==|!=] T }

По-моему, несколько операций сравнения подряд невозможны. Я бы упростил:

Код:
E3 -> T [<|>|<=|>=|==|!=] T 

0

20

Вот если бы слева от '=' тоже стояло E1...

Так оно там вроде и должно стоять; во всяком случае, в Руденко именно с E1. А зачем тебе там нужен I?

0

21

а ты попробуй в С написать Е1 = Е1. Полюбак ошибку скажет. Да и чему ты будешь присваивать? а+1 = 5. Как это понимать? Так что ошибка полюбак. Мне кажется, что I = E | E1 - вот правильный вариант

0

22

+1.
Действительно, что-то я торможу.

0

23

Мне кажется, что I = E | E1 - вот правильный вариант

Одно могу сказать - прога с таким вариантом написана, работает пока правильно

Собственно, вот

Кто найдет баги, просьба сообщить как можно быстрее (самому-то тестить влом :) )

Апд: ссылка обновлена, но изменения в проге незначительные и непринципиальные, касаются только улучшения диагностики

Отредактировано z-off (2007-05-06 01:20:00)

0

24

да, я только что доделал-таки свою прогу. Вот она: анализатор

на самом деле я опупел, какая глупая была ошибка! До чего же доводят опечатки!!!

...
else if(eq("false") || (true))  - забыл две буковки... сломалось ВСЁ. А искал я эту ошибку... долго.
{...}
else if... :D

АПД: Кто скачивает, проверяйте, плз. А то, на самом деле, сложно тестить прогу...

Отредактировано S-Strange (2007-05-02 23:17:00)

0

25

У меня возник такой вопрос. По идее, можно написать вот так:
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)

0

26

Ну во-первых, я делал вариант без унарного минуса (а может его обязательно было делать??? скажите тогда мне прямо щас!!!!), а с операцией %, поэтому выражение a+(-5) в моей грамматике и не должно быть верным.

АПД: хотя да, в этом примере минус - не унарная операция, а часть константы, щас загляну в свою прогу....

В-вторых,.... ну мы же пишем часто в Си типа

Код:
if ((n = k) != 5)

,
поэтому мне кажется, присваивание в скобках должно допускаться, т.е. все-таки F -> ...| (E)

еще подумаю внимательно на эту тему

Отредактировано z-off (2007-05-05 15:31:50)

0

27

А '-5' здесь - не операция. У нас по спецификации:
<целочисл. константа> -> [<знак>] <цифра> '{<цифра>}'.

По поводу (Е) ты, пожалуй, прав...

0

28

прога еще раз перезалита, ссылка выше изменена, но пока не компилится под FreeBSD, хотя в VS2005 ни одной ошибки...

0

29

ну... не знаю, не знаю...

Вы уверены, что в "а+(-5) " -5 - это одна константа? Мне почему-то кажется, что запись константы дана для поля объявлений. А то иначе у нас получается неверно. Мы же пишем F+F, где F -> STR | NUM | LOG | not F | (E) , ну или что-то такое. Значит, можно писать "-12+-2" ??? Это ведь не так!!! а писать что, если нет знака, то пишем без скобок, а если есть - то со скобками - наругение грамматики! Так что я за то, что а+(-5) - это вариант для унарного минуса, а не для %

0

30

Блин, совсем съели мой бедный моск.

Все я принял решение запретить константы со знаком в выражениях.
Решение окончательное и обжалованию не подлежит.  :D
Программистам, пишущим на МОЕМ М-языке, придется поонанировать с выражениями типа (0-2)  :P

0


Вы здесь » philosoff's.community.forum » Учеба и ВМК. » Задание по праку