Как да създадете език за програмиране: 15 стъпки (със снимки)

Съдържание:

Как да създадете език за програмиране: 15 стъпки (със снимки)
Как да създадете език за програмиране: 15 стъпки (със снимки)

Видео: Как да създадете език за програмиране: 15 стъпки (със снимки)

Видео: Как да създадете език за програмиране: 15 стъпки (със снимки)
Видео: ИЗЧИСТВАНЕ НА ТЕМПЕР ФАЙЛОВЕТЕ ОТ АРХИВИТЕ, КОИТО БАВЯТ КОМПЮТЪРЪТ НИ/WINDOWS 8.1 & WINDOWS 10 2024, Може
Anonim

Много хора изпитват затруднения или разочарования с езиците за програмиране, които използват всеки ден. Някои искат нещата да се обработват по -абстрактно, докато други не харесват функциите за внедряване, които биха искали да бъдат „стандартни“. Независимо дали сте IT специалист или просто любител, много пъти може да се окажете, че искате да създадете нов език за програмиране.

Стъпки

Създаване на език за програмиране Стъпка 1
Създаване на език за програмиране Стъпка 1

Стъпка 1. Запознайте се с технологията

Не можете да създадете език за програмиране, ако не знаете как да използвате компютър.

Създайте език за програмиране Стъпка 2
Създайте език за програмиране Стъпка 2

Стъпка 2. Запознайте се с терминологията

Съставителите на компилатори често използват непозната терминология. Прочетете компилаторите, преди да продължите. Не забравяйте да знаете всичко, което трябва да знаете.

Създайте език за програмиране Стъпка 3
Създайте език за програмиране Стъпка 3

Стъпка 3. Решете какъв проблем решава вашият език

Решава ли проблем, свързан с конкретен домейн, или е език с общо предназначение?

Създайте език за програмиране Стъпка 4
Създайте език за програмиране Стъпка 4

Стъпка 4. Помислете за семантиката на вашия език и концепциите за него

  • Ще разрешите ли директен достъп с показалец или не?
  • Какви са типовете данни на вашия език?
  • Статичен или динамичен език ли е?
  • Какъв е вашият модел памет? Ще използвате ли събирач на боклук или ръчно управление на паметта? (Ако използвате събирач на боклук, подгответе се да напишете такъв или да адаптирате съществуващ към вашия език.)
  • Как ще се справим с паралелността? Ще използвате ли прост модел на резба/заключване или нещо по -сложно като Линда или модела на актьора? (От днес компютрите имат множество ядра.)
  • Има ли примитивни функции, вградени в езика, или всичко ще дойде от библиотека?
  • Каква е парадигмата или парадигмите на вашия език? Функционален? Обектно-ориентиран? Прототип (като JavaScript)? Аспектно ориентиран? Ориентиран към шаблон? Или нещо съвсем ново?
  • Как вашият език ще взаимодейства със съществуващите библиотеки и езици (главно C)? Този момент е важен, ако изграждате език, специфичен за домейна.
  • И накрая, някои от отговорите на тези въпроси ще бъдат отговорени от втората стъпка и ще ви помогнат да отговорите на следващата стъпка.
Създайте език за програмиране Стъпка 5
Създайте език за програмиране Стъпка 5

Стъпка 5. Помислете за някои специфични задачи, които някой би искал да може да изпълнява с вашия език

Например „може да искат да насочат робот да следва линия“или „може да искат да създадат относително преносими настолни програми в него“или „може да искат да създадат уеб приложения с него“.

Създайте език за програмиране Стъпка 6
Създайте език за програмиране Стъпка 6

Стъпка 6. Експериментирайте със синтаксични идеи (текста на езика) за горните примери

Внимавайте да запазите езика си в категорията безконтекстен език или нещо вътре в нея. Вашият генератор на анализатор и ще го оцените по -късно

Създайте език за програмиране Стъпка 7
Създайте език за програмиране Стъпка 7

Стъпка 7. Изпишете официална граматика за синтаксиса

