XPL - XPL

XPL Бұл бағдарламалау тілі негізінде PL / I, портативті бір жолды компилятор өз тілінде жазылған және а талдаушы генератор ұқсас компиляторларды басқа тілдерге оңай енгізуге арналған құрал. XPL 1967 жылы компиляторды жобалау принциптерін үйрету әдісі және студенттерге өз тілдеріне компилятор құрудың бастапқы нүктесі ретінде жасалған.

XPL құрастырған және жүзеге асырған Уильям М. МакКиман[1][2] , Дэвид Б. Уортман , Джеймс Дж. Хорнинг және басқалары Стэнфорд университеті. XPL алғаш рет 1968 жылы жарияланды Бірлескен күзгі компьютерлік конференция. Әдістері мен құрастырушысы 1971 жылғы оқулықта егжей-тегжейлі сипатталған Компилятор-генератор.

Олар біріктірілген жұмысты «компилятор генераторы» деп атады. Бірақ бұл жаңа тілге немесе жаңа мақсатқа компилятор құру үшін тілге немесе мақсатқа арналған бағдарламалаудың қажет еместігін немесе мүлдем болмауын білдіреді. XPL үшін жақсы белгі - а аудармашы жазу жүйесі. Бұл жаңа немесе өзгертілген бағдарламалау коды бар компилятор жазуға көмектеседі.

Тіл

XPL тілі - бұл қарапайым, шағын, тиімді PL / I диалектісі, негізінен компиляторларды жазуға арналған. XPL тілі қол жетімді болғаннан кейін басқа мақсаттарда қолданылды. XPL-ді қарапайым компилятор заманауи машиналардың көбіне оңай құрастыра алады. Ішкі компиляторды XPL-де оңай жазуға болады, ал кодты оқуға оңай. PL / I тілін an IBM комитет 1964 ж. кеңейтілген тіл ретінде Фортран, COBOL, және АЛГОЛ және тұтынушының барлық қажеттіліктерін қанағаттандыру. Бұл өршіл мақсаттар PL / I кешенін жасады, оны жүзеге асыру қиын, ал кейде қолданған кезде таңқаларлық жағдай туғызды. XPL - толық тілдің шағын диалектісі. XPL-де PL / I-де табылмаған бір қосымша мүмкіндік бар: а STRING динамикалық ұзындықтағы деректер типі. Жол мәндері тек жеке мәтін түрінде өмір сүреді үйінді автоматты жад кеңістігі қоқыс шығару ескірген мәндер. Қарапайым компилятордың көп бөлігі енгізу мәтіні мен шығыс байт ағындарын басқару болып табылады, сондықтан бұл мүмкіндік XPL негізіндегі компиляторларды жеңілдетуге көмектеседі.

Компоненттер

XCOM

Деп аталатын XPL компиляторы XCOM, кесте арқылы басқарылатын бір реттік компилятор талдаушы және қарапайым кодты құру техникасы. XCOM нұсқалары әртүрлі машина құрылымдары, сол мақсаттар үшін қолмен жазылған әр түрлі кодты құру модульдерін қолдану. Бастапқы мақсат болды IBM System / 360, бұл дұрыс жиынтығы IBM System / 370, IBM System / 390 және IBM System z.

XCOM XPL бастапқы кодынан құрастырылады, бірақ XCOM өзі XPL-де жазылғандықтан, ол өзін өзі құрастыра алады - бұл өздігінен құрастыратын компилятор, басқа компиляторларға тәуелді емес. Бірнеше әйгілі тілдерде компиляторлар бар Берроуз B5000 Алгол, PL / I, C, LISP, және Java. Мұндай компиляторларды жасау - тауық пен жұмыртқаның жұмбақтары. Тілді алдымен басқа тілде жазылған уақытша компилятор немесе тіпті аудармашы (көбінесе аралық кодтың аудармашысы жүзеге асырады) BCPL жасай алады ішкі код немесе O-код ).

