Kurssin luonne
Kurssin tausta
Maailman tietojenkäsittelytieteilijä Alfred V.Aho kirjoitti "Compiler" -julkaisun luvun 1 ensimmäisessä virkkeessä: "Kirjoita kääntäjä Periaate ja Tietokonetekniikalla on universaali merkitys, joten jokaisen tietotekniikan tutkijan uralla tämän kirjan periaatetta ja tekniikkaa käytetään toistuvasti.” Tämä lause osoittaa kokoamisen periaatteen tietojenkäsittelytieteen kurssilla Tärkeä asema Korkeatasoisia ohjelmointikieliä ohjelmien kirjoittamiseen käyttäneet oppijat tietävät, että kun ohjelma syötetään tietokoneeseen, tietokone voi toimia ihmisten tarpeiden mukaan Konekoodi, joka koostuu 0:sta ja 1:stä, on kieli, jota tietokone voi ymmärtää suoraan. Siksi korkean tason kielellä kirjoitettu ohjelma on lopulta "käännettävä" konekoodiksi, joka koostuu 0:sta ja 1:stä ennen sitä voidaan suorittaa tietokoneella. Tätä käännösprosessia kutsutaan kääntämiseksi.
Sopeutuksen tavoitteet
Kokoonpanon periaatteet on suunnattu pääasiassa tietojenkäsittelytieteen pääaineopiskelijoille ja siihen liittyvien teknologioiden harjoittajille.
Tuntien aloitustiedot
Aloitettujen kurssien määrä | Aloitusaika | > Opettaja | > Osallistujien määrä |
---|---|---|---|
Ensimmäinen luokka alkaa | 4. syyskuuta 2017 - 31. joulukuuta 2017 | Chen Yin, Guo Yong | > 10399 |
Tunnin toinen aloitus | 5. maaliskuuta 2018~2018-07 kuukauden 31. päivä | > 16424 | |
luokan kolmas aloitus | 3. syyskuuta 2018 - 31. joulukuuta 2018 | Chen Yin, Guo Yong, Tu Zhiying, Huang Cheng | > 11272 |
4. luokka alkaa td> | 18. helmikuuta 2019–31. heinäkuuta 2019 | Chen Yin, Guo Yong 、Tu Zhiying | > 17757 |
5. luokka alkaa td> | 02.9.2019–31.12.2019 | 14153 | |
6. luokka alkaa | < td width="311" height="30">< p>14168 | ||
> 7. luokka alkaa | 31. elokuuta 2020 - 31. tammikuuta 2021 | Määritetään myöhemmin | |
Kiinan yliopiston MOOC:n virallisten verkkosivujen mukaan kurssin ensimmäisestä seitsemänteen alkuun aikataulu on 3–5 tuntia viikossa. |
Kurssin esittely
Luentoja on 20 kääntämisperiaatteista, joissa opetetaan pääasiassa kääntäjien suunnittelun ja toteutuksen pääteorioita ja tekniikoita. Niistä ensimmäinen luento esittelee kokoamisperiaatteiden käsitteellisen tuntemuksen; toisella ja kolmannella luennolla esitellään ohjelmointikieltä sekä sen kielioppi- ja leksikaalisen analyysin sisältö; 4.-14. luento esittelee kieliopin analyysin (osat 1-4) ja kieliopillisesti ohjattua kääntämistä (osa 1-3), välikoodin generointia (osat 1-4); Luento 15 esittelee tietoa tietokoneen käytöstä ja tallennustilan allokoinnista; Luennoilla 16-20 esitellään koodin optimoinnin edistynyt sisältö (osat 1-4) ja koodin generoinnin toteutus.
Kurssin luonnos
Luento 1 Johdanto | < td height="30">> 6–9 ohjausvirtalausekkeiden jälkitäyttö | ||
1-1 Mitä kokoaminen on | 4-15 Epäselvä kieliopin LR-analyysi | 6-10switch-lausekkeen käännös | |
1-2 Käännösjärjestelmän rakenne | Tämän luennon luentomuistiinpanot (PPT-dokumentti) | 6–11 proseduurikutsulauseiden kääntäminen | |
1-3 Yleiskatsaus leksiseen analyysiin | Virheenkäsittely 4-16LR-analyysissä | Simulaatioharjoitukset tässä luennossa (ei lasketa pisteitä) | |
1-4 Syntaksianalyysin yleiskatsaus | Tämän luennon simulaatioharjoitukset (ei pisteytystä) | Tämän luennon luentomuistiinpanot (PDF-tiedosto) | |
1-5 Semanttisen analyysin yleiskatsaus | Luentomuistiinpanot (PDF-tiedosto) | > p> | Luento 14 Tietovisa (pisteytys) |
1-6 Yleiskatsaus välikoodin luomiseen ja kääntäjän taustaohjelmaan | [Keskustelu 7-1] Miksi samankeskisten alkiojoukkojen yhdistäminen ei tuota paluumuutosta Tietoja ristiriidoista? | Tämän luennon luentomuistiinpanot (PPT-dokumentti) | |
Tämän luennon simulaatioharjoitukset (ei pisteytystä) | [Keskustelu 7-2] Miksi LALR-analyysimenetelmä ei tee väärää liiketoimintoa? | Luento 15 Running Storage Allokation | |
Luentomuistiinpanot (PDF-tiedosto) | Luento 7 tietokilpailu (pisteytys) | > 7-1 Yleiskatsaus käynnissä olevasta tallennustilan varaamisesta | |
【Keskustelu 1-1 】Kääntämisprosessin ja manuaalisen käännösprosessin välinen suhde | Luento 8 Kieliopin ohjattu käännös 1 | td>7-2 Staattisen tallennustilan varaus | |
【Keskustelu 1-2 】NIMI-kentän muotoilu symbolitaulukossa | 5-1 Yleiskatsaus kielioppiohjatusta käännöksestä | 7-3 Pinottu tallennustilan varaus | |
Luento 1 tietokilpailu (pisteytys) td> | 5-2 Syntaksiohjeiden määritelmä SDD | > 7-4 Kutsusarja ja paluusekvenssi | |
Luentomuistiinpanot (PPT-asiakirja) | > 5-3 SDD-arviointitilaus | > 7-5 Pääsy muihin kuin paikallisiin tietoihin | |
5-4S-attribuutin määritelmä ja L-attribuutin määritelmä | > 7–6 symbolitaulukko | ||
2-1 peruskäsitettä | Tämän luennon simulaatioharjoitukset (ei pisteytystä) | 7–7 symbolitaulukon luominen | |
2-2 Lain määritelmä | Tämän luennon luentomuistiinpanot (PDF-tiedosto) | Tämä puhe simulaatioharjoituksista (ei pisteytetty) | |
> 2-3 kielen määritelmää | [Keskustelu 8-1] Kuinka esittää semanttista tietoa? | Tämän luennon luentomuistiinpanot (PDF-tiedosto) | |
2-4 Kieliopin luokitus | [Keskustelu 8-2] Miten lasketaan semanttiset attribuutit? | [Keskustelu 15-1] Kuinka rakentaa pääsyketju symbolitaulukon perusteella? | |
2-5CFG:n analyysipuu | [Keskustelu 8-3] Kuinka määrittää, onko attribuutti kattava vai peritty attribuutti? | [Keskustelu 15-2] Kuinka päästä käsiksi ei-paikalliseen tietoon symbolitaulukon perusteella? | |
Tämän luennon simulaatioharjoitukset (ei pisteytystä) | [Keskustelu 8-4] Millainen SDD voi taata sen, missä järjestyksessä sen attribuutit lasketaan? | Luento 15 Tietovisa (pisteytys) | |
Tämän luennon luentomuistiinpanot (PDF-dokumentti) | Tämän luennon luentomuistiinpanot (PPT-dokumentti) | Tämän luennon luentomuistiinpanot (PPT-dokumentti) | |
[Keskustelu 2-1] Kyllä tietokoneessa Kuinka ilmaista kieltä? | [Keskustelu 8-5] Miksi S-SDD ja L-SDD voivat taata attribuuttien laskentajärjestyksen olemassaolon? | Oppitunti 16 Koodin optimointi 1 | |
[Keskustelu 2-2] Voidaanko jokaista sanatyyppiä pitää kielenä? | Luento 8 Tietovisa (pisteytys) | Luentomuistiinpanot (PPT-asiakirja) | |
Luento 2 tietokilpailu (pisteytys) | Luento 9 Kielioppiopastettu käännös 2 | > 8-1 vuokaavio < /td> | |
Tämän luennon luentomuistiinpanot (PPT-dokumentti) | Tämä luento Kurssin muistiinpanot (PPT-dokumentti) | 8-2 Yleisesti käytettyjä koodin optimointimenetelmiä (1) | |
Oppitunti 3 Leksinen analyysi | 5–5 kielioppiopastettu käännösprojekti SDT | 8-3 Yleisesti käytettyjä koodin optimointimenetelmiä (2) | |
> 3-1 säännöllinen lauseke | > 5–6 käännös ei-rekursiivisen ennustavan analyysin prosessissa < /td> | 8-4 Peruslohkojen optimointi | |
3-2 Tavallinen määritelmä | Tämän luennon simulaatioharjoitukset (ei pisteytystä) | Tämä puhe simulaatioharjoituksista (ei pisteytetty) | |
3-3 äärellistä automaattia | < td height="30">Tämän luennon luentomuistiinpanot (PDF-tiedosto) < /td> | ||
3–4 äärellisen automaatin luokitus | 【 Keskustelu 9-1] Miksi S-SDD:n SDT voidaan toteuttaa samanaikaisesti syntaktisen analyysin prosessissa? | Luento 16 Tietovisa (pisteytys) | |
3-5 Säännöllisistä lausekkeista äärellisiin automaattisiin | [Keskustelu 9-2] Ei-rekursiivisen ennustavan analysaattorin laajennus | Luento 17 Koodin optimointi 2 | |
3-6 Muunnos NFA:sta DFA:ksi | Luento 9 tietovisa (pisteytys) | < td height="30">||
> 3-7 Sanantunnistus DFA | Luento 10 Kieliopin ohjattu käännös 3 | 8–5 tietovirran analyysi | |
Tämä luento on simulaatioharjoitus (ei pisteytetty) td> | Tämän luennon luentomuistiinpanot (PPT-dokumentti) | 8-6 Saapumismääräisen arvon analyysi | |
Luentomuistiinpanot (PDF-tiedosto) | 5-7 Käännä rekursiivisen ennustavan analyysin aikana | 8-7 Kiinteän arvon yhtälön saavuttamisen laskeminen | tr>|
Oppitunti 3 Tietovisa (pisteytys) | 5-8L-attribuutilla määritetty alhaalta ylös -käännös | Tämän luennon simulaatioharjoitukset (ei pisteytystä) | |
Luentomuistiinpanot (PPT-asiakirja) | Tämän luennon simulaatioharjoitukset (ei pisteytetty) td> | Tämän luennon luentomuistiinpanot (PDF-tiedosto) | |
< p>Luento 4 Syntaksianalyysi 1 | Luentomuistiinpanot (PDF-tiedosto) | Oppitunti 17 Tietovisa (pisteytys) | |
4-1 ylhäältä Alaspäin suuntautuvan analyysin yleiskatsaus | [Keskustelu 10-1] Rekursiivisen ennustavan analysaattorin laajennus | Oppitunti 18 Koodin optimointi 3 | |
4-2 kieliopin muunnos p> | [Keskustelu 10-2] Kieliopin ja käännössuunnitelman muutos | Tämä luento Kurssin muistiinpanot (PPT-dokumentti) | |
4-3LL(1) Kielioppi | Oppitunti 10 Tietovisa (pisteytys) | 8–8 aktiivista muuttujaanalyysiä | < /tr>|
Tämän luennon simulaatioharjoitukset (ei pisteytystä) | Ei. 11 Keskustele keskitason koodisukupolvesta 1 | > 8–9 käytettävissä olevaa lausekeanalyysiä | |
Tämän luennon luentomuistiinpanot (PDF-tiedosto) | > 6-1 tyyppinen lauseke td> | Tämän luennon simulaatioharjoitukset (ei pisteytystä) | |
4-4 ENSIMMÄISEN sarjan ja SEURAA joukon laskenta | > 6-2 Lausuntolauseiden käännös | < p>Luentomuistiinpanot (PDF-dokumentti) | |
Luentomuistiinpanot (PPT-dokumentti) td> | Tämän luennon simulaatioharjoitukset (ei pisteytystä) | Luento 18 Tietovisa (pisteytys) | |
Luento 4 tietokilpailu (pisteytys) < /td> | Tämän luennon luentomuistiinpanot (PDF-dokumentti) | Luento 19: Koodin optimointi 4 | |
Luento 5 Syntaksianalyysi 2 | [Keskustelu 11-1] Miten lasketaan taulukon tyyppilauseke ja leveys? | Tämän luennon luentomuistiinpanot (PPT-dokumentti) | |
4-5 Rekursiivinen ennustava analyysimenetelmä | Luento 11 Tietovisa (pisteytys) | 8–10 dominointisolmua ja takareunaa | |
4-6 Ei-rekursiivinen ennustava analyysimenetelmä | Tämä luentokurssimoniste (PPT-dokumentti) | > 8-11 Luonnonkierto ja sen tunnistaminen | |
4-7 Virheiden käsittely ennakoivassa analyysissä | Oppitunti 12 Keskitason koodisukupolvi 2 | 8-12 Poista yleisiä yleisiä alilausekkeita ja kopioi lauseita | |
Tämä luento on simulaatioharjoitus (ei pisteytetty) | > 6-3 käännöstä yksinkertaisista tehtävälauseista | > 8-13 koodiliike | tr>|
Tämän luennon luentomuistiinpanot (PDF-dokumentti) | > 6-4 Taulukkoviittauksien käännös | 8-14 Induktiiviseen muutokseen vaikuttavan intensiteetin heikkeneminen | |
Oppitunti 5 Tietovisa (pisteytys) | Tämän luennon simulaatioharjoitukset (ei pisteytystä) | < td height="30">||
Tämän luennon luentomuistiinpanot (PPT-dokumentti ) | Tämän luennon luentomuistiinpanot (PDF-tiedosto) | Tämän luennon simulointi Harjoituskysymykset (ei pisteytetty) | |
Luento 6: Kieliopillinen analyysi 3 | [Keskustelu 12-1] Taulukkoelementtien osoitteiden käännös | Luentomuistiinpanot (PDF-dokumentti) | |
Luentomuistiinpanot (PPT-asiakirja) | Luento 12 tietokilpailu (pisteytys) | Luento 19 Tietovisa (pisteytys) ) | |
4–8 alhaalta ylös -analyysin yleiskatsaus | Luentomuistiinpanot (PPT-asiakirja) | Luento 20 Koodin luominen | |
4-9LR-analyysimenetelmän yleiskatsaus | Luento 13 Keskitason koodisukupolvi 3 | Tämän luennon luentomuistiinpanot (PPT-dokumentti) | |
> 4-10LR(0) analyysi | Tämän luennon luentomuistiinpanot (PPT-dokumentti) < /td> | 9-1-koodigeneraattorin päätehtävät | |
4 -11LR (0) analyysitaulukon rakennusalgoritmi | > 6–5 ohjausvirtalausetta ja sen SDT:tä | 9-2 Yksinkertainen kohdekonemalli | |
Tämän luennon simulaatioharjoitukset (ei pisteytetty) | 6-6 Boolen lauseke ja sen SDT | > 9-3 Komennon valinta | |
Luentomuistiinpanot (PDF-tiedosto) | 6-7 ohjausvirran käännösesimerkki | > 9-4 rekisterin valinta Valitse | |
[Keskustelu 6-1] Työntöautomaattien ja äärellisten automaattien välinen suhde | Tämän luennon simulaatioharjoitukset (ei pisteytystä) | 9-5 rekisterin valintatoiminto getReg Design | |
[Keskustelu 6-2] Tilatietojen ja kielioppisymbolitietojen välinen suhde LR-kielioppianalyysipinossa< /p> | Tämän luennon luentomuistiinpanot (PDF-tiedosto) | > 9-6 kurkistusreiän optimointi | |
Luento 6 Tietovisa (pisteytys) | Oppitunti 13 Tietovisa (pisteytys) | Tämän luennon simulaatioharjoitukset (ei pisteytystä) | tr>|
Luento 7 Syntaksianalyysi 4 | Luento 14 Keskitason koodisukupolvi 4 | Luentomuistiinpanot (PDF-dokumentti) | |
> 4-12SLR-analyysi | 6-8 Boolen lausekkeen jälkitäyttö | Luento 20 tietovisa (pisteytys) | |
> 4 -13LR (1) analyysi | (Huomaa: opetussuunnitelman asettelu on vasemmalta oikealle sarakkeesta) |
Esivalmistelut
Esitiedot
Ennen kuin opit kääntämisen periaatteet, sinun on valmisteltava edistyneet ohjelmointikielet, tietorakenteet, kokoelmat ja ammatillinen tietämys, kuten graafiteoria.
Oppimateriaalit
Kääntämisen periaatteiden oppimateriaaleja ovat "Kääntämisen periaatteet (2. painos): Undergraduate Teaching Edition" ja "Principles of Compilation".
> Kirjan nimi | < p>Kirjoittaja | ISBN | < p>Julkaisuaika | Julkaisija |
---|---|---|---|---|
"Käyttöperiaatteet (toinen painos): Peruskoulun opetuspainos" | > (US ) Alfred V.Aho | 9787111269298 | > 2009 | Koneteollisuuspuristin |
> Alfred V. Aho jne. | > ------ td> | 2006 | Pearson Education, Inc p> | |
"Käyttöperiaatteet" | Jiang Zongli et al. | 9787040290585 | > 2010 | Korkeakoululehdistö |
Taulukon sisällön viitemateriaalit |
Kunniapalkintoja
Vuonna 2018 Kiinan kansantasavalta hyväksyi kokoamisperiaatteen. Opetusministeriö tunnusti "kansallisen erinomaisen online-avoin" Kurssi".
Opettajan profiili
Chen Yin, nainen, Harbin Institute of Technologyn tietojenkäsittelyn laitoksen apulaisprofessori ja mestarituutori.
Guo Yong, mies, Harbin Institute of Technologyn lehtori.
Tu Zhiying, mies, Han-kansalainen, syntynyt 1983, tekniikan tohtori, apulaisprofessori ja Master-tutor Harbin Institute of Technologyn (Weihai) tietotekniikan ja teknologian korkeakoulussa.