×

解析操作的语义。 (英语) 兹比尔1283.68202

摘要:无论是手工构建的还是通过解析器生成器工具自动构建的解析器,除了对输入进行纯粹的语法分析之外,通常还需要计算一些有用的语义信息。语义动作可以手动添加到解析代码中,或者解析器生成器可以有自己的语法来用语义动作注释语法规则。在本文中,我们从函数编程的角度来看这些操作。我们使用大多数函数式编程语言的语义中的概念,并对其进行调整以赋予解析器操作的含义。具体来说,该语义是受lambda calculi的范畴语义和编程语言中对效果语义使用前单体范畴的启发。然后将此框架应用于我们的主要示例,即语法转换以消除左递归。消左的句法转换导致语法动作相应的语义转换。我们证明了语义转换的正确性,并将其与连续传递风格联系起来,这是lambda calculi和函数编程中广泛研究的一种转换。作为解析器生成器输入语言的理想化,我们定义了一个具有一阶函数的调用-值演算和一个类型-效果系统,其中的效果由语法符号序列给出。然后将左递归消去法的描述扩展到这个微积分中。

MSC公司:

第68季度55 计算理论中的语义学
2012年第68季度 语法和重写系统
68甲15 编程语言理论
68N17号 逻辑编程
PDF格式BibTeX公司 XML格式引用
全文: DOI程序

参考文献:

