Жоғары дәрежелі абстрактілі синтаксис - Higher-order abstract syntax

Жылы Информатика, жоғары дәрежелі абстрактілі синтаксис (қысқартылған HOAS) бейнелеудің әдістемесі болып табылады синтаксистік ағаштар айнымалысы бар тілдер үшін байланыстырғыштар.

Бірінші ретті абстрактілі синтаксиске қатысы

Синтаксистік дерексіз ағаш реферат өйткені бұл математикалық объект өзінің табиғаты бойынша белгілі бір құрылымға ие. Мысалы, in бірінші ретті абстрактілі синтаксис (FOAS) әдетте қолданылатын ағаштар құрастырушылар, ағаш құрылымы субэкпрессия қатынасын білдіреді, яғни бағдарламаларды ажырату үшін жақша қажет емес (олар сияқты, бетон синтаксисі ). HOAS қосымша құрылымды ашады: айнымалылар мен олардың байланысу учаскелері арасындағы байланыс. FOAS ұсыныстарында айнымалы әдетте сәйкестендіргішпен ұсынылады, байланыстыру алаңы мен пайдалану арасындағы қатынасты пайдалану арқылы көрсетіледі. бірдей идентификатор. HOAS көмегімен айнымалының аты жоқ; айнымалының әрбір қолданылуы тікелей байланыстыру алаңына қатысты.

Бұл техниканың пайдалы болуының бірқатар себептері бар. Біріншіден, бұл бағдарламаның байланыстырушы құрылымын айқын етеді: FOAS ұсынуында оператордың басымдылығын түсіндірудің қажеті жоқ сияқты, HOAS ұсынылымын түсіндіру үшін міндетті ережелер мен ауқымның болуы қажет емес. Екіншіден, бағдарламалар альфа-баламасы (шектелген айнымалылардың аттарымен ғана ерекшеленетін) HOAS-да эквиваленттілікті тексеруді тиімді ете алатын бірдей көріністерге ие.

Іске асыру

HOAS-ті іске асыруға болатын бір математикалық объект - бұл график мұндағы айнымалылар олардың байланысу тораптарымен байланысты шеттері. HOAS-ті (мысалы, компиляторларда) жүзеге асырудың тағы бір танымал әдісі де Брюйн индекстері.

Логикалық шеңберде қолданыңыз

Доменінде логикалық шеңберлер, жоғары дәрежелі абстрактілі синтаксис термині әдетте байланыстырғыштарды қолданатын белгілі бір көрініске сілтеме жасау үшін қолданылады мета тіл байланыстырушы құрылымын кодтау үшін объект тілі.

Мысалы, логикалық негіз LF стрелка (→) типіне ие λ-конструкциясы бар. Объект тілі құрылымының бірінші ретті кодтауы рұқсат етіңіз болар еді (пайдалану Он екі синтаксис):

exp: type.var: type.v: var -> exp.let: exp -> var -> exp -> exp.

Мұнда, эксп объектілік тілдік өрнектердің отбасы болып табылады. Отбасы var - айнымалылардың көрінісі (мүмкін көрсетілмеген табиғи сандар түрінде орындалады); тұрақты v айнымалылардың өрнектер екендігіне куә болады. Тұрақты рұқсат етіңіз бұл үш аргументті алатын өрнек: өрнек (ол байланыстырылған), айнымалы (ол байланысты) және басқа өрнек (айнымалының ішінде болатындығы).

The канондық Сол объект тілінің HOAS өкілдігі:

exp: type.let: exp -> (exp -> exp) -> exp.

Бұл ұсыныста объект деңгейінің айнымалылары айқын көрінбейді. Тұрақты рұқсат етіңіз өрнек алады (ол байланыстырылған) және мета деңгей функциясы экспэксп (рұқсат денесі). Бұл функция жоғары ретті бөлім: еркін айнымалысы бар өрнек өрнегі ретінде ұсынылған тесіктер қолданылған кезде мета деңгей функциясымен толтырылады. Нақты мысал ретінде біз объект деңгейінің өрнегін құрар едік

x = 1 + 2in x + 3 болсын

жоғарыда көрсетілген HOAS қолтаңбасын қолдана отырып (сандар мен қосылыстар үшін табиғи конструкторларды ескере отырып)

болсын (плюс 1 2) ([у] плюс у 3)

қайда [y] e функциясы үшін Twelf синтаксисі .

Бұл нақты ұсыныстың жоғарыдағыдан артықшылығы бар: мысалы, байланыстырудың мета деңгейіндегі түсінігін қайта қолдану арқылы кодтау типті сақтау сияқты қасиеттерге ие ауыстыру оларды анықтау / дәлелдеу қажеттілігінсіз. Осылайша, HOAS қолдану мөлшерін күрт азайтуға мүмкіндік береді қазандық коды кодтаумен байланыстырумен байланысты.

Жоғары деңгейдегі абстрактілі синтаксис, әдетте, объектілік тілдің айнымалыларын математикалық мағынадағы айнымалылар деп түсінуге болатын жағдайда ғана қолданылады (яғни кейбір домендердің ерікті мүшелеріне арналған қосымшалар ретінде). Бұл жиі кездеседі, бірақ әрқашан емес: мысалы, HOAS кодтауынан артықшылықтар болмайды динамикалық ауқым сияқты кейбір диалектілерінде кездеседі Лисп масштабты динамикалық айнымалылар математикалық айнымалылар сияқты әрекет етпейді.

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

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