Създайте език за програмиране Стъпка 8
Създайте език за програмиране Стъпка 8

Стъпка 8. Решете дали езикът ще бъде интерпретиран или компилиран

Това означава, че в интерпретирания свят вашият потребител обикновено ще редактира вашата програма в редактор и ще я стартира директно на интерпретатора; докато сте в компилирания свят, вашият потребител ще редактира вашата програма, ще я компилира, ще запише получения изпълним файл някъде и ще я стартира.

Създайте език за програмиране Стъпка 9
Създайте език за програмиране Стъпка 9

Стъпка 9. Напишете скенера и анализатора на предния край или намерете инструмент, който да ви помогне в това

Помислете също как вашият компилатор/интерпретатор ще предупреди потребителя ви за грешни програми и синтаксични грешки

Създайте език за програмиране Стъпка 10
Създайте език за програмиране Стъпка 10

Стъпка 10. Използвайте информацията за анализатора, за да напишете обектния код или междинно представяне

Накарайте анализатора да създаде AST, след това да създаде обектния код от AST, като използва три кода на адреса или неговия голям брат SSA, след това създайте таблица със символи, за да дефинирате вашите функции, глобални променливи и т.н.

Също така, в зависимост от вашия език, може също да искате да създадете таблици с виртуални указатели или информационни таблици за вашите класове (за да поддържате отражението или RTTI)

Създайте език за програмиране Стъпка 11
Създайте език за програмиране Стъпка 11

Стъпка 11. Напишете изпълнителя или генератора на код, който ще свърже всичко заедно

Създайте език за програмиране Стъпка 12
Създайте език за програмиране Стъпка 12

Стъпка 12. Напишете много тестови програми за тестване на езика

Искате да създадете програми, които натоварват тежестта на вашата официална граматика, за да видите, че вашият компилатор приема всичко, което е вътре в определението ви, и отхвърля всичко, което е извън него

Създайте език за програмиране Стъпка 13
Създайте език за програмиране Стъпка 13

Стъпка 13. Помислете как потребителят ще отстранява грешките в собствените си програми

Създайте език за програмиране Стъпка 14
Създайте език за програмиране Стъпка 14

Стъпка 14. Ако вашият език използва стандартна библиотека, ще искате да я напишете

Заедно със събирач на боклук или други функции по време на работа, ако имате нужда от него.

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

Създайте език за програмиране Стъпка 15
Създайте език за програмиране Стъпка 15

Стъпка 15. Публикувайте езика си, заедно със спецификацията за него и някои примери за това какво можете да правите на него

Не забравяйте да документирате как можете да се интегрирате със съществуващи библиотеки, езици и как да използвате функциите по време на изпълнение и/или стандартната библиотека

Видео - Използвайки тази услуга, може да се сподели част от информацията с YouTube

Съвети

  • Започнете с проектирането на вашия език и не пишете никакъв код, докато не сте доволни и не отговорите на всички (или повечето) от въпросите или проблемите, свързани с вашия дизайн, тъй като е по -лесно да промените дизайна по -рано, отколкото по -късно.
  • Познайте целевата си платформа (операционна система и библиотеки) за вашия компилатор/интерпретатор, в края на краищата ще я използвате и ще я манипулирате.

Предупреждения

  • Помислете дали наистина имате нужда от нов език и от това, което вашият език има от ново, което другите езици нямат (Може да е комбинация от функции или една функция).
  • Писането на езици е трудно, ако не знаете какво правите. Изисква се и много практика.
  • Пригответе се да отделите известно време за езиков дизайн, тъй като няма да имате възможност да промените езика си, след като сте написали компилатора и сте преминали точката на проектиране.
  • Не се опитвайте да основавате своите функции в съюз на няколко езика, като например да кажете, че вашият език ще бъде съюз на език X, език Y и език Z. Историята ни показа, че езиците, създадени по такъв начин, никога няма да намерят успех, или всеки би програмирал PL/1 вместо нещо, базирано на C.

Препоръчано: