用Prolog定义和实现领域特定语言

定义和实施domänenspezifischer Sprachen mit Prolog

请始终使用此URN报价:urn:nbn:de:bvb:20-opus-301872
  • 当今编程语言的前景是多方面的。随着应用程序的多样性,充分寻址和指定所使用的程序的难度增加。这通常会导致新设计和实现特定于域的语言。它们使领域专家能够以他们喜欢的格式表达知识,从而产生更具可读性和简洁性的程序。由于逻辑编程语言Prolog的灵活声明性语法没有保留关键字,因此它特别适合于定义和嵌入当今编程语言的前景是多方面的。随着应用程序的多样性,充分寻址和指定所用程序的难度增加。这通常会导致新设计和实现特定于域的语言。它们使领域专家能够以他们喜欢的格式表达知识,从而产生更具可读性和简洁性的程序。由于逻辑编程语言Prolog具有灵活的声明性语法,没有保留关键字,因此特别适合定义和嵌入特定于域的语言。本文解决了将特定领域的语言集成到Prolog中时出现的问题和挑战。我们比较了这两种方法,从外部或内部对其进行定义,并为每种方法提供了辅助工具。形式语言的语法通常以扩展的巴科斯-诺尔形式定义。在这项工作中,我们在Prolog中将这种形式主义作为一种特定于域的语言来处理,并定义允许将其翻译为等价的定子句语法的术语扩展。我们提供了SWI-Prolog的包库(dcg4pt),它通过一个额外的参数来丰富它们,以自动处理术语的相应解析树。为了简化定子句语法的工作,我们通过基于网络的跟踪器来可视化它们的应用。特定领域语言的外部集成要求程序员保持语法、解析器和解释器同步。在许多情况下,通过提供适当的运算符定义,可以将特定于域的语言直接嵌入到Prolog中。此外,我们建议对Prolog进行语法扩展,以扩展其表达能力,例如用连接词逐字说明逻辑公式。这允许使用最初为Prolog编写的所有工具,例如带有语法高亮显示的代码短片和编辑器。我们介绍了用Prolog编写的包库(plammar),它是Prolog源代码的标准兼容解析器。它能够从示例语句中自动推断出所需的运算符定义及其类和前例,以及所需的Prolog语言扩展。因此,我们可以自动回答这个问题:是否可以将这些示例句子建模为有效的Prolog子句,以及如何建模?我们讨论并应用这两种方法对几种特定于域的语言进行内部和外部集成,即扩展的Backus–Naur形式、GraphQL、XPath和受控自然语言,以if-then形式表示专家规则。创建的带有库(dcg4pt)和库(plammar)的工具链为静态Prolog源代码分析提供了新的应用机会,我们也将介绍这一点。显示更多显示较少
  • Die Landschat der heutigen Programmiersprachen is vielfältig公司。Mit ihren unterschiedlichen Anwendungsbereichen steigt zuglech die Schwierigkeit,die eingesetzten Program adäquat anzusprechen und zu spezifizieren。Immer häufiger werden hierfür domänenspezifische Sprachen entworfen und implementiert公司。Sieermöglichen Domänenexperten,Wissen in ihrem bevorzugten Format auszudrücken,was zu lesbareren Programmen führt。Durch ihre flexible und deklarative语法ohne vorbelegte Schlüsselwörter ist die logische Programmsprache Prolog besondersDie Landschat der heutigen Programmiersprachen is vielfältig公司。Mit ihren unterschiedlichen Anwendungsbereichen steigt zuglech die Schwierigkeit,die eingesetzten Program adäquat anzusprechen und zu spezifizieren。Immer häufiger werden hierfür domänenspezifische Sprachen entworfen und implementiert公司。Sieermöglichen Domänenexperten,Wissen in ihrem bevorzugten Format auszudrücken,was zu lesbareren Programmen führt。Durch ihre flexible und deklarative语法ohne vorbelegte Schlüsselwörter ist die logische Programmsprache Prolog besonders geeignet,um domänenspezifische Sprachen zu definieren und einzubetten。Diese Arbeit接手了Prolog ergeben的Fragen和Herausforderungen的sich mit,在Prolog rgeben的集成von domänenspezifischen Sprachen。Wir vergleichen die zwei Ansätze,sie entweder extern oder intern zu definieren,und stellen jeweils Hilfsmittel zur Verfügung。Die Grammatik einer formalen Sprache wird häufig in der erweiterten Backus–Naur–表单定义者。在Prolog和definieren Termexpansien的Arbeit als eine domänenspezifische Sprache中,形式主义是一种形式主义,在Prolog zuübersetzen的Grammars für中,形式主义是一种形式主义。Durch das Modul库(dcg4pt)werden sie um ein zusätzliches Argument erweitert,das den Syntaxbaum eines Terms automaticsch erzeugt。Um die Arbeit mit Definite Clause Grammars zu erleichtern,visualisieren wir hire Anwendung in einem webbasierten Tracer。Meist können domänenspezifische Sprachen jedoch auch mittels passender Operator在Prolog eingebettet werden中的定义指南。这是一个很好的例子。在dieser Arbeit stellen wir den standardkonformen Prolog-Parser库(plammar)vor中。Er is in Prolog geschrieben und der Lage,aus Beispielsätzen automatisch die for derlichen Operatoren mit ihren Klassen und Präzedenzen abzuleiten。Um die Ausdruckskraft von Prolog noch zu erweitern,schlagen wir Ergänzungen zum ISO标准vor。Sie erlauben es,weitere Sprachen direct einzubinden,und werden ebenfalls von library。这就是bspw。möglich,logische Formeln direct mit den bekannten Symbolen für Konjunktion,Disjunktion公司。als序言-anzugeben程序。Beide Ansätze der internen und externen Integration werden für mehrere domänen-spezifische Sprachen diskutiert und beispielhaft für-GraphQL,XPath,die erweiterte Backus–Naur–Form sowie Expertenregeln in Wenn–Dann–Form umgesetzt。vorgestellten Werkzeuge um图书馆(dcg4pt)和图书馆(plammar)都是Prolog Programmen的统计分析。显示更多显示较少

下载全文文件

附加勤务

在推特上分享 搜索谷歌学者 统计
Metadaten公司
作者:法尔科·诺加茨ORCiD公司接地
URN:urn:nbn:de:bvb:20-opus-301872
文件类型:博士论文
授予机构:瓦茨堡大学(Universityät Würzburg,Fakultät für Mathematik und Informatik)
学院:Fakultät für Mathematik und Informatik/法国信息研究所
裁判:Dietmar Seipel教授博士
期末考试日期:2022/10/31
语言:英语
竣工年份:2023
内政部:https://doi.org/10.25972/OPUS-30187
杜威十进制分类法:0 Informatik、Informationswissenschaft、allgemeine Werke/00 Informatick、Wissen、Systeme/004 Datenverabeitung;信息学
GND关键字:PROLOG<Programmiersprache>;Domänenspezifische雪碧
标签:定冠词文法;知识表示;逻辑程序设计
发布日期:2023/02/01
许可证(德语):许可证徽标CC BY-ND:Creative-Commons-Lizenz:Namensnennung,Keine Bearbeitungen 4.0国际