Аудармашыны қалай жазуға болады

Мазмұны:

Аудармашыны қалай жазуға болады
Аудармашыны қалай жазуға болады

Бейне: Аудармашыны қалай жазуға болады

Бейне: Аудармашыны қалай жазуға болады
Бейне: Майнкрафт пе 1.1.5 ты калай жазады 2024, Мамыр
Anonim

Өзінің ерекше сипаттамаларына ие көптеген бағдарламалау тілдері бар. Бірақ олардың кез-келгенінде жазылған бағдарлама жұмыс істеуі үшін оны эфирге шығару керек. Кейде бағдарламалау тілдері өз қажеттіліктері үшін жасалады (мысалы, үлкен қосымшалардағы автоматтандыруды қолдау), содан кейін аудармашы жазу қажет болады.

Аудармашыны қалай жазуға болады
Аудармашыны қалай жазуға болады

Қажетті

  • - бастапқы тілдің табиғи грамматикасы немесе БНФ;
  • - даму құралдары.

Нұсқаулық

1-қадам

Мәтінді бастапқы тілде лексикалық талдауға деректерді дайындаңыз. Тілдегі барлық лексемаларды келтіріңіз. Оларды санаттарға бөліңіз (кілт сөздер, сандық және жолдық литералдар, идентификаторлар, бос орын, пунктуация және т.б.).

2-қадам

Модульді немесе лексерді енгізіңіз. Кіріс кезінде ол «шикі» мәліметтер ағыны алуы керек, ал шығу кезінде таңбалауыштары бар элементтердің тізбесін және олардың бастапқы идентификаторларында олардың типтерінің сәйкестендіргіштерін құру керек. Бөлшектеу бағдарламасы өте қарапайым болуы мүмкін « бір деңгейлі «сканер. Қателерді қалпына келтіруді енгізу мағынасы жоқ. Жарамсыз таңбалар қателіктер ретінде қарастырылуы керек.

3-қадам

Деректерді талдауға дайындаңыз. Табиғи грамматика немесе бастапқы тілдің BNF негізінде оның LL1 грамматикасын құрыңыз. Грамматиканың осы түріне сүйене отырып, тілдің жарамды лексемалары мен мағыналық құрылымдарының категориялары тұрғысынан талдау схемасын құрыңыз.

4-қадам

Модульді немесе талдаушыны енгізіңіз. Кіріс кезінде ол лексикалық талдау кезеңінде дайындалған таңбалар тізімін алуы керек. Үшінші қадамда жасаған схеманы пайдаланып синтаксисті тексерудің рекурсивті алгоритмдерін құрыңыз. Қажет болса, қателіктерді қалпына келтіру тетіктерін енгізіңіз, функцияларды, класс әдістерін есептеу ағашын құру үшін алгоритмдерге функционалдылықты қосыңыз. Талдау алгоритмдерінің дұрыс құрылымымен бұл функцияны еш қиындықсыз жүзеге асыруға болады. Бұл оны жеке модуль ретінде енгізу қажеттілігін болдырмайды. Құрылған мәліметтер құрылымында «жазық» тізбектер түріндегі нұсқаулықтардың тізімдері болуы керек (стек машинасында есептеу үшін қолайлы постфикс түрінде кеңейтілген арифметикалық өрнектер, есептеу командаларының тізбектерінің комбинацияларына айналған циклдар және шартты немесе шартсыз секірулер және т.б.)..

5-қадам

Қажет болса, оңтайландыру модулін жасаңыз. Ол алдыңғы кезеңде дайындалған деректер құрылымын өңдеп, түрлендіруі керек. Оңтайландыру алгоритмдері мен әдістері өте алуан түрлі.

6-қадам

Код генераторын жасаңыз. Төртінші немесе бесінші қадамдарда дайындалған құрылымдарды өңдеу кезінде ол абстрактілі нұсқаулықтардың тізбегін белгілі бір платформада орындау нұсқауларына айналдыруы керек.

7-қадам

Қажет болса, байланыстырушы бағдарлама жасаңыз (байланыстырушы). Ол код сегменттерінің орнын таңдау, этикеткалардың адрестерін есептеу және т.б. нәтижесінде орындалатын модульді құруы керек.

Ұсынылған: