Кіріспе

Niklaus Wirth енгізген бағдарламалау тілі – Pascal бағдарламалау тіліне ұқсас, бірақ одан әлдеқайда қарапайым, білім беру мақсатындағы бағдарламалау тілі ретінде жасалған. Ол компиляторды қалай құрастыруға болатынының мысалы болып табылады. Алғаш рет 1976 жылы Niklaus Wirth-тің «Алгоритмдер + Деректер құрылымы = Бағдарламалар» кітабында таныстырылды. Ол өте шектеулі тілдік құрылымдарға ие: нақты сандар жоқ, өте аз негізгі арифметикалық амалдар және "егер" және "көлемдік" блоктарынан басқа бақылау ағыны құрылымдары жоқ. Бұл шектеулер осы тілде нақты қолданбаларды жасауды қиын етеді, бірақ компиляторды ықшам және қарапайым күйде ұстауға көмектеседі.

Білім беруде қолдану

Компиляторлар туралы негізгі мақала PL/0-ны бірнеше маңызды ұғымдарды (кезеңдемелі жетілдіру, рекурсивті түсіп кету талдауы, EBNF, P коды, T диаграммалары) салаға енгізуі және осы ұғымдарды қолдануды студенттерге үйретуі үшін құрметтейді. Соңғы 30 жылда PL/0 негізінде компилятор құрастыру курстарында оқытылатын көптеген университеттер Вирттің техникаларын қатаң түрде қолданып келді (төмендегі сілтемелерді қараңыз). Бірнеше жыл бұрын университеттер классикалық рекурсивті түсіп кету талдауын (дегенмен классикалық) Unix тәрізді lex және yacc құралдарын қолдану арқылы Вирт белгілеген бағыттан ауытқыды. Соңғы кезде осы бағытта жүзеге асырылған (PL/0 Language Tools) жобасы объектіге бағытталған бағдарламалау және дизайн үлгілері сияқты қазіргі заманғы ұғымдарды заманауи сценарийлік тілмен (Python) біріктіріп, студенттерге бастапқы кодты қазіргі заманғы бағдарламалау стилінде қарауға мүмкіндік берді.

Компилятор құрылымы

1976 жылдың желтоқсанында Вирт компилятор құрылысы туралы шағын кітапша жазды, онда PL/0 компиляторының толық бастапқы коды келтірілген. Жоғарыдағы синтаксис ережелері Вирттің "Compilerbau" кітабының бірінші басылымынан алынды. Осы кітаптың кейінгі басылымдарында (оның үздіксіз зерттеулерінің нәтижесінде) Вирт PL/0 синтаксисін өзгертті. Ол const және procedure сияқты түйін сөздердің жазылуын үлкен әріптерге ауыстырды. Бұл өзгеріс PL/0-ді Modula 2-ге жақындатты. Сонымен қатар, Вирттің досы және әріптесі К. А. Р. Хоар өте әсерлі қарым-қатынас жасайтын тізбекті процестер концепциясымен айналысып жатты, ол коммуникациялық примитивтерді белгілеу үшін әңгірме белгісін ! және сұрақ белгісін ? қолданды. Вирт PL/0 тіліне екі символды да қосты, бірақ кітапта олардың мағынасын түсіндірмеді.