XCOM Alpool бағдарламасы ретінде Burroughs машиналарында жұмыс істей бастайды, XPL бастапқы кодын System / 360 машина кодына аударады. XPL командасы қолмен өзінің Algol бастапқы кодын XPL бастапқы кодына айналдырды. Содан кейін XCOM-дің XPL нұсқасы Burroughs-те жинақталды, ол System / 360 машиналары үшін өздігінен құрастырылатын XCOM құрды. Содан кейін Algol нұсқасы лақтырылды және барлық жақсартулар тек XPL нұсқасында болды. Бұл деп аталады жүктеу құрастырушы. XPL авторлары ойлап тапты құлпытас диаграммасы немесе жүктеу процесін құжаттау үшін T-диаграммасы.

Қайта жоспарлау машинаның жаңа архитектурасына арналған компилятор - ұқсас жаттығу, тек код жасау модульдерін өзгерту қажет.

XCOM - бұл бір реттік компилятор (бірақ алға жіберілген тармақтарға, циклдарға және басқа анықталған жағдайларға арналған кодты түзету процесі бар). Ол шығарады машина коды өйткені әрбір сөйлем үшін ол бүкіл процедураны немесе бүкіл бағдарламаны талдағанға дейін күткеннен гөрі, сөйлем ішіндегі әрбір грамматикалық ереже танылады. Бағдарламалық талдаулар немесе басқа қажетті аралық бағдарламалар жоқ, цикл бойынша немесе процедура бойынша оңтайландыру жоқ. Алайда XCOM орындайды ойықтарды оңтайландыру. Әрбір грамматикалық ережеге код жасау реакциясы осы ережеге қоса беріледі. Бұл жедел тәсіл тиімсіз кодқа және машиналық регистрлерді тиімсіз пайдалануға әкелуі мүмкін. Бұлар іске асырудың тиімділігімен өтеледі, атап айтқанда бұрын айтылған динамикалық жолдарды қолдану: компиляция кезінде мәтінді өңдеу кезінде субстрингтік операциялар жиі орындалады. Бұлар бүтін санға берілген тапсырма сияқты жылдам; нақты ішкі жол жылжытылмаған. Қысқаша айтқанда, қысқа курста оқыту тез, қарапайым, қарапайым естеліктерге сәйкес келеді және әртүрлі тілдерге немесе әр түрлі мақсатты машиналарға өзгерту оңай.

ТАЛДАУШЫ

XCOM компиляторы қолмен жазылған лексикалық сканер және механикалық түрде жасалған талдаушы. Компилятордың енгізу тілінің синтаксисі (бұл жағдайда XPL) жеңілдетілген түрде сипатталады BNF грамматикасы. XPL-дің грамматикалық анализатор құралы ТАЛДАУШЫ немесе ХА бұл синтаксис ережелерінің барлық заңды тіркесімдерін және оларды қалай ажырату керектігін сипаттайтын мәліметтер кестесінің жиынтығына айналады. Бұл кестені құру қадамы тіл өзгерген кезде ғана қайта жасалады. Компилятор жұмыс істеген кезде, берілгендер кестесін енгізу тіліне талдау жасау және жауап беру үшін тілге тәуелді емес кішігірім алгоритм пайдаланады. Кесте арқылы басқарылатын талдаушының бұл стилі, әдетте, толығымен қолмен жазылғаннан гөрі оңайырақ жазылады рекурсивті шығу талдаушы. XCOM а төменнен жоғарыға талдау компилятор синтаксистің қандай ережесімен кездескендігі туралы шешімді сол сөз тіркесінің оң жақ шетіне дейін көре алмайтын әдіс. Бұл бағдарламалау тілдерінің кең спектрін қолданады жоғарыдан төмен әдістер, онда компилятор белгілі бір синтаксистік ережені ертерек болжауы керек немесе ол сөз тіркесінің сол жағын ғана көреді.

Жұмыс уақыты

