argon bulletin board

Експертно търсене  

Новини:

Регистрирането на нови потребители е временно деактивирано.

Автор Тема: Методи на транслация  (Прочетена 5741 пъти)

pochti_zavarshil

  • Неактивен Неактивен
  • Публикации: 2
Методи на транслация
« -: 17.01.2007, 21:09:15 »

Здравейте! Някой има ли идея какво е това и от кой свят е?! За проекта говоря. Ще сме много благодарни(говоря от името на поне 10 човека) на тези които са го минали да покажат някой проект, да кажат 1-2 думи :-D
Активен

Райчо Мукелов

  • Неактивен Неактивен
  • Публикации: 486
  • I snuggle with subwoofers
    • HULTIG - Human Language Technlogy and Bioinformatics Interest Group
Re: Методи на транслация
« Отговор #1 -: 17.01.2007, 21:29:54 »

Нищо страшно не е. Прави се транслатор за C или Pascal, който да транслира до асемблер (или направо машинен език за по-ентусиазираните). На изпита поне при нас имаше един въпрос от теорията преподавана през триместъра. Само за работещ парсер за езика (без тая част която генерира код и т.н.) пишеха оценка 5, а парсера се прави за една вечер, айде за ден да речем. За съжаление съм си затрил сорсовете някъде за тях не мога да помогна, ама то е лесно и без това - А. Пенев на упражненията обяснява достатъчно добре.

Успех!
Активен

pochti_zavarshil

  • Неактивен Неактивен
  • Публикации: 2
Re: Методи на транслация
« Отговор #2 -: 17.01.2007, 21:37:26 »

Нищо страшно не е. Прави се транслатор за C или Pascal, който да транслира до асемблер (или направо машинен език за по-ентусиазираните). На изпита поне при нас имаше един въпрос от теорията преподавана през триместъра. Само за работещ парсер за езика (без тая част която генерира код и т.н.) пишеха оценка 5, а парсера се прави за една вечер, айде за ден да речем. За съжаление съм си затрил сорсовете някъде за тях не мога да помогна, ама то е лесно и без това - А. Пенев на упражненията обяснява достатъчно добре.

Успех!


Благодаря за инфото! Всичко ще влезе в сила. Само дето не ми е ясно този транслатор на какъв език се прави. Значи взимаме от Паскал или С!? Оки... Ама пак ми се искаше нещо нагледно...  Мерси все пак!
Активен

JOKe

  • Неактивен Неактивен
  • Публикации: 2656
  • Code or Die
Re: Методи на транслация
« Отговор #3 -: 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
Активен

А.Пенев

  • Неактивен Неактивен
  • Публикации: 157
    • www.alexander-penev.info
Re: Методи на транслация
« Отговор #4 -: 18.01.2007, 14:00:18 »

...Някой има ли идея какво е това и от кой свят е?!...
Welcome to the real world! 8-)

Иначе, както казват тези които са минали този предмет - не е чак толкова трудно.
Най-много помага посещаването на упражнения и задаването на въпроси.
« Последна редакция: 18.01.2007, 14:04:11 от A.Penev »
Активен
А.Пенев

Jack Johnson

  • Неактивен Неактивен
  • Публикации: 704
  • Хора, пазете си здравето! То няма цена!
Re: Методи на транслация
« Отговор #5 -: 18.01.2007, 14:56:13 »

Дисциплината методите на транслация е изключително базова за разбиране принципите на транслация/компилация. Моя трянслатор беше от Simple C към TASM, а проекта го написах за два дни на Visual Basic 6.

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

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

JOKe

  • Неактивен Неактивен
  • Публикации: 2656
  • Code or Die
Re: Методи на транслация
« Отговор #6 -: 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 :)
Активен

Иван Йорданов

  • Неактивен Неактивен
  • Публикации: 175
Off Topic
« Отговор #7 -: 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);

Това е РНР код. Но регулярни изрази се поддържат от всички езици. Или поне от тези на които аз съм писал до сега.
Активен
Иван Йорданов
Поздрави от
         The Bash Master Club

Sayos

  • Неактивен Неактивен
  • Публикации: 1366
  • The Dark side
Re: Методи на транслация
« Отговор #8 -: 18.01.2007, 15:40:53 »

Точно с регулярни изрази се прави!  :rock:
Активен

Jack Johnson

  • Неактивен Неактивен
  • Публикации: 704
  • Хора, пазете си здравето! То няма цена!
Re: Методи на транслация
« Отговор #9 -: 18.01.2007, 16:18:17 »

Точно с регулярни изрази се прави!  :rock:

Така е! Само че по онова време не се обичахме много с регулярните изрази и както става в такива случаи простото нещо го направих по сложния начин!
Активен

JOKe

  • Неактивен Неактивен
  • Публикации: 2656
  • Code or Die
Re: Методи на транслация
« Отговор #10 -: 18.01.2007, 16:19:28 »

Точно с регулярни изрази се прави!  :rock:

Така е! Само че по онова време не се обичахме много с регулярните изрази и както става в такива случаи простото нещо го направих по сложния начин!
mazohisti :+P
Активен

А.Пенев

  • Неактивен Неактивен
  • Публикации: 157
    • www.alexander-penev.info
Re: Off Topic
« Отговор #11 -: 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)
Активен
А.Пенев

JOKe

  • Неактивен Неактивен
  • Публикации: 2656
  • Code or Die
Re: Методи на транслация
« Отговор #12 -: 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]$
Активен

Иван Йорданов

  • Неактивен Неактивен
  • Публикации: 175
Re: Методи на транслация
« Отговор #13 -: 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\.] не е ли достатъчна само точката [\.]


П.П. Не се опитвам да се заяждам, просто има неща в регулярните изрази който не разбирам напълно и искам да си ги доизясня, пък и мисля че е полезно да го има във форума
Активен
Иван Йорданов
Поздрави от
         The Bash Master Club

JOKe

  • Неактивен Неактивен
  • Публикации: 2656
  • Code or Die
Re: Методи на транслация
« Отговор #14 -: 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.
Активен

А.Пенев

  • Неактивен Неактивен
  • Публикации: 157
    • www.alexander-penev.info
Re: Методи на транслация
« Отговор #15 -: 18.01.2007, 22:53:44 »

Не ща да ви плаша, обаче вижте регулярния израз дето разпознава е-мейл адрес отговарящ на RFC 822:
http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html
 :-o

Спокойно, ние на упражненията няма да се занимаваме с разпознаване на е-мейл адреси :wink:
Ще правим по-прости неща - компилатори...  :-)
Активен
А.Пенев

JOKe

  • Неактивен Неактивен
  • Публикации: 2656
  • Code or Die
Re: Методи на транслация
« Отговор #16 -: 18.01.2007, 23:58:44 »

Muahahahah
toq regExp kyrti mifki :)
Активен

Георги Соколов

  • Модератор
  • *****
  • Неактивен Неактивен
  • Публикации: 51
    • website
Re: Методи на транслация
« Отговор #17 -: 20.01.2007, 09:21:05 »

Хах, направо ме запалихте да намеря известно количество време да ходя на упражненията и евентуално лекциите по методи на транслация(особено след регулярния израз) - все повече полза намирам от този форум :). Айде ще се видим там следващия път.
Активен
Компютрите не правят това което искаш да правят. Правят това което им кажеш да правят!