Автоматты аударма пайдаланылды

3-бап: бір тілге арналған Үш шебер. Компьютер рундарды қалай түсінеді.

Бұл жаңа қазақстандық бағдарламалау тілін құру туралы цикліміздің үшінші бөлігі. Алдыңғы мақалаларда біз оның философиясы туралы әңгімелестік және оған руникалық алфавит жасадық.

Сонымен, бізде тұжырымдама бар және терең бейнелерге толы алфавит бар. Бірақ компьютердің жансыз кремнийі Λ тек белгіше емес, тұрақты тау екенін қалай түсінуге болады? Оған біздің рундарды оқуды қалай үйретуге болады?

Бұл пост біздің тіліміздің "миын" қалай жасағанымыз туралы. Біздің кодқа өмірді енгізетін Үш "шебер" туралы.

Информатикада оларды Лексер, талдаушы және аудармашы деп атайды, бірақ біздің философиямызда олар өз есімдерін алды: Тануши, Құрастырушы және Іске Асыршы.

Біздің кодты тек үздіксіз таңбалар ағыны деп елестетіп көріңіз. Компьютер ондағы рундарды да, есімдерді де көрмейді. Бірінші шебердің міндеті - "Тануши" (танушы) — осы ағымға қарап, таныс бейнелерді тану.

Ол сөйлемнің мағынасын түсінуге тырыспайды. Ол тек жеке "сөздерді" — лексемаларды немесе токендерді анықтайды.

  • Көргеннен кейін ол: "бұл Руна_ айнымалысы" дейді.
  • San-ны көргеннен кейін ол: "бұл Идентификатор (аты)", - дейді.
  • Көріп:, ол: "бұл Тағайындау_ операторы" дейді.
  • 10 - "көргеннен кейін ол:"бұл бүтін Сан_литерал" дейді.

Мысалы, қарапайым код жолы:

— □ a : 10

"Тануши" таңбалауыштардың мағыналы тізбегіне айналады:

[Runa_Var] [Runa_Type_Int] [Identifier: "a"] [Op_Assign: ":"] [IntegerLiteral: 10]

Ол жұмыс істегеннен кейін, таңбалардың хаосының орнына бізде танылған элементтердің нақты тізімі бар. Бірақ олардың бір-бірімен қалай байланысқанын жүйе әлі білмейді.

Мұнда екінші шебер "Құрастырушы" (жинаушы немесе сәулетші) іске кіріседі. Ол "Танушадан" токендер ағынын алады және олардың біздің тіліміздің грамматикасына сәйкес келетіндігін тексереді.

Ол заңдарды сақтаушы.

Ол [Runa_Var] [Runa_Type_Int] [Identifier] [Op_Assign] [IntegerLiteral] тізбегіне қарап: "Иә, бұл "айнымалы декларация"ережесіне сәйкес келеді. Бәрі дұрыс". Егер тәртіп бұзылса," Құрастырушы " қате туралы хабарлаған болар еді.

Оның жұмысының басты нәтижесі - "Ой Бәйтерегі" (ой ағашы). Ғылымда бұл дерексіз синтаксистік ағаш (AST) деп аталады. Ол таңбалауыштардың жалпақ тізімін бағдарламаның логикасын көрсететін иерархиялық, ағаш тәрізді құрылымға айналдырады.

Код үшін

— □ c : a * (b + 2)

Ой ағашы келесідей болады, бұл операциялардың басымдылығын дәл көрсетеді (алдымен жақшаға қосу, содан кейін көбейту):

(Түйін: хабарландыру айнымалы, аты: "c")
 |
 / -- (Мәні: Екілік Операцияның Түйіні, Оператор: '*')
      |
      / -- Сол жақ: (түйін: қол жеткізу айнымалы, аты: "a")
      |
      / -- Оң жақ бөлігі: (екілік операцияның түйіні, Оператор: '+')
           |
           / -- Сол жақ: (түйін: қол жетімділік айнымалы, аты: "b")
           / -- Оң жақ: (түйін: Сан, мән: 2)

Енді бізде тек сөздер ғана емес, бағдарламамыздың тамаша логикалық сызбасы бар.

Бізде сурет бар, бірақ үй әлі салынбаған. Мұнда соңғы шебер — "Іске Асыршы" (орындаушы немесе Орындаушы) пайда болады. Оның міндеті - "ой ағашын" алып, оны өмірге әкелу.

Ол ағашты түйіннен түйінге айналдырады және командаларды орындайды:

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

Бұл үш шебер — тану, сәулетші және инкарнация-және біздің компилятор. Бұл Мәңгілік цикл: рәміздерді тану, олардан құрылым құру, осы құрылымды орындау.

Енді сіз біздің тіліміздің қалай "ойлайтынын" білетін болсаңыз, келесі мақалада біз оны іс жүзінде көрсетеміз. Біз руникалық синтаксисті қолдана отырып, алғашқы толыққанды бағдарламамызды жазамыз және оның соңғы нәтижені шығару үшін барлық үш шебердің қолынан қалай өтетінін көреміз.

Пікірлер 2

Кіру пікір қалдыру үшін

CONSULT A LICENSED BTC, USDT RECOVERY EXPERT / THE HACK ANGELS A LIFESAVER IN MY DARKEST MOMENT I want to extend my deepest gratitude to THE HACK ANGELS for everything you've done for me. I sincerely appreciate your efforts in locating my misplaced $970,000 worth of Bitcoin, as well as your positive attitude. I admire your desire to go above and above, as well as the fact that you and your team are always willing to assist others. I was overwhelmed with stress and confusion, completely unsure of what to do next. Thankfully, a friend introduced me to THE HACK ANGELS, and that connection truly changed everything. Their professionalism, patience, and unwavering support brought back my smile. I’m incredibly grateful for THE HACK ANGELS helping me in during one of the most difficult times in my life. I cannot thank them enough for their exceptional service and dedication. I highly recommend their services to anyone facing a similar situation, they are experienced, efficient, and trustworthy, you can get in contact with them. WhatsApp +1(520)2 0 0-2 3 2 0) Email at support@thehackangels.com Website at www.thehackangels.com They are truly exceptional when it comes to crypto recovery. If you're in London, you can even visit them in person at their office located at 45-46 Red Lion Street, London WC1R 4PF, UK. They’re super helpful and really know their stuff! Don’t hesitate to reach out if you need help!

Жауап беру