XPL минималды қамтиды жұмыс уақытын қолдау кітапханасы XPL жол мәндерін бөлу және қоқыс жинау үшін. Бұл кітапхананың бастапқы коды XPL-де жазылған барлық бағдарламаларға енгізілуі керек.

СКЕЛЕТОН

XPL компиляторын жазу жүйесінің соңғы бөлігі аталған мысал компиляторы болып табылады СКЕЛЕТОН. Бұл XPL-дің толық грамматикасының орнына ойыншықтар грамматикасының мысалы үшін талдау кестелері бар XCOM ғана. Бұл кейбір жаңа тілдер үшін компилятор құрудың бастапқы нүктесі, егер бұл тіл XPL-ден көп ерекшеленетін болса.

XMON

XPL монитордың басқаруымен іске қосылады, XMON, бұл осы жүйенің операциялық жүйеге ғана тән бөлігі және ол XCOM өзі үшін немесе XCOM көмегімен жасалған кез-келген бағдарламалар үшін «жүктеуші» рөлін атқарады, сонымен қатар XCOM пайдалану үшін үш қосалқы сақтау құрылғысын ұсынады және олар тікелей қол жетімді блок нөмірі бойынша. Бастапқыда жарияланған XMON оңтайландырылды IBM 2311s. XMON параметрі FILE = мониторға блок өлшемдері үлкен басқа дискілерді тиімді пайдалануға мүмкіндік берді. [3] Дискілердің жұмыс блогының өлшемі сонымен қатар inXCOM компиляция уақытының тұрақты шамасы болды. [4]

XMON дискіге тікелей қол жеткізудің өте қарапайым стратегиясын қолданды. ЕСКЕРТПЕ дискілік тректің мекен-жайын ұсынды. POINT келесі дискіні оқитын / жазатын орынды ЕСКЕРТПЕ қайтаратын мекен-жай етіп орнатады. Бұл стратегия XMON-ді басқа ОЖ-дерге оңай тасымалдауға мүмкіндік беру және сол кездегі қол жетімді дискілердің анағұрлым күрделі нұсқаларын болдырмау үшін қабылданды. [5]

XMON-ді NOTE, POINT және READ / WRITE дискілерінің қарапайым қолдануларынан түрлендіру - бір трекке дәл 1 блоктан - EXCP (яғни, жаңа жазбалар жазу / жасау) және XDAP (яғни, ескі жазбаларды оқу / жаңарту) - n мақсатты құрылғының физикалық сипаттамаларынан жұмыс уақытында есептелетін және 1-ден едәуір артық болуы мүмкін бір жолға арналған n блоктан тұратын - қолданбаның айтарлықтай жақсаруына және жүйенің қосымша шығындарының төмендеуіне қол жеткізеді.

Бастапқыда әзірленген болса да OS / 360, XMON (немесе түпнұсқа ЕСКЕРТПЕ, POINT және READ / WRITE енгізу; немесе EXCP және XDAP жақсарту) кейін шығарылған IBM OS жүйелерінде, соның ішінде OS / 370, XA, OS / 390 және z / OS, әдетте ешқандай өзгеріссіз.

Саралау

Бастапқыда XCOM қазір ескірген төменнен жоғарыға талдау кестесінің әдісін қолданды Аралас стратегияның басымдығы, XPL командасы ойлап тапты (дегенмен ресми түрде шығарылған нұсқада MSP талдаушысы сақталады және жоқ кейін шығарылған «ойық ойықтарын оңтайландыру» және олардан тыс дамыған қосымша мәліметтер типтерін қосыңыз түпнұсқа іске асыру тобы.) MSP - бұл жалпылау қарапайым басымдылықты талдаушы ойлап тапқан әдіс Никлаус Вирт үшін PL360. Қарапайым басымдылықтың өзі - қарапайым, қарапайым дегенді жалпылау оператордың басымдығы A + B * (C + D) -E сияқты өрнектерге жақсы әсер ететін әдістер. MSP кестелерінде тілдік белгілердің күтілетін үштіктерінің тізімі бар. Бұл тізім грамматикалық кубтың көлеміне қарай ұлғаяды және әдеттегі толық бағдарламалау тілдері үшін үлкен болады. XPL шығарған компиляторларды есте сақтау қабілеті шектеулі 70-жылдардағы шағын компьютерлерге сыйғызу қиын болды.[nb 1] MSP барлық ықтимал грамматикаларды басқаруға жеткіліксіз. Бұл тіл дизайнері тілдің кең қолданылуынан бұрын MSP шектеулеріне сәйкес келетін тіл анықтамасын өзгерте алған кезде ғана қолданылады.

