Upang lumikha ng isang interpreter, kailangan mong magsulat ng isang mapagkukunan ng parser ng mapagkukunan, isang loop ng pagpapatupad ng bytecode, at isang malaking halaga ng karaniwang code ng library. Hindi laging masaya at madali kung hindi mo ginagamit ang mga tool na bubuo para sa iyo ng tagatala at parser. Sa kanila, magiging madali ito tulad ng pag-shell ng mga peras upang sumulat ng isang interpreter ng wika para sa isang taong may kaalaman. Tingnan natin ang isang halimbawa ng pagsulat ng isang interpreter kasama ang JIT sa PyPy.
Panuto
Hakbang 1
Pumili ng isang wika para sa pagsulat. Sa kasong ito, ito ay utak. Napakadali at binubuo ng isang tape ng mga integer, na naisasimulan sa zero, at 1 pointer sa kasalukuyang cell sa tape. Mayroong walong mga utos lamang sa wika: ">" - ilipat ang pointer sa susunod na cell,"
Hakbang 2
Sumulat ng isang interpreter sa simpleng Python. Ang counter ng tagubilin ay mag-iimbak ng mga pahiwatig sa kasalukuyang pagtuturo. Ang unang expression ay kukunin ang pahayag, pagkatapos kung saan maraming mga pahayag ang tumutukoy kung paano ito isagawa. Palabasin ang pagpapatupad ng "[" at "]" mga operator, dahil dapat nilang baguhin ang command counter sa posisyon ng parehong panaklong.
Hakbang 3
Ipapatupad ang isang klase ng Tape na nag-iimbak ng isang pointer sa kasalukuyang numero at isang tape ng mga integer. Ang tape ay lalago kung kinakailangan. Ipa-parse muna ang source code upang ang maraming mga puna ay hindi basahin nang paisa-isa. Lumikha ng isang diksyonaryo ng panaklong pati na rin, upang maaari mong makita ang mga tumutugma na panaklong dito kung kinakailangan.
Hakbang 4
Ipatupad ang def parse (programa). Ang pagpapaandar na ito ay nagbabalik lamang ng mga string mula sa mga utos at diksyunaryo ng parentesis.
Hakbang 5
Pagsama-samahin ang lahat at mayroon kang isang gumaganang interpreter ng utak. Simulan ang Python interpreter at tiyaking gagana ito. Ito ay isang solong halimbawa lamang ng pagsulat ng isang interpreter gamit ang pinakasimpleng wika. Kung nais mo, maaari kang magsulat sa halos anumang wika, na pamilyar sa iyong mga katangian at layunin.