• Авторизация


Куча вопросов и еще чуть чуть...) 25-11-2007 13:24 к комментариям - к полной версии - понравилось!


1) Поставил бубунту. 7.10. При установке она не видела партишены на диске (в это время там стоял виндовс, и дебиан етч) Вобщем я на всякий пожарный форматнул партишн с дебом и свопом, потом сново их создал (cfdisk) - запускаю инсталлер - все норм. Ставлю , все хорошо. Потом пытаюсь из граба запустить виндовс - виснет на стартинг ап...
udo fdisk -l
[sudo] password for alva:

Disk /dev/sda: 40.0 GB, 40000000000 bytes
255 heads, 63 sectors/track, 4863 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x20299086

Device Boot Start End Blocks Id System
/dev/sda1 1 1306 10485688+ 7 HPFS/NTFS
/dev/sda2 * 1306 2551 10000462+ 83 Linux
/dev/sda3 2551 2611 485289 82 Linux swap / Solaris
/dev/sda4 2611 4862 18075928+ 7 HPFS/NTFS
2) Идем дальше... Институт курсовая...
Задание: программа парсит текстовый документ в котором находиться описание _синтаксиса_. На выходе - *.сс - который после компиляции представляет собой программу для валидации любого входящего текстового файла на этот синтаксис. Вобщем ничего сложного в принципе (это курсяк). Поставило в ступор предложение препода "Ну а синтаксис придумай сам, точнее правила для создания этого синтаксиса."... Вот то что пришло в голову: Например: а={1,2,3,4,5,6,7,f,q,w,r,t,v} /*задаем алфавит - т.е при разборе дока на валидацию проверяем все символы на принадлежность этому массиву*/... Но это слишком просто... нужно добавить еще какие то правила - не слишком заморочистые, не слишком простые. А с фантазией что то туго...
вверх^ к полной версии понравилось! в evernote
Комментарии (5):
25-11-2007-22:46 удалить
2. Слишком маленький алфавит, неудобно будет. Если хочешь совсем просто то за алфавит принимаешь два символа (,) и описываешь язык сбалансированных скобок.
По-моему это регулярный язык, так что там трудностей быть не должно.
Если хочешь посложней, то берешь какой-нибудь простенький язык типа паскаля, бейсика или SQL и описываешь некоторое подмножество этого языка.
Вот примерная паскалеподобная грамматика:

program := BEGIN statelist END
statelist := state; | state; statelist
state := ifstate | whilestate | assignstate
ifstate := IF boolexpr THEN statelist ENDIF
whilestate := WHILE boolexpr DO statelist ENDDO
assignstate := ident = expr
boolexpr := expr < expr | expr == expr | expr > expr
expr := term | term + expr | term - expr
term := ident | number
ident := [a-Z] | [a-Z]ident
number := [0-9] | [0-9]number
25-11-2007-23:00 удалить
Перечитал твой пост еще раз... Тебе надо написать программу которая читает файл содержащий описание грамматики [b]произвольного[b] языка и генерирует С программу, которая будет проверять свой вход на соответствие заданному языку ?!! Т.е. тебе надо написать генератор синтаксических анализаторов ?!! Тогда предыдущий пост не читай. Посмотри на bison, antlr и т.п.
Вобщем ничего сложного в принципе

Ну-ну.
balvardo 26-11-2007-13:15 удалить
Т.е. тебе надо написать генератор синтаксических анализаторов

Хех, а как звучит то... Нет, все гараздо примитивнее... первая инфа которую будет получать предпологаемый узверь данной программы - это "ман" вида: "Для создания валидационной програмки опишите требуемый синтаксис вида:
An={}; //В скобках через запятую укажите элементы алфавита.
R={}; //Укажите символ _новой_ строки".
N={}; //Укажите формат численных хначений
и т.д
Пример
An={1,2,3,4,5,6,7,8,9,0,q,w,e,rt,y,u,i,o};
R={|};
N={0x******};
-----------------------------------------
Чтоб совсем не париться - нужно просто добавить ченить такого вида...
-----------------------------------------
Также при употребелении Nого количества пива в компании одногрупников - возникла идея описать brainfuck-подобный синтаксис...
balvardo 29-11-2007-18:20 удалить
Все проблемы решены, всем спасибо.))


Комментарии (5): вверх^

Вы сейчас не можете прокомментировать это сообщение.

Дневник Куча вопросов и еще чуть чуть...) | Linux_Comunity - Linux Li Community | Лента друзей Linux_Comunity / Полная версия Добавить в друзья Страницы: раньше»