The Торонто университеті кейіннен XCOM және XA-ны ауыстырып, орнына нұсқасын қолданды Дональд Кнут Келіңіздер LR талдауышы төменнен жоғары әдіс.[nb 2] XCOM нұсқасы деп аталады Қарапайым LR немесе SLR. Ол MSP-ге қарағанда көп грамматикамен айналысады, бірақ онша көп емес грамматиканы қолданады ЛАЛР немесе толық LR (1). LR (1) -ден айырмашылықтар көбінесе кесте генераторының алгоритмдерінде, компиляция уақыты талдаушы әдісінде емес. XCOM және XA Unix пен оның қол жетімділігінен бұрын пайда болды yacc талдаушы генератор құралы. XA және yacc ұқсас мақсаттарға ие.

XPL ашық көзі болып табылады. XPL жүйесінің / 360 нұсқасы IBM арқылы таратылды БӨЛІС пайдаланушылар ұйымы. Басқа топтар XPL-ді 1970 жылдардағы көптеген ірі машиналарға көшірді. Әр түрлі топтар XPL-ді кеңейтті немесе басқа орташа өлшемді тілдерді жүзеге асыру үшін XPL-ді қолданды.

Қолданбалар

XPL әртүрлі тілдер мен жүйелерге арналған бірқатар компиляторларды жасау үшін қолданылған.

Ағымдағы күй

XPL ағымдағы компьютерлерге тасымалдануды жалғастыруда. X86 /FreeBSD порт 2000 жылы жасалды,[7] x86 /Linux 2015 жылы порт, ал XPL-ден C аудармашысы 2017 жылы.[8][9]

Библиография

  • Александр, В.Г. және Уортман, Д.Б. «XPL бағдарламаларының статикалық және динамикалық сипаттамалары». IEEE Computer 1975 ж. Қараша; 41-46.
  • Анкона, Массимо, Додеро, Габриэлла және Дюранте, Эрколь Луиджи «Аудармашы жазу жүйесін қолданатын микропроцессорларға арналған кросс бағдарламалық жасақтама жасау» 1979 ж. 399-402 бағдарламалық жасақтама бойынша 4-ші халықаралық конференция материалдары.
  • Kamnitzer, S. H. «IBPL / 360-тан UNIVAC 1100-ге XPL жүктеу.» ACM SIGPLAN хабарламалары 1975 жылғы мамыр: 14-20.
  • Каргер, Пол А. «Мультиктерге арналған XPL-ді енгізу». СБ тезисі. Массачусетс технологиялық институты, 1972 ж.
  • Клумпп, Аллан Р. «Ғарыш станциясының ұшу бағдарламасы: Hal / S немесе Ada?» Компьютерлік наурыз 1985: 20-28.
  • Лич, Джеффри және Голд, Гельмут. «XPL-ді XDS Sigma 5 компьютеріне жүктеу.» Бағдарламалық жасақтама практикасы мен тәжірибесі 3 (1973): 235-244.
  • МакКиман, Уильям М., Хорнинг, Джеймс Дж. Және Уортман, Дэвид Б. Құрастырушы-генератор. Englewood Cliffs, NJ: Prentice-Hall, 1970.
  • McKeeman, W. M., Horning, James J., Nelson, E. C. және Wortman, D. B. «XPL компилятор генераторы жүйесі». AFIPS конференциясының материалдары: 1968 күзгі бірлескен компьютерлік конференция. Вашингтон: Томпсон кітап компаниясы. 1968: 617-635.
  • Ситтон, Гари А., Кендрик, Томас А. және Каррик, кіші, А. Гил. «PL / EXUS тілі және виртуалды машинасы» ACM-IEEE жоғары деңгейлі компьютерлік архитектура симпозиумының материалдары, 1973 ж., Қараша: 124-130.
  • Слимик, Джон «Жүйелерді енгізудің қолданыстағы тілдері: бір қолданушының көзқарасы» SIGPLAN тілді симпозиумның жүйені енгізу үшін 1971 ж. Қазан: 20-28.
  • Storm, Mark W., and Polk, Jim A. «XPL негізіндегі компиляторлық генераторлар жүйесін пайдалану» 14 жылдық ACM Оңтүстік-Шығыс аймақтық конференциясының материалдары 1976 ж. Сәуір: 19-26.
  • Уортман, Д.Б. «XPL енгізу тізімі.» ACM SIGPLAN хабарламалары 1978 жылғы қаңтар: 70-74.

