Skip to content
BASIC լեզվի կոմպիլյատոր LLVM IR լեզվի
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
cases
doc
src
.gitignore
README.md
_clang-format

README.md

BASIC լեզվի կոմպիլյատոր LLVM IR լեզվի

Բոլոր նրանց համար, ում հետաքրքիր են կոմպիլյատորները։
(«Բոլո՜ր նրանց, ում որ հոգին վառվում է վառ...» Չ.)


Այս նախագիծը սկսելիս իմ նպատակը LLVM-ի ուսումնասիրությունն էր։ Ես պատրաստվում էի գրել BASIC լեզվի մի տարատեսակի կոմպիլյատոր, որը BASIC լեզվով գրված տեքստը թարգմանելու էր LLVM IR ներկայացման, և այդ IR-ը պետք է կատարվեր LLVM փաթեթի lli ինտերպրետատորով։

Հետագայում՝ ԵՊՀ Տեղեկատվական տեխնոլոգիաների կրթական և հետազոտական կենտրոնում «Կոմպիլյացիայի հիմունքներ» առարկայի դասախոսությունները կարդալիս, այս նախագիծը դարձրեցի ուսումնական նյութ՝ մանրամասնորեն մեկնաբանելով կոմպիլյատորի ստեղծման առանձին փուլերը։ Մինչև «հավեսս փախնելու» առաջին փուլը ես հասցրեցի գրել բառայն ու շարահյուսական վերլուծիչները և աբստրակտ քերականական ծառի Լիսպ ներկայացումը։ Հետո միացավ Տիգրանը (@sargtigran) ու գրեց LLVM IR կոդի գեներատորը, ու շարունակեցինք ամբողջ ծրագրի լրացումներն ու հղկումը։ Այս պահին (25 հուլիսի 2018 թ.) կոմպիլյատորը ճիշտ IR կոդ է գեներացնում cases պանակում բերված բոլոր օրինակների համար։ Բայց, իհարկե, անելու շատ բան կա։

Ծրագրավորման լեզուների ստեղծմամբ հետաքրքրվողները կարող են այստեղ գտնել.

  • Լեզվի քերականության սահմանում,
  • Աբստրակտ քերականական ծառի սահմանում (դասերի հիերարխիա),
  • Բառային ու շարահյուսական վերլուծիչների իրականացում,
  • Տիպերի ստուգման և դուրսբերման իրականացում,
  • Աբստրակտ քերականական ծառից Լիսպ ներկայացման ստացում,
  • Լիսպ ներկայացումից DOT ներկայացման ստացում,
  • LLVM IR կոդի գեներացիա։

Պարտադիր է կարդալ Նիկլաուս Վիրտի Compiler construction-ը:

You can’t perform that action at this time.