跳到主要内容
文章
开放式访问

PSG系统:从形式语言定义到交互式编程环境

出版:1986年8月1日出版历史
跳过抽象节

摘要

达姆施塔特工业大学开发的PSG编程系统生成器根据正式的语言定义生成交互式的、特定于语言的编程环境。环境中所有依赖于语言的部分都是由语言语法、上下文条件和动态语义的完全非过程规范生成的。生成的环境由一个基于语言的编辑器、一个解释器和一个片段库系统组成,该编辑器支持通过命名程序片段进行系统程序开发。该环境的主要组件是全屏编辑器,它允许结构和文本编辑。在结构模式下,编辑器保证防止句法和语义错误,而在文本模式下,它保证立即识别。PSG编辑器采用了一种基于统一的增量语义分析新算法。即使在不完整的程序片段中,该算法也会立即检测到语义错误。该语言的动态语义是使用基于lambda演算的函数语言以指称方式定义的。程序片段被编译成函数语言的术语,由解释器执行。PSG生成器用于为Pascal、ALGOL 60、MODULA-2和形式语言定义语言本身生成环境。

参考文献

  1. 1AHO,A.V.、BEERI,C.和ULLMAN,J.D.关系数据库中的联接理论。ACM事务处理。数据库系统。4,3(1979年),297-314。谷歌学者谷歌学者
  2. 2AIT-KACI,I-I.和NASR,R.逻辑和继承。第13届美国计算机学会编程语言原理研讨会会议记录(佛罗里达州圣彼得堡,1986年1月),美国计算机学会,纽约,219-228。谷歌学者谷歌学者
  3. AMBRIOLA,V.和MONTANGERO,C.在GANDALF环境中自动生成执行工具。J.系统。柔和。5、2(1985年5月),155-171。谷歌学者谷歌学者
  4. 4BAHLKE,R.,ANO LETSCHERT,T.《BLKS系统:面向编程环境的生成》。在诉讼程序3中。Gl-Fachesprach编译器(慕尼黑,1982年3月),W.Henbolp,Ed.,153-173。谷歌学者谷歌学者
  5. 5BAHLKE,R.,AND SNELTING,G.Programmiersystemgenerator——阿贝茨贝里奇1984,众议员PU2R2/84,TH达姆施塔特,1984年2月。谷歌学者谷歌学者
  6. 6BAHLKE,R和LETSCHERT,T.Ausf ~ ihrbare表示Semantik。在诉讼程序4中。GI-Fachgespr~ch Implementierung on Programmiersprachen(苏黎世,1984年3月),H.Ganzinger,Ed.,3-19。谷歌学者谷歌学者
  7. 7BAHLKE,R.和SNELTING,G.PSG编程系统生成器。ACM SIGPLAN非。第20、7页(1985年7月),第28-33页。谷歌学者谷歌学者
  8. 8BAHLKE,R.和SNELTING,G.使用PSG环境进行上下文敏感编辑。高级编程环境国际研讨会论文集:计算机科学讲稿。纽约施普林格出版社(1986年6月出版)。谷歌学者谷歌学者
  9. 9BJORNER,D.和JONES,C.B.(编辑)《维也纳发展方法:元语言》。计算机科学课堂讲稿,61。施普林格出版社,纽约,1978年。谷歌学者谷歌学者
  10. 10BJORNER,D.和JONES,C.B.正式规范和软件开发。普伦蒂斯·霍尔,新泽西州恩格尔伍德克利夫斯,1982年。谷歌学者谷歌学者
  11. 11CLACK,C.和PEYTON JONES,S.r.严格性分析——一种实用的方法。计算机科学讲义,201。Springer Verlag,纽约,1985年,35-49。谷歌学者谷歌学者
  12. 12DESPEYROUX,T.静态语义的可执行规范。在《计算机科学讲义》中,173。Springer Verlag,纽约,1984,215-233。谷歌学者谷歌学者
  13. 13DONZEAU-GOUGE,V.、KAHN,G.、LANG,B.和MI~L~SE,B.在MENTOR中记录结构和模块化。ACM SIGPLAN不是。第19、5页(1984年5月),第141-148页。谷歌学者谷歌学者
  14. 14ELLISON,R.J.和STAUDT,B.J.《GANDALF系统的演变》。J.系统。柔和。第5、2页(1985年5月),第107-119页。谷歌学者谷歌学者
  15. 15GILOI,W.K.,AND M(~HLENBEIN,H.SUPRENUM超级计算机体系结构的基本原理和概念。内部代表,Gesellschaft~r Mathematik und Datenverabeitung,1985年。谷歌学者谷歌学者
  16. 16GOGUEN,J.A.有序代数:异常和错误排序、胁迫和重载运算符。语义学与计算理论,加州大学洛杉矶分校,1978年。谷歌学者谷歌学者
  17. 17HENHAPL,W.Von der编译器-Generierung zu der Programmiersystemgenerierung。在诉讼程序1。GI-Fachgespr~ch编译器(柏林,1978年9月),160-169。谷歌学者谷歌学者
  18. 18HENHAPL,W.和LETSCHERT,T.研究、开发和教育领域的VDM:当地经验。在编程的形式模型中。荷兰北部,阿姆斯特丹,1985年,157-180年。谷歌学者谷歌学者
  19. 19HUDAK,P.,AND YOUNG,J.非类型lambda演算中的高阶严格性分析。第13届美国计算机学会编程语言原理研讨会会议记录(佛罗里达州圣彼得堡,1986年1月),美国计算机学会,纽约,97-109。谷歌学者谷歌学者
  20. 20JOHNSON,G.F.和FISCHER,C.N.基于语言的编辑器中用于非局部增量属性评估的元语言和系统。第十二届美国计算机学会编程语言原理研讨会会议记录(路易斯安那州新奥尔良,1985年1月),美国计算机学会,纽约,141-151。谷歌学者谷歌学者
  21. 21JOHNSON,S.C.YACC:又一个编译器编译器。在《UNIX程序员手册》第2B卷,贝尔实验室。,1978年7月。谷歌学者谷歌学者
  22. 22KAHN,G.,LANG,B.,Mi~LI~SE,B.,AND MORCOS,E.METAL:指定形式主义的形式主义。科学。计算。程序。3 (1983), 151-188.谷歌学者谷歌学者
  23. 23LANDIN,P.J.表达式的机械评估。计算。J.6,4(1964),308-320。谷歌学者谷歌学者
  24. 24MEDINA-MORA,R.语法导向编辑:面向集成编程环境。卡内基梅隆大学博士论文,1982年3月。谷歌学者谷歌学者
  25. 25MEDINA-MORA,R.、NOTKIN,D.S.和ELLISON,g.J.ALOE用户和实施者指南。卡内基梅隆大学,1982年5月。谷歌学者谷歌学者
  26. 26MEERTENS,L.《第十届美国计算机学会编程语言原理研讨会会议记录》(1983年1月,德克萨斯州奥斯汀),美国计算机学会,纽约,265-275。谷歌学者谷歌学者
  27. 27MILNER,R.编程中的类型多态理论。J.计算。系统。科学。17, 3 (1978), 348-375.谷歌学者谷歌学者
  28. 28MOSSES,P.SIS——语义实现系统,参考手册和用户指南。代表DAIMI MD-30,奥胡斯大学,1979年8月。谷歌学者谷歌学者
  29. 29PLOTKIN,G.建立方程理论。机器。国际互联网。7(1972),73-90。谷歌学者谷歌学者
  30. 30REISS,S.增量编译方法。ACM SIGPLAN非。19,6(1984年6月),144-151。谷歌学者谷歌学者
  31. 31REPS,T.生成基于语言的环境。代表TR 82-514,康奈尔大学,1982年8月。谷歌学者谷歌学者
  32. 32REPS,T.、TEITELBAUM,T.和DEMERS,A.基于语言的编辑器的增量上下文相关分析。ACM事务处理。程序。语言系统。第5、3页(1983年7月),第449-477页。谷歌学者谷歌学者
  33. 33REPS,T.和TEITELBAUM,T.合成器生成器。ACM SIGPLAN非。第19、5页(1984年5月),第42-48页。谷歌学者谷歌学者
  34. 34REPS,T.和TEITELBAUM,T.合成器生成器参考手册。康奈尔大学,1985年8月。谷歌学者谷歌学者
  35. 35REPS,T.,AND SNELTING,G.使用属性语法实现的上下文关系。康奈尔大学,1986年1月。谷歌学者谷歌学者
  36. 36RETY,P.,KmCHNER,C.,KIRCHNER,H.,ANO LESCANNE,P.NARROWER:一种新的统一算法及其在逻辑编程中的应用。计算机科学课堂讲稿,202。Springer Verlag,纽约,1985年,139-157年。谷歌学者谷歌学者
  37. 37ROBINSON,J.A.基于解析原理的面向机器的逻辑。《美国临床医学杂志》第12卷第1期(1965年),第23-41页。谷歌学者谷歌学者
  38. 38SIEKMANN,J.H.《普遍统一》。在计算机科学课堂讲稿中,170。施普林格·弗拉格,纽约,1984年,第1-42页。谷歌学者谷歌学者
  39. 39SNELTINa,G.和HENHAPL,W.将多分类代数中的统一作为增量语义分析的工具。第13届美国计算机学会编程语言原理研讨会会议记录(佛罗里达州圣彼得堡,1986年1月),美国计算机学会,纽约,229-235。谷歌学者谷歌学者
  40. 40SNELTING,G.Inkrementelle semantische在unvollst~indigen Programmfragmenten mit Kontextrelationen中进行分析。博士论文,TH Darmstadt,1986年3月。谷歌学者谷歌学者
  41. 41STOY,J.E.《指称语义学:编程语言理论的斯科特-斯特拉奇方法》(The Scott-Strachey Approach to Programming Language Theory)。麻省理工学院出版社,马萨诸塞州剑桥,1977年。谷歌学者谷歌学者
  42. 42编程语言的指称语义。Commun公司。ACM 19、8(1976年8月),437-453。谷歌学者谷歌学者
  43. 43VUILLEMIN,J.在简单编程语言中正确优化递归实现。J.计算。系统。科学。9 (1974), 332-354.谷歌学者谷歌学者

索引术语

  1. PSG系统:从形式语言定义到交互式编程环境

                      建议

                      评论

                      杰拉尔德·大卫·钱德勒

                      编程系统生成器(PSG)使用编程语言的正式规范为该语言生成结构编辑器、解释器和交互式运行时环境。生成的编辑器以结构模式运行,其中每个条目必须是现有程序的语法正确细化;在文本(自由输入)模式下,任何在语法或语义上与程序的现有状态冲突的添加或更改都会立即被检测到。本文近三分之二的篇幅,以及包含其大部分新颖结果的部分,涵盖了PSG编辑器如何在文本模式下进行增量语义分析,以及如何在结构模式下对菜单进行优化,使其只呈现适当的细节。本文简要介绍了需要由PSG用户定义的五种语法/结构。这些类型是词汇(用于输入或显示的外部符号),抽象(片段的内部表示),具体(输入文本形式),格式(精美打印),以及标题+菜单(用户交互)。本文最后介绍了用于语义翻译的语言。对于PSG,程序由一个或多个片段组成,每个片段由一个属性化的抽象语法树表示。根据定义,程序片段是不完整的;因此,它们的属性不能用简单的值表示;相反,PSG使用语境关系;这些数据库可能是无限的关系数据库,其中每个元组表示一个静态可能的属性赋值。上下文关系反过来由有限表示属性表单关系(AFR)。AFR中的元组可能具有变量,即未实例化的元素;它们的可能值范围表示更大的上下文关系。当合并两个片段时,表示它们的语法树也会合并,并计算表示新片段的属性形式关系。合并树属性的上下文关系很容易被视为表示原始树的两个上下文关系的连接。表示新上下文关系的AFR是表示原始树的两个AFR的统一。这种统一是通过与Prolog[1]中使用的经典Robinson分辨率相关的分辨率过程来计算的。为了说明目的,属性形式关系显示为数据库元组;事实上,PSG用户以类似BNF和Prolog子句的形式编写基本子句。我希望看到AFR决议也以Prolog条款的形式提出。PSG使用指称语义来指定将程序翻译成基于无类型lambda演算的函数语言。根据用户提供的语义规范,PSG生成了一个将抽象语法树转换为lambda演算术语的编译器。在解释程序时,使用基于SECD机器的PSG解释器对这些术语进行评估。PSG可以捕获大多数但不是所有依赖于术语求值的语义错误。这种错误的一个例子是使用常量表达式定义负值大小的对象。只有评估才能揭示错误;PSG的方程理论并不总是强大到足以及时对其进行评估。作者报告说,ALGOL-60语法检查器的260行规范大约需要两周时间。3600行中指定了完整的Modula-2编译器;这是一名论文学生在八个月内完成的。在我看来,这些并不特别引人注目;例如,鲍威尔[2]报告说,一个针对Modula-2的优化编译器使用YACC和Pascal花了他四个月的时间。作者表示,该系统“对初学者有帮助”;最好有关于这一点和其他点的实际心理数据:每次击键后都会对输入进行增量分析,并立即报告错误;即使错误可能被忽略,这种反馈有时也会令人恼火吗类似地,执行可能在整个程序没有错误的情况下进行;只有当执行点到达非法存根时,执行才会停止。有时,用户会发现由于故障,在长时间计算期间等待是徒劳的。这在结尾处是否明显总之,对于那些关注编译器实现的高级工具的人来说,这是一篇不容错过的论文。它为增量分析和类型推断提供了一种新的机制。令人欣慰的是,三十年来在逻辑编程和解析、数据库和语义规范方面的进步是如何影响自动编译器生产问题的。我发现这篇论文编辑得很好;词汇、句法和语义错误很少。母语不是英语的作者很少能达到如此清晰的程度。

                      访问计算机文献的批评性评论在这里

                      成为评论员用于计算评论。

                      评论

                      登录选项

                      检查您是否可以通过登录凭据或您的机构访问本文。

                      登录

                      完全访问权限

                      • 发布于

                        封面图片ACM编程语言和系统汇刊
                        程序设计语言与系统学报 第8卷第4期
                        1986年10月
                        190页
                        国际标准编号:0164-0925
                        EISSN公司:1558-4593
                        内政部:10.1145/6465
                        期刊目录

                        版权所有©1986 ACM

                        出版商

                        计算机协会

                        美国纽约州纽约市

                        出版历史

                        • 出版:1986年8月1日
                        发布于托普拉斯第8卷第4期

                        权限

                        请求有关此文章的权限。

                        请求权限

                        检查更新

                        限定符

                        • 文章

                      PDF格式

                      以PDF文件查看或下载。

                      PDF格式

                      电子阅读器

                      使用eReader联机查看。

                      电子阅读器