Кіріспе
Niklaus Wirth енгізген бағдарламалау тілі – Pascal бағдарламалау тіліне ұқсас, бірақ одан әлдеқайда қарапайым, білім беру мақсатындағы бағдарламалау тілі ретінде жасалған. Ол компиляторды қалай құрастыруға болатынының мысалы болып табылады. Алғаш рет 1976 жылы Niklaus Wirth-тің «Алгоритмдер + Деректер құрылымы = Бағдарламалар» кітабында таныстырылды. Ол өте шектеулі тілдік құрылымдарға ие: нақты сандар жоқ, өте аз негізгі арифметикалық амалдар және "егер" және "көлемдік" блоктарынан басқа бақылау ағыны құрылымдары жоқ. Бұл шектеулер осы тілде нақты қолданбаларды жасауды қиын етеді, бірақ компиляторды ықшам және қарапайым күйде ұстауға көмектеседі.
the programming language introduced by Niklaus Wirth
PL/0 is a programming language, intended as an educational programming language, that is similar to but much simpler than Pascal, a general purpose programming language. It serves as an example of how to construct a compiler. It was originally introduced in the book, Algorithms + Data Structures = Programs, by Niklaus Wirth in 1976. It features quite limited language constructs: there are no real numbers, very few basic arithmetic operations and no control flow constructs other than "if" and "while" blocks. While these limitations make writing real applications in this language impractical, it helps the compiler remain compact and simple.
Білім беруде қолдану
Компиляторлар туралы негізгі мақала 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 тіліне екі символды да қосты, бірақ кітапта олардың мағынасын түсіндірмеді.