Kuna lugha nyingi za programu ambazo zina sifa zao za kipekee. Lakini ili programu iliyoandikwa katika yeyote kati yao ifanye kazi, unahitaji kuitangaza. Wakati mwingine lugha za programu hutengenezwa kwa mahitaji yao wenyewe (kwa mfano, msaada wa kiotomatiki katika matumizi makubwa) na kisha inakuwa muhimu kuandika mtafsiri.
Muhimu
- - sarufi ya asili au BNF ya lugha asili;
- - zana za maendeleo.
Maagizo
Hatua ya 1
Andaa data ya uchanganuzi wa matamshi ya maandishi katika lugha chanzi. Orodhesha ishara zote kwa lugha. Zigawanye katika vikundi (maneno muhimu, fasihi za nambari na kamba, vitambulisho, nafasi nyeupe, uandishi, nk).
Hatua ya 2
Tekeleza moduli au lexer. Katika pembejeo, inapaswa kupokea mkondo wa data "mbichi", na kwenye fomu ya pato orodha ya vitu vyenye ishara na vitambulisho vya aina yao katika mlolongo ambao hufanyika katika maandishi asili. Programu ya kuchambua inaweza kuwa rahisi sana " skana ya kiwango kimoja. Utekelezaji wa urejeshi wa makosa hauna maana. Wahusika batili wanapaswa kutibiwa kama makosa.
Hatua ya 3
Andaa data ya kuchanganua. Kulingana na sarufi asili au BNF ya lugha chanzi, andika sarufi yake ya LL1. Kulingana na aina hii ya sarufi, andaa mpango wa kuchanganua kulingana na kategoria za ishara halali na ujenzi wa semantic ya lugha.
Hatua ya 4
Tekeleza moduli au msomaji. Kwa pembejeo, inapaswa kupokea orodha ya ishara zilizoandaliwa katika hatua ya utaftaji wa lexical. Tengeneza algorithms za kuangalia sintaksia kwa kutumia schema uliyounda katika hatua ya tatu. Ikiwa ni lazima, tumia njia za urejeshi wa makosa. Ongeza utendaji kwa algorithms ya kuchanganua kujenga mti wa kuhesabu kazi, mbinu za darasa. Na muundo sahihi wa algorithms ya kuchanganua, utendaji huu unaweza kutekelezwa bila shida yoyote. Hii inepuka haja ya kuitekeleza kama moduli tofauti. Miundo ya data iliyoundwa inaweza kuwa na orodha ya maagizo kwa njia ya mfuatano wa "gorofa" (misemo ya hesabu iliyopanuliwa kuwa fomu ya postfix inayofaa hesabu kwenye mashine ya stack, matanzi hubadilishwa kuwa mchanganyiko wa mlolongo wa maagizo ya hesabu na kuruka kwa masharti au bila masharti, n.k.).
Hatua ya 5
Unda moduli ya uboreshaji ikiwa inahitajika. Inapaswa kusindika na kubadilisha miundo ya data iliyoandaliwa katika hatua ya awali. Ubora wa algorithms na njia ni tofauti sana.
Hatua ya 6
Tengeneza jenereta ya nambari. Wakati wa kusindika miundo iliyoandaliwa katika hatua ya nne au ya tano, inapaswa kubadilisha tu mlolongo wa maagizo dhahania kuwa maagizo ya utekelezaji kwenye jukwaa fulani.
Hatua ya 7
Unda mpango wa binder (kiunganishi) ikiwa inahitajika. Inapaswa kuunda moduli inayoweza kutekelezwa kwa kuchagua eneo la sehemu za nambari, kuhesabu anwani za lebo, n.k.