Paano Sumulat Ng Isang Tagasalin

Talaan ng mga Nilalaman:

Paano Sumulat Ng Isang Tagasalin
Paano Sumulat Ng Isang Tagasalin

Video: Paano Sumulat Ng Isang Tagasalin

Video: Paano Sumulat Ng Isang Tagasalin
Video: Depinisyon ng Pagsasaling-wika at Mga Katangiang Dapat Taglayin ng isang Tagapagsalin/Tagasalin 2024, Disyembre
Anonim

Maraming mga wika sa pagprograma na may kani-kanilang mga natatanging katangian. Ngunit upang gumana ang isang program na nakasulat sa alinman sa mga ito, kailangan mong i-broadcast ito. Minsan ang mga wika ng programa ay binuo para sa kanilang sariling mga pangangailangan (halimbawa, suporta para sa awtomatiko sa malalaking aplikasyon) at pagkatapos ay kinakailangan na magsulat ng isang tagasalin.

Paano sumulat ng isang tagasalin
Paano sumulat ng isang tagasalin

Kailangan

  • - natural na grammar o BNF ng pinagmulang wika;
  • - mga tool sa pag-unlad.

Panuto

Hakbang 1

Ihanda ang data para sa leksikal na pagsusuri ng teksto sa pinagmulang wika. Ilista ang lahat ng mga token sa wika. Paghiwalayin ang mga ito sa mga kategorya (keyword, numeric at string literals, identifier, whitespace, bantas, atbp.).

Hakbang 2

Pagpapatupad ng isang module o lexer. Sa pag-input, dapat itong makatanggap ng isang "hilaw" na stream ng data, at sa output ay bumubuo ng isang listahan ng mga elemento na naglalaman ng mga token at kanilang mga uri ng pagkakakilala sa pagkakasunud-sunod kung saan nagaganap ang mga ito sa pinagmulang teksto. Ang programa sa pag-parse ay maaaring maging isang simpleng " solong-antas na "scanner. Ang pagpapatupad ng pag-recover ng error ay walang katuturan. Ang mga hindi wastong character ay dapat tratuhin bilang mga error.

Hakbang 3

Ihanda ang data para sa pag-parse. Batay sa likas na balarila o BNF ng pinagmulang wika, bumuo ng LL1 nitong balarila. Batay sa ganitong uri ng grammar, gumuhit ng isang scheme ng pag-parse sa mga tuntunin ng mga kategorya ng mga wastong token at semantic construct ng wika.

Hakbang 4

Ipapatupad ang isang module o parser. Sa pag-input, dapat itong makatanggap ng isang listahan ng mga token na inihanda sa yugto ng pag-parse ng leksikal. Bumuo ng mga recursive syntax check algorithm gamit ang schema na iyong nilikha sa pangatlong hakbang. Kung kinakailangan, magpatupad ng mga mekanismo ng pagbawi ng error. Magdagdag ng pag-andar sa mga algorithm ng pag-parse upang bumuo ng isang puno para sa pagkalkula ng mga pag-andar, mga pamamaraan ng klase. Gamit ang tamang istraktura ng pag-parse ng mga algorithm, ang pagpapaandar na ito ay maaaring ipatupad nang walang anumang mga problema. Iniiwasan nito ang pangangailangan na ipatupad ito bilang isang hiwalay na module. Ang nilikha na mga istraktura ng data ay dapat maglaman ng mga listahan ng mga tagubilin sa anyo ng mga "flat" na pagkakasunud-sunod (ang mga expression ng aritmetika na pinalawak sa form na postfix na angkop para sa pagkalkula sa isang stack machine, mga loop ay nabago sa mga kumbinasyon ng mga pagkakasunud-sunod ng mga tagubilin sa computational at mga kondisyonal o walang kondisyon na paglukso, atbp.).

Hakbang 5

Lumikha ng isang module ng pag-optimize kung kinakailangan. Dapat itong iproseso at ibahin ang mga istruktura ng data na inihanda sa nakaraang hakbang. Ang mga algorithm at pamamaraan sa pag-optimize ay ibang-iba.

Hakbang 6

Bumuo ng isang generator ng code. Kapag pinoproseso ang mga istrakturang inihanda sa pang-apat o ikalimang mga hakbang, dapat lamang nitong ibahin ang mga pagkakasunud-sunod ng mga abstract na tagubilin sa mga tagubilin para sa pagpapatupad sa isang tukoy na platform.

Hakbang 7

Lumikha ng isang binder program (linker) kung kinakailangan. Dapat itong bumuo ng nagresultang maipapatupad na module sa pamamagitan ng pagpili ng lokasyon ng mga segment ng code, pagkalkula ng mga address ng mga label, atbp.

Inirerekumendang: