Өзүнүн уникалдуу өзгөчөлүктөрүнө ээ көптөгөн программалоо тилдери бар. Бирок алардын кайсы биринде жазылган программа иштеши үчүн, аны эфирге бериш керек. Кээде программалоо тилдери өз муктаждыктары үчүн иштелип чыгат (мисалы, чоң тиркемелердеги автоматизацияны колдоо), андан кийин котормочу жазуу керек болуп калат.
Зарыл
- - булак тилинин табигый грамматикасы же BNF;
- - иштеп чыгуу куралдары.
Нускамалар
1 кадам
Берилген тилдеги текстти лексикалык талдоо үчүн маалыматтарды даярдаңыз. Тилдеги бардык токендерди санап чыгыңыз. Аларды категорияларга бөлүңүз (ачкыч сөздөр, сандык жана саптык литералдар, идентификаторлор, боштук, тыныш белгилери ж.б.).
2-кадам
Модулду же лексерди ишке ашыруу. Киргизилгенде, ал маалыматтын "чийки" агымын алышы керек, ал эми чыгууда токендерди камтыган элементтердин тизмесин жана алардын баштапкы текстте кезектешкен түрлөрүнүн идентификаторлорун түзүшү керек. Талдоо программасы бир топ жөнөкөй болушу мүмкүн " бир деңгээлдеги "сканер. Ката калыбына келтирүү иш-аракетинин мааниси жок. Жараксыз белгилерди ката катары караш керек.
3-кадам
Маалыматтарды талдоо үчүн даярдаңыз. Булак тилинин табигый грамматикасынын же BNFнин негизинде, анын LL1 грамматикасын түзүңүз. Грамматиканын ушул түрүнө таянып, тилдин жарактуу белгилери жана семантикалык курулушу категориялары боюнча талдоо схемасын түзүңүз.
4-кадам
Модулду же талдоочуну ишке ашыруу. Киргизгенде, ал лексикалык талдоо стадиясында даярдалган токендердин тизмесин алышы керек. Үчүнчү кадамда түзгөн схемаңызды пайдаланып, рекурсивдүү синтаксисти текшерүү алгоритмдерин иштеп чыгыңыз. Керек болсо, каталарды калыбына келтирүү механизмдерин колдонуп, функцияларды, класстын методдорун эсептөө үчүн даракты куруу үчүн талдоо алгоритмдерине функционалдык мүмкүнчүлүктөрдү кошуңуз. Талдоо алгоритмдеринин туура структурасы менен, бул функционалдык көйгөйсүз ишке ашат. Бул өзүнчө модуль катары ишке ашыруунун зарылчылыгын алдын алат. Түзүлгөн маалымат структураларында "жалпак" ырааттуулук түрүндөгү көрсөтмөлөрдүн тизмеси камтылышы керек (стек машинасында эсептөө үчүн ыңгайлуу постфикс формасына жайылган арифметикалык туюнтмалар, эсептөө көрсөтмөлөрүнүн ырааттуулугунун айкалышына айланган циклдар жана шарттуу же шартсыз секирүүлөр ж.б.)..
5-кадам
Керек болсо оптимизация модулун түзүңүз. Ал мурунку кадамда даярдалган маалымат структураларын иштеп чыгып, трансформациялашы керек. Оптимизация алгоритмдери жана методдору өтө ар түрдүү.
6-кадам
Код генераторун иштеп чыгуу. Төртүнчү же бешинчи кадамдарда даярдалган структураларды иштетүүдө, ал жөн гана абстракттуу көрсөтмөлөрдүн ырааттуулугун белгилүү бир аянтчада аткаруунун көрсөтмөсүнө айландырышы керек.
7-кадам
Керек болсо байлоочу программаны (шилтеме) түзүңүз. Ал код сегменттеринин жайгашкан жерин тандоо, этикеткалардын даректерин эсептөө жана башкалар менен натыйжасында аткарылуучу модулду түзүшү керек.