argon bulletin board

Факултети => Факултет по математика и информатика => Темата е започната от: pochti_zavarshil в 17.01.2007, 21:09:15

Титла: Методи на транслация
Публикувано от: pochti_zavarshil в 17.01.2007, 21:09:15
Здравейте! Някой има ли идея какво е това и от кой свят е?! За проекта говоря. Ще сме много благодарни(говоря от името на поне 10 човека) на тези които са го минали да покажат някой проект, да кажат 1-2 думи :-D
Титла: Re: Методи на транслация
Публикувано от: Райчо Мукелов в 17.01.2007, 21:29:54
Нищо страшно не е. Прави се транслатор за C или Pascal, който да транслира до асемблер (или направо машинен език за по-ентусиазираните). На изпита поне при нас имаше един въпрос от теорията преподавана през триместъра. Само за работещ парсер за езика (без тая част която генерира код и т.н.) пишеха оценка 5, а парсера се прави за една вечер, айде за ден да речем. За съжаление съм си затрил сорсовете някъде за тях не мога да помогна, ама то е лесно и без това - А. Пенев на упражненията обяснява достатъчно добре.

Успех!
Титла: Re: Методи на транслация
Публикувано от: pochti_zavarshil в 17.01.2007, 21:37:26
Нищо страшно не е. Прави се транслатор за C или Pascal, който да транслира до асемблер (или направо машинен език за по-ентусиазираните). На изпита поне при нас имаше един въпрос от теорията преподавана през триместъра. Само за работещ парсер за езика (без тая част която генерира код и т.н.) пишеха оценка 5, а парсера се прави за една вечер, айде за ден да речем. За съжаление съм си затрил сорсовете някъде за тях не мога да помогна, ама то е лесно и без това - А. Пенев на упражненията обяснява достатъчно добре.

Успех!


Благодаря за инфото! Всичко ще влезе в сила. Само дето не ми е ясно този транслатор на какъв език се прави. Значи взимаме от Паскал или С!? Оки... Ама пак ми се искаше нещо нагледно...  Мерси все пак!
Титла: Re: Методи на транслация
Публикувано от: JOKe в 18.01.2007, 11:29:28
4ove4e idi na nqkoe uprajnenie
sasho penev tam vi dava 2 primerni ezika s po 5 versii vseki Simple C i Simple Pascal sa narecheni
saotvetno v versiq 5 ima neshta kato if-ove i etc a v versiq 1 e samo definicii na promenlivi sabirane umnojenie i etc.
Idqta na programata e da imash 3 neshta
Analizator na leksemite
Analizator na semantikata
Generator na koda.
Nai lesniq nachin deto go napravihme s nqkoi kolegi beshe pyrvo puskash Leksemite .. toi poznava koq leksema koq e i gi nabutva v edin masiv : primer: imash : a=5; b=c+d; tva bi nabutalo v masiv :
promenliva,ravenstvo,promenliva,tochkaizapetaika,promenliva,ravenostvo,promenliva,sabirane,rpomenliva.
tova e prosto primer
posle Semantichnqi Analizira dali vaprosnite strukturi sa verni kato tam se i generirashe koda
imash opisanie na Semantikata ot Sasho s razlichnite Expressioni realno dori ti e dal koi kakvo sadarja it trqbva samo da razpishesh tolkova funkcii kolko Expressioni ima (ima qko rekursi i debuginga e lud )

Inache samiq Translator moje da go napishesh na kvoto si iskash ( moq beshe na Java )
koda koito generirash ne e zadaljitelno da e ASEMBLER moje i MSIL ili Java Baitkod.

primer moq translator beshe :
SimpleC ezika samiq translator beshe pisan na Java a generirashe MSIL ( s pomoshta na Stilgar priznavam).

Taka che imash 3 varianta za kakvo da se poluchi
imash 2 varianta za tova ot kakvo da napravish neshtoto
i N varianta pri N klonqshto kam bezkrainost na kakvo da go realizirash
Титла: Re: Методи на транслация
Публикувано от: А.Пенев в 18.01.2007, 14:00:18
...Някой има ли идея какво е това и от кой свят е?!...
Welcome to the real world! 8-)

Иначе, както казват тези които са минали този предмет - не е чак толкова трудно.
Най-много помага посещаването на упражнения и задаването на въпроси.
Титла: Re: Методи на транслация
Публикувано от: Jack Johnson в 18.01.2007, 14:56:13
Дисциплината методите на транслация е изключително базова за разбиране принципите на транслация/компилация. Моя трянслатор беше от Simple C към TASM, а проекта го написах за два дни на Visual Basic 6.

На изпита (преди 3 години) трябваше да развием два въпроса и да вкараме в граматиката на транслатора "вечен цикъл". Определено това е една от най-интересните дисциплини изобщо, а Сашо Пенев си разбира от работата и добре обяснява.

На два пъти в реалния живот ми се наложи да използвам знанията си от дисциплината. И в двата случая ставаше въпрос за написването на парсер за извличане и проверка на синтактичната валидност на мейл адреси от мегабайтови стрингове.
Титла: Re: Методи на транслация
Публикувано от: JOKe в 18.01.2007, 15:09:05
A. Penev : napravo da mu beshe kazal Wake Up Neo :+) haha
kolkoto do Posta na Ivan Davidov : dam i spored men ne iziskva koi zane kakvi znaniq nito poznaniq po API nito nishto daje spored men tova e predmeta koito trqbva da e v 3ti kurs a grafikata da e v 4ti ..
tam ako moje da se napravi neshto mislq che shte e po dobre ;>
a inache kakvo me nauchi proekta :
DA PISHA BAVNO
DA GLEDAM KVO PISHA
KATO PISHA BAVNO DA GLEDAM DA PISHA PO BAVNO