[1] Goguen,J.A。;撒切尔,J.W。;瓦格纳,E.G。;Wright,J.B.,初始代数语义和连续代数,ACM杂志,24,68-95(1977)·Zbl 0359.68018号
[2] Aho,A.V。;Sethi,R。;Ullman,J.D.,《编译器-原理、技术和工具》(1985),艾迪森·卫斯理
[3] Power,J。;Robinson,E.,前单体范畴和计算概念,计算机科学中的数学结构,7453-468(1997)·Zbl 0897.18002号
[5] Hughes,J.,《将单数概括为箭头》,《计算机编程科学》,37,67-111(2000)·Zbl 0954.68034号
[6] Paterson,R.,箭头的新符号,(ICFP(2001),ACM)·兹比尔1323.68147
[7] 帕尔,T。;Fisher,K.,LL(*):ANTLR解析器生成器的基础(PLDI(2011),ACM)
[8] Gunther,C.A.,《程序设计语言的语义》(1992),麻省理工学院出版社·兹伯利0823.68059
[9] Thielecke,H.,解析动作的功能语义,以及作为延续传递的左递归消除,(PPDP’12第14届声明性编程原理与实践研讨会论文集(2012),ACM出版社),91-102
[10] Steele,G.,Rabbit:A Compiler for Scheme,技术报告AI TR 474,麻省理工学院人工智能实验室(1978)
[11] Plotkin,G.D.,Call-by-name,Call-by-value,和(lambda)-演算,理论计算机科学,1125-159(1975)·兹比尔0325.68006
[13] Mac Lane,S.,《工作数学家的类别》(1971),斯普林格出版社·Zbl 0232.18001号
[14] Power,J。;Thielecke,H.,《环境、延续语义和索引类别》(Abadi,M.;Ito,T.,Proceedings TACS’97)。《TACS’97会议记录》,LNCS,第1281卷(1997年),施普林格出版社,391-414·Zbl 0882.18007号
[15] Lambek,J.,句子结构的数学,《美国数学月刊》,65,154-170(1958)·Zbl 0080.00702号
[16] Power,J。;Thielecke,H.,Closed Freyd-和kappa-categories,(Wiedermann,J.;van Emde Boas,P。;尼尔森,M.,《第26届国际自动化、语言和编程学术讨论会论文集》。第26届国际自动化、语言和编程学术讨论会论文集,ICALP。第26届国际自动化、语言和编程学术讨论会论文集。第26届国际自动化学术讨论会论文集,语言与编程,ICALP,LNCS,第1644卷(1999),Springer-Verlag),625-634·Zbl 0938.03026号
[17] Landin,P.J.,表达式的机械评估,《计算机杂志》,6308-320(1964)·Zbl 0122.36106号
[18] Felleisen,M。;Friedman,D.P.,《控制操作符、SECD机器和(lambda)-演算》,(Wirsing,M.,《编程概念的形式化描述》(1986),北荷兰),193-217
[19] O.丹维。;Filinski,A.,《代表控制,CPS变换的研究》,《计算机科学中的数学结构》,2361-391(1992)·Zbl 0798.68102号
[20] Sitaram,D。;Felleisen,M.,《控制交付器及其层次结构》,Lisp和符号计算,367-99(1990)
[21] Berdine,J。;O'Hearn,P.W。;美国雷迪。;Thielecke,H.,线性延拓传递,高阶和符号计算,15181-208(2002)·Zbl 1030.68011号
[22] Thielecke,H.,《从控制效果到类型接续传递》,(编程语言原理.编程语言原理,POPL'03(2003),ACM),139-149·Zbl 1321.68132号
[23] Wadler,P.,定理免费!,(《第四届函数式编程和计算机体系结构国际会议论文集》,《第四次函数式编程与计算机体系结构会议论文集,FPCA’89,伦敦,1989年9月11日至13日》(1989),ACM出版社:纽约ACM出版社),347-359
[25] Baars,A。;Doaitse Swierstra,S.公司。;Viera,M.,《类型化语法的类型化转换:左角转换》,《理论计算机科学中的电子笔记》,25351-64(2010)
[27] 布林克,K。;Holdermans,S。;Löh,A.,依赖类型文法,(程序构造数学。程序构造数学,MPC’10(2010),Springer),58-79·Zbl 1286.68259号
[28] 帕尔·T·J。;Quong,R.W.,ANTLR:谓词-LL((k))解析器生成器,《软件、实践与经验》,25789-810(1995)
[29] 卢卡森,J.M。;Gifford,D.K.,《多态效应系统》,(编程语言原理.编程语言原理,POPL’88(1988),ACM),47-57
[30] Girard,J.-Y.,线性逻辑,理论计算机科学,50,1-102(1987)·Zbl 0625.03037号
[31] O'Hearn,P.W.,On bunched typeing,《函数编程杂志》,第13期,第747-796页(2003年)·Zbl 1056.03013号
[32] Reynolds,J.C.,《分离逻辑:共享可变数据结构的逻辑》,(计算机科学中的逻辑(LICS)(2002),IEEE),55-74
[33] 弗里德曼,D.P。;Wand,M。;Haynes,C.T.,《编程语言精要》(1992),麻省理工学院出版社·Zbl 0925.68084号
[34] Leroy,X.,《ZINC实验:ML语言的经济实现》,技术报告RT-0117,Inria,国家信息与自动化研究所(1990)
[35] 阿佩尔·A·W。;Palsberg,J.,《Java中的现代编译器实现》(1997),剑桥大学出版社·Zbl 0888.68037号
[36] Hutton,G。;Meijer,E.,Haskell中的一元语法分析,函数编程杂志,8437-444(1998)·Zbl 0917.68039号
[37] 米特·M。;Darais,D。;Spiewak,D.,《用衍生物解析:功能珍珠》(ICFP(2011),ACM),189-195年·Zbl 1323.68138号
[38] 罗曼,W。;Riedewald,G。;Stoy,M.,《属性文法中左递归移除期间语义规则的语义保留迁移》,《理论计算机科学电子笔记》,110,133-148(2004)
[39] Knuth,D.E.,无语境语言的语义,数学系统理论,2127-145(1968)·Zbl 0169.01401号
[40] Oege de Moor,K.B。;Swierstra,S.D.,第一类属性语法,Informatica:国际计算与信息学杂志,24329-341(2000),特刊:属性语法及其应用·Zbl 0968.68076号
[41] Swierstra,S.D.,Combinator解析器:一个简短的教程,(Bove,a.;Barbosa,L.;Pardo,a.;Sousa Pinto,J.,语言工程和严格的软件开发。语言工程和严格的软件开发,LNCS,vol.5520(2009),Spinger),252-300·Zbl 1250.68083号
[42] Atkey,R.,《带语义动作的句法分析语义》,(计算机科学中的逻辑研讨会。计算机科学中逻辑研讨会,LICS’12(2012),IEEE),75-84·Zbl 1361.68111号
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。