Сондай-ақ қараңыз

Ескертулер

  1. ^ Шынында да, қолмен жазылған LALR-ға ұқсас анализаторды және өндірілген талдау кестелері үшін әсіресе тиімді «ыдырау» процедурасын қолдана отырып, бүкіл XPL тілі үшін 2 МГц жиіліктегі парсер жасау мүмкін болды. Z80 тек 48 килобайт ішкі жады бар микрокомпьютер (DRAM ) және тек 100 килобайт сыртқы жады (дискета ) астында жүгіру CP / M. Бұл нұсқа 1980 жылы аяқталды. MacOS (9, кейінірек X) жүйесіне көшіру аяқталды.
  2. ^ Бұл нұсқа жалпы қоғамдастыққа шығарылған ЕМЕС, сондықтан оның авторларына немесе олардың мекемелеріне жеке болып қалады. SLR (1) немесе LPLR (1) XPL тарату туралы қайталанған сұраныстарды оның авторлары елемеді.

Әдебиеттер тізімі

  1. ^ Шустек, Лен (2016-08-02). «Өз сөзімен: Гэри Килдалл». Керемет адамдар. Компьютер тарихы мұражайы.
  2. ^ Килдалл, Гари Арлен (2016-08-02) [1993]. Килдалл, Скотт; Килдалл, Кристин (ред.). «Компьютерлік байланыстар: адамдар, орындар және дербес компьютерлер индустриясының эволюциясы» (PDF) (Қолжазба, 1 бөлім). Kildall отбасы. Мұрағатталды (PDF) түпнұсқасынан 2020-06-24. Алынған 2016-11-17. Журналға сілтеме жасау қажет | журнал = (Көмектесіңдер)
  3. ^ Компилятор генераторы беті 251
  4. ^ Компилятор-генератор, 372 бет
  5. ^ Компилятор генераторының қосымшасы A1,7
  6. ^ «Hal / S дамуы». Торонто университетінің Информатика кафедрасы.
  7. ^ Боденстаб, Дэйв. «Дэйв Боденстабтың басты беті». Алынған 6 ақпан, 2015.
  8. ^ Weaver, Daniel E. (21 қараша, 2017). «XPL компиляторы: XPL-ден C аудармашысы». SourceForge. La Jolla, CA: Slashdot БАҚ. Алынған 6 желтоқсан, 2017.
  9. ^ аяқ киім (Daniel E. Weaver) (21 қараша, 2017). «XPL компиляторының алғашқы шығарылымын жариялау». Жаңалықтар тобыкомпиляторлар. Usenet:  [email protected]. Алынған 6 желтоқсан, 2017.
  • МакКиман, Уильям Маршалл; Хорнинг, Джеймс Дж .; және Уортман, Дэвид Б., Компилятор-генератор (1971), ISBN  978-0-13-155077-3. XPL жүйесінің барлық компоненттерінің бастапқы кодын қоса, нақты анықтама.

Сыртқы сілтемелер