veche pochvam da zabravqm tezi si znaniq no vse pak proekta go zapochnah samo Semantichniq analizator go pochnah 5 pati nanovo ama absoliutno na novo pri koeto pred posledniq pyt v 1i30 vecherta se bqh razpsoval ujas :)
Титла: Off Topic
Публикувано от: Иван Йорданов в 18.01.2007, 15:30:29
Off Topic:

На два пъти в реалния живот ми се наложи да използвам знанията си от дисциплината. И в двата случая ставаше въпрос за написването на парсер за извличане и проверка на синтактичната валидност на мейл адреси от мегабайтови стрингове.

това не се ли прави с регулярни изрази ?

function extract_emails_from($string){
  preg_match_all("/[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]+/i", $string, $matches);
  return $matches[0];
}

$text = "blah blah blah email@address.com blah blah blah email2@address.com";
$emails = extract_emails_from($text);

Това е РНР код. Но регулярни изрази се поддържат от всички езици. Или поне от тези на които аз съм писал до сега.
Титла: Re: Методи на транслация
Публикувано от: Sayos в 18.01.2007, 15:40:53
Точно с регулярни изрази се прави!  :rock:
Титла: Re: Методи на транслация
Публикувано от: Jack Johnson в 18.01.2007, 16:18:17
Точно с регулярни изрази се прави!  :rock:

Така е! Само че по онова време не се обичахме много с регулярните изрази и както става в такива случаи простото нещо го направих по сложния начин!
Титла: Re: Методи на транслация
Публикувано от: JOKe в 18.01.2007, 16:19:28
Точно с регулярни изрази се прави!  :rock:

Така е! Само че по онова време не се обичахме много с регулярните изрази и както става в такива случаи простото нещо го направих по сложния начин!
mazohisti :+P
Титла: Re: Off Topic
Публикувано от: А.Пенев в 18.01.2007, 16:34:48
това не се ли прави с регулярни изрази ?

function extract_emails_from($string){
  preg_match_all("/[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]+/i", $string, $matches);
  return $matches[0];
}
Ами регулярните изрази разпознават автоматни граматики. Ако граматиката не е автоматна става малко сложно :-)
Този регулярен израз прилича на вярен (за е-мейл) но не е RFC определено. т.е. ще разпознава почти всички адреси. (за тези които се интересуват - виж: http://forum.uni-plovdiv.bg/index.php?topic=913.msg6362#msg6362)
Титла: Re: Методи на транслация
Публикувано от: JOKe в 18.01.2007, 16:58:33
za mail lichno az polzvam tozi regExp
^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$
Титла: Re: Методи на транслация
Публикувано от: Иван Йорданов в 18.01.2007, 18:58:50
Като стана въпрос за регулярните изрази все пак да питам

това \w което ползва JOKe не беше ли от регулярните изрази на Пърл и не означаваше ли 'Any "word" character' тъй като не мога да си обясня каква роля играе в случая.

Иначе регулярния израз е по-добър от този който съм дал като пример но пак има някой неща за изглаждане. Например ако ползва точка в името не мога да слагам нито долно тире нито някаква цифра преди точката.
пример:
ivan1.iordanov@example.com няма да мине в случая а на практика е възможен такъв мейл адрес. Разбирам че това е сложено с цел да се избегне адрес който да започва с цифра или нещо такова но по този начин се блокират много възможни комбинации.

[a-zA-Z][a-zA-Z\.]*[a-zA-Z] това е сложено за разширения от тип co.za, co.jp и т.н. до колкото разбирам но вместо това [a-zA-Z\.] не е ли достатъчна само точката [\.]


П.П. Не се опитвам да се заяждам, просто има неща в регулярните изрази който не разбирам напълно и искам да си ги доизясня, пък и мисля че е полезно да го има във форума
Титла: Re: Методи на транслация
Публикувано от: JOKe в 18.01.2007, 20:56:38
ami \w e word :) nenzam na perl li e taka na Java e taka.
\. e samo tochka ... t.e. escapevam specialnoto prednaznachenie na tochkata i ostava samo i edinstveno tochka
A-Za-z e za malki i glavni bukvi i sled tqh \. e ili TOCHKA
t.e. bukvi i tochka : )
ivan.ivanov@alabala.com.bom
moje da napishesh v napisaniq ot men po gore reg exp.
Титла: Re: Методи на транслация
Публикувано от: А.Пенев в 18.01.2007, 22:53:44
Не ща да ви плаша, обаче вижте регулярния израз дето разпознава е-мейл адрес отговарящ на RFC 822:
http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html
 :-o

Спокойно, ние на упражненията няма да се занимаваме с разпознаване на е-мейл адреси :wink:
Ще правим по-прости неща - компилатори...  :-)
Титла: Re: Методи на транслация
Публикувано от: JOKe в 18.01.2007, 23:58:44
Muahahahah
toq regExp kyrti mifki :)
Титла: Re: Методи на транслация
Публикувано от: Георги Соколов в 20.01.2007, 09:21:05
Хах, направо ме запалихте да намеря известно количество време да ходя на упражненията и евентуално лекциите по методи на транслация(особено след регулярния израз) - все повече полза намирам от този форум :). Айде ще се видим там следващия път.