TParser
7 отговора
221 прегледа
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
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
Re: TParser
Ох... ами сега!?
Не се обиждай, но въпросът ти звучи малко като "Абе налага ми се да напиша една програма за работа с база данни; видях че има едни компоненти TDatabase, TTable ама как да ги използвам?".
Иначе съветът ми е да си напишеш собствен parser. Асемблерите имат доста специфичен синтаксис, за да разчиташ на базисни парсери, ориентирани към Pascal. Отделно от това не е лошо да се запознаеш поне отгоре-отгоре с теоретичната част - лексичен анализ, синтактичен анализ, генерация на код - нали всъщност това искаш да направиш!? А научиш ли си урока, въпросът ти става безмислен.
Макар че, честно казано, нещо ми убягва смисъла на занятието - има безброй компилатори (и то безплатни) за всякакви модели процесори - COP8, 8051, PIC - откъде-накъде ще се налага да губиш време за написването на собствен?
Направо не проумявам...

Не се обиждай, но въпросът ти звучи малко като "Абе налага ми се да напиша една програма за работа с база данни; видях че има едни компоненти TDatabase, TTable ама как да ги използвам?".
Иначе съветът ми е да си напишеш собствен parser. Асемблерите имат доста специфичен синтаксис, за да разчиташ на базисни парсери, ориентирани към Pascal. Отделно от това не е лошо да се запознаеш поне отгоре-отгоре с теоретичната част - лексичен анализ, синтактичен анализ, генерация на код - нали всъщност това искаш да направиш!? А научиш ли си урока, въпросът ти става безмислен.
Макар че, честно казано, нещо ми убягва смисъла на занятието - има безброй компилатори (и то безплатни) за всякакви модели процесори - COP8, 8051, PIC - откъде-накъде ще се налага да губиш време за написването на собствен?
Направо не проумявам...
Re: TParser
Едва ли - чак пък компилатор за курсова работа! Доста дебела задачка...
Добре де, TParser е лексичен анализатор, но с доста голям уклон към Pascal. Borland си го използват за вътрешни нужди (напр. при четене на компоненти от тектово представени форми) и затова не го документират - има голяма вероятност да се променя от версия на версия (макар че засега не е така).
За асемблера би трябвало да е по-лесно. Там един ред е една завършена команда и то с доста фиксирана граматика, нещо от сорта:
Само че множеството от допустимите символи за идентификатори например са доста различни от Pascal-а и затова препоръката ми беше да си напишеш собствени парсери/анализатори.
Добре де, TParser е лексичен анализатор, но с доста голям уклон към Pascal. Borland си го използват за вътрешни нужди (напр. при четене на компоненти от тектово представени форми) и затова не го документират - има голяма вероятност да се променя от версия на версия (макар че засега не е така).
За асемблера би трябвало да е по-лесно. Там един ред е една завършена команда и то с доста фиксирана граматика, нещо от сорта:
[label:] command [operands] [comment]
Само че множеството от допустимите символи за идентификатори например са доста различни от Pascal-а и затова препоръката ми беше да си напишеш собствени парсери/анализатори.
Re: TParser
Защо не пробваш парсера на SynEdit (synedit.sourceforge.net).
При нас успешно го ползваме за една проста SQL конзола: текстов редактор, който просто изпълнява SQL заявки и ги dump-ва в друг текстов редактор.
Това което трябва да направиш, е да дефинираш ключовите думи за твоя процесор (ако вече ги няма в стандартният пакет на SynEdit-а) и да си взимаш token-ите един по един. Така дори можеш да си направиш проложението шарено, т.е. с IDE, текстов редактор със syntax-highlight, print и прочие.
Честно казано, аз бих си направил собствен парсер, защото действително асемблерите имат доста прост синтакс. А и така и така трябва да поддържаш таблици за разните label-и, константи и прочие и е хубаво всичко да си е при тебе, т.е. ти да си го писал.
---
Не е важно да си добър, важното е да си ман-и-як!
При нас успешно го ползваме за една проста SQL конзола: текстов редактор, който просто изпълнява SQL заявки и ги dump-ва в друг текстов редактор.
Това което трябва да направиш, е да дефинираш ключовите думи за твоя процесор (ако вече ги няма в стандартният пакет на SynEdit-а) и да си взимаш token-ите един по един. Така дори можеш да си направиш проложението шарено, т.е. с IDE, текстов редактор със syntax-highlight, print и прочие.
Честно казано, аз бих си направил собствен парсер, защото действително асемблерите имат доста прост синтакс. А и така и така трябва да поддържаш таблици за разните label-и, константи и прочие и е хубаво всичко да си е при тебе, т.е. ти да си го писал.
---
Не е важно да си добър, важното е да си ман-и-як!
Re: TParser
Можеш да погледнеш тук за учебна, step-by-step реализация на компилатор за асемблер, която обаче е на C++. При всички случаи е добре да прочетеш малко от теорията на формалните езици. Друго известно помагало е "Let's Build a Compiler" на Jack Crenshaw, което можеш да си намериш в net-а.
Re: TParser
пусни търсачка на "BNF + parser"
ще намериш сума ти сайтове как да си направиш BNF parser, а веднъж когато си направиш такъв парсер, много лесно можеш да създадеш парсер на какъвто и да е език, стига само да го опишеш чрез BNF language


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