TParser

7 отговора 221 прегледа
#1

TParser

zdr. sbluskah se s edno problem4e na koeto nemoga da otkriq re6enie.
Nalaga mi se da suzdam kompilator na assembler za PIC protzesori, no nemoga da se opravq s parsing-a na koda.Otkrih tozi klass TParser i mislq 4e s negova pomo6t 6te se opravq, no nemojah da namerq kakvato i da e dokumentatziq za nego.Samiqt vapros e kade da namerq dokumentatziq i primeri ili drug na4in da pars-iram koda.
10x predvaritelno

Отговор
в отговор на FxOOOO #2

Re: TParser

Ох... ами сега!?

Не се обиждай, но въпросът ти звучи малко като "Абе налага ми се да напиша една програма за работа с база данни; видях че има едни компоненти TDatabase, TTable ама как да ги използвам?".

Иначе съветът ми е да си напишеш собствен parser. Асемблерите имат доста специфичен синтаксис, за да разчиташ на базисни парсери, ориентирани към Pascal. Отделно от това не е лошо да се запознаеш поне отгоре-отгоре с теоретичната част - лексичен анализ, синтактичен анализ, генерация на код - нали всъщност това искаш да направиш!? А научиш ли си урока, въпросът ти става безмислен.

Макар че, честно казано, нещо ми убягва смисъла на занятието - има безброй компилатори (и то безплатни) за всякакви модели процесори - COP8, 8051, PIC - откъде-накъде ще се налага да губиш време за написването на собствен?
Направо не проумявам...


Отговор
в отговор на Mandor #3

Re: TParser

:))) Освен ако не му е курсова работа ...

Отговор
в отговор на Лъчo #4

Re: TParser

Едва ли - чак пък компилатор за курсова работа! Доста дебела задачка...

Добре де, TParser е лексичен анализатор, но с доста голям уклон към Pascal. Borland си го използват за вътрешни нужди (напр. при четене на компоненти от тектово представени форми) и затова не го документират - има голяма вероятност да се променя от версия на версия (макар че засега не е така).

За асемблера би трябвало да е по-лесно. Там един ред е една завършена команда и то с доста фиксирана граматика, нещо от сорта:

  [label:]  command [operands] [comment]  


Само че множеството от допустимите символи за идентификатори например са доста различни от Pascal-а и затова препоръката ми беше да си напишеш собствени парсери/анализатори.

Отговор
в отговор на Mandor #5

Re: TParser

rabotata e o6te po zle.Ne e kursova rabota ami diplomna :)

Отговор
в отговор на FxOOOO #6

Re: TParser

Защо не пробваш парсера на SynEdit (synedit.sourceforge.net).
При нас успешно го ползваме за една проста SQL конзола: текстов редактор, който просто изпълнява SQL заявки и ги dump-ва в друг текстов редактор.

Това което трябва да направиш, е да дефинираш ключовите думи за твоя процесор (ако вече ги няма в стандартният пакет на SynEdit-а) и да си взимаш token-ите един по един. Така дори можеш да си направиш проложението шарено, т.е. с IDE, текстов редактор със syntax-highlight, print и прочие.

Честно казано, аз бих си направил собствен парсер, защото действително асемблерите имат доста прост синтакс. А и така и така трябва да поддържаш таблици за разните label-и, константи и прочие и е хубаво всичко да си е при тебе, т.е. ти да си го писал.

---
Не е важно да си добър, важното е да си ман-и-як!
Отговор
в отговор на FxOOOO #7

Re: TParser

Можеш да погледнеш тук за учебна, step-by-step реализация на компилатор за асемблер, която обаче е на C++. При всички случаи е добре да прочетеш малко от теорията на формалните езици. Друго известно помагало е "Let's Build a Compiler" на Jack Crenshaw, което можеш да си намериш в net-а.

Отговор
в отговор на Formal #8

Re: TParser

пусни търсачка на "BNF + parser"
ще намериш сума ти сайтове как да си направиш BNF parser, а веднъж когато си направиш такъв парсер, много лесно можеш да създадеш парсер на какъвто и да е език, стига само да го опишеш чрез BNF